
لماذا Janet؟ مقال عن لهجة ليسب الصغيرة
يشرح المبرمج إيان هنري في مقال على مدونته لماذا صارت لهجة ليسب الصغيرة Janet لغته المعتادة للمشاريع الجانبية: نواة من ثماني تعليمات فقط وبيئة C قابلة للتضمين وملفات تنفيذ مستقلة لا تحتاج إلى تثبيت.
في مقال على مدونته، يشرح المبرمج إيان هنري لماذا صار لهجة ليسب صغيرة تُسمى Janet لغته المعتادة للمشاريع الجانبية منذ بضع سنوات. وقد أحبّها إلى حد أنه كتب عنها كتاباً كاملاً بعنوان «Janet for Mortals» نشره مجاناً على الإنترنت.
لغة صغيرة يمكن تعلّمها في أمسية واحدة
Janet لغة أمرية بدوال من الدرجة الأولى، وفضاء أسماء واحد للمعرّفات، ونطاق كتلي معجمي. جوهرها ثماني تعليمات فقط: do وdef وvar وset وif وwhile وbreak وfn، بينما توفّر الماكروات تحكماً أعلى مستوى فوقها. ويصف هنري دلالات التنفيذ بأنها مألوفة: «فكّر في JavaScript، زائد أنواع القيم، ناقص كل الغرائب». وتتسع المكتبة القياسية كاملة في صفحة واحدة.
من البايت كود إلى ملفات تنفيذ مستقلة
تُصرّف Janet نفسها إلى بايت كود، وتكتبه في ملف C يشغّل أيضاً بيئة تشغيل Janet، ثم تصرّف الملف بمصرّف C في النظام. والنتيجة أن البرامج تُوزَّع كملفات تنفيذ أصلية دون الحاجة إلى تثبيت أي شيء. ويزن ملف hello world أقل من ميغابايت — 784 كيلوبايت لـ Janet 1.27.0 على aarch64 macOS — بما في ذلك بيئة التشغيل وجامع القمامة ومصرّف البايت كود، ما يعني أن البرامج يمكنها تقييم كود Janet في زمن التشغيل. وبيئة التشغيل مكتبة C صغيرة يسهل تضمينها، حتى في المواقع.
قواعد PEG وسكربتات الصدفة والمجموعات
بدلاً من التعبيرات النمطية، تعتمد معالجة النصوص في Janet على قواعد تحليل التعبيرات (PEG) التي يصفها هنري بأنها أبسط وأقوى وأكثر قابلية للتوقع، وقادرة على تحليل HTML وJSON والصيغ الثنائية ذات البايتات الصفرية. وتضيف مكتبة خارجية تُسمى sh لغة خاصة بسكربتات الصدفة مع الأنابيب وإعادة التوجيه. وتأتي المجموعات في نوعين: قابلة للتغيير وغير قابلة للتغيير؛ فالثابتة لها دلالات القيمة، أما القابلة للتغيير مثل جداول التجزئة فتُقارن بالهوية.
الماكروات وقيم زمن التصريف
كتابة الماكروات هي الميزة التي يوصي بها هنري أكثر من غيرها، ويقول إن ماكروات Janet غير الصحية يمكن أن تبقى شفافة مرجعياً لأن الدوال الحرفية قابلة لإلغاء الاقتباس. كما تتيح Janet نقل القيم من زمن التصريف إلى زمن التشغيل: فتصريف البرنامج ينفّذ الكود في المستوى الأعلى ثم يكتب على القرص لقطة كاملة لحالة البرنامج، مع الحفاظ على المراجع المشتركة والمولّدات والإغلاقات. ويعرض الكتاب استخدام ذلك لتوليد ارتباطات قاعدة بيانات من ملف مخطط SQL.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.