Table of Contents

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

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

المؤسسة: ما يجعل لغة البرمجة

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

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

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

مبادئ التصميم الأساسية: بناء مجمعات للهندسة اللغوية

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

البساطة والكلار

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

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

فالوضوح يكمل البساطة بضمان أن يكون من السهل فهم المدونة المكتوبة باللغة، ونوعية لغة تمكن القارئ (حتى غير المبرمجين) من فهم طبيعة الحساب أو الخوارزمية، وتخفض المدونة بوضوح تكاليف الصيانة وتيسر التعاون وتساعد على منع الحشرات، وتشمل السمات اللغوية التي تعزز الوضوح كلمات رئيسية ذات معنى، واتفاقيات التسمية المتسقة، والتشكيلات التي تعكس المشاكل.

Orthogonality: Independent Features working Together

وينبغي أن تخضع الوظائف المستقلة لآليات مستقلة، فالأورام الجنسية هي مبدأ يُستعار من الرياضيات يعني، عند تطبيقه على لغات البرمجة، أن السمات اللغوية ينبغي أن تكون مستقلة وقابلة للتكافل، ويمكن، بلغة أوثوغينية، الجمع بين المعالم بأي طريقة مجدية دون تفاعلات غير متوقعة أو حالات خاصة.

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

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

النظام والاتساق

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

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

(جافاسكريب) مشغلو المساواة يقدمون مثالاً تحذيرياً، اللغة لديها كلا الـ (إف إل تي)=(إف إل تي: 1) و )==)

القابلية للقراءة والطابع

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

وهذا هو نوع التعبير بلغة ما، وينبغي أن تكون المسؤولية واضحة وموجزة وسريعة وصحيحة، وأن تركز المسؤولية على مدى سهولة تعبير المبرمجين عن أفكارهم باللغة، وأن توفر لغة مصممة الخلاصات المناسبة وتتجنب الصدق غير الضروري وتوفر ملازما للعمليات المشتركة.

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

الموثوقية والسلامة

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

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

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

Theoretical Foundations: The Mathematics Behind Languages

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

الشكليات: تحديد معنى محدد

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

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

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

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

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

النظم النوعية: الضمانات القانونية بشأن البرنامج

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

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

وتختلف نظم الأنواع اختلافا كبيرا في تطورها ودقتها، وتميز النظم البسيطة بين الفئات الأساسية مثل البخار والسلاسل والفوليين، وتساهم النظم الأكثر تقدما في دعم التعددية التماثلية (العالمية) والاختبار الناموسيات، والنوع، والأنواع التابعة، وقد أثرت التطورات في نظرية النوع، ولا سيما تطوير النظم النابعة من نوع المعالين، على التحقق من الخصائص الاصطناعية للغات مثل الكوك والأغدا.

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

مؤسسة لامبدا كالكولو ومؤسسة العمل

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

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

وتدمج اللغات الحديثة بشكل متزايد السمات الوظيفية حتى عندما لا تكون وظيفية بحتة، وتنتقل مفاهيم مثل وظائف الدرجة الأولى، وعمليات الإغلاق، وهياكل البيانات غير القابلة للتداول من اللغات الوظيفية إلى اللغات الرئيسية الحتمية والموضوعية، مما يدل على القيمة العملية للمؤسسات النظرية.

التنفيذ العملي: من النظرية إلى الواقعية

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

التجمّع ضد الترجمة الشفوية

المُجمعون مثل المترجمين، يأخذون الرمز الذي تكتبه بطريقة ملائمة للإنسان ويحولونه إلى شيء يمكن أن يفهمه الحاسوب ويفعله، وتترجم اللغات المُجمعة رمز المصدر إلى شفرة آلية أو تمثيل متوسط قبل التنفيذ، مما يتيح تحقيق الاستخدام الأمثل، ويؤدي عادة إلى سرعة الأداء على مدار الساعة.

والمترجم الشفوي هو برنامج يقرأ عادة برنامجا آخر، كما هو مرئي بلغات مثل البيتون، ويقرأ المترجمون الشفويون الرمز وينتجون النتيجة مباشرة، ويقرأ المترجمون الشفويون عادة خط الرموز حسب الخط، ويقطعونه لتحويل المدونة وتنفيذها كعمليات وإجراءات، وتتيح اللغات المترجمة مزايا في سرعة التنمية، والقدرة على النقل، والقدرات الدينامية.

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

تصميم المصنفات والمجمعات

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

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

وهناك العديد من لغات البرمجة التي تهدف إلى تيسير تنفيذ النسخة الأولية الأولى على الأقل من المجمّع أو المترجم الشفوي، وعلى سبيل المثال، صُممت لغة باسكال وفورت وكثير من لغات التجمع خصيصا لدعم تجميع جوازات السفر الواحد، ويجب أن يوازن مصممو اللغات التعبير مع القابلية للتنفيذ، ويتخذون أحيانا خيارات متبادلة تبسط عملية الفرز أو التجميع.

الأداء على الوجه الأمثل

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

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

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

النظرية والممارسات المتوازنة: فن تصميم اللغات

وتحقق أكثر لغات البرمجة نجاحا توازنا دقيقا بين النواة النظرية والفائدة العملية، وهذا التوازن يتطلب فهم كل من الأسس الرياضية واحتياجات العالم الحقيقي للمطورين.

التعلم من التاريخ

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

وفي عام 1960 ظهر الدعم اللغوي للبرمجة لتحسين هيكلة المدونة، واستعيض عن غوتوس بحلقات (في حينه) وبشروط (إن وجدت)، ويدل التطور من البرمجة غير المنظمة إلى البرمجة المنظمة على كيفية ترجمة الأفكار النظرية عن تنظيم البرامج إلى سمات لغوية عملية تحسن جودة المدونة.

إن التكرار هو مفتاح إدارة التعقيد، فآليات التكرار تمكننا من وضع مدونة وتصميم في آن واحد، ويعكس التقدم من النماذج الإجرائية إلى النماذج العملية المنحى إلى آليات العمل السعي المستمر إلى تحسين آليات المثبطات التي تساعد المطورين على إدارة التعقيد مع الحفاظ على الوضوح والصحيح.

الغرض - تصميم الـدريفن

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

(د) تُمثل اللغات الرئيسية المحددة الغرض، وتُظهر هذه اللغات في الاستفسارات عن قواعد البيانات، وسجلات البيانات في مقاييس الوثائق، والتعبيرات المنتظمة عن المطابقة للنمط، وتُضحى هذه اللغات بالعموم على التعبير في مجالاتها المحددة، وتستهدف لغات الأغراض العامة مثل البيتون وجافا وجيم++ توسيع نطاق التطبيق، ولكن يجب أن تُحدث مبادلات مختلفة.

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

النطاق والثورة

السماح بالنمو والمساهمات المجتمعية لإبقاء اللغة تتطور، ويجب أن تظل اللغات ذات صلة بتغيُّر المعدات والبرامجيات، واحتياجات المطور، كما أن آليات الاتساع مثل الكتل، والبلوجينات، ونظم الوحدات النموذجية تمكِّن اللغات من النمو دون الحاجة إلى تغيير اللغة الأساسية.

وكثيرا ما تكون لغات البرمجة الجديدة مصممة لتحديد المشاكل (المتوقعة) بلغات البرمجة السابقة، وذلك عادة بإضافة سمات تجعل من المترجم الشفوي أو المجمّع أكثر تعقيدا) برامج مكتوبة بهذه اللغات أبسط، منها مثلا اللغات التي تُبنى فيها إدارة الذاكرة الآلية وجمع القمامة؛ واللغات ذات الصفوف المشتركة، وكل جيل من اللغات يتعلم من سلفه، مما يضيف سمات تبسط المهام المشتركة.

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

الاعتبارات الرئيسية المتعلقة بالتصميم في تطوير اللغات الحديثة

وعند تصميم أو تقييم لغة البرمجة، تتطلب عدة عوامل حاسمة النظر بعناية، وتعكس هذه الاعتبارات مبادئ لا وقت لها والشواغل المعاصرة.

هاء - سهولة التعلم والتبني

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

لكن سهولة التعلم لا يجب أن تأتي على حساب القوة أو الصحة بعض اللغات، مثل (هاسكل) لديها منحنى تعلم أكثر قوة، ولكن تكافئ الاستثمار بقدرات قوية على البذلة وضمانات قوية للصحافة، المفتاح هو ضمان أن يكون منحنى التعلم مبرراً بفوائد حقيقية بدلاً من التعقيد التعسفي.

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

التعبير والرد

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

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

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

الأداء والكفاءة

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

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

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

التوافق والقابلية للتشغيل المتبادل

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

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

إن التوافق الرجعي في تطور اللغة يمثل تحديات مستمرة، فالتغييرات المُنكسرة يمكن أن تحسن اللغة، ولكنها تحبط المستخدمين والنظم الإيكولوجية المجزأة، ودورات الاستهلاك، وخطط الطبع، وأدوات الهجرة تساعد على إدارة هذا التوتر، وتظهر لغتا مثل بيتون 3 وبيرل 6 (راكو) ضرورة وصعوبة حدوث تغييرات كبيرة.

Tooling and Ecosystem

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

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

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

النماذج وتأثيرها على التصميم

نماذج البرمجة تمثل نُهجاً أساسية في هيكلة وتنظيم الشفرة، بينما العديد من اللغات الحديثة تدعم نماذج متعددة، فهم مبادئ كل نموذج يُظهر اعتبارات تصميمية هامة.

البرمجة الإجرائية والإجرائية

برمجة إبداعية، أقدم النماذج وأكثرها انتشاراً، نماذج حاسبية كسلسلة من الأوامر التي تعدل حالة البرنامج، وتمتد البرمجة الإجرائية لتشمل هذه البرامج بوظائف وتدفقات مهيكلة للمراقبة، وتتوافق هذه النماذج بشكل وثيق مع كيفية تنفيذ الحواسيب فعلياً للتعليمات، مما يجعلها ملائمة للعديد من المبرمجين والكفاءة في التنفيذ.

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

البرامج الموجهة نحو الأجسام

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

لقد أظهرت لغات مثل جافا و سي + و روبي فعالية البرمجة ذات الوجهة الموضوعية لتطوير البرامجيات على نطاق واسع، ونموذجها الطبيعي يُمثل العديد من مجالات العالم الحقيقي ويدعم التنمية التدريجية، غير أن التسلسل الهرمي للميراث العميق، والتقارب الضيق، والمشكلة الهشّة في طبقة القاعدة تمثل تحديات معروفة جيدا.

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

البرمجة الوظيفية

وتعالج البرمجة الوظيفية الحساب بوصفه تقييم المهام الرياضية، مع التركيز على عدم الحيطة، والوظائف من الدرجة الأولى، والأسلوب اللاصق، وتحظر اللغات الوظيفية النقية مثل هاسكل الآثار الجانبية، بينما تسمح اللغات الوظيفية العملية مثل الأوكامل و F# بالاستخدام المراقب للطين والآثار.

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

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

برامج لوجيكية ومكونات

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

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

التحديات المعاصرة والاتجاهات المستقبلية

ولا يزال تصميم اللغات المبرمجة يتطور استجابة للتحديات والفرص الجديدة، وهناك اتجاهات معاصرة عديدة ترسم مستقبل تطوير اللغات.

التجانس والنزعة الموازية

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

اللغات الجديدة تستكشف نماذج تطابق بديلة، وأجهزة (جو روتين) و القنوات توفر تطابقاً طفيفاً مع الرسائل، نظام الملكية في (روست) يمنع سباق البيانات في وقت التجميع، نموذج (إرلانغ) يعزل العمليات المتزامنة، كل نهج يمثل مبادلات مختلفة بين الأمان والأداء وسهولة الاستخدام.

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

السلامة والأمن الذاكرة

كما أن جمع القمامة يوفر السلامة للذاكرة، ويفرض على فترات أطول من اللازم، ويتوقف عن التنبؤ، ويعرض التحكم في الذاكرة، ولكن يتطلب الانضباط الدقيق، على نحو ما يُستشف من معلومات أساسية عن المشاكل الأمنية، كما أن جمع القمامة يوفر السلامة للذاكرة، ويفرض على فترات أطول من الزمن، ويتوقف عن التنبؤ.

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

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

الشكل النموذجي والنموذجي

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

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

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

اللغات الرئيسية والبرمجة

ويمكن أن تؤدي اللغات الرئيسية المصممة حسب مجالات المشاكل المحددة إلى تحسين الإنتاجية والوضوح الشفروي بشكل كبير، وكثيرا ما تبرز لغات قليلة في نظم البرامجيات - لغات القيادة، واللغات المكتوبة، وملفات التشكيل، ولغات العلام، وما إلى ذلك.() ويمكن أن تكون نظرية البرمجة اللغوية دليلاً لتصميم وتنفيذ الغرض الخاص، وكذلك الغرض العام، اللغات.

ويوفر كل من نظام برمجة البرمجيات وبرمجيات البرمجيات التي تنتج أو تتلاعب بخلاصات قوية من المواد الشفرة وتنفيذ نظام الادخار والادمان، ويوفر كل من المقاييس والتفكير والتكوين الشفرات قدرات مختلفة في مجال برمجة المقاييس ذات مبادلات مختلفة، ويوفر نظام ليسب الكلي مرونة غير متطابقة، ويسمح البرمجيات المتحركة في C++ بتجميع البيانات وحسابها.

إنّ مُولّدات العمل اللغويّة وأجهزة الطرود تجعل من إيجاد الـ دي إس إل أسهل، لكنّ انتشار الـ دي إس إل يُمكنه تفتيت النظم الإيكولوجية وزيادة عبء التعلم، والتحدّي هو تحديد متى تُبرّر فوائد الـ دي إس إل تكاليفها وضمان تكاملها بشكل جيد مع لغاتها وأدواتها المضيفة.

التحقق والصواب

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

ويمكن أن تدعم اللغات التحقق من خلال سمات مثل النظم والعقود والتأكيدات القوية، ويسمح المساعدون المؤيدون مثل كوك وإيزابيل بالتحقق الرسمي من البرامج وحتى المجمّعين، وقد تم بنجاح نشر برامجيات مصدقة في نظم حرجة، من أجهزة تشغيل النظام إلى عمليات التنفيذ البدائي.

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

عملية تصميم وتنفيذ اللغات

إن إنشاء لغة برمجة ينطوي على مراحل متعددة، كل منها يطرح تحديات وفرصا فريدة، ويبرز فهم هذه العملية الحقائق العملية لتطوير اللغات.

مرحلة التصميم: تحديد الأهداف والخصائص

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

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

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

التنفيذ: بناء اللغة

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

ومن الناحية النظرية، يمكن تحديد لغة البرمجة أولا ثم بعد ذلك يمكن تنفيذ مترجم شفوي أو مجمع لها (نموذج المياه) وفي الممارسة العملية، كثيرا ما تكون الأمور التي تُستفاد أثناء محاولة تنفيذ لغة ما يمكن أن تؤدي إلى إصدارات لاحقة من مواصفات اللغات تؤدي إلى تصميم وتنفيذ معا للغة البرمجة، ويكشف التنفيذ عن تحديات وفرص غير متوقعة تؤدي إلى صقلات.

وتشمل عملية التنفيذ عادة إنشاء نظام (مركب) وصالونات، وأجهزة تحليل سائلة، ومولدات أو مترجمات شفرة، ويجب تصميم واختبار كل عنصر بعناية، ويستحق التعامل مع الأخطاء اهتماما خاصا - رسائل خطأ مفيدة واضحة، تحسن بدرجة كبيرة من خبرة المطورين.

إنّ لغة برمجتكَ أبسط هي أن تجعل من المجمّع لها، لكنّ البساطة في التنفيذ لا ينبغي أن تُعرّض للخطر إمكانية الاستخدام، وأفضل اللغات تجد السبل لتوفير سمات قوية مع الحفاظ على قدر معقول من التعقيد في التنفيذ.

التطور والصيانة

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

وتؤثر نماذج الحوكمة على تطور اللغات، إذ أن بعض اللغات لها دكتاتوريات غير مُلزمة تتخذ القرارات النهائية، وتستفيد لغات أخرى من اللجان أو توافق الآراء المجتمعي، وتستفيد لغات المصادر المفتوحة من المساهمات المجتمعية، ولكن يجب عليها أن تُدير الجودة والاتساق، ويمكن أن تستثمر اللغات التجارية المزيد من الموارد، ولكنها قد تعطي الأولوية لاحتياجات الأعمال التجارية على الأفضليات المجتمعية.

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

دراسات الحالات: التعلم من اللغات الناجحة

وتكشف دراسة لغات البرمجة الناجحة عن مدى الجمع بين المبادئ النظرية والاعتبارات العملية في تصميمات العالم الحقيقي، وكل لغة تتبادل مختلف المفاضلات وتشدد على قيم مختلفة.

Python: Simplicity and Readability

فلسفة تصميم (بيثون) تؤكد على القدرة على القراءة والبساطة، وتركيبتها النظيفة، وحيزها الأبيض الكبير، ومكتبة قياسية شاملة تجعل من الممكن الوصول إليها للمبتدئين بينما تبقى قوية للخبراء، نجاح (بيتون) في التعليم، وعلم البيانات، وتطوير الشبكة العالمية يدل على قيمة إعطاء الأولوية لتجربة المطور.

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

Rust: Safety without Garbage Collection

تظهر الصدفة أن سلامة الذاكرة وأدائها ليست حصرية على بعضها البعض نظام ملكيتها يمنع أخطاء الذاكرة في وقت التجميع بدون زيادة في الوقت

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

JavaScript: Ubiquity through Ecosystem

هيمنة (جافاسكريب) تنبع جزئياً من موقعها كلغة كتابة الشبكة لكن تطورها يظهر نجاح التكيف مع الاحتياجات المتغيرة من خلال التثبت من الشكل البسيط إلى تطبيقات معقدة ذات صفحة واحدة وبرمجة جانب الخادم

اللغة لديها محاسبات وتناقضات معروفة، ومع ذلك، أجهزتها الإيكولوجية، مكتباتها، الأدوات - توفر قيمة هائلة، إضافة النوع من الكتابة الساكنة الاختيارية تُعالج نقاط الضعف في جافاسكريبت مع الحفاظ على قوتها، ويُظهر تطور جافاسكربت كيف يمكن للنظام الإيكولوجي والمجتمعي التغلب على قيود تصميم اللغات.

Haskell: Purity and Advanced Types

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

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

أفضل الممارسات في مجال مصممي اللغات

واستنادا إلى عقود من الخبرة في تصميم اللغات، تظهر عدة ممارسات أفضل بالنسبة لمن يخلقون لغات جديدة أو يوسعون اللغات القائمة.

البدء في تحقيق أهداف واضحة

تحديد ماهية مشكلة لغتك ومَن تخدمه، فالغرض الواضح هو تصميم القرارات والمساعدة على تقييم المفاضلات، واللغة التي تحاول أن تكون كل شيء للجميع لا ترضيه في كثير من الأحيان، والتركيز على القيام ببعض الأمور بشكل استثنائي، بدلا من الكثير من الأشياء بشكل كاف.

مبادئ تصميم الوثائق والأساس المنطقي، هذا يساعد على الحفاظ على الاتساق مع تطور اللغة ويساعد المستخدمين على فهم لماذا تعمل الملامح كما يفعلون، "زُنّ البيتون" وفلسفة غو البساطة، مثال واضح وجيد التصاميم.

الأولوية للاتساق والأوضاع

كما أن من الأسهل معرفة واستخدام اللغات المتماسكة، وينبغي أن تستخدم عمليات مماثلة، وينبغي أن تُتخذ الصور في شكل مركب دون حالات خاصة أو قيود، كما أن فن المصمم يتوازن بين هذه المبادئ ويأتي بشيء يتكون من تماسك كامل، وقد يساعدنا المتجانسون والناس الذين لديهم خلفية في علم النفس على تحقيق هدفين اثنين من الأهداف ذات الصلة هما: السماح بالاعتراف بدلا من التذكير.

تجنب القيود التعسفية والحالات الخاصة، كل استثناء من القاعدة يزيد من الحمولة المعرفية، وعندما تكون القيود ضرورية، تأكد أنها متطورة بشكل جيد وموثقة بوضوح، وتستهدف مجموعة صغيرة من البدائيات القابلة للمقارنة بدلا من مجموعة كبيرة من السمات الخاصة الغرض.

الاستثمار في الرسائل والوثائق المتعلقة بالخطأ

رسائل الخطأ الواضحة تحول الإحباط إلى فرص التعلم، شرح ما حدث خطأ، لماذا هو خاطئ، وكيف يصلحه، مجمّع (روست) معروف عن رسائل خاطئة مفيدة ترشد المستخدمين إلى الحلول، كما أن مجمّع (إلم) يقدم ردود فعل ودية وقابلة للتنفيذ.

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

بناء المجتمع المحلي والنظام الإيكولوجي

فالتفوق التقني وحده لا يضمن النجاح، فاللغات تحتاج إلى المجتمعات المحلية - الناس الذين يستخدمونها، ويسهمون بها، ويدافعون عنها، ويعزز المجتمع من خلال الاتصال المستجيب، والثقافة الشاملة، والاعتراف بالمساهمات، ويسهل على الناس المساعدة بتقديم مبادئ توجيهية واضحة للإسهام، ويرحّبون بالوافدين الجدد.

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

الحمل والتغذية

استمعوا إلى آراء المستخدمين لجعل لغتكم أفضل، ابدأوا بأشياء سهلة وتحسّنوا كما تشاءون، لا توجد لغة تُحَقّل كل شيء في البداية، وكن على استعداد للتعلم من الأخطاء والتكيّف على أساس استخدام العالم الحقيقي، وتجمعوا التعليقات بانتظام من خلال الدراسات الاستقصائية، ومتعقبي القضايا، والمناقشات المجتمعية.

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

مستقبل تصميم اللغات المبرمجة

وما زال تصميم لغة البرمجة يسير قدما، مدفوعا بمعدات جديدة ومجالات تطبيق جديدة وبصيرات جديدة من البحوث والممارسات، وهناك اتجاهات عديدة تشير إلى اتجاهات للتنمية في المستقبل.

وتؤثر التعلم في الآلات والاستخبارات الاصطناعية في تصميم اللغات بطرق متعددة، وتنظم لغات البرمجة المختلفة تدفقات عمل للتعلم الآلي، وتدمج اللغات سمات للتلاعب بالتوتر والتفريق التلقائي، وتتغير أدوات البرمجة المدعومة من قبل منظمة العفو الدولية في كيفية تفاعل المطورين مع اللغات، مما يحتمل أن يؤثر على تصميم نظامي الوصل والتطبيق.

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

فالحسابات الموزعة والمتميزة تخلق مطالب للغات تعبر عن خوارزميات موزعة بطبيعة الحال، وتعالج الإخفاقات الجزئية، وتدير الاتساق، وتستكشف اللغات خلاصات جديدة عن الحالة الموزعة، والاتصال، والتنسيق، وتتفاوت الحدود بين السمات اللغوية ونظم التسلسل الزمني مع تحمل اللغات مسؤولية أكبر عن شواغل التوزيع.

وأصبحت الأساليب الرسمية والتحقق أكثر سهولة، وعملية، وتدمج اللغات أدوات التحقق، مما يسهل تحقيقها، وتضيق الفجوة بين لغات البحث التي لها أسس نظرية قوية ولغات عملية، مع تزايد استخدام الملامح المتقدمة.

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

الاستنتاج: تطور تصميم اللغات المستمر

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

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

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

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

وبالنسبة للمهتمين بتخطيط لغة البرمجة، هناك موارد عديدة متاحة، وتوفر الدورات الأكاديمية المتعلقة بنظرية لغة البرمجة أسسا صارمة، كما أن الكتب مثل " كلمات ولغات البرمجة " التي يصدرها بنجامين بيرس و " منتديات التعلم الاستشرافي " التي يُعدها جيلين وينسكل توفر مناقشات نظرية عن تصميمات علمية على أساس اللغة المصطلحية.

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

إن رحلة تصميم اللغات البرمجية مستمرة، وكل جيل من اللغات يتعلم من أسلافه، ويتصدى للتحديات الجديدة ويفتح آفاقا جديدة، وبفهم المبادئ التي تسترشد بها هذه النظرية والممارسات المتوازنة، والبساطة والسلطة، والابتكار والاستقرار، يمكننا أن نقدر على نحو أفضل اللغات التي لدينا ونسهم بها في لغات المستقبل.

الموارد الإضافية والقراءة الإضافية

وبالنسبة للقراء المهتمين بتعميق فهمهم لمبادئ تصميم اللغات البرنامجية، توفر عدة موارد موثوقة تغطية شاملة لكل من الأسس النظرية واستراتيجيات التنفيذ العملي.

وتقدم Carnegie Mellon University Principles of Programming Languages course] مواد ممتازة بشأن الأسس النظرية لتصميم اللغات.() وبالنسبة للمهتمين بالعلميات الرسمية، يقدم منشور " ماشيتي " بشأن الحرف الرسمي معالجة رياضية صارمة للمعنى واللغة.

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

ولا يزال تقاطع النظرية والممارسة في تصميم اللغات في مجال البرمجة يتطور، مما يتيح فرصا لا نهاية لها للتعلم والابتكار والإسهام في هذا الجانب الأساسي من علوم الحاسوب.