هايبر توك

هايبر توك هي لغة برمجة إجرائية عالية المستوى، توقف تطويرها، أُنشئت عام ١٩٨٧ على يد دان وينكلر ، واستُخدمت مع برنامج الوسائط المتعددة هايبر كارد من شركة أبل ، الذي طوره بيل أتكينسون . ولأن جمهور هايبر توك المستهدف كان المبرمجين المبتدئين، كان يُطلق على مبرمجي هايبر توك عادةً اسم "المؤلفين"، وكانت عملية كتابة البرامج تُعرف باسم " البرمجة النصية ". كانت نصوص هايبر توك النصية تُشبه اللغة الإنجليزية المكتوبة ، وتستخدم بنية منطقية مشابهة لتلك الموجودة في لغة برمجة باسكال .

دعمت لغة HyperTalk هياكل التحكم الأساسية للغات الإجرائية : تكرار for/while/until، وif/then/else، بالإضافة إلى استدعاءات الدوال ومعالجات الرسائل (معالج الدالة هو روتين فرعي، ومعالج الرسالة هو إجراء). لم يكن المبرمج بحاجة عادةً إلى تحديد أنواع البيانات ؛ إذ كان التحويل يتم تلقائيًا في الخلفية بين السلاسل النصية والأرقام. لم تكن هناك فئات أو هياكل بيانات بالمعنى التقليدي؛ بل كانت هناك سلاسل نصية حرفية خاصة ، أو "قوائم" من "العناصر" مفصولة بفواصل (في الإصدارات اللاحقة، سمحت خاصية "itemDelimiter" باختيار أي حرف). كان تنفيذ التعليمات البرمجية يبدأ عادةً كاستجابة لحدث ما، مثل نقرة زر الماوس على عنصر واجهة المستخدم.

في أواخر ثمانينيات القرن العشرين، فكرت شركة آبل [ 1 ] في استخدام لغة البرمجة النصية HyperTalk الخاصة ببرنامج HyperCard كلغة قياسية في جميع أنحاء الشركة وضمن نظام التشغيل Mac OS الكلاسيكي ، وكذلك للتواصل بين العمليات في منتجات آبل وغيرها. لم تعارض الشركة تطوير لغات مشابهة مثل SuperCard ، لكنها أنشأت لجنة معايير HyperTalk لتجنب عدم التوافق بين إصدارات اللغة. [ 1 ] كانت اللغة غير حساسة لحالة الأحرف ، وكانت تُفسَّر في البداية ، ثم أُضيفت إليها ميزة الترجمة الفورية مع إصدار HyperCard 2.0. [ 2 ]

وصف

العمليات الأساسية

في معظم العمليات الأساسية، بما في ذلك العمليات الحسابية، فضّلت لغة هايبر توك ترتيب المسندات وفقًا للغة الطبيعية على الترتيب المستخدم في الترميز الرياضي. على سبيل المثال، في putأمر التعيين في هايبر توك، وُضع المتغير في نهاية العبارة:

ضع 5 × 4 في النتيجة

بينما في لغة البرمجة BASIC التقليدية (ومعظم اللغات الأخرى)، يتم تحقيق نفس الشيء عن طريق كتابة:

النتيجة = 5 * 4

يُنشئ كود HyperTalk المتغير theResult تلقائيًا أثناء التنفيذ. يمكن للبرامج النصية إسناد أي نوع أو قيمة إلى متغير باستخدام putالأمر، مما يجعل HyperTalk ضعيفًا جدًا في تحديد أنواع البيانات. كانت عمليات التحويل بين أنواع المتغيرات غير مرئية وتلقائية: يمكن ضرب السلسلة "3" في الرقم 5 لإنتاج الرقم 15، أو دمج الرقم 5 مع السلسلة "3" لإنتاج السلسلة "35". لن يُصدر HyperTalk أي تحذير إلا إذا تعذر تحويل الأنواع تلقائيًا.

كانت آلية التحكم في تدفق اللغة ومنطقها مشابهة بشكل عام للغات الشائعة الأخرى، حيث تستخدم if ... then ... else ... end ifبنية للشروط وتدعم الحلقات بناءً على repeat ... end repeatبناء جملة مرن. وكانت التعليقات مسبوقة بعلامتي ناقص: -- this is a comment.

الكائنات والحاويات والبرامج النصية

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

كانت وظائف HyperTalk، أو البرامج النصية ، تُخزَّن عادةً ضمن scriptالخاصية المتاحة في العديد من حاويات المكدس. ويمكن للبرامج النصية الوصول إلى خصائص الحاوية، المقابلة لمتغيرات المثيل ، باستخدام التعليمات `script` getو` setscript`. تحتوي خاصية `script` على نص عادي ولا تحتوي على خصائص خاصة؛ ويمكن وضع البرامج النصية في أي حاوية نصية، وتشغيلها منها، بما في ذلك متغيرات السلاسل النصية، أو استيرادها من مكدسات أخرى باستخدام start usingالأمر `script`. بل يمكن أن يكون البرنامج النصي نصًا يُدخله المستخدم في حقل نصي على الشاشة. ويمكن تنفيذ أي نص باستخدام doالأمر `script`، بطريقة مشابهة لـ Dynamic SQL. [ 3 ]

بالإشارة إلى الحاويات

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

ضع حقل البطاقة "اكتب هنا" في القيمة

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

ضع الحقل "اكتب هنا" في القيمة

تم أيضًا إعطاء العناصر ضمن سياق معين - كالبطاقة أو الخلفية مثلاً - رقمًا زمنيًا بناءً على ترتيبها على الشاشة. وللمساعدة في استخدام موقعها للتنقل، تضمن HyperTalk أيضًا مجموعة متنوعة من أنظمة الإسناد الترتيبية والأساسية لتبسيط بناء الجملة بشكل أكبر. بافتراض أن الحقل "typehere" هو الحقل الوحيد في البطاقة، يمكن كتابة الكود أعلاه أيضًا على النحو التالي:

ضع حقل البطاقة الأول في القيمة

تم ترك اختيار أسلوب العنونة للمبرمج؛ وغالبًا ما تم استخدام أساليب مختلفة في عبارات مختلفة اعتمادًا على أسلوب الكود المحيط من أجل جعل الكود أكثر قابلية للقراءة.

تضمنت لغة HyperTalk meالحاوية التي تعمل بنفس طريقة selfالمُؤهِّل الموجود في معظم لغات البرمجة كائنية التوجه ، مما يسمح بالوصول السهل إلى كائن الحاوية الحالي. أما itالمتغير فكان أقل شيوعًا، حيث كان يحمل قيمة العملية الأخيرة لبعض المعاملات المدمجة. على سبيل المثال:

اسأل "ما هي القيمة؟" ثم ضعها في حقل البطاقة "عرض".

يستخدم هذا المثال askالأمر لعرض مربع حوار والتقاط النص المكتوب في حقل نصي مصاحب؛ عند اكتمال مربع الحوار بالضغط على مفتاح الإدخال Returnأو النقر ، تُسند القيمة إلى المتغير الوهمي. ثم ينسخ السطر الثاني تلك القيمة إلى حقل بطاقة باستخدام عامل الإسناد.OKitput

المجموعات

كانت الحاويات من نوع معين متاحة أيضًا كمجموعات تحمل اسمًا بصيغة الجمع من ذلك النوع - على سبيل المثال، مجموعة الحقول الموجودة على البطاقة كانت card fields. هذه المجموعات كانت بدورها حاويات ذات خصائصها الخاصة. من أهم هذه الخصائص numberخاصية التي كانت تُستخدم على نطاق واسع أثناء التكرارات والمهام المشابهة. على سبيل المثال، إذا أراد المستخدم إخفاء جميع الحقول على البطاقة، فيمكنه فعل ذلك باستخدام هذا الكود:

كرر العملية مع i = 1 حتى عدد حقول البطاقة ، ثم أخفِ الحقل ثم أنهِ التكرار.

يكشف هذا الكود عن ميزة شائعة أخرى في HyperTalk: وهي أن الخاصية الواحدة قد تحمل عدة أسماء ومعاملات. في هذه الحالة، يعمل hideالأمر، والمعامل المرتبط به show، على تعيين قيمة خاصية الحاوية visible. وبالتالي، hide field iفإن هذا الأمر مكافئ تمامًا للأمر . مثال مشابه هو الأمر الذي أوقف التحديث المرئي، وهو اختصار للأمر ، حيث تمثل خاصية من خصائص HyperCard نفسها - وهي أيضًا حاوية. وُجدت أمثلة عديدة على هذا النوع من الاختصارات البرمجية في HyperTalk، بهدف تبسيط بناء الجملة وتحسين قابلية قراءة الكود الشائع.setthevisibleoffielditofalselock screensetthelockscreentotruelockscreen

في HyperCard 2.2 والإصدارات اللاحقة، كانت مجموعة المجموعات متاحة أيضًا كحاوية parts. وقد سمح هذا للبرنامج النصي بالوصول إلى جميع الكائنات الموجودة في الحاوية باستخدام مُكرِّر واحد.

معالجة النصوص

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

ضع الكلمة الثالثة من ملف النص في العمود الثالث (colThree) .

سمحت هذه الصيغة للبرنامج النصي "بالتجول" في النص للعثور على بيانات معينة، كما في هذا المثال:

ضع الحرف الأول من الكلمة الثالثة في السطر الخامس من حقل البطاقة " sometext " في theChar

تُعرف عملية معالجة النص كحاوية باسم "التجزئة"، وتُعرف الدوال باسم "تعبيرات التجزئة". استُخدمت هذه التعبيرات نفسها لمعالجة الملفات، إلى جانب مجموعة من دوال إدارة الملفات. يفتح الكود التالي ملفًا معروفًا، ويقرأ منه، ويستخرج البيانات، ثم يغلق الملف:

عند الضغط على زر الفأرة، أجب عن السؤال التالي : "الرجاء تحديد ملف نصي لفتحه". إذا كان الملف فارغًا ، فاخرج من الدالة. ضع الملف في المسار المحدد. إذا كان الملف موجودًا ، فافتحه . اقرأ منه حتى تصل إلى نهاية الملف . ضع النص في المسار المحدد . انتقل إلى الملف "some field" . أغلق الملف . اضبط نمط النص للأحرف من 1 إلى 10 في حقل البطاقة "some field" إلى غامق. انتهى الشرط. انتهى الضغط على زر الفأرة.

تضمنت لغة HyperTalk أيضًا وظائف لتقسيم السلاسل النصية باستخدام عملية البحث عن السلاسل الفرعية باستخدام المعامل `--` in. يجد الكود التالي جميع أمثلة نمط معين باستخدام `--` inكجزء من repeatالحلقة، بينما offsetيحدد `--` موقع هذا النمط داخل السلسلة النصية.

دالة استبدال السلسلة النمطية ، السلسلة الجديدة ، السلسلة الأصلية . كرر طالما أن النمط موجود في السلسلة الأصلية. ضع الإزاحة ( النمط ، السلسلة الأصلية ) في الموضع. ضع السلسلة الجديدة في الموضع . اربط الموضع بـ ( الموضع + طول النمط ) - 1 من السلسلة الأصلية . نهاية التكرار. أرجع السلسلة الأصلية . نهاية استبدال السلسلة

القوائم والمجموعات الأخرى

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

عند رفع زر الماوس، ضع "100,100" في الموضع pos. كرر العملية مع x = 1 حتى عدد أزرار البطاقة. حدد موقع زر البطاقة x في الموضع pos. أضف 15 إلى العنصر 1 من الموضع pos. انتهى التكرار . انتهى رفع زر الماوس.

كان تعبير التجزئة itemيعتمد في الأصل على فاصلة ، ولكن الإصدارات اللاحقة من HyperCard غيرت هذا إلى قيمة itemDelimiter، مما يوفر القدرة على تحليل القوائم والهياكل التعسفية.

الرسائل والفعاليات

استخدم HyperTalk مفهومًا كائني التوجه لاستدعاء البرامج النصية، حيث تُرسل الكائنات الموجودة في مكدس الاستدعاءات "أحداثًا" على شكل رسائل تتم معالجتها بواسطة معالجات تُعلن عن رغبتها في استقبال هذه الأحداث باستخدام onالصيغة المناسبة. على سبيل المثال، تُرسل معظم حاويات واجهة المستخدم الرسومية mouseDownرسالة عند الضغط على زر الماوس، ثم mouseUpرسالة أخرى عند تحريره بينما لا تزال الحاوية في المقدمة، ويمكن للبرنامج النصي التقاط هذه الأحداث على النحو التالي:

عند رفع زر الماوس -- يوجد كود إضافي هنا نهاية رفع زر الماوس

كانت رسائل الأحداث تُرسل أولاً إلى البرنامج النصي الموجود في الكائن الذي أنشأ الحدث، فعلى سبيل المثال، إذا نقر المستخدم على زر، mouseUpتُرسل الرسالة أولاً إلى ذلك الزر. إذا لم يكن لكائن البرنامج النصي الخاص بالزر mouseUpمعالج (أو لم يكن لديه برنامج نصي على الإطلاق)، فإنه يُمرر بعد ذلك إلى البطاقة، ثم إلى الخلفية، ثم إلى المكدس، ثم إلى أي مكدسات تم استيراد برامجها النصية صراحةً باستخدام start usingالأمر، ثم إلى "المكدس الرئيسي" (مكدس HyperCard مفتوح دائمًا يختاره المستخدم)، وأخيرًا إلى تطبيق HyperCard نفسه.

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

عند رفع زر الماوس، كرر العملية مع i = 1 حتى عدد حقول البطاقة ، ثم أخفِ الحقل i . انتهى التكرار. انتهى رفع زر الماوس.

في حال استدعاء الكود من مواقع متعددة، أو استخدامه كمعالج عام لحدث ما، يمكن للبرنامج النصي تحديد المُرسِل الأصلي للحدث باستخدام الدالة target. وبالمثل، يمكن للبرامج النصية إرسال الأحداث إلى حاويات أخرى باستخدام sendالأمر، ثم استخدام رمز التنقل للإشارة إلى الحاوية التي تحتوي على رمز المعالج.

أرسل "mouseUp" إلى زر "موافق" الخاص ببطاقة "Veracity" .

أتاح الجمع بين معالجة السلاسل النصية في HyperTalk والأمر doإنشاء مترجمات تفاعلية عن طريق وضع حقل نصي على بطاقة ثم وضع هذا الكود في نص الحقل:

عند رفع زر الماوس، حدد خط النقر، وضع الكلمة الثانية من خط النقر في رقم السطر، ثم كرر العملية على السطر رقم السطر من cd fld 1. انتهى .

clickLineهي خاصية عامة تُعيد اسم ورقم سطر آخر حقل تم النقر عليه، على شكل مثل . يقوم هذا الكود أولاً بتحديد كل النص الموجود في السطر الذي تم النقر عليه، ثم يستخرج رقم السطر إلى متغير محلي ، ثم يستخدم لتشغيل النص كبرنامج نصي HyperCard.line10ofcardfield4do

كانت الرسالة mouseDownتُرسل إلى الزر عند نقر المستخدم عليه، وتُرسل mouseUpمرة أخرى عند تحرير زر الفأرة داخله لتفعيل وظيفته. وبالمثل، كان برنامج HyperCard يرسل idleرسائل دورية mouseEnter، mouseLeaveورسائل أخرى متنوعة تتعلق بالتنقل بين البطاقات المختلفة في مجموعة بطاقات HyperCard، بالإضافة إلى مدخلات المستخدم ، وأحداث النظام. بالنسبة للمبرمجين، لم تكن هناك حلقات أحداث رئيسية كما هو الحال في لغات البرمجة الإجرائية الأخرى keyDown.functionKey

التحكم في برنامج HyperCard

بخلاف منصات تطوير التطبيقات السريعة العامة ، كانت حزم HyperCard تبدو دائمًا مثل الحزم - كان شريط القوائم خاصًا بـ HyperCard وليس بالمبرمج (افتراضيًا - يمكن للبرمجة النصية إضافة القوائم وحذفها وتعديلها)، وكانت النافذة الواحدة ذات حجم ثابت (في الإصدارات المبكرة)، وفي بعض الحالات، كانت الأوامر التي كانت أساسية للعملية جزءًا من التطبيق نفسه، وليست متاحة مباشرة في HyperTalk نفسه.

من الأمثلة الجيدة على ذلك إنشاء بطاقات جديدة، وهو جزء من التطبيق نفسه، ولا يمكن الوصول إليه مباشرةً من لغة HyperTalk. لا يمكن إنشاء بطاقة جديدة إلا باستخدام خيار "بطاقة جديدة" في القائمة، والذي يمكن محاكاته برمجيًا doMenu "New Card". وبينما تستدعي HyperTalk أوامر القائمة، فإن أوامر القائمة بدورها تستدعي معالجات في HyperTalk. لتشغيل كود مخصص عند تحديد خيار "نسخ" في القائمة، يتم وضع نص برمجي في مكدس الأوامر باستخدام المعالج on doMenu itemName، ثم يتم التحقق itemNameمما إذا كان "نسخ".

كما وفر برنامج HyperTalk إمكانية التحكم في أدوات الرسم المدمجة من خلال البرمجة النصية، وذلك ببساطة عن طريق كتابة التغييرات المطلوبة في أدوات الرسم ومحاكاة حركات الماوس باستخدام الأوامر .drag from start to endclick at position

دلالات متسامحة

أحد الفروق الفريدة بين لغة البرمجة HyperTalk الخاصة بـ HyperCard واللغات المشابهة ظاهريًا مثل AppleScript هو أن نصوص HyperTalk كانت أكثر تساهلاً في المدخلات التي تقبلها.

بصرف النظر عن الإعلان الضمني المذكور أعلاه عن المتغيرات عند تعيين قيمة لها، والطريقة التي يتم بها تحويل القيم ضمنيًا بين الأنواع (مما يسمح لك على سبيل المثال بطلب character 2 of 1234)، فإن HyperCard سيتعرف أيضًا على تعبيرات معينة ويستخرج منها قيمًا فرعية.

على سبيل المثال:

ضع السطر المحدد من حقل البطاقة "Listbox" في التحديد -- يعطي "السطر 2 إلى 3 من حقل البطاقة "Listbox"". حدد السطر 1 من حقل البطاقة "Listbox". حدد السطر ( الكلمة 2 من التحديد ) من حقل البطاقة "Listbox". حدد ( السطر المحدد من حقل البطاقة "Listbox" ) -- تمت إضافة الأقواس لأغراض التوضيح فقط

أو

عزف على آلة الهاربسكورد دو مي صول ، عزف على آلة الهاربسكورد "دو مي صول" ، وضع "دو مي صول" في اللحن، عزف على آلة الهاربسكورد اللحن

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

عزف على آلة الهاربسكورد "ceg()" ضع "ce() g" في theMelody عزف على آلة الهاربسكورد theMelody

توسيع نطاق هايبر توك

على الرغم من أن لغة HyperTalk عانت من الركود، تمامًا كما عانى برنامج HyperCard نفسه، إلا أن الاهتمام بها عاد من جديد بفضل بروتوكول الإضافات الخاص بها، والمعروف باسم الأوامر الخارجية (XCMDs) والوظائف الخارجية (XFCNs)، والتي كانت عبارة عن حاويات برمجية أصلية مُلحقة بمكدسات ( كموارد خاصة بنظام Macintosh ) بنقطة دخول واحدة وقيمة إرجاع واحدة. ويمكن استدعاء XCMDs وXFCNs تمامًا مثل معالجات الرسائل والوظائف العادية من نصوص HyperTalk البرمجية، كما كانت قادرة على إرسال رسائل إلى تطبيق HyperCard. وقد أضاف بعض مطوري XCMD ميزات متقدمة إلى اللغة، مثل دعم الألوان الكامل (ColorizeHC، وHyperTint، وAddColor)، ونوافذ متعددة لأغراض خاصة (Prompt، وTabloid، وTextoid، وListoid، وShowDialog، وMegaWindows)، ودعم السحب والإفلات، وواجهات أجهزة متنوعة.

أحفاد هايبر توك

قامت لغات البرمجة النصية المختلفة بتنفيذ مجموعة فرعية من HyperTalk (المعروفة مجتمعة باسم xTalk ): [ 4 ]

  • CompileIt!-Talk – حزمة برمجية HyperCard وXCMD من تطوير توم بيتمان، تتيح تجميع كود الآلة 68000 الأصلي (مثل أوامر XCMD وXFCN) من كود HyperTalk، واستدعاء إجراءات صندوق أدوات ماكنتوش الأصلية . كانت CompileIt تعتمد على الإصدارات السابقة ، أي أن الإصدارات اللاحقة منها كانت تُجمَّع باستخدام الإصدارات السابقة.
  • Double-XX-Talk – كان Double-XX نسخة خفيفة الوزن من HyperCard تم شحنها كإضافة إلى CompileIt! وسمحت بتشغيل XCMDs و XFCNs بدون HyperCard، بل وتضمنت مترجم HyperTalk صغير.
  • MediaTalk – لغة Oracle Media Objects ، وهي لغة مشتقة من Plus، وأول نسخة متعددة المنصات من HyperCard. علاوة على ذلك، فهي اللغة الوحيدة التي كانت معيارية حقًا.
  • PlusTalk – لغة Plus، من شركة Spinnaker Software (التي طورتها في الأصل شركة Format Verlag)، والتي تم استخدامها كأساس لـ Oracle Media Objects .
  • SenseTalk – لغة HyperSense التي نشأت من NeXT وأداة الاختبار Eggplant القائمة على VNC .
  • سوبر توك – لغة لعبة سوبر كارد ، أول لعبة مشابهة للعبة هايبر كارد، من تأليف بيل أبلتون. وقد كتب أبلتون أيضًا مجموعة أدوات بناء المغامرات الشهيرة وورلد بيلدر ، ولعبة هايبر دي إيه.
  • Transcript (المعروفة سابقًا باسم revTalk وMetaTalk) – اللغة المستخدمة في منصة تطوير البرمجيات LiveCode (المعروفة سابقًا باسم Revolution وMetaCard). كانت MetaCard نسخةً مبكرةً من HyperCard، وهي نسخةٌ من نظام Unix، وتعمل على أنظمة Classic Mac OS وMac OS X وWindows وLinux وSolaris.
  • XION - كانت في الأصل لغة برنامج مفتوح المصدر مشابه لبرنامج HyperCard، لكنه لم يكتمل. تم تنفيذه الآن باسم OpenXION .
  • xTalk - بعد توقف تطوير النسخة المجتمعية من Livecode من قِبل Livecode، تم تفرع النسخة مفتوحة المصدر إلى ما يُعرف الآن باسم OpenXTalk . هذا التفرع قيد التطوير على موقع openxtalk.org .

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

توجد أيضاً لغات تظهر في تركيبها النحوي وبنيتها تأثيرات من لغة هايبر توك، مثل:

  • ActionScript – لغة البرمجة النصية لبرنامج Adobe Flash .
  • AppleScript – لغة البرمجة النصية الرئيسية لنظام التشغيل Mac OS الكلاسيكي من Apple، ولا تزال مدعومة في macOS .
  • Lingo – لغة البرمجة الخاصة بـ Macromedia Director بدأت ببنية تشبه xTalk، على الرغم من أن الإصدارات اللاحقة اتخذت اتجاهًا يشبه JavaScript.
  • جافا سكريبت – لغة برمجة نصية ابتكرها بريندان إيتش ، وتُستخدم عادةً كجزء من متصفح الويب لإنشاء واجهات مستخدم محسّنة ومواقع ويب ديناميكية . [ 5 ] وقد تم تعميمها وتوحيدها لاحقًا باسم ECMAScript .
  • Hyperscript – لغة برمجة نصية مصممة للبرمجة النصية المضمنة القابلة للقراءة وتحديد موضع السلوك في HTML، ويتم تفسيرها بواسطة امتداد Javascript.

تم دمج العديد من أسماء الدوال التي اشتهرت بها لغة HyperTalk في لغات برمجة لاحقة، مثل onmouseupمعالج الأحداث في JavaScript. [ 6 ] على الرغم من أن Asymetrix ToolBook تُعتبر في كثير من الأحيان نسخةً من HyperCard، إلا أن لغة البرمجة النصية الخاصة بها لا تشبه HyperTalk إلا قليلاً.

انظر أيضاً

  • إنفورم 7 - لغة برمجة ذات بنية نحوية مشابهة للغة الإنجليزية

ملحوظات

  1. والتي بدورها يمكن تحميلها من ملفات نصية.

مراجع

  1. 1 2 فلين، لوري (27 فبراير 1989). "أبل تفكر في توحيد لغة هايبر توك" . إنفوورلد . ص  31.
  2. ديف كيلي، "أدوات المهنة: CompileIt! 2.0!" ، ماك تك ، المجلد 7، العدد 9
  3. إرلاند سومارسكوج وفرانك كاليس، "لعنة ونعم لغة SQL الديناميكية" ، 23 يونيو 2011
  4. رومان كنول، فايداس غاسيوناس، ميرا ميزيني، "الأنواع الطبيعية" ، إلى الأمام! 2011: وقائع الندوة العاشرة لـ SIGPLAN حول الأفكار الجديدة والنماذج الجديدة والتأملات في البرمجة والبرمجيات ، الصفحات 33-48، أكتوبر 2011.
  5. إيتش، بريندان (1998). "مقدمة". في غودمان، داني (محرر). دليل جافا سكريبت ( الطبعة الثالثة). جون وايلي وأولاده . ISBN  0-7645-3188-3. LCCN 97078208 . OCLC 38888873 . OL 712205M .   
  6. بريندان إيتش، "الخطاب الرئيسي لمؤتمر سبلاش 2011، الشريحة 10"
  • صفحات ويكي بانتيتشنيكون هايبر توك – مرجع لغة هايبر توك (هياكل التحكم، الأحداث، الوظائف المدمجة، إلخ).