Let-Go: لغة برمجة شبيهة بـ Clojure مكتوبة بلغة Go تنطلق في 7ms – دليل تجريبي عربي
Show HN: I made a Clojure-like language in Go, boots in 7ms
خريطة الصفحة
اختر القسم الذي تحتاجه الآن
- ما هو Let-Go؟
- من يحتاج Let-Go ومن لا؟
- المميزات الرئيسية
- المتطلبات الأساسية
- خطوات التركيب (مع تحذير: README غير واضح)
- التشغيل الأولي واختبار اللغة
- الأخطاء الشائعة وحلولها
- استخدامات عملية للمطور العربي
- هل يستحق التجربة؟
- بدائل مشابهة
- أسئلة شائعة
- خاتمة
قبل أن تطبق
الفكرة التي تمنع التسرع
تعتقد أن مشاريع GitHub الجديدة صعبة التركيب ومخصصة للمطورين المتقدمين فقط؟ لكن Let-Go يثبت العكس: أداة خفيفة وسريعة يمكن لأي مطور متوسط تجربتها.
أسئلة التشخيص السريع
قبل أن تطبق، اعرف أين تقف بالضبط
- هل تحتاج إلى لغة سكريبت سريعة الإقلاع لتشغيل سكريبتات صغيرة؟
- هل أنت مطور Clojure تبحث عن بيئة أسرع من JVM؟
- هل أنت مطور Go تريد تجربة لغة وظيفية؟
- هل تبحث عن أداة خفيفة لتضمين لغة سكريبت في تطبيقات Go؟
- هل أنت مستعد لتحمل عدم الاستقرار الناتج عن كون المشروع في مرحلة مبكرة؟
- هل لديك خبرة في بناء باينري من المصدر باستخدام Go؟
- هل تستخدم محرراً يدعم nREPL مثل VS Code أو Emacs؟
نظام التشغيل: Input → Process → Output
لوحة قياس النجاح
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
ظهر مشروع Let-Go على Hacker News تحت عنوان "Show HN: I made a Clojure-like language in Go, boots in 7ms". الفكرة: لغة برمجة جديدة مكتوبة بلغة Go، متوافقة بنسبة 90% مع Clojure، وتقلع أسرع 50 مرة من JVM. هذا الدليل يشرح لك ما هو Let-Go، وكيف تجربه بنفسك، مع تحذير صريح: README المشروع غير واضح، لذا الخطوات هنا تقريبية بناءً على بنية المشروع.
ما هو Let-Go؟
Let-Go هي لغة برمجة مكتوبة بلغة Go، تشبه إلى حد كبير لغة Clojure (متوافقة بنسبة 90% مع JVM Clojure). يتم توزيعها كملف باينري ثابت بحجم 10MB تقريباً، وتقلع في 7 مللي ثانية فقط – أسرع 50 مرة من JVM و3 مرات أسرع من Babashka. المشروع بدأ كمزحة عملية عام 2021، لكنه تطور ليصبح أداة عملية مع دعم nREPL (يمكن استخدامه مع محررات مثل VS Code و Emacs).
من يحتاج Let-Go ومن لا؟
يناسب: مطوري Clojure الذين يريدون بيئة أسرع للتطوير والنماذج الأولية، مطوري Go الذين يريدون تجربة لغة وظيفية، وأي شخص يريد أداة خفيفة لتشغيل سكريبتات سريعة.
لا يناسب: من يحتاج توافقاً كاملاً مع مكتبات Clojure (لأن التوافق 90% فقط)، أو من يريد لغة إنتاجية مستقرة (المشروع لا يزال في مرحلة مبكرة).
المميزات الرئيسية
- سرعة إقلاع 7ms: مثالية للسكريبتات الصغيرة والأدوات التفاعلية.
- توافق 90% مع Clojure: يمكن تشغيل معظم كود Clojure دون تعديل.
- nREPL server: يدعم التطوير التفاعلي مع محررات مثل Calva وCIDER.
- قابلية التضمين في برامج Go: يمكن استدعاء دوال Go من Let-Go والعكس.
- باينري ثابت: لا يحتاج إلى JVM أو تثبيت معقد.
المتطلبات الأساسية
لتجربة Let-Go، تحتاج إلى:
- نظام تشغيل: Linux أو macOS (لم يتم اختباره على Windows رسمياً).
- اتصال بالإنترنت لتحميل الباينري.
- محرر نصوص (VS Code، Emacs، أو أي محرر يدعم nREPL).
ملاحظة: لا حاجة لتثبيت Go أو Clojure، لأن Let-Go يأتي كباينري مستقل.
خطوات التركيب (مع تحذير: README غير واضح)
بناءً على بنية المشروع، إليك الخطوات التقريبية:
- اذهب إلى صفحة المشروع على GitHub:
https://github.com/nooga/let-go. - ابحث عن رابط تحميل الباينري في قسم Releases (إذا كان متاحاً). إذا لم تجد، قد تحتاج إلى بناء المشروع من المصدر باستخدام Go.
- للبناء من المصدر: تأكد من تثبيت Go (الإصدار 1.16+). ثم نفذ:
git clone https://github.com/nooga/let-go.git cd let-go go build -o let-go - بعد الحصول على الباينري، تأكد من منحه صلاحية التنفيذ:
chmod +x let-go - انقل الباينري إلى مسار في PATH (اختياري):
sudo mv let-go /usr/local/bin/
التشغيل الأولي واختبار اللغة
بعد التثبيت، جرب تشغيل سكريبت بسيط. أنشئ ملف hello.lgo بالمحتوى التالي:
(println "Hello, World!")ثم نفذ:
./let-go run hello.lgoيجب أن ترى المخرجات: Hello, World!لتجربة nREPL، شغل:
./let-go nrepl-server :port 7888ثم اتصل من محررك (مثل VS Code مع إضافة Calva).الأخطاء الشائعة وحلولها
استخدامات عملية للمطور العربي
يمكن استخدام Let-Go في:
- تشغيل سكريبتات سريعة لمعالجة النصوص أو تحليل البيانات الصغيرة.
- بناء نماذج أولية لتطبيقات ويب خفيفة (مع مكتبات HTTP إذا كانت متوفرة).
- تعلم لغة Clojure دون الحاجة إلى JVM.
- تضمين لغة سكريبت في تطبيقات Go (مثل إضافة واجهة برمجة نصية).
هل يستحق التجربة؟
نعم، إذا كنت مهتماً بـ Clojure أو Go، وتبحث عن أداة خفيفة وسريعة. لكن ضع في اعتبارك أن المشروع لا يزال في مرحلة مبكرة، وقد تواجه بعض الأخطاء. README غير واضح، لذا قد تحتاج إلى قراءة الكود المصدري لفهم بعض الميزات.
بدائل مشابهة
أسئلة شائعة
هل Let-Go متوافق مع مكتبات Clojure الموجودة؟
توافق بنسبة 90%، لكن بعض المكتبات التي تعتمد على JVM قد لا تعمل.
ما الفرق بين Let-Go و Babashka؟
Let-Go أسرع في الإقلاع (7ms مقابل 20ms)، لكن Babashka أكثر استقراراً وتوافقاً مع المكتبات.
هل يمكن استخدام Let-Go في الإنتاج؟
غير موصى به حالياً؛ المشروع في مرحلة مبكرة وقد يحتوي على أخطاء.
كيف أبدأ مع Let-Go إذا كنت أعرف Go فقط؟
تعلم أساسيات Clojure (القوائم، الدوال، التكرار) ثم جرب كتابة سكريبتات بسيطة.
هل يدعم Let-Go التعامل مع الملفات والشبكات؟
يدعم وظائف أساسية، لكن قد تحتاج إلى استخدام مكتبات Go عبر التضمين.
ما هي بيئة التطوير المناسبة لـ Let-Go؟
VS Code مع إضافة Calva، أو Emacs مع CIDER.
هل هناك مجتمع عربي لـ Let-Go؟
لا يوجد مجتمع مخصص بعد، لكن يمكنك متابعة صفحة GitHub أو Hacker News.
خاتمة
Let-Go مشروع مثير للاهتمام يجمع بين قوة Clojure وسرعة Go. جربه بنفسك، وشارك تجربتك مع المجتمع. تذكر أن README غير واضح، لذا لا تتردد في استكشاف الكود المصدري إذا احتجت مساعدة.
Playbook التطبيق
خطوات عملية مرتبة من التشخيص إلى النتيجة
تحميل الباينري أو بناءه من المصدر
لماذا؟ لأن README غير واضح وقد لا يكون الباينري متاحاً مباشرة
كيف؟ اذهب إلى https://github.com/nooga/let-go، ابحث عن Releases، أو استنسخ المستودع ونفذ 'go build -o let-go'
الناتج: ملف باينري باسم let-go بحجم ~10MB
منح صلاحية التنفيذ ونقل الباينري إلى PATH
لماذا؟ لتتمكن من تشغيل الأمر let-go من أي مكان
كيف؟ نفذ 'chmod +x let-go' ثم 'sudo mv let-go /usr/local/bin/'
الناتج: أمر let-go متاح في الطرفية
إنشاء سكريبت اختبار وتشغيله
لماذا؟ للتحقق من أن اللغة تعمل بشكل صحيح
كيف؟ أنشئ ملف hello.lgo بالمحتوى '(println "Hello, World!")' ثم نفذ 'let-go run hello.lgo'
الناتج: طباعة 'Hello, World!' في الطرفية
تشغيل nREPL والاتصال من المحرر
لماذا؟ للاستفادة من التطوير التفاعلي
كيف؟ نفذ 'let-go nrepl-server :port 7888' ثم اتصل من VS Code مع إضافة Calva
الناتج: جلسة REPL تفاعلية في المحرر
قوالب جاهزة للنسخ
حوّل القراءة إلى تنفيذ سريع
(println "Hello, World!") (defn add [a b] (+ a b)) (println (add 3 4))
let-go nrepl-server :port 7888
مصفوفة الأخطاء
اعرف أين يتعثر الناس وكيف تتجنب ذلك
شجرة القرار
ماذا تفعل حسب حالتك؟
إذا: إذا كنت مطور Clojure وتريد سرعة إقلاع أفضل
إذن: جرب Let-Go للسكريبتات الصغيرة والنماذج الأولية
إذا: إذا كنت تحتاج توافقاً كاملاً مع مكتبات Clojure
إذن: استخدم JVM Clojure أو Babashka بدلاً من ذلك
إذا: إذا كنت مطور Go وتريد لغة وظيفية مضمّنة
إذن: Let-Go خيار جيد، لكن كن مستعداً لقراءة الكود المصدري
إذا: إذا كنت تبحث عن لغة إنتاجية مستقرة
إذن: لا تستخدم Let-Go حالياً، انتظر نضوج المشروع
خطة تطبيق 7 أيام
جدول صغير يمنع التسويف
- اليوم 1: تحميل الباينري أو بناءه من المصدر
- اليوم 2: تشغيل سكريبت Hello World
- اليوم 3: تجربة nREPL مع VS Code
- اليوم 4: كتابة سكريبت صغير لمعالجة نصية
- اليوم 5: محاولة تضمين دالة Go في Let-Go
- اليوم 6: اختبار توافق مكتبة Clojure بسيطة
- اليوم 7: مشاركة التجربة على GitHub أو Hacker News
حقائق سريعة تحفظها
نقاط مختصرة ترجع لها لاحقاً
1. Let-Go مكتوبة بلغة Go وتقلع في 7ms.
2. متوافقة بنسبة 90% مع Clojure على JVM.
3. حجم الباينري حوالي 10MB.
4. تدعم nREPL للتطوير التفاعلي.
5. يمكن تضمينها في برامج Go.
6. المشروع بدأ كمزحة عام 2021.
7. README غير واضح، قد تحتاج لقراءة الكود المصدري.
8. لا ينصح باستخدامها في الإنتاج حالياً.
9. أسرع 50 مرة من JVM Clojure و3 مرات من Babashka.
أسئلة شائعة
إجابات مباشرة على ما يبحث عنه الزائر
مصطلحات سريعة
تعريفات مختصرة تمنع الالتباس
بروتوكول REPL شبكي يستخدم للتطوير التفاعلي مع محررات النصوص.
ملف تنفيذي مستقل لا يحتاج إلى بيئة تشغيل إضافية مثل JVM.
لغة برمجة وظيفية تعمل على JVM، تتميز بالثبات والتزامن.
مفسر Clojure سريع مبني على GraalVM، يستخدم للسكريبتات.
أسئلة مرتبطة يبحث عنها الناس
استخدمها كمسارات متابعة داخل نفس الموضوع
لماذا هذا المرجع يتجاوز الموضوع نفسه؟
تحول القارئ: من مطور يجهل وجود Let-Go ويظن أن مشاريع GitHub الجديدة صعبة، إلى مطور جرب الأداة بنفسه وأصبح قادراً على تقييمها ومشاركتها مع الآخرين.
- لغة Go
- لغة Clojure
- تطوير النماذج الأولية
- أدوات سطر الأوامر
كيف تستخدم هذا المرجع لاحقاً؟
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
Let-Go مشروع مثير للاهتمام يجمع بين قوة Clojure وسرعة Go. جربه بنفسك، وشارك تجربتك مع المجتمع. تذكر أن README غير واضح، لذا لا تتردد في استكشاف الكود المصدري إذا احتجت مساعدة.
خطة تحديث هذا الدليل
حتى يبقى المرجع صالحاً مع الوقت
- تحقق من وجود إصدارات جديدة على GitHub كل شهر.
- تابع مناقشات Hacker News للحصول على تحديثات المجتمع.
- اختبر توافق السكريبتات مع كل إصدار جديد.
- قم بتحديث خطوات التثبيت إذا تغيرت بنية المشروع.

التعليقات (0)
لا توجد تعليقات بعد. كن أول من يبدأ النقاش 👇