السنوات الأولى للقلعة

صورة

أخذت KDPV من هنا

المقدمة


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

تمت كتابة هذا العمل في مؤتمر حول تاريخ لغات البرمجة - HOPL II. تم رفضها في نهاية المطاف ، ربما بسبب أسلوب عرضها.

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

إن FORT ككل ليس أصليًا ، ولكنه مزيج فريد من المكونات. أنا ممتن لهؤلاء الأشخاص والمنظمات التي سمحت لي بتطويره - غالبًا دون أن أعرف ذلك بنفسي. وأشكرك على اهتمامك بجعلك تقرأ عنه.

FORT هي لغة كمبيوتر بسيطة وطبيعية. اليوم [1991 - تقريبا. العابرة.] تعتبر لغة برمجة عالمية المستوى. حقيقة أنه وصل إلى هذا المستوى دون دعم الصناعة أو الجامعات أو الحكومة هو نتيجة لفعاليته وموثوقيته وتنوعه. Fort هي لغة يتم اختيارها عندما تكون فعاليتها أكثر أهمية من شعبية اللغات الأخرى. هذه حالة متكررة في المجالات العملية مثل أنظمة التحكم والاتصالات.

تقدم العديد من مؤسسات FORT والعديد من الشركات الصغيرة أنظمة وتطبيقات ووثائق. في أمريكا الشمالية وأوروبا وآسيا ، تعقد مؤتمرات سنوية. سيتم تقديم مسودة معيار ANSI [ANS 1991] قريبًا.

لا يصف أي من الكتب عن FORT "ذوقه" بشكل كامل. أعتقد أن الأفضل لا يزال الأول منهم - "البداية الرابعة" ليو برودي [متاح ، على سبيل المثال ، هنا - https://www.forth.com/starting-forth/ - تقريبًا. ترجم.] .

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

FORT هي لغة نصية خالية من السياق. يسمح لك بدمج "الكلمات" ، مفصولة بمسافات ، لإنشاء "كلمات" جديدة. تشكل حوالي 150 من هذه الكلمات نظامًا يوفر:

         SAO  1958  
        SLAC  1961   
         RSI  1966    ,   , 
     Mohasco  1968  ,  , ,  ,
                    
        NRAO  1971   *,    

* الرمز المطرز هو طريقة لتجميع برنامج يحتوي على مجموعة من مكالمات البرنامج الفرعي ، راجع https://en.wikipedia.org/wiki/Threaded_code - تقريبًا. perev.

يحتوي هذا النظام من 3 إلى 8 كيلو بايت من كود البرنامج الذي تم تجميعه من 10 إلى 20 صفحة من شفرة المصدر. يمكن تطويره بسهولة من قبل مبرمج واحد ، حتى على جهاز كمبيوتر مع موارد محدودة.

يصف هذا النص بالضرورة مهنتي. ولكن تم اعتباره "سيرة ذاتية" للقلعة. سأناقش ميزات FORT المذكورة أعلاه وأسماء "الكلمات" المرتبطة بها. معاني العديد من "الكلمات" واضحة. يحتاج البعض إلى وصف ، والبعض يتجاوز نطاق هذا العمل.

يتم سرد جزء من قاموس اللغة FORT للنظر فيه أدناه:


     WORD  NUMBER  INTERPRET  ABORT
     HASH  FIND  '  FORGET
     BASE  OCTAL  DECIMAL  HEX
     LOAD  EXIT  EXECUTE  (
 (  )
     KEY  EXPECT
     EMIT  CR  SPACE  SPACES  DIGIT  TYPE  DUMP
 
     DUP  DROP  SWAP  OVER
     +  -  *  /  MOD  NEGATE
     ABS  MAX  MIN
     AND  OR  XOR  NOT
     0<  0=  =
     @  !  +!  C@  C!
     SQRT  SIN.COS  ATAN  EXP  LOG
 
     :  ;  PUSH  POP  I
 (   )
     BLOCK  UPDATE  FLUSH  BUFFER  PREV  OLDEST

     CREATE  ALLOT  ,  SMUDGE
     VARIABLE  CONSTANT
     [  ]  LITERAL  ."  COMPILE
     BEGIN  UNTIL  AGAIN  WHILE  REPEAT
     DO  LOOP  +LOOP  IF  ELSE  THEN


معهد ماساتشوستس للتكنولوجيا ، SAO ، 1958


كان الوقت الأكثر إثارة هو أكتوبر 1957 ، عندما تم إطلاق Sputnik [القمر الصناعي Sputnik-1 - تقريبًا. ترجم.] . كنت طالبًا في السنة الثانية في معهد ماساتشوستس للتكنولوجيا وعملت بدوام جزئي في مرصد سميثسونيان للفيزياء الفلكية ، وهو ما يصل إلى 16 مقطعًا ، كابوسًا في هارفارد. كان المرصد مسؤولاً عن التتبع البصري للأقمار الصناعية - الملاحظات البصرية باستخدام القمر [بمعنى مشروع Moonwatch - https://en.wikipedia.org/wiki/Operation_Moonwatch - تقريبًا. ترجم.] وكاميرات تتبع الأقمار الصناعية [ كاميرات بيكر نون - https://en.wikipedia.org/wiki/Schmidt_camera#Baker-Nunn - تقريبا. perev.]. عندما فوجئوا ، قاموا بتوظيف الطلاب لمعرفة المسارات على حاسبات فريدين المكتبية. أخبرني جون Gaustad عن IBM EDPM 704 في معهد ماساتشوستس للتكنولوجيا وأعطاني دليله FORTRAN II. ونتيجة لذلك ، تركني برنامجي الأول ، Ephemeris 4 ، بدون عمل.

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

قام جون مكارثي بتدريس دورة LISP ممتازة في معهد ماساتشوستس للتكنولوجيا. كانت هذه الدورة مقدمة عن الإعادة والتنوع الرائع في لغات البرمجة. لاحظ ويل بادن أن LISP لحساب التفاضل والتكامل لامدا هو نفسه FORT لتدوين postfix Lukasewcleicz [تدوين Lukashevich ، المعروف أيضًا باسم التدوين البولندي العكسي - تقريبًا. ترجم.] .

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

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

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

شاركت عوامل مثل P2 (متعدد الحدود من الدرجة الثانية) و S (جيب) في هذه المعادلات. في معظم الوقت ، استغرقت حوسبة الفاصلة العائمة 36 بت ، لذلك كان الحمل منخفضًا. لم يكن هناك حاجة إلى مكدس البيانات ، ولكن ربما لم أكن أعرف ذلك.

وهكذا بدأت قصة مترجم FORT - من الكلمات

WORD  NUMBER  INTERPRET  ABORT


لم يتم تسجيلها بعد في الكلمات ، لأنها أرقام عامل. يستخدم

INTERPRET WORD لقراءة الكلمات مفصولة بمسافات ، و NUMBER لتحويل الكلمات [أرقام في سجل نصي - تقريبًا. ترجم.] في شكل ثنائي (في هذه الحالة ، مع نقطة ثابتة). كان هذا الإدخال بتنسيق حر غير عادي ، ولكنه أكثر كفاءة (أصغر وأسرع) وأكثر موثوقية. تم تنسيق إدخال نمط فورتران في أعمدة محددة ، وتسببت الأخطاء المطبعية في العديد من التأخيرات.

استخدم هذا المترجم تركيبة IF ... ELSE IF المشفرة في FORTRAN لمطابقة كل حرف. كان كل معالجة الخطأ يقطع ببساطة تنفيذ البرنامج. ثم ، كما هو الحال الآن ، كلمة ABORTيسأل المستخدم ماذا يفعل. نظرًا لأن بطاقات الإدخال مرقمة بترتيب القراءة ، يمكنك معرفة مكان الخطأ.

ستانفورد ، SLAC ، 1961


في عام 1961 ، أتيت إلى ستانفورد لدراسة الرياضيات. على الرغم من أن ستانفورد أنشأ قسم علوم الكمبيوتر الخاص به ، إلا أنني كنت مهتمًا أكثر بالحوسبة. لقد تأثرت أنهم يستطيعون (يجرؤ؟) كتابة مترجم ALGOL الخاص بهم. ومع ذلك - جلبني القدر إلى كمبيوتر بوروز B5500. لقد استأجرت مرة أخرى للعمل بدوام جزئي في SLAC (Stanford Linear Accelerator ، 10 مقاطع) ، وكتابة التعليمات البرمجية لتحسين الاحتفاظ بالشعاع في مسرع إلكتروني ثلاثي المستقبل. كان هذا تطبيقًا طبيعيًا لطريقة المربعات الصغرى (التي اكتسبت فيها خبرة) لطرح الفضاء. كانت هال بتلر مسؤولة عن مجموعتنا ، ونجح برنامج النقل لدينا.

تطبيق آخر لطريقة المربعات الصغرى كان برنامج CURVE ، الذي كتب عام 1964 على ALGOL. كان برنامجًا عالميًا لاختيار البيانات غير الخطية مع التصحيح التفاضلي. قدم دقتها الإحصائية تحليلاً مفصلاً لاتساق النموذج والبيانات التجريبية.

تم تفسير تنسيق البيانات والمعادلات النموذجية ، وتم استخدام مكدس لتسهيل الحسابات. كان CURVE رائدًا مثيرًا للإعجاب لـ FORT. لإتاحة الفرصة للعمل ليس مع معادلات بسيطة ، ولكن مع نماذج أكثر تفصيلاً ، قدمت الكلمات التالية:

     +  -  *  NEGATE
     IF  ELSE  THEN  <
     DUP  DROP  SWAP
     :  ;  VARIABLE  !  (
     SIN  ATAN  EXP  LOG


كان الإملاء مختلفًا قليلاً:

     NEGATE  -    MINUS
       DROP  -    ;
       SWAP  -    .
          !  -    <
   VARIABLE  -    DECLARE
          ;  -    END
     ( ...)  -    COMMENT ...;


لتعريف كلمة إدخال مكونة من ستة أحرف (تسمى ATOM بالقياس مع LISP) ، استخدم المترجم IF ... ELSE IF . كانت DUP و DROP و SWAP تعليمات الآلة ؛ لقد فوجئت بأنهم كتبوا بشكل مختلف. تم أخذ كلمة " : " (النقطتين) من تنسيق الملصق في ALGOL ، وتم "قلبها" لتحليلها من اليسار إلى اليمين (لمنع المترجم من اكتشاف الكلمات غير المحددة):

     ALGOL - LABEL:
     CURVE - : LABEL

في الواقع ، قام القولون بتمييز الموضع في خط الإدخال ، والذي سيتم تفسيره لاحقًا. توقف التفسير بكلمة " ؛ " (فاصلة منقوطة). تم استدعاء نسخة واحدة من القولون DEFINE .

مشغل السجل " ! "(علامة التعجب) ظهرت فيما يتعلق بالمتغيرات ؛ لكن قراءة " @ " كانت تلقائية. يرجى ملاحظة أن الرمز أصبح معقدًا بما يكفي لطلب التعليقات. بدأت حالة postfix التي تم انتقادها مرة واحدة من هنا:

     ALGOL - IF expression THEN true ELSE false
     CURVE - stack IF true ELSE false THEN

إذا كانت هناك قيمة غير صفرية أعلى المكدس ، فقد تم اعتبارها قيمة منطقية صحيحة (حقيقية). ثم قدمت نهاية فريدة من نوعها ، والتي أربكتني غيابها دائمًا في ALGOL. تم تفسير عبارات مماثلة على النحو التالي: إذا تم مسح الإدخال لـ ELSE أو بعد ذلك . قدمت الكلمة < اصطلاحًا مفاده أن العلاقة تترك قيمة منطقية على المكدس - 1 إذا كانت صحيحة ، و 0 إذا كانت خاطئة. إن الوظائف التجاوزية هي بالطبع مكالمات إلى إجراءات المكتبة.

على خبز مجاني


تركت ستانفورد عام 1965 لأصبح مبرمج كمبيوتر مستقل في نيويورك. لم يكن هذا أمرًا غير معتاد ، ووجدت برمجة عمل في FORTRAN و ALGOL و Jovial و PL / I والعديد من المجمعين. لقد جربت حرفيا مع حزمة من البطاقات المثقوبة وأعدت برمجتها حسب الحاجة. ظهرت أجهزة الكمبيوتر المصغرة ، ومعها - محطات. كان المترجم مثاليًا لإدخال teletype ، وسرعان ما اكتسب رمزًا للعمل مع الإخراج. لذلك وجدنا الكلمات:

     KEY  EXPECT
     EMIT  CR  SPACE  SPACES  DIGIT  TYPE

EXPECT هو حلقة تستدعي KEY لقراءة ضغطات المفاتيح. TYPE هي حلقة تستدعي EMIT لعرض حرف.

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

لقد قمت بعمل لائق لبوب ديفيس في Realtime Systems، Inc (RSI). لقد درست بدقة 5500 MCP - وهو ما يكفي لدعم خدمة مشاركة الوقت (العمل مع المحطات البعيدة) ، وكتبت أيضًا مترجمًا من FORTRAN إلى ALGOL وأدوات تحرير الملفات. أظهر لي المترجم قيمة المسافات بين الكلمات التي لا يتطلبها FORTRAN.

لا يزال المترجم يميز الكلمات فقط بالأحرف الستة الأولى (حيث كانت كلمة البيانات في Burroughs B5500 كانت 48 بت). ظهرت الكلمات LIST EDIT BEGIN AGAIN EXIT .

الكلمات BEGIN ... AGAIN تمت كتابتها كـ START ... REPEAT وعملت كـ "أقواس" لأوامر التحرير T TYPE I INSERT D DELETE F FINDتستخدم لاحقًا في محرر NRAO. تم استخدام

كلمة FIELD بأسلوب DBMS الرابع من Mohasco. ومن هنا كانت إحدى السمات المميزة لـ FORT. القاعدة هي أن FORT يؤكد كل سطر من المدخلات عن طريق إضافة OK عند اكتمال التفسير. يمكن أن يكون هذا مزعجًا ، لأنه عندما ينتهي الإدخال بحرف CR ، يجب عرض مسافة ، ثم OK ، و CR آخر. في مؤشر القوة النسبية ، حسنًا ، وجدت نفسي على السطر التالي ، ولكن مع ذلك نقلت تأكيدًا وديًا عبر خط اتصال مخيفة [نكتة مؤلفة تستند إلى حقيقة أنه في تلك السنوات كان عمل أجهزة الكمبيوتر ذات خطوط الاتصال غير عادي ؛ بالنسبة للقارئ الحديث ، فقدت النكتة بالفعل أهميتها وأصواتها ، على الأقل ، غريبة - تقريبًا. ترجم.] :

     56 INSERT ALGOL IS VERY ADAPTABLE
     OK


يقترح تدوين postfix استخدام مكدس بيانات ، ولكن عمقها الكافي هو واحد فقط.

محاسكو ، 1968


في عام 1968 ، جئت للعمل كمبرمج في شركة Mohasco Industries، Inc التجارية في أمستردام ، نيويورك. كانت شركة كبيرة تنتج السلع المنزلية - السجاد والأثاث. لقد عملت مع جيف ليتش في RSI ، وأقنعني بنقله إلى الجزء الشمالي من الولاية. لقد تزوجت للتو ، وفي أمستردام كان هناك جو رائع في بلدة صغيرة ، على النقيض من نيويورك.

أعدت كتابة الرمز الخاص بي على COBOL واكتشفت ما هو برنامج الأعمال حقًا. كان Bob Raiko مسؤولًا عن معالجة بيانات الشركة وأعطاني مشروعين متصلين.

استأجر جهاز كمبيوتر صغير IBM 1130 مع عرض رسومي 2250. كان الهدف هو معرفة ما إذا كانت رسومات الكمبيوتر يمكن أن تساعد في إنشاء سجاد منقوش. كان الجواب "لا يمكن أن يساعد بدون دعم الألوان" ، ولم يعد خيار 1130 متاحًا.

في ذلك الوقت ، كان لدي أحدث حاسوب صغير: معالج 16 بت ، 8K RAM ، محرك أقراص (الأول في حياتي) ، لوحة مفاتيح ، طابعة ، قارئ بطاقات ولكمة ، مترجم FORTRAN. كان القارئ واللكمة خيارًا احتياطيًا في حالة حدوث عطل في القرص. قمت مرة أخرى بنقل المترجم الخاص بي (مرة أخرى إلى FORTRAN) وأضفت المجمع المجمع للعمل مع 2250.

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

تم استدعاء الملف الذي يحتوي على المترجم FORTH ، وهو ما يعني برنامج الجيل الرابع (التالي) ، الرابع. ولكن كان لا بد من اختصار الاسم ، لأن نظام التشغيل قصر أسماء الملفات على 5 أحرف.

كانت بيئة البرمجة هذه لـ 2250 أفضل بكثير من FORTRAN ، لذلك قمت بتوسيع المجمّع المتقاطع 2250 إلى المترجم 1130. كان هناك الكثير من الكلمات الجديدة:

     DO  LOOP  UNTIL
     BLOCK  LOAD  UPDATE  FLUSH
     BASE  CONTEXT  STATE  INTERPRET  DUMP
     CREATE  CODE  ;CODE  CONSTANT  SMUDGE
     @  OVER  AND  OR  NOT  0=  0< 


كان هجائهم لا يزال مختلفًا [عن معيار FORT - تقريبًا. ترجم.] :

      LOOP     CONTINUE
     UNTIL -      END
     BLOCK -      GET
      LOAD -      READ
      TYPE -      SEND
 INTERPRET -      QUERY
    CREATE -      ENTER
      CODE -       


كان هذا هو التطبيق الوحيد الذي وجدته لرمز السنت.

تم تخزين العداد وحد الحلقة في مكدس البيانات. DO و إستمر جاءت بفضل FORTRAN. تحكم

BLOCK في عدد المخازن المؤقتة لتقليل وصول القرص. LOAD قراءة التعليمات البرمجية المصدر من كتلة بحجم 1024 بايت. تم اختيار حجم 1024 بايت بناءً على حجم الكتلة على القرص ، وكان ناجحًا. سمحت لك كلمة UPDATE بوضع علامة على كتلة في الذاكرة ثم نقلها لاحقًا إلى القرص عندما تحتاج إلى تحرير المخزن المؤقت (أو بكلمة FLUSH ). ينفذ نوعًا من الذاكرة الظاهرية ويسمى ضمنيًا أثناء عمليات الكتابة.

كلمة BASEيُسمح لها بالعمل مع الأعداد الثمانية والسداسية والعشرية. كانت كلمة CONTEXT هي أول تلميح للقواميس وعملت على فصل كلمات المحرر. تحدد كلمة STATE أوضاع الترجمة والتفسير. أثناء التجميع ، تم تجميع عدد الأحرف وأول 3 أحرف من الكلمة [تجميعها في معرف - تقريبًا. ترجمة.] للتفسير اللاحق. من الغريب أن الكلمات يمكن أن تقطعها شخصيات خاصة - ولكن سرعان ما تم التخلي عنها. كان لعامل القراءة ( @ ) العديد من الخيارات ، نظرًا لأن القراءة من المتغيرات والمصفوفات والقرص يجب تمييزها. سمح DUMP للحفر في الذاكرة لتصحيح الأخطاء.

ولكن الأهم من ذلك أنه يوجد قاموس الآن. أخذ كود المترجم الآن اسمًا وبحث عنه في قائمة مرتبطة. أنشأت كلمة CREATE إدخالًا مفردات كلاسيكية:

   *       
   *     3  *
   *  ,   
   *  

* معرّفات FORT معبأة في 32 بت في الشكل: 1 بايت - عدد الأحرف في الكلمة ، 3 بايت المتبقية - الأحرف الثلاثة الأولى من الكلمة (hussars ، be silent!) - تقريبًا. perev.

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

كلمة CODE فئة مهمة من الكلمات. يحتوي حقل المعلمة الخاص به على تعليمات الجهاز. وهكذا ، أصبح من الممكن الآن إنشاء أي كلمة ضمن قدرات الكمبيوتر. حددت كلمة " ؛ CODE " الكود الذي سيتم تنفيذه لفئة جديدة من الكلمات ، وقدمت ما يسمى الآن الكائنات.

كلمةتجنب SMUDGE التكرار أثناء تفسير التعاريف. نظرًا لعرض القاموس بالترتيب من أحدث التعريفات إلى الأقدم ، كان التكرار غير المرغوب فيه شائعًا.

أخيرًا ، ظهر كومة عودة. قبل ذلك ، لم يكن من الممكن أن تتداخل التعريفات ، أو كان من الضروري تخزين عنوان الإرجاع في مكدس البيانات. بشكل عام ، كان وقتًا عظيمًا للابتكار في التنمية (المتقطعة) للقلعة.

كتبنا أنا وجيف ليتش المقال الأول حول FORT (في شكل تقرير داخلي موهاسكو) في عام 1970. لم تفقد أهميتها اليوم.

في عام 1970 ، أمر بوب Univac 1108. كان مشروعًا طموحًا لدعم شبكة خط مخصصة لنظام إدخال الطلبات. لقد كتبت منشئ تقرير على FORT ، لكنني متأكد من أنه يمكنني كتابة رمز لإدخال الطلبات. لزيادة الثقة في FORT ، قمت بنقلها إلى 5500 (كبرنامج منفصل!). لكن برنامج الشركات كان COBOL. والمثير للدهشة أنه تم التوصل إلى حل وسط عن طريق ضبط نظام FORT على 1108 بحيث يتفاعل مع وحدات COBOL لمعالجة المعاملات.

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

يجب كتابة Fort for 1108 في مجمّع. قام بتخزين رسائل الإدخال والإخراج وتوزيع المعالج بين المهام التي تعالج كل سطر. هنا لديك نظام التشغيل الكلاسيكي. ولكن يمكنه أيضًا تحليل خطوط الإدخال وتنفيذ وحدات COBOL المقابلة (باستخدام كلمة PERFORM ). كان يراقب المخازن المؤقتة لأسطوانة الذاكرة وشارك في تغليف وفك السجلات. الكلمات

     BUFFER  PREV  OLDEST
     TASK  ACTIVATE  GET  RELEASE


ظهر في ذلك الوقت. لم يقرأ

BUFFER القرص إذا كان معروفًا أن الكتلة المطلوبة فارغة. تعد PREV و OLDEST متغيرات النظام التي تجعل من الممكن تنفيذ إدارة المخزن المؤقت على أساس "الأقل استخدامًا". حددت TASK المهمة في وقت التمهيد ، وقام ACTIVATE بتشغيلها عند الحاجة. التحكم في الموارد المشتركة GET و RELEASE (أسطوانة الذاكرة ، الطابعة). PAUSE هي الكلمة التي تحرر بها المهمة المعالج. تم تضمينه في كافة عمليات الإدخال / الإخراج وكان غير مرئي لرمز المعاملة. جعلت من الممكن خوارزمية جدولة دورية بسيطة تتجنب الحظر.

بعد البيان[ربما حول الفصل - تقريبا. trans.] كتبت قصيدة غاضبة وكتابًا لم ينشر أبدًا. ووصف كيفية البرمجة في FORT وشجع البساطة والابتكار. كما يصف تقنية رمز مخيط غير مباشر ، ولكن لأول مرة تم تنفيذه في NRAO.

لقد عملت على مفهوم اللغة المعدنية - لغة تتحدث لغة. يمكن لـ Fort الآن تفسير المجمع الذي قام المجمّع بتجميعه ، والذي قام بترجمة المترجم. في النهاية ، قررت أن المصطلحات لا تعمل ، ولكن مصطلح "التجميع" لإعادة تجميع FORT نفسها لا يزال قيد الاستخدام.

NRAO ، 1971


عرض علي جورج كونانت منصبًا في NRAO (المرصد الوطني لعلم الفلك الراديوي ، 22 مقطعًا). كنت أعرفه في CAO ، وأحب Ephemeris 4. انتقلنا إلى شارلوتسفيل ، فيرجينيا ، وقضينا الصيف في توكسون ، أريزونا ، عندما كان التلسكوب اللاسلكي Kitt Peak متاحًا للصيانة.

تضمن المشروع برمجة الكمبيوتر الصغير Honeywell 316 للتحكم في بنك ترشيح جديد لتلسكوب راديوي بموجات طولها 36 بوصة. كان لديه شريط مغناطيسي من تسعة مسارات ومحطة أنبوب Tektronix مع "ذاكرة" [ربما تشير إلى أنابيب الشفق أو منظار الجهد - تقريبًا. perev.]. أعطاني جورج الحرية الكاملة في تطوير النظام ، لكنه لم يكن سعيدًا بالنتيجة. في NRAO استخدم الجميع FORTRAN ، والآن ظهرت مع حصني. كان على حق في أن معايير المنظمة يجب أن تنص على لغة برمجة واحدة مشتركة. ويريد المبرمجون الآخرون الآن لغاتهم الخاصة.

مع ذلك ، كتبت رمز FORT في المجمّع على حاسب IBM 360/50 الرئيسي. ثم قمت بتجميعها تحت 316. ثم قمت بتجميعها أصلاً إلى 316 (على الرغم من أن لدي 360 طرفية ، كان وقت الاستجابة فظيعًا). بمجرد أن أصبح النظام متاحًا ، كان الأمر سهلاً. كان هناك طريقتان للمراقبة: جميع الترددات والخطوط الطيفية. كانت الخطوط الطيفية أكثر إثارة للاهتمام ، لأنني تمكنت من عرض الأطياف أثناء جمع البيانات ، وتخفيف أشكال الخطوط باستخدام طريقة المربعات الأقل.

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

تم تعيين Bess Rather لدعم المرصد. أولاً كان عليها أن تدرس نظام FORT ، ثم تشرحه وتوثقه بأقل قدر من المساعدة من جانبي. في العام التالي ، قمت بإعادة برمجة DDP-116 لتحسين توجيه التلسكوب. ثم استبدلنا أنا وبس DDP-116 و Honeywell 316 بـ DEC PDP-11.

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

: NEXT IP )+ W MOV W )+ ) JMP ;


الآن تم الانتهاء من FORT. وعرفت ذلك. يمكنني كتابة الرمز بشكل أسرع وكان أكثر كفاءة وموثوقية. علاوة على ذلك ، كانت محمولة. واصلت إعادة برمجة DDP-116 ، التي تركز على توجيه تلسكوب Green Bank مقاس 300 بوصة ، و HP mini ، الذي بدأ بعلم الفلك الراديوي طويل المدى (VLBI). أعطاني جورج ModComp ، وبرمجت تحويل فورييه لقياس التداخل والبحث النابض (على مجموعات بيانات 64 كيلوبايت). حتى أنني أوضحت أن الضرب المعقد بواسطة IBM 360 في FORT كان أسرع بنسبة 20 ٪ منه في المجمع.

وقدر NRAO ما كتبته. كان لديهم اتفاق مع شركة استشارية لتحديد تقنيات الضمانات. نوقشت مسألة براءات اختراع FORT لبعض الوقت. ولكن بما أن براءات اختراع البرمجيات كانت متناقضة ويمكن حلها بمشاركة المحكمة العليا ، رفضت NRAO التعامل مع هذه المسألة. ونتيجة لذلك ، عادت حقوق النشر إليّ. لا أعتقد أن الأفكار يجب أن تكون براءة اختراع. إذا نظرنا إلى الوراء ، ينبغي للمرء أن يوافق على أن الفرصة الوحيدة لـ FORT هي البقاء في المجال العام. وهناك ازدهر.

غيّر رمز مخيط الكلمات الهيكلية (مثل DO LOOP IF THEN ). لقد حصلوا على تنفيذ أنيق مع عناوين في كومة البيانات في وقت الترجمة.

الآن كل تنفيذ للقلعة لديه مجمع لهندسة جهاز الكمبيوتر الخاص به. لقد استخدم شفرات opc في تدوين postfix ، وقام بإنشاء عناوين في حزمة البيانات ، مع كلمات منظمة تشبه FORT للفروع. تم تعريف أساليب تقوية المُجمِّع على أنها فئات كلمات باستخدام ؛ CODE . كان من الممكن ترميز كل هذا في يوم واحد.

أثبتت العمليات الحسابية غير المعتادة أيضًا قيمتها.

M*  */  /MOD  SQRT  SIN.COS  ATAN  EXP  LOG


M * هو مضاعفة الأجهزة المعتادة لرقمين 16 بت في منتج 32 بت (الوسيطات ، بالطبع ، في رصة البيانات). ويتبع ذلك * / مع التقسيم لتنفيذ الحساب الجزئي. / MOD بإرجاع كل من حاصل القسمة والباقي ، وهو مثالي للبحث عن إدخالات في ملف. تُرجع SQRT نتيجة 16 بت من وسيطة 32 بت. تُرجع SIN.COS على الفور كلا من الجيب وجيب التمام ، وهو أمر مفيد للحساب المعقد والمتجه (FFT). ATAN هي العملية المعكوسة ، وليس لها غموض رباعي. يتم احتساب EXP و LOG في الأساس 2.

في هذه الوظائف ، تم استخدام الحساب ذو النقطة الثابتة - 14 أو 30 بت على يمين النقطة الثنائية لعلم المثلثات ، 10 للوغاريتمات. أصبح هذا السمة المميزة لـ FORT ، لأن مثل هذا الحساب أبسط وأسرع وأكثر دقة من النقطة العائمة. ولكن إذا لزم الأمر ، يمكنك بسهولة تنفيذ الأجهزة والبرامج بنقطة عائمة.

وأشيد بالعمل الذي لا يقدر بثمن الذي قام به هارت ، الذي جمع جداول تقريبية للوظائف بدقة مختلفة. لقد حرروا مبرمجي التطبيقات من قيود المكتبات الموجودة.

ظهرت كلمة DOES (تمت كتابتها على النحو التالي : :) . حدد فئة من الكلمات (مثل ؛ CODE) ، التي تنص على أنه ينبغي تفسير التعريف عند الإشارة إلى كلمة. كان من الصعب التنفيذ ، ولكن تبين أنه مفيد بشكل خاص لتحديد رموز العملية.

ومع ذلك ، لم أتمكن من إقناع شارلوتسفيل بأن FORT تناسبهم. لم يُسمح لي ببرمجة VLA. في أي مجموعة من المبرمجين ، 25٪ يحبون Fort و 25٪ يكرهونها. النزاعات صعبة ونادرا ما يتم التوصل إلى حل وسط. ونتيجة لذلك ، انضمت أول 25٪ إلى قواتها وأنشأت شركة Forth، Inc. لكن هذه قصة أخرى.

الأخلاق


تاريخ FORT له أخلاق معينة: مبرمج شاب دائم يقاتل ضد اللامبالاة من أجل اكتشاف الحقيقة وإنقاذ رفاق معاناته. الوضع يتحسن: شاهد Forth، Inc. وجهاً لوجه مع IBM في النظام المصرفي الفرنسي.

أعلم أن FORT لا تزال أفضل لغة برمجة. أنا سعيد بنجاحه ، خاصة في مجال الذكاء الاصطناعي المحافظ للغاية [أذكر ، 1991 - تقريبًا. ترجم.] .

ما يقلقني هو أن هؤلاء الأشخاص الذين لا يجب أن يقدروا كيف تجسد FORT وصفهم الخاص للغة البرمجة المثالية.

لكن ما زلت أقوم بالبحث دون ترخيص. لقد أدت FORT إلى بنية تعد بمزيج مذهل من الأجهزة والبرامج. بالإضافة إلى بيئة برمجة جديدة أخرى.

All Articles