مقتبس من المناقشة في عام 2015 . هنا ، تعد Common Lisp مجرد مثال على العديد من الأمثلة الجيدة.
مستقبل جافا سكريبت؟أعمل في لجنة معايير JavaScript (TC39) منذ عام 2007. نحن نقدر بساطة اللغة ، ولكن مع مرور الوقت فقدنا اليقظة. بدأ التعقيد ينمو بشكل لا يمكن السيطرة عليه. يجب أن نعرف لماذا يحدث هذا بشكل طبيعي ، ما هو الثمن وما يجب القيام به حيال ذلك. هذه المقالة ليست موجهة فقط إلى الزملاء من TC39 ، ولكن أيضًا لكل من يريد التأثير في مسار تطوير جافا سكريبت أو أي معيار واجه ضغوطًا مماثلة. نتعلم من أخطائنا!
أحببت Algol و Smalltalk و Pascal و Early Scheme كلغات صغيرة وجميلة. في وقت مبكر C وجافا سكريبت وانتقد بحق عن كثب ونادرا ما دعا جميلة. لكنها كانت صغيرة أيضا ، وكان موضع تقدير كبير. عندما تكون اللغة صغيرة ، غالبًا ما يتحدد تقييمنا من خلال الشعور:
"يمكنني تعلم كل شيء وإتقانه" ، ثم:
"أعرف كل شيء. يعجبني أنه لا توجد تفاصيل مجهولة .
" ولكن في حالة C و JavaScript ، فمن غير المرجح أن يكون لدى أي شخص إحساس بالتمكن من إتقان اللغة تمامًا ، لأن التفاصيل كانت معقدة بالفعل بشكل شيطاني. ومع ذلك ، فإن شعور "لغة صغيرة" في نواح كثيرة تحدد مدى الرضا عن الاستخدام اليومي.
تم الحفاظ على جماليات تبسيط JavaScript في معيار EcmaScript-5. شاركت بنشاط في تطوير
EcmaScript-5 و EcmaScript-2015 ، وفي كلتا الحالتين أنا فخور بمساهمي. نما حجم EcmaScript-2015 بشكل كبير ، لكنه حقق تحسينات عليه. نظرًا للمكان الذي بدأنا فيه ، كان من المستحيل تحسين جافا سكريبت بدون مثل هذه الزيادة في الحجم. لا أشعر بالأسف لمعظم الإضافات التي أدت إلى تضخيم EcmaScript-5 إلى EcmaScript-2015. إذا عدت ، ربما في كثير من الحالات أقترح إضافات مماثلة.
كان كل من الإضافات للتغلب على شريط عالية جدا. من الناحية النفسية ، كان هذا منطقيًا ، لأننا نظرنا إلى بساطتها EcmaScript-5. عندما تكون اللغة صغيرة ، تُشعر كل وظيفة إضافية بشكل حدسي بزيادة مئوية كبيرة في حجم اللغة. تكون المزايا المحددة للميزة مرئية دائمًا لمؤيديها. بالنسبة للغة الصغيرة ، لا تزال مساهمة الميزة الجديدة في الزيادة الإجمالية مرئية للجميع أيضًا.
بمجرد أن تتجاوز اللغة تعقيدًا معينًا - على سبيل المثال ، LaTeX و Common Lisp و C ++ و PL / 1 و Java الحديثة - تصبح البرمجة أكثر شبهاً باستبعاد مجموعة فرعية من الوظائف للاستخدام الشخصي من بحر لا حصر له من الوظائف ، ومعظمنا لن نتقنه ونتصالح معه مع ذلك. بمجرد اعتبار اللغة "لا نهائية" ، لا تزال الفوائد المحددة للميزة الجديدة مفهومة. لكن التكاليف الإجمالية المرتبطة بالتعقيد الإضافي لم تعد واضحة. لم يعد يشعر بها أولئك الذين يناقشون ميزة جديدة.

.
حتى

.
هذا هو موت الف التخفيضات ، مما يجعل هذه الوحوش تنمو دون أي قيود.
لذلك ، أطلب من كل من يؤثر على اللغة أن يفكر في شريط أعلى عند التفكير في وظيفة جديدة بدلاً من "من الجيد أن تتاح له هذه الفرصة ، أليس كذلك؟". أعتقد أن EcmaScript-2015 يقع في المنطقة الحدودية حيث لا يزال من الممكن منع النمو المتفشي ، ولكن فقط إذا بدأنا في كبح بعضنا البعض بمعايير عالية لأي ميزة جديدة مقترحة. كمجتمع ، نحتاج إلى شعور أكثر عمومًا بالهلع من الحجم الذي وصل إليه بالفعل EcmaScript 2015. من الناحية المثالية ، مع نمو اللسان ، عندما يقترب الحجم من نقطة اللاعودة ، يجب أن يزيد الذعر ، لا أن ينقص.
بعض الاختلافات
الحفاظ على الحد الأدنى من الضغط غير المتكافئتتلاشى أهمية بساطتها مع انتقالنا من لغة أساسية إلى المكتبات. يمكن تمثيل اللغة القياسية ككل باعتبارها البنية التالية:
- بناء الجملة الأساسي : النماذج الخاصة التي لا يمكن التعبير عنها بدقة بواسطة الامتداد المحلي إلى بناء جملة آخر.
- الحالة الدلالية : حالة يتم التلاعب بها عن طريق الحساب.
- مدخلات Kernel : جزء من المكتبة المضمنة التي توفر وظائف لا يمكن أن يوفرها التعليمات البرمجية المخصصة من تلقاء نفسها.
- مضامين غير نواة: مكتبات مضمنة يمكن تنفيذها في JavaScript ، ولكن الحالة الدلالية أو الوحدات النمطية المضمنة في النواة تعتمد عليها. على سبيل المثال ، من خلال وكيل ، يمكنك تطبيق صفيف في رمز المستخدم. لكن الوحدات الأخرى المضمّنة في النواة تعتمد بالفعل على Array ، مما يمنح هذه المجموعة المحددة موقعًا متميزًا على أي بديل مقترح.
- السكر النحوي : بناء جملة يمكن التعبير عنه بالتمديد المحلي للبناء الأساسي.
- المكتبات العامة للراحة : يمكن تنفيذها برمز مستخدم غير منقطع ، ولكن مع مراعاة مسارات التسمية العامة القياسية في مساحة الاسم العالمية الأصلية.
- الوحدات القياسية للراحة : الوحدات التي تم تطويرها من قِبل المجتمع والتي تمت الموافقة عليها كمعيار.
لقد سردتها بالترتيب ، وفقًا لشعوري بزيادة تكاليف النمو والحاجة الملحة إلى الحد الأدنى. كل هذا يتطلب الانضباط. في النقطة الأخيرة فقط ، يمكننا السماح بنمو غير محدود ، لكن من المستحسن أن يتم اختبار المرشحين من قبل المجتمع وقبولهم أولاً بحكم الواقع. من الناحية المثالية ، ستتوقف لجنة TC39 عن عنق الزجاجة ، نظرًا لأن العمليات الخارجية الفعلية والشرعية ستكون قادرة على تطوير وحدات قياسية بشكل مستقل للراحة.