HeadlinesBriefing favicon HeadlinesBriefing.com

عابس يجرب خادم لغة

Hacker News •
×

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

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

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

أنا لست مطور Lisp، لذا سأبقى حاسدًا. لكنني أدركت أنني لم أحاول الاقتراب. في Haskell، هناك مكاسب جزئية: نظام الأنواع يقلل الاستثناءات، وخادم لغة Haskell (hls) مع Eglot الخاص بـ Emacs يعطي استبصارًا أفضل. يراقب ghcid التغييرات ويعيد الترجمة بسرعة.