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