لغة البرمجة SAIL
طُوِّرت لغة SAIL ، وهي لغة ستانفورد للذكاء الاصطناعي ، على يد دان سوينهارت وبوب سبرول من مختبر ستانفورد للذكاء الاصطناعي . كانت في الأصل لغةً كبيرةً شبيهةً بلغة ALGOL 60، مُصممةً لأجهزة PDP-10 و DECSYSTEM-20 . جمعت هذه اللغة بين مُترجم لغة GOGOL ، وهي نسخةٌ من لغة ALGOL مُخصصةٌ للأعداد الصحيحة فقط، والمُستخدمة في أجهزة PDP-6 وPDP-10 ، وبين خاصية التخزين الترابطي من لغة LEAP . صدرت النسخة الأولى في نوفمبر 1969، واستمر تطويرها حتى ثمانينيات القرن العشرين، بما في ذلك إصدارٌ تجاريٌّ مُشتقٌّ منها يُدعى MAINSAIL .
تتمثل الميزة الرئيسية لنظام SAIL في نظام بيانات رمزي قائم على مخزن ترابطي مبني على LEAP من تطوير جيري فيلدمان وبول روفنر. يمكن تخزين العناصر كمجموعات غير مرتبة أو كعلاقات (ثلاثيات). تشمل الميزات الأخرى العمليات، ومتغيرات الإجراءات، والأحداث والمقاطعات، والسياقات، والتراجع ، وجمع البيانات المهملة من السجلات . كما يحتوي على وحدات ماكرو ذات بنية كتلية، ووظيفة للروتينات الفرعية، وبعض أنواع البيانات الجديدة المصممة لبناء أشجار البحث وقوائم العلاقات.
تاريخ
كتب بيل ماكيمان مُترجم لغة GOGOL في الأصل على جهاز PDP-1 . وكانت في الأساس نسخةً من لغة ALGOL-60 مُخصصة للأعداد الصحيحة فقط ، مع عدد من الإضافات لتوفير وصول مباشر إلى الذاكرة ومكونات أخرى في الجهاز، مما يسمح باستخدامها كلغة برمجة أنظمة . وقد قلّصت هذه النسخة المصفوفات إلى بُعد واحد، وأزالت أي إمكانية لإجراء تخصيصات ديناميكية للذاكرة، لكنها أضافت بعض وظائف السلاسل النصية الإضافية. ثم كُتبت نسخة مُحدثة بشكل كبير من قِبل جون ساوتر، وهي GOGOL II، كجزء من عملية نقل نظام التشغيل الأساسي من ODIN إلى THOR. وعندما استلم مختبر الذكاء الاصطناعي بجامعة ستانفورد جهاز PDP-6 ، قام ساوتر وبيتيت (ودان سوينهارت في الغالب) بكتابة GOGOL III للجهاز الجديد. [ 1 ]
قام سوينهارت، بالاشتراك مع روبرت سبرول، بدمج صيغة GOGOL مع إضافات من الإصدارات المعاصرة للغة LEAP لإنتاج الإصدار الأول من SAIL في نوفمبر 1969. كانت السمة الرئيسية للغة LEAP هي استخدامها للتخزين الترابطي، المعروف اليوم باسم الخريطة أو القاموس. في LEAP، كان بالإمكان تحديد قيمة حقل في نوع بيانات باستخدام ثلاثية، حيث يمثل العنصر الأول اسم المتغير، والثاني اسم الحقل، والثالث القيمة. [ 2 ]
أُضيفت تحسينات أخرى بواسطة راسل تايلور وجيم لو وهانا ساميت، الذين أضافوا العمليات ومتغيرات الإجراءات والمقاطعات والسياق وإجراءات المطابقة ونظام ماكرو جديد وميزات أخرى. ثم انتقل التطوير إلى تايلور وجون رايزر وروبرت سميث، الذين أضافوا مصحح أخطاء ، وعبارة طباعة على مستوى النظام، وسجلات، وقاموا بالتحويل من SUAI الخاص بستانفورد إلى TENEX . وتم نقله لاحقًا إلى TOPS-10 من DEC أيضًا، بينما عملت نسخة TENEX الأصلية دون تعديل تحت TOPS-20 . [ 2 ]
وصف
الهيكل الأساسي والبيانات
كما هو الحال في العديد من أنظمة ALGOL، ولغة باسكال اللاحقة ، يعتمد الهيكل الأساسي للغة SAIL على الكتلة ، والتي يُشار إليها بالرمز الموجود بين الكلمتين المفتاحيتين `<block>` BEGINو`< ENDblock>`. يوجد داخل الكتلة بنية إضافية، حيث تُوضع تعريفات المتغيرات المحلية في الأعلى، إن وُجدت، ثم يليها الرمز، أو العبارات `<block>`. وعلى عكس معظم اللهجات، سمحت SAIL بوضع سلسلة نصية بعد `<block>` BEGIN، مثل ` BEGIN "program"<block>`، ثم إنهاء الكتلة بـ `<block> END "program"`. يستخدم المُصرّف هذه السلاسل، في حال إدخالها، للتحقق من صحة الأقواس. [ 3 ] لم تتضمن SAIL ما يُعادل كتلة ` PROGRAM<block>` كما في باسكال، ولا `<block>` mainكما في C، حيث يبدأ التنفيذ من السطر الأول من الرمز في الكتلة الخارجية. [ 4 ]
تضمنت العبارات القياسية IF...THEN...ELSE[ 5 ]FOR...STEP...UNTIL...DO و [ 6 ]WHILE...DO للحلقات التي يتم اختبارها من الأعلى، WHILE...UNTILوللحلقات التي يتم اختبارها من الأسفل، والتيGOTO استخدمت تسمية. [ 7 ] كانت CASEمشابهة لـ switchفي لغة C، ولكنها عادةً ما تستخدم صيغة مختلفة نوعًا ما، مثل CASE i OF ("Zero","One","Two");، والتي تُرجع السلسلة المناسبة بناءً على قيمة i. [ 5 ] إذا أراد المرء اختبار قيم صريحة في CASE، فيجب وضع القيم بين قوسين مربعين:
CASE I OF BEGIN [ 0 ] 10 ; [ 4 ] 25 ; [ 6 ][ 7 ] 50 END ;سيتجاهل هذا الكود القيم من 1 إلى 3، وسيعيد قيمة فقط للقيم المدرجة. لاحظ أنه لا يمكن أن يتبع العنصر الأخير فاصلة منقوطة. [ 8 ]
DONEالخروج من كتلة، والتي تُستخدم عادةً في الحلقات، والعودة CONTINUEإلى أعلى الكتلة. كانت الحلقة اللانهائية تُنفذ عادةً باستخدام WHILE TRUE DO.... [ 9 ]
إعلانات الإجراءات
تم تنفيذ الإجراءات بطريقة مشابهة للغة البرمجة C ، حيث يُذكر نوع الإرجاع، إن وجد، قبل الاسم، على سبيل المثال . لاحظ الاستخدام غير الشائع للفاصلة المنقوطة هنا، بينما في لغة باسكال، كان يُتبع ذلك مباشرةً بكتلة، عادةً ما تكون . [ 10 ]STRINGPROCEDUREtoUpper(STRINGoriginalStr);BEGIN...BEGIN
لتحسين الأداء، أضافت لغة SAIL مُحدِّدَيْن للإجراءات، SIMPLEوهما RECURSIVE: `.` RECURSIVEالذي يُخبر المُصرِّف بأن الإجراء قد يستدعي نفسه، وبالتالي يجب كتابة متغيراته المحلية إلى المكدس، وليس فقط معلومات الإرجاع الخاصة بالروتين الفرعي. و`.` SIMPLEالذي يفعل العكس، إذ يُلزم الإجراء بعدم وجود أي متغيرات محلية على الإطلاق، ولا يسمح GOTOبالخروج من الدالة، ولا يُمكنه الإشارة إلى متغيرات الإجراء المُحيط. تُتيح هذه التوجيهات تجنُّب شرط ملء سجل التنشيط بالكامل ، مما يُحسِّن الأداء. [ 11 ] كما أن لهذا أثرًا جانبيًا يتمثل في أن المتغيرات المُعلنة داخل إجراء غير مُعلَّم RECURSIVEلن تُعاد تهيئتها بين الاستدعاءات، [ 11 ]static وهو ما يُشابه تأثير ` .` في لغة C.
تضمنت لغة SAIL أيضًا FORWARDالمُؤهِّل، الذي يُستخدم لإدراج التصريحات المسبقة ، عادةً عندما تستدعي إجرتان بعضهما البعض. [ 10 ]RETURN كان يعمل كما في لغة C، حيث يُنهي الإجراء ويعود إلى المُستدعي، بالإضافة إلى إمكانية إرجاع قيمة إذا كان الإجراء يستخدم قيمة. [ 12 ] يمكن تمرير المعاملات إلى الإجراءات بواسطة VALUEأو REFERENCE، حيث يسمح الأخير بإرجاع القيم. [ 13 ]
أنواع البيانات الأساسية والمعاملات
أنواع المتغيرات الأساسية في لغة SAIL هي الأعداد الصحيحة ، والأعداد الحقيقية (ذات الفاصلة العائمة)، والقيم المنطقية ، والسلاسل النصية . [ 14 ] كانت عمليات تحويل الأنواع تلقائية، لذا يتم تحويل القيمة 5 إلى عدد عشري مزدوج (double) لأن هذا ما تتطلبه دالة الجذر التربيعي (SQRT)، ثم يتم تحويل النتيجة إلى عدد صحيح. [ 3 ] يمكن تحويل أي من هذه الأنواع إلى مصفوفة بإضافة المحدد ووضع حدود المصفوفة بين قوسين، على سبيل المثال، . تدعم SAIL المصفوفات أحادية البعد وثنائية البعد. [ 15 ]INTEGERi;i←SQRT(5);ARRAYREALARRAYweeks[1:52]);
استخدمت اللغة السهم الأيسر للتخصيص، ←أو الشرطة السفلية على المنصات التي لم تكن تدعم ترميز ستانفورد ASCII . [ 16 ] تضمنت عددًا من الدوال القياسية مثل الجذر التربيعي ، وجميع عوامل التشغيل الرياضية الشائعة، وكانت مشابهة لمعظم مشتقات لغة ALGOL في البرمجة العادية. [ 17 ]
تمت معالجة السلاسل النصية باستخدام تقطيع المصفوفات ، حيث aStr[i TO j]تُعيد الدالة `int` السلسلة الفرعية التي تحتوي على الأحرف من i إلى j، أو aStr[i FOR j]السلسلة الفرعية التي تبدأ من i وتمتد لـ j حرفًا. [ 18 ] تُمثل الكلمة INFالمفتاحية `int` نهاية السلسلة، مما يسمح aStr[i TO INF]بإرجاع كل شيء بدءًا من i. [ 3 ] تضمنت دوال ومعاملات السلاسل النصية EQUاختبار ما إذا كانت سلسلتان متساويتان، [ 5 ] وعلامة العطف (&) للدمج، LENGTHودالة ` LOPint` التي تُزيل الحرف الأول من السلسلة. [ 18 ] لم تكن هناك طريقة لمقارنة السلاسل النصية إلا باستخدام ` EQUint`، حيث كانت المعاملات مثل `int` <مُعرّفة للأرقام فقط. [ 4 ]
السجلات والمؤشرات
لم يُقدَّم مفهوم السجلات كنوع بيانات إلا مؤخرًا عند كتابة لغة SAIL. لذا، تُظهر هذه الميزة علامات على أنها أُضيفت إلى بنية اللغة. على سبيل المثال، تم تعريف بنية السجل باستخدام العبارة RECORD!CLASS: . عملت هذه العبارة بطريقة مشابهة لعبارة في لغة باسكال، حيث حددت قالب السجل. لإنشاء سجل، استخدمنا العبارة ، التي أعادت . كانت المؤشرات مُصنَّفة، ويمكن أن تُصنَّف إلى أكثر من نوع واحد، على سبيل المثال، تُعرِّف rp، وهو مؤشر إلى سجل شخص أو سجل جامعة. [ 19 ] يمكن أيضًا تعريف المؤشرات لتشير إلى . [ 20 ] كان الوصول إلى البيانات في السجل مميزًا بنفس القدر؛ لطباعة ملف اسم شخص، على سبيل المثال، كانت الصيغة هي . [ 20 ]RECORD!CLASSperson(STRINGname,address;INTEGERaccountnum;REALbalance)RECORDNEW!RECORDRECORD!POINTERRECORDPOINTER(person,university)rp;ANY!CLASSPRINT(person:name[rp]);
ماسح ضوئي للسلاسل
بالإضافة إلى وظائف معالجة النصوص الأساسية، تضمنت لغة SAIL نظامًا لفحص النصوص كجزء من لغتها الأساسية. SCANكان النظام الأول يعمل على متغيرات النصوص، بينما كان النظام الثاني، المشابه له في جوانب أخرى، INPUTيُستخدم لفحص النصوص المقروءة من ملف. استخدم كلا النظامين نظامًا يُعرف باسم "جدول الفواصل"، والذي يتكون من مجموعة من الأحرف التي تُمثل مواضع توقف القراءة، ومن أمثلتها فواصل الأسطر، والمسافات البيضاء المختلفة، وعلامات الترقيم. تم تخزين هذه الجداول في هياكل خاصة، وكان النظام يسمح بـ 54 جدولًا فقط، وهو عدد غير مُوضح في الوثائق. [ 21 ]
لإنشاء جدول جديد، يتم أولاً استدعاء GETBREAKدالة تُعيد الخانة الفارغة التالية في الجدول، أو "رقم الجدول". يلي ذلك استدعاء دالة SETBREAKأخرى تأخذ رقم الجدول، وسلسلة نصية تحتوي على أحرف الفصل، وسلسلة نصية أخرى تحتوي على "أحرف الحذف" التي يتم تجاهلها أثناء القراءة (كما لو أنها غير موجودة في السلسلة النصية)، وأخيرًا "الأوضاع"، وهي علامات تُشير إلى كيفية عمل النظام. بمجرد ضبطها، يمكن للبرنامج استدعاء الدالة SCANأو بشكل متكرر INPUT، والحصول على سلاسل نصية كاملة. [ 22 ] يتضمن ذلك مُعاملًا مرجعيًا، عادةً brkchar، يحتوي على الحرف الذي تسبب في الفصل، مما يسمح باختبار، على سبيل المثال، أحرف نهاية الملف. يُشابه النظام من حيث المفهوم strtokوظائف لغة C، وهي جزء من المكتبة القياسية [ 23 ]، على عكس كونها جزءًا من اللغة نفسها كما هو الحال في SAIL.
المدخلات/المخرجات
كان نظام الإدخال/الإخراج في SAIL قائمًا على فكرة "القنوات" المرقمة، بطريقة مشابهة إلى حد ما لإدخالات الماسح الضوئي. لفتح ملف، كان المستخدم يستدعي أولًا GETCHANدالة تُعيد قيمة قناة متاحة، ثم OPENيُمرر إليها معلمات مختلفة لوصف الملف وأنماط التشغيل. RELEASEوكانت هذه الدالة تُعادل دالة الإغلاق. بمجرد فتح الملف، يُمكن قراءته، وفقًا لقواعد المسح المذكورة أعلاه، عن طريق استدعاء INPUTدالة البحث عن نهاية الملف. لم تكن للملفات أسماء كجزء من عملية الفتح، بل LOOKUPكان يُمكن استخدام دالة أخرى لتوجيه قناة إلى ملف مُحدد، أو ENTERلإنشاء ملف جديد مرتبط بقناة، أو RENAMEلتغيير اسم ملف موجود. [ 24 ] يُمكن فتح ملف موجود للكتابة باستخدام دالة أخرى GETCHAN... OPEN... LOOKUP... ENTER. [ 25 ]
استُخدمت العديد من المعالجات والمتغيرات الخاصة أثناء عمليات الإدخال والإخراج. على سبيل المثال، INCHWLكانت الدالة عبارة عن مُدخل مُثبّت مُسبقًا على طرفية المستخدم ومفتوحة دائمًا، وتُعيد حرف الفصل في متغير النظام !SKIP!. [ 26 ] عادةً ما تُخرج الدالة PRINTإلى قناة الطرفية نفسها، ولكن يُمكن أيضًا توجيهها إلى أي قناة مفتوحة أخرى. [ 27 ]
توجيهات المُترجم
باعتبارها لغة برمجة أنظمة، كان الأداء بالغ الأهمية، وللمساعدة في ذلك، تضمنت SAIL وحدةً DEFINEتستخدم استبدال السلاسل النصية بطريقة مشابهة #defineلوحدات الماكرو في لغة C. [ 28 ] يتمثل الاختلاف في ضرورة تحديد المحددات المحيطة بالاستبدال، على سبيل المثال REQUIRE "[][]" DELIMITERS;DEFINE maxSize=[100];. كان أحد الاستخدامات الشائعة لهذه الوحدات هو تعريف الثوابت الحرفية مثل CRLF، حيث لم تكن هذه الثوابت جزءًا من اللغة الأساسية. [ 28 ] كما استُخدمت أيضًا لإعادة تعريف COMMENTالعبارة إلى الصيغة الأقصر !. [ 29 ]
تضمن النظام أيضًا نظام تجميع شرطي باستخدام عبارات، بدلاً من توجيهات المعالج المسبق الموجودة في لغة C. IFCRيقوم النظام بتجميع الكتل بين الشرطين المتناظرين THENCو ELSECأو ENDC. يجب أن يكون الشرط في IFCR معروفًا في وقت التجميع، لذلك، كما هو الحال في لغة C، كان عادةً DEFINEقيمة d. [ 30 ]
بيانات LEAP
يتمثل الاختلاف الرئيسي بين لغة SAIL واللغات الأخرى المشتقة من ALGOL في تضمينها لمخزن البيانات الترابطي من لغة LEAP. يوفر هذا النظام آليةً لوضع البيانات في هياكل شبيهة بالسجلات، ثم حفظها واسترجاعها والبحث فيها. في هذا الصدد، كان مشابهًا لميزات معالجة البيانات في لغة COBOL . كان أساس المخزن هو الارتباط أو الثلاثية ، مما يسمح بربط قيمة بيانات بموضع مُسمى في سجل. على سبيل المثال، يمكن إنشاء سجل من النوع Family_Memberباستخدام Name"Tom" وتعيين Fatherالحقل إلى "Harry". ينتج عن ذلك ثلاثية على شكل (Father, Tom, Harry). يمكن للمكتبات المرتبطة بعد ذلك العثور على جميع السجلات Family_Memberالتي يكون فيها "Harry" هو الموضع Father، وربما إرجاع "Tom" و"Alice". [ 31 ]
مثال
الكود التالي، الموجود في البرنامج التعليمي، يحول سلسلة الإدخال إلى أحرف كبيرة. [ 10 ]
إجراء سلسلة نصية upper(سلسلة نصية rawstring)؛ ابدأ بـ "الأعلى" سلسلة نصية مؤقتة؛ عدد صحيح من نوع حرف؛ tmp←NULL; طالما أن طول السلسلة الخام يساوي صفرًا، نفّذ يبدأ char←LOP(rawstring); COMMENT LOP تُعيد الحرف الأول وتُحرّك المؤشر بعده tmp←tmp&(IF "a" LEQ char LEQ "z" THEN char-'40 ELSE char); نهاية؛ أعد (tmp)؛ نهاية "الأعلى"؛ الاستخدامات
تم برمجة عدد من أنظمة البرمجيات المثيرة للاهتمام بلغة SAIL، بما في ذلك بعض الإصدارات المبكرة من FTP و TeX ، ونظام تنسيق المستندات المسمى PUB، [ 32 ] وBRIGHT، وهو مشروع قاعدة بيانات سريرية برعاية المعاهد الوطنية للصحة . [ 33 ] [ 34 ] [ 35 ] [ 36 ] [ 37 ] [ 38 ] [ 39 ] [ 40 ] [ 41 ]
في عام 1978، كان هناك ستة أنظمة تشغيل مختلفة لجهاز PDP-10: ITS (معهد ماساتشوستس للتكنولوجيا)، WAITS (ستانفورد)، TOPS-10 (DEC)، CMU TOPS-10 (جامعة كارنيجي ميلون)، TENEX ( BBN )، Tymcom-X (Tymshare)، و TOPS-20 (DEC، استنادًا إلى TENEX).
تم نقل برنامج SAIL من نظام WAITS إلى نظام ITS لتمكين باحثي معهد ماساتشوستس للتكنولوجيا من الاستفادة من البرامج المطورة في جامعة ستانفورد . وكان كل نقل يتطلب عادةً إعادة كتابة كود الإدخال/الإخراج في كل تطبيق. [ 42 ]
طُوِّرت نسخة مستقلة عن الجهاز من لغة SAIL تُسمى MAINSAIL في أواخر سبعينيات القرن الماضي، واستُخدمت لتطوير العديد من أدوات التصميم الإلكتروني بمساعدة الحاسوب (eCAD) خلال ثمانينيات القرن الماضي. كانت MAINSAIL سهلة النقل إلى معالجات وأنظمة تشغيل جديدة، وظل استخدامها محدودًا حتى عام 2005..
انظر أيضاً
- ستانفورد إكستندد ASCII (SEASCII)
مراجع
- ↑ سليميك 1971 ، ص 22.
- 1 2 ريزر 1976 ، ص. iii.
- 1 2 3 سميث 1976 ، ص. 13.
- 1 2 سميث 1976 ، ص 48.
- 1 2 3 سميث 1976 ، ص. 11.
- ↑ سميث 1976 ، ص 15.
- ↑ سميث 1976 ، ص 17.
- ↑ سميث 1976 ، ص 19.
- ↑ سميث 1976 ، ص 18.
- 1 2 3 سميث 1976 ، ص. 21.
- 1 2 سميث 1976 ، ص. 22.
- ↑ سميث 1976 ، ص 23.
- ↑ سميث 1976 ، ص 24.
- ↑ سميث 1976 ، ص. 2.
- ↑ سميث 1976 ، ص 4.
- ↑ سميث 1976 ، ص 5.
- ↑ سميث 1976 ، ص. 6.
- 1 2 سميث 1976 ، ص. 12.
- ↑ سميث 1976 ، ص 40.
- 1 2 سميث 1976 ، ص 41.
- ↑ سميث 1976 ، ص 27.
- ↑ سميث 1976 ، ص 28.
- ↑ "الدالتان strtok() و strtok_r() في لغة C مع أمثلة" . 24 ديسمبر 2016.
- ↑ سميث 1976 ، ص 32.
- ↑ سميث 1976 ، ص 33.
- ↑ سميث 1976 ، ص 30.
- ↑ سميث 1976 ، ص 2، 38.
- 1 2 سميث 1976 ، ص. 25.
- ↑ سميث 1976 ، ص 26.
- ↑ سميث 1976 ، ص 44.
- ↑ ريزر 1976 ، ص 83.
- ↑ "دليل المستخدم" . Nomodes.com . مؤرشف من الأصل في 5 فبراير 2005. تم الاطلاع عليه في 30 ديسمبر 2017 .
- ↑ رودبارد، د.؛ كول، ب. ر.؛ مونسون، ب. ج. (1983). "تطوير حزمة إحصائية تفاعلية سهلة الاستخدام وذاتية التعلم لتحليل بيانات البحوث السريرية: حزمة برايت ستات باك" . وقائع الندوة السنوية لتطبيقات الحاسوب في الرعاية الطبية . 8 (3): 701-704 . doi : 10.1007/BF02224505 . PMC 2578281. PMID 6384409 .
- ↑ ستيتن، ديويت (10 مايو 2014). معاهد الصحة الوطنية: سرد للبحوث في مختبراتها وعياداتها . دار النشر الأكاديمية. رقم ISBN 9781483277554– عبر كتب جوجل.
- ↑ «موارد الحاسوب التجريبية الطبية بجامعة ستانفورد : RR-00785 : التقرير السنوي - السنة 05» . Profiles.nlm.nih.gov . مؤرشف من الأصل بتاريخ 16 أغسطس 2016. تم الاطلاع عليه بتاريخ 30 ديسمبر 2017 .
- ↑ «التقرير السنوي : المعاهد الوطنية للصحة. قسم أبحاث وتكنولوجيا الحاسوب» . Archive.org . بيثيسدا، ماريلاند. 1985. تم الاطلاع عليه بتاريخ 30 ديسمبر 2017 .
- ↑ زولين، دينيس لاريونوف وألكسندر. "اقرأ الكتاب الإلكتروني التقرير السنوي : المعاهد الوطنية للصحة. قسم أبحاث وتكنولوجيا الحاسوب (المجلد 1981-1983) الصادر عن المعاهد الوطنية للصحة (الولايات المتحدة). قسم أبحاث وتكنولوجيا الحاسوب مجانًا عبر الإنترنت (الصفحة 4 من 56)" . Ebooksread.com . تاريخ الوصول: 30 ديسمبر 2017 .
- ↑ "مشروع PUFF/VM : القسم 4.1.6" . Profiles.nlm.nih.gov . مؤرشف من الأصل بتاريخ 12 أكتوبر 2008. تم الاطلاع عليه بتاريخ 30 ديسمبر 2017 .
- ↑ "القسم 9.2.6 : مشروع PUFF/WI" . Profiles.nlm.nih.gov . مؤرشف من الأصل بتاريخ 16 أغسطس 2016. تم الاطلاع عليه بتاريخ 30 ديسمبر 2017 .
- ↑ "القسم 4.1.7 : مشروع PUFF/VM" . Profiles.nlm.nih.gov . مؤرشف من الأصل بتاريخ 16 أغسطس 2016. تم الاطلاع عليه بتاريخ 30 ديسمبر 2017 .
- ↑ «موارد الحاسوب التجريبية الطبية بجامعة ستانفورد : RR-00785 : التقرير السنوي - السنة 05» (ملف PDF) . Profiles.nlm.nih.gov . مؤرشف من النسخة الأصلية (PDF) بتاريخ 5 نوفمبر 2004. تم الاطلاع عليه بتاريخ 30 ديسمبر 2017 .
- ↑ تستند هذه المقالة إلى مواد مأخوذة من Stanford+Artificial+Intelligence+Language في قاموس الحوسبة المجاني على الإنترنت قبل 1 نوفمبر 2008 وتم دمجها بموجب شروط "إعادة الترخيص" الخاصة بـ GFDL ، الإصدار 1.3 أو أحدث.
فهرس
- رايزر، جون (أغسطس 1976). SAIL (ملف PDF) (تقرير فني). مختبر ستانفورد للذكاء الاصطناعي.
- سميث، نانسي (أكتوبر 1976). برنامج تعليمي حول SAIL (ملف PDF) (تقرير فني). مختبر ستانفورد للذكاء الاصطناعي.
- سليميك، جون (أكتوبر 1971). "لغات تنفيذ الأنظمة الحالية: وجهة نظر أحد المستخدمين" (ملف PDF) . نشرة ACM SIGPLAN . 6 (9): 20-28 . doi : 10.1145/942596.807056 .
للمزيد من القراءة
- بيبي، نيلسون إتش إف (2005). "وقائع مؤتمر Practical TEX 2005: تصميم TEX وMETAFONT: نظرة استعادية" (ملف PDF) . TUGboat . 26 (1). سولت ليك سيتي، يوتا، الولايات المتحدة الأمريكية: جامعة يوتا ، قسم الرياضيات: 39-40 . تاريخ الاسترجاع : 7 مارس 2017.
كان عامل الشرطة السفلية في عمليات إسناد التعليمات البرمجية المصدرية لـ SAIL يُطبع كسهم متجه لليسار في نسخة ستانفورد من ASCII، بينما كانت مواقع PDP-10 الأخرى تعتبره مجرد شرطة سفلية عادية. ومع ذلك، فإن استخدامه كعامل إسناد يعني أنه لا يمكن استخدامه كحرف ممتد لجعل الأسماء المركبة أكثر قابلية للقراءة، كما هو شائع الآن في العديد من لغات البرمجة الأخرى. لم يكن السهم المتجه لليسار في نسخة ستانفورد من ASCII هو الحرف غير المألوف الوحيد.
روابط خارجية
- عائلة لغات البرمجة Algol
- لغات برمجة الأنظمة
