هل توافق على أن بعض لغات البرمجة أفضل من غيرها؟ إذا كان كذلك، فعليها أن تكون واحدة منها الأفضل. وهي في الواقع Common Lisp خاصة الآن أن LLMs يمكنها كتابة الكود. LLMs تكتب الكود بسرعة كبيرة، وهذا يغير الكثير، لأن كتابة الكود كانت الجزء البطيء. الآن الجزء البطيء هو معرفة ما إذا كان برنامجك يعمل فعليًا، وقبل أن تتمكن من فعل ذلك عليك إعادة بنائه، والذي قد يستغرق بضع دقائق. عندما كان البشر يكتبون الكود، لم يكن هذا مهمًا كثيرًا لأن الكتابة كانت تستغرق وقتًا أطول بكثير من الانتظار لترجمته وتشغيله. لكن الآن أصبح الأمر مهمًا، لذا فإن طول حلقة التغذية الراجعة الخاصة بك يحدد مدى سرعتك في البناء. في Common Lisp هذه الحلقة تقريبًا غير موجودة لأن هناك فرقًا حقيقيًا بين وقت القراءة، وقت التجميع، ووقت التشغيل (غراهام). Common Lisp تعتمد على الصورة، مما يعني أن برنامجك هو صورة حية في الذاكرة، لذا فإن إصدارًا جديدًا من دالة يحل محل القديم فورًا دون الحاجة لإعادة تشغيل أي شيء. أيضًا، في معظم اللغات، سيؤدي الخطأ إلى تعطل برنامجك. لذا إذا كنت تكتب الكود باستخدام LLM، فسيتعين عليها قراءة سجلات الأعطال الخاصة بك لإجراء بعض التغييرات وتشغيل برنامجك مرة أخرى. في Common Lisp، لن يتوقف برنامجك عن العمل بسبب التعطل، بل سيتوقف ويفتح أداة تصحيح الأخطاء مع كامل المكدس وجميع المتغيرات. يمكنك ببساطة توجيه LLM الخاصة بك إلى أداة تصحيح الأخطاء، وستقوم بإجراء إصلاحها واستئناف البرنامج. حسب معرفتي، Common Lisp هي اللغة السائدة الوحيدة التي تفعل كل هذا.
Lisp ترمز إلى "معالجة القوائم". في Common Lisp، يُكتب الكود على شكل قوائم. على سبيل المثال، (+ 1 2) هو برنامج يضيف رقمين، لكنه أيضًا مجرد قائمة من ثلاث عناصر: الرمز +، والأرقام 1 و 2. ما هو مثير للاهتمام هو أن هذا هو نفس نوع القائمة التي تستخدمها Common Lisp لتخزين البيانات، وبما أن اللغة مبنية حول معالجة القوائم، فإن جميع أدواتها للعمل مع البيانات تعمل أيضًا على الكود. لذا يمكن لبرنامج أن يأخذ برنامجًا آخر ويغيره، على سبيل المثال يمكنه تحويل (+ 1 2) إلى (* 1 2)، وتشغيل النتيجة فورًا. هذا هو ما يجعل الماكرو ممكنًا. الماكرو هو دالة تأخذ كودك وتعيد كودًا جديدًا במקום، مما يعني أنه يمكنك إضافة构建ات جديدة إلى اللغة نفسها. بمجرد أن تتمكن من إضافة إلى اللغة، يمكنك بناؤها نحو مشكلتك. لذا في Lisp، لا تكتب مجرد برنامج، بل تكتب لغة لمجالك ثم تكتب البرنامج بها. هذا مهم أكثر الآن لأن ما يجعل البرنامج ذا قيمة هو الآراء وراءه. ونحن نتجه نحو عالم تسمح فيه شركات البرمجيات لمستخدميها بتغيير المنتج أنفسهم، لأن ذلك يصبح سهلًا مع LLM. لذا إذا بنت شركة لغة مجال ذات رأي جيد لمنتجها، فكل ما يبنيه مستخدموها فوقه سيكون أفضل بكثير، لأنهم يبدأون من آراء الشركة وليس من الصفر. خذ نظام ERP. كل شركة تديره بطريقة немного مختلفة، لذا فإنほとんど الجميع ينتهي بهم الأمر إلى الحاجة إلى تغييره. لكن إذا كان ERP مكتوبًا بلغة المجال الخاصة به، فيمكنك ببساطة طلب من LLM إجراء التغيير بتلك اللغة. سيتبع التغيير بشكل طبيعي الآراء الكامنة للغة المجال، لذا سيتناسب مع المنتج بدلاً من كسره. وليس الأمر مجرد أفضل، بل إنه أيضًا أرخص. غالبًا ما تكون برامج Lisp أكثر اختصارًا لأن الماكرو تسمح لك بتجريد الأنماط المتكررة وجعلها جزءًا من اللغة نفسها. لذا كلما كبر البرنامج، زاد الفرق. في تجربتي الخاصة، تنتهي التطبيقات التي بنيتها بلغة Common Lisp بأنها أقصر بست إلى سبع مرات من الإصدارات بلغة بايثون. بالنسبة لـ LLMs، يعني الكود الأقل عددًا أقل من الرموز، والرموز هي ما تدفع مقابله، لذا تنفق أقل على التطوير. كما يعني ذلك أن جزءًا أكبر من برنامجك يمكن أن يناسب نافذة سياق LLM. إذا كان LLM الخاص بك يحتوي على برنامجك بالكامل في نافذة سياقه، فسيكون لديه رؤية كاملة لنواياك، مما يؤدي إلى اتخاذه قرارات أفضل. في خبرتي، تنبع العديد من أخطاء LLM من تغييره لجزء من برنامجي دون رؤية الباقي. لذا مع Common Lisp يحدث ذلك أقل تكرارًا. Common Lisp هي اللغة السائدة الوحيدة التي تفعل كل هذا.
المصدر: Hacker News · لخّصه HeadlinesBriefing