نيوتن سكريبت

نيوتن سكريبت
نموذجنموذج أولي موجه للكائنات
صمم بواسطةوالتر سميث
المطوركمبيوتر ابل
ظهرت لأول مرة1993 ؛ منذ 31 سنة ( 1993 )
الانضباط في الطباعةمتحرك
متأثر بـ
أنا ، ديلان
متأثر
أيو

NewtonScript هي لغة برمجة تعتمد على النماذج الأولية تم إنشاؤها لكتابة برامج لمنصة Newton . [1] وهي متأثرة بشكل كبير بلغة البرمجة Self ، ولكن تم تعديلها لتكون أكثر ملاءمة لاحتياجات الأجهزة المحمولة والمدمجة . [2]

تاريخ

في 3 أغسطس 1993، كشفت شركة أبل عن جهاز Apple Newton MessagePad . كان الجهاز مزودًا بذاكرة عشوائية (RAM) سعة 640 كيلوبايت، وذاكرة قراءة فقط (ROM) سعة 4 ميجابايت، ومعالج ARM 610 بسرعة 20 ميجاهرتز.

كان الهدف الرئيسي وراء مشروع نيوتن هو تطوير جهاز قادر على استبدال الكمبيوتر أثناء حمله. ومع البطارية والذاكرة المحدودة، كان المطورون يبحثون عن لغة برمجة قادرة على مواجهة هذه التحديات.

نظر المطورون إلى لغة البرمجة C++ لكنهم أدركوا أنها تفتقر إلى المرونة. بدأوا في التركيز على اللغات القائمة على النماذج الأولية وأعجبوا بـ Smalltalk وSelf. [3] في الوقت نفسه، كانت Apple تطور لغة برمجة ديناميكية أخرى تسمى Dylan ، والتي كانت مرشحة قوية لمنصة Newton. [4]

ومع ذلك، تم استبعاد سيلف وديلان من الاعتبار، حيث كانا في مرحلة مبكرة من التكامل السليم.

بدلاً من ذلك، قام فريق برئاسة والتر ر. سميث بتطوير لغة جديدة تسمى NewtonScript. وقد تأثرت هذه اللغة بلغة ديناميكية مثل Smalltalk ونموذج أولي قائم على نموذج Self. [3]

سمات

على الرغم من أن NewtonScript كانت متأثرة بشكل كبير بخط Self، إلا أنه كانت هناك بعض الاختلافات في كلتا اللغتين.

نشأت الاختلافات بسبب ثلاث مشاكل متصورة مع الذات.

  1. أحد هذه الأسباب هو أن برنامج Self snapshot النموذجي يتطلب 32 ميجا بايت من ذاكرة الوصول العشوائي (RAM) لتشغيله، في حين تم تصميم منصة Newton لاستخدام 128 كيلو بايت فقط لنظام التشغيل. وقد تطلب هذا بعض التقليص الجاد للمحرك لجعله مناسبًا مع الاحتفاظ بالمساحة للتطبيقات.
  2. كانت هناك مشكلة أخرى تتعلق بالأداء. نظرًا لأن اللغة ستُستخدم للنظام بأكمله، وليس فقط لتشغيل نظام تشغيل موجود، فقد كان لابد من تشغيلها بأسرع ما يمكن.
  3. أخيرًا، كان لنظام الوراثة في محرك Self العادي كائن رئيسي واحد، [5] بينما تحتوي واجهات المستخدم الرسومية عادةً على اثنين - واحد للكائنات وآخر لتخطيط واجهة المستخدم الرسومية الذي يتم التعامل معه عادةً عن طريق إضافة فتحة في نوع ما من كائنات التسلسل الهرمي لواجهة المستخدم الرسومية (مثل View ).

تم تعديل بناء الجملة أيضًا للسماح بأسلوب برمجة أكثر اعتمادًا على النص، على عكس الاستخدام الواسع النطاق لبيئة واجهة المستخدم الرسومية للبرمجة في Self. سمح هذا بتطوير برامج نيوتن على جهاز كمبيوتر يعمل بمجموعة الأدوات، حيث يتم تجميع البرامج ثم تنزيلها على جهاز نيوتن لتشغيلها.

كانت إحدى مزايا الميراث القائم على النموذج الأولي في NewtonScript هي تقليل استخدام الذاكرة، وهو اعتبار أساسي في Newton بحجم 128 كيلوبايت. يمكن تخزين النموذج الأولي لكائن واجهة المستخدم الرسومية في ذاكرة القراءة فقط، لذا لم تكن هناك حاجة لنسخ البيانات أو الوظائف الافتراضية إلى ذاكرة العمل.

على عكس اللغات القائمة على الفئات، حيث يتضمن إنشاء كائن تخصيص ذاكرة لجميع سماته، فإن استخدام NewtonScripts لوراثة النموذج الأولي سمح لها بتخصيص ذاكرة لعدد قليل من الحقول مثل _proto و_parent بدلاً من إنشاء كائن جديد بالكامل. هنا، يشير _proto و_parent إلى ما إذا كان الكائن يستخدم وراثة النموذج الأولي أو وراثة الوالد. [6]

كمثال لتوضيح المفهوم أعلاه، قد يقوم مطور بإنشاء مثيل جديد للزر. إذا كان الزر يستخدم الخط الافتراضي، فإن الوصول إلى "فتحة" الخط الخاصة به (أي الخاصية أو المتغير العضو) سيعيد قيمة مخزنة بالفعل في ذاكرة القراءة فقط؛ لا تحتوي مثيلة الزر في ذاكرة الوصول العشوائي على قيمة في فتحة الخط الخاصة بها، لذا يتم اتباع سلسلة وراثة النموذج الأولي حتى يتم العثور على قيمة. إذا قام المطور بعد ذلك بتغيير خط الزر، فإن تعيين فتحة الخط الخاصة به إلى قيمة جديدة سيحل محل النموذج الأولي؛ يتم تخزين قيمة التجاوز هذه في ذاكرة الوصول العشوائي. وبالتالي، فإن " الوراثة التفاضلية " في NewtonScript جعلت الاستخدام الفعّال لذاكرة الفلاش باهظة الثمن في NewtonScript من خلال تخزين الجزء الأكبر من البيانات والرموز الافتراضية في ذاكرة القراءة فقط الأرخص والأكبر حجمًا في PDA .

مصطلحات هامة

المشاهدات: هي كائنات تم إنشاؤها بواسطة نظام عرض نيوتن، والتي يتم إنشاؤها في وقت التشغيل لعرض المشاهد.

القالب: هو عبارة عن مخطط يتم إنشاء العروض منه.

البروتوكولات: يمكن أن تكون بمثابة مخطط لقالب أو عرض، وهي عناصر مكتبات كود NewtonScript.

الإطار والفتحة: الإطار عبارة عن مجموعة ديناميكية من الفتحات، ويُطلق على أحد عناصر الإطار اسم الفتحة. تتكون الفتحة من اسم وقيمة. يمكن أن تكون القيمة من أي نوع. ومن الجدير بالذكر أن جميع الكائنات في NewtonScript عبارة عن إطارات. [7]

الحساء والمدخل: عبارة عن مجموعة مترابطة من الإطارات/البيانات. المدخل هو إطار فردي في الحساء.

إطار كومة: ذاكرة الوصول العشوائي المخصصة ديناميكيًا بواسطة NewtonScript.

العرض الأساسي: هو العرض الرئيسي للتطبيق، ويتكون من جميع المتغيرات والطرق المستخدمة في التطبيق.

المميزات والعيوب

المزايا
  • NewtonScript هي لغة برمجة ديناميكية تعتمد على النماذج الأولية، وتستخدم الوراثة التفاضلية. وهذا يعني أنها فعالة للغاية في استخدام مساحة الذاكرة. ولأنها ديناميكية، فمن السهل تعديل الكائنات والتحقق من النوع وما إلى ذلك في وقت التشغيل، مما يمنح المطورين مرونة كبيرة.
  • يمكن تخزين الكائنات التي تم إنشاؤها في ذاكرة دائمة مثل بطاقة الفلاش أو الذاكرة الداخلية. يتم استخدام ذاكرة الوصول العشوائي فقط لتخزين السمات التي تتغير قيمها أثناء وقت التشغيل. وهذا يقلل من استهلاك الذاكرة.
  • يمكن تنفيذ كتابة واجهات لتطبيقات واجهة المستخدم الرسومية بشكل فعال باستخدام نموذج النموذج الأولي، حيث يمكننا كتابة كائن مباشرة لعنصر تحكم واجهة المستخدم الرسومية بدلاً من إنشاء فئة وإنشاء مثيل لها.
  • يتم تنفيذ عملية جمع القمامة تلقائيًا بواسطة النظام. ساعد هذا المطورين على التركيز بشكل أكبر على تطوير التطبيقات بدلاً من القلق بشأن إدارة الذاكرة. ساعد جمع القمامة أيضًا في التخفيف من مشكلة المؤشرات المعلقة حيث يشير المؤشر بشكل خاطئ إلى موقع ذاكرة تم إلغاء تخصيصه. [6]
العيوب
  • نظرًا لأن كود نيوتن سكريبت كان مكتوبًا على منصة واحدة ويتم تشغيله على منصة أخرى، كان من المستحيل عمليًا تصحيح أخطائه. [2] كان من الممكن أن يساعد تصحيح أخطاء الكود بشكل أفضل في محرك نيوتن في تعويض هذه المشكلة إلى حد ما، لكن الذاكرة المحدودة جعلت هذا الأمر صعبًا. بدلاً من ذلك، سيحصل المطور على إشارة غامضة جنبًا إلى جنب مع رمز خطأ، دون أي قدرة على مطابقته مع الأسطر الموجودة في الكود الأصلي.
  • هناك عيب آخر وهو أن المتغير الديناميكي يقلل من سرعة التشغيل نظرًا لأنه لا يمكن استخدام إلغاء مرجع المؤشر البسيط كما هو الحال في اللغات ذات النوع الثابت مثل C++ وJava.

التأثيرات

مع إلغاء مشروع نيوتن من قبل شركة أبل في عام 1998، [8] تم إيقاف جميع التطورات الرئيسية الأخرى على نيوتن سكريبت. ومع ذلك، استمرت الميزات المستخدمة في نيوتن سكريبت في إلهام نماذج ولغات برمجة أخرى.

تم استخدام نموذج الكائن المبني على النموذج الأولي لـ Self وNewtonScript في JavaScript ، وهي اللغة الأكثر شيوعًا ووضوحًا لاستخدام المفهوم حتى الآن.

NewtonScript هو أيضًا أحد الأسلاف المفاهيمية (جنبًا إلى جنب مع Smalltalk وSelf وAct1 و Lisp و Lua ) للغة برمجة عامة تسمى Io [9] والتي تنفذ نفس نموذج الوراثة التفاضلية، والذي تم استخدامه في NewtonScript للحفاظ على الذاكرة.

انظر أيضا

مراجع

  1. ^ سميث، دبليو آر (1994-02-01). "هندسة تطبيقات نيوتن". وقائع مؤتمر COMPCON '94 . ص. 156-161. doi :10.1109/CMPCON.1994.282931. ISBN 978-0-8186-5380-3. S2CID  8780685. {{cite book}}: |journal=تم تجاهله ( مساعدة )
  2. ^ ab Schödl, Arno (2004-10-10). "لغة برمجة نيوتن سكريبت". مؤرشف من الأصل في 2004-10-10 . تم الاسترجاع في 2016-09-15 .{{cite web}}:CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( الرابط )
  3. ^ ab Smith, Walter R. (1995-01-01). "استخدام لغة تعتمد على النموذج الأولي لواجهة المستخدم". وقائع المؤتمر السنوي العاشر حول أنظمة البرمجة الموجهة للكائنات واللغات والتطبيقات - OOPSLA '95 . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. ص. 61-72. doi :10.1145/217838.217844. ISBN 978-0897917032. S2CID  14099947.
  4. ^ "ديلان: لغة ديناميكية موجهة للكائنات". www.cise.ufl.edu . تم الاسترجاع في 2016-09-22 .
  5. ^ Chambers, C.; Ungar, D.; Lee, E. (1989-01-01). "تطبيق فعال للغة البرمجة الموجهة للكائنات SELF، وهي لغة موجهة للكائنات ذات كتابة ديناميكية، وتستند إلى نماذج أولية". وقائع مؤتمر حول أنظمة البرمجة الموجهة للكائنات واللغات والتطبيقات - OOPSLA '89 . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. ص 49-70. CiteSeerX 10.1.1.588.6955 . doi :10.1145/74877.74884. ISBN  978-0897913331. S2CID  5798276.
  6. ^ "لغة برمجة نيوتن سكريبت" (PDF) . 1996. مؤرشف من الأصل (PDF) في 2015-01-24.
  7. ^ McKeehan, Julie; Rhodes, Neil (1994). Programming for the Newton®: Software Development with NewtonscriptTM . 955 Massachusetts Avenue, Cambridge, Massachusetts 02139: AP Professional. ISBN 978-0-12-484800-9.{{cite book}}:CS1 maint: الموقع ( الرابط )
  8. ^ "Apple cancels Newton". windowsitpro.com . 1998-02-28 . تم الاسترجاع في 2016-09-22 .
  9. ^ "دليل io". iolanguage.org . تم الاسترجاع في 2016-09-15 .
  • الذات وأصول نيوتن
  • استخدام لغة تعتمد على النموذج الأولي لواجهة المستخدم: تجربة مشروع نيوتن محفوظ في 3 سبتمبر 2008 على موقع واي باك مشين (PDF)، بقلم والتر سميث، 1995.
  • برمجة نيوتن سكريبت المبنية على الفئات محفوظ في 2008-06-29 على موقع واي باك مشين بواسطة والتر سميث، 1993.
  • أرشيف أبحاث إضافية متعلقة بنيوتن بتاريخ 2020-01-17 على موقع واي باك مشين بقلم والتر سميث.
  • لغة البرمجة NewtonScript (النسخة المؤقتة من archive.org؛ الرابط الأصلي غير صالح اعتبارًا من 15/10/2004.)
  • NEWT/0 مُترجم/مُفسِّر NewtonScript محمول
  • NewtDevEnv هي بيئة تطوير NewtonScript التي تمكن من تنفيذ التطوير مباشرة على Newton بواسطة Steve Weyer.
  • DyneTK، بيئة تطوير NewtonScript التي تحل محل Newton ToolKit (NTK) الأصلية؛ تعمل على أنظمة MS Windows وMac OS X بواسطة Matthias Melcher.
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=NewtonScript&oldid=1218509507"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate