أصول
منذ عدة سنوات كتبت مترجم باسكال. كان الدافع بسيطًا: عندما كنت مراهقًا ، تعلمت من أول الكتب المدرسية للبرمجة أن المترجم هو شيء متطور للغاية. أصبح هذا الادعاء في النهاية تحديًا ويتطلب اختباره عن طريق التجربة.
ha.art.plأولاً ، تم إنشاء برنامج مترجم
PL / 0 مبسّط ، ثم نما بعد ذلك مترجم Pascal كامل الوظائف تقريبًا لـ MS-DOS. مصدر إلهامي هو كتاب
Compiler Construction الذي كتبه نيكلاوس ويرث ، مخترع لغة باسكال. لا يهمني ما إذا كانت وجهات نظر Wirth تُعتبر الآن قديمة ولا توجد بها اتصالات مباشرة مع تكنولوجيا المعلومات السائدة ، أو إذا تغير تصميم برنامج التحويل البرمجي. يكفي أن نعرف أن تقنياته لا تزال بسيطة وأنيقة - وأخيرا وليس آخرا -
تجلب الكثير من المرح ، حيث أنه من الأكثر جاذبية تحليل مصدر البرنامج باستخدام محلل النسب المتكرر المكتوب بخط اليد وإنشاء رمز الجهاز ، بدلاً من استدعاء
yaccs ،
bisons وجميع ذريتهم.
مصير المترجم الخاص بي لم يكن تافهاً. لقد عاشت حياة اثنين: الأولى بين يدي ، والثانية بين يدي الأثريين الكمبيوتر من بولندا.
XD باسكال
تم تسمية مترجم حديثي الولادة
XD Pascal . انها تدعم جميع البيانات باسكال باستثناء
goto
with
. يبدو أن التنفيذ الأول صعب ، لأنه سيدمر هيكل البرنامج الهرمي تمامًا. هذا الأخير يمكن أن يجعل قواعد النطاق البسيطة غامضة.
كما تم دعم جميع أنواع البيانات الرئيسية. ما وراء النطاق كان فقط الأعداد الصحيحة والمجموعات والأرقام والسجلات المتغيرة غير الموقعة - ولكن من الواضح أن هذه كلها ليست ضرورية. ومع ذلك ، لم أتمكن من حرمان نفسي من سرور إدخال أرقام الفاصلة العائمة وحساب 8087 FPU - كان ذلك تأثير إدماني المهني على الحسابات الهندسية.
عند تنفيذ الإجراءات والوظائف ، كنت أخشى أن العودية وتخزين المتغيرات المحلية على المكدس سيكون مشكلة كبيرة. ومع ذلك ، كانت هناك صعوبة حقيقية خاصة بـ Pascal مع الوظائف الفرعية المتداخلة. يمكن للمرء أن يكون لديه رغبة بريئة للوصول إلى المتغير المحلي لروتين فرعي خارجي من الداخل. ومع ذلك ، لا يحتوي الروتين الفرعي الداخلي على عنوان إطار مكدس العنوان الخارجي ، بمعنى آخر ، لا يعرف الأصل الذي يجب استخدامه مع الإزاحة المتغيرة. سيتم تمرير هذا العنوان إلى الروتين الفرعي الداخلي كوسيطة إضافية مخفية. أفترض أن هذه الصعوبة هي التي أجبرت مصممي C على التخلي تماما عن تداخل الروتين الفرعي. لكن لا يزال لدى Pascal هذه الميزة ، ولا يمكن تجاهل هذه الميزة.
إنشاء منشئ التعليمات البرمجية أبسط الملفات التنفيذية COM لـ الوضع الحقيقي MS-DOS. تم إنشاء إرشادات الجهاز مباشرةً ، دون أي أداة تجميع أو رابط خارجي. لقد استخدمت سجلات 32 بت للبيانات ، لكن العنوان بقي 16 بت (زوج / إزاحة).
كان طراز الذاكرة مشابهًا للنموذج "الصغير" (إذا كان شخص ما لا يزال يتذكر مصطلحات عصر 16 بت): احتلت الشفرة والبيانات والمكدس شريحة 64 كيلو بايت لكل واحدة.
استخدام الذاكرةيبدو أن توليد EXEs وتبديل الأجزاء على الطاير أمر صعب للغاية ، وقد أجبرتني القيود الضيقة للنموذج "الصغير" على أن أقول وداعًا للتجميع الذاتي. بالتأكيد رأيت بعض المترجمين المترجمين ذاتياً الذين يتناسب رمزهم جيدًا مع جزء واحد فقط (على سبيل المثال ،
السياق ). ومع ذلك ، نادراً ما يمكنهم القيام بأي شيء مفيد إلى جانب هذه القدرة على تجميع أنفسهم. بدلاً من ذلك ، كنت أرغب في جعل برنامج التحويل البرمجي الخاص بي مناسبًا للحسابات العددية والرسومات. لهذا السبب قمت بتضمين ، من بين أمثلة أخرى ، الفركتلات ، طريقة غاوس لحل المعادلات الخطية ، تحويل فورييه السريع ، وحتى مرشح كالمان لتقدير أخطاء نظام الملاحة بالقصور الذاتي.
مجموعة ماندلبروت شظية
تحويل فورييه السريع
تقدير خطأ نظام الملاحة بالقصور الذاتيما حصلت عليه في النهاية كان مشابهاً للغاية لـ Turbo Pascal 3.0 (بدون OOP) وهواة
BeRo Tiny Pascal . لقد تمكن مؤلف هذا الأخير من تجميعه ذاتيًا تحت Windows ، ولكنه ضحى بحساب الفاصلة العائمة والعديد من التفاصيل الدقيقة للقواعد ، والتي كنت أرغب في الحفاظ عليها. من بين الميزات الأكثر حداثة ، حصلت XD Pascal على تعليقات سطر مفرد على نمط دلفي (
//
) ومتغير
Result
.
ومع ذلك ، منذ ولادتها ، تم وضع علامة مترجم بلدي للموت. كانت شركة Pascal تنفد بشكل لا رجعة فيه ، وأصبحت MS-DOS قديمة من قبل. في اليوم الذي قمت فيه بالتبديل من نظام التشغيل Windows XP 32 بت إلى نظام التشغيل Windows 7 64 بت بدون جهاز DOS ظاهري ، فكرت في مشروعي.
إحياء
ثم حدث شيء غريب. بعد ثلاث سنوات من النسيان ، وجد فريق من عشاق البولندية المعجبين بالرجعية وعشاق أتاري مترجمي. يبدو أنهم لم يهتموا كثيرًا بالمشكلات المجردة مثل التجميع الذاتي أو تشديد القواعد. انهم ببساطة بحاجة إلى أداة برمجة مريحة لآلة المفضلة لديهم. باستخدام مشروعي ، قاموا ببناء برنامج التحويل البرمجي
Mad Pascal لهندسة 6502. تم توسيع قواعد اللغة ، وتمت إضافة الدعم لوحدات منفصلة مع أقسام الواجهة والتنفيذ ، وبيان
goto
، والأعداد الصحيحة غير الموقعة ، والمجموعات والتعدادات ، ورمز التجميع المضمّن. بدلاً من رمز الجهاز ، تم إنشاء رمز التجميع. ثم تمت ترجمته بواسطة أداة تجميع البيرة.
أصبح المظهر الخارجي للغة أقرب بكثير من المعيار الفعلي باسكال. تبدو المترجمات الداخلية مروعة إلى حد ما ، حيث يتم خلط الكلمات المحجوزة بأسماء البرامج الفرعية القياسية ، لكن هذا لا يزعج المطورين. مهما كان شكله ، فإن المسعى قابل للاستمرار بشكل مدهش: لمدة ثلاث سنوات تم تحديث Mad Pascal بانتظام ، يتم كتابة العديد من الألعاب فيه ، ويحضر المؤلفون سنويًا مؤتمر
Silly Venture الرجعي (قد يتطلب الرابط VPN). يبدو أن تقاليد أتاري قوية جدًا في بولندا.
حدث ملحوظ لجماهير أتاري البولندية حدث في ربيع عام 2018: كتاب
روبو. تم نشر Solucja (
Robbo. Walkthrough ) ، وهو مثال للأدب التجريبي. أحتاج إلى التأكيد هنا على أن لعبة
Robbo الخاصة بـ Atari ، والتي تم نشرها قبل 30 عامًا ، ما زالت تثير المشجعين البولنديين الأكبر سناً وتملأهم بنوع من البهجة الوطنية. بشكل عام ، ليس من المستغرب أن يكون هناك كتاب مستوحى من اللعبة. لكن الحقيقة المضحكة هي أن 60 في المائة من الكتاب ، كما يقول المؤلفون ، هو البرنامج التعليمي التجريبي الذي تم إنشاؤه بواسطة كمبيوتر أتاري نفسه. برنامج كتابة النص مكتوب في Mad Pascal.
graczpospolita.plيبدو أن
بعض الناس يعتبرون الكتاب مثالًا رائعًا للفن المعاصر:
سيكون من المضلل التعامل مع هذا الكتاب تمامًا كعنصر جامع لعشاق Robbo ، أو بشكل عام ، لمحبي Atari. نتعامل مع مثال نادر للتفاعل بين ثقافة ألعاب الفيديو والأدب (في هذه الحالة ، الأدب الإلكتروني) ، حيث نقطة البداية هي "اللعبة" ، وليس "الأدب". بالنسبة للبعض ، لا معنى له "الفن من أجل الفن". بالنسبة للآخرين ، يوفر مثل هذا التقاطع فرصًا وخبرات جديدة تمامًا. لا شيء يمنعك من إنشاء إصدار من Robbo يمكنك الانتهاء منه باستخدام 'walkthrough' من الكتاب. يناسب الكتاب بشكل جيد وجهة نظري لألعاب الفيديو كفن. الفن ، حيث يمكن أن يكون اللاعب هو المستلم والمبدع على حد سواء - إذا كان هناك "جمهور" يشاهد اللاعب أثناء إنشاء "لعبته" الخاصة به خلال "اللعبة". يمكن تكييف محتوى الكتاب مع عرض للأداء مع ممثل يلعب روبو باستخدام عناصر "تجول" من الكتاب. لكي لا تبقى بلا أساس: الأداء يعتمد على Robbo. عقدت Solucja في 11 مايو 2018 في معرض بونكر للفن المعاصر في كراكوف ، خلال عرض الكتاب المصاحب لمعرض عدم الاستنفاد .
عرض الأداء في كراكوف. يجدر بعد أن كتب مترجم.