Uploaded avatar of ErikSchierboom

إنه أغسطس التطبيقي!

@ErikSchierboom
منذ حوالي 3 سنوات
فيديو

المقدمة

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

ماذا نعني بالتطبيقات؟

حسنًا، يمكن أن تعني أشياء عدة:

  • تطبيقات الويب، وهي أساس عمل الكثير منا اليوم
  • التطبيقات الأصلية، مثل تلك التي تعمل على هاتفك أو جهازك اللوحي
  • تطبيقات سطح المكتب التي تعمل مباشرةً على نظام التشغيل Windows أو Mac أو Linux
  • التطبيقات المتخصصة بمجال معيّن
  • تطبيقات الأعمال
  • وغير ذلك الكثير!

إذن، ما هي اللغات؟

أمامنا 14 لغة، وهو عدد ضخم: ABAP، CoffeeScript، Dart، Delphi، Elm، Java، JavaScript، Kotlin، Objective-C، PHP، PureScript، ReasonML، Swift وTypeScript.

الشارات

احصل على الشارة بإكمال 5 تمارين في إحدى هذه اللغات هذا الشهر. وللحصول على شارة السنة، عليك إكمال:

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

نظرة عامة

ABAP

  • طوّرت SAP SE هذه اللغة في الثمانينيات، ويصبح هدف تصميمها واضحًا عندما نتحقق مما كان يعنيه هذا الاختصار: Allgemeiner Berichts-Aufbereitungs-Prozessor، وهو بالألمانية يعني "معالج إعداد التقارير العام". لاحقًا، أصبحت ABAP أكثر عمومية في تطبيقها، وحُدّث الاختصار إلى Advanced Business Application Programming ليعكس ذلك
  • لغة قوية وبأنواع ساكنة
  • متعددة الأنماط: تدعم البرمجة الأمرية وكائنية التوجه
  • تُترجم إلى كود البايت. ومن المثير للاهتمام أنها تُخزّن الكود المصدري داخل قاعدة البيانات
  • كل الكود يعمل في سياق نظام SAP، الذي يتكوّن من قاعدة بيانات علائقية وخادم تطبيقات واحد أو أكثر
  • تقنية مملوكة ومغلقة المصدر، مع أن أحد المشرفين لدينا بنى إعادة تنفيذ مفتوحة المصدر رائعة
  • تُستخدم في تطبيقات الأعمال، مثل المالية وإدارة المواد والمحاسبة والإدارة. ولها عملاء في جميع أنحاء العالم، من بينهم أسماء كبيرة كثيرة مثل Apple وAmazon وWalmart

لماذا هي رائعة

  • تتطور باستمرار، وتُضاف إليها ميزات جديدة بانتظام
  • موثوقة: وظائف مستقرة تقف خلفها عقود من الخبرة
  • مكتبة قياسية كبيرة

ميزات بارزة

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

CoffeeScript

  • استقبلت اللغة أولى التزاماتها في عام 2009 على يد Jeremy Ashkenas، وكانت رسالة الالتزام الأولى موسومة بعبارة "أول التزام للغة الغامضة".
  • ذات أنواع ديناميكية ومتعددة الأنماط (كائنية التوجه، أمرية، وظيفية، نموذجية)
  • تُترجم إلى JavaScript (وهذا ما يُعرف بـ_الترجمة البينية_). القاعدة الذهبية في CoffeeScript هي: "إنها مجرد JavaScript". وهي من أولى اللغات الناجحة في "الترجمة إلى JS"
  • أصبحت شائعة لأن CoffeeScript لم تكن تعاني بعض المشكلات التي كان يعانيها من يعملون بـ JS في ذلك الوقت (مثل اختلاف عمل ربط this، أو عدم دعم الأصناف). وأُدرجت في Ruby on Rails بدءًا من الإصدار 3.1.
  • في عام 2017 استقبلت اللغة إصدارها 2.0 الذي هدف إلى رفعها إلى مستوى أحدث معيار لـ JavaScript. وتتلقى اللغة تحديثًا نحو مرة كل عام.
  • كُتب مُصرّف اللغة في الأصل بلغة Ruby، لكنه استُبدل في عام 2010 بمُصرّف ذاتي الاستضافة مكتوب بلغة CoffeeScript (لا يعتمد المُصرّف على NodeJS ويمكن أن يعمل مباشرةً في المتصفح)
  • كان لـ CoffeeScript تأثير بأنها ألهمت JavaScript لتبنّي بعض الميزات (صيغة سهم lambda، والأصناف)
  • كانت تُستخدم في Dropbox وفي Rails

لماذا هي رائعة

  • صيغة نظيفة ومختصرة مستوحاة من Python وRuby وHaskell. أقل إسهابًا من JavaScript، إذ تحذف الكثير من الأقواس الهلالية والأقواس المعقوفة، ويعود ذلك جزئيًا إلى استخدام المسافات البادئة ذات الدلالة (فالمسافات البيضاء مهمة)
  • دلالات مبسّطة، فمثلًا لا يوجد التباس حول let وvar وconst لأنها غير موجودة، وتُترجم == بينيًا إلى === (المساواة الصارمة)، وتمنع ارتباطات الدوال أخطاء this الشائعة
  • قائمة على التعبيرات، أي يمكنك إسناد نتيجة تعبير if إلى متغير
  • الكثير من السكر النحوي، فمثلًا يمكنك استخدام @ بدلًا من this، وyes/on بدلًا من true، و// للقسمة الصحيحة، و@ بدلًا من this والمزيد

ميزات بارزة

  • تُترجم إلى JavaScript نظيفة ومقروءة للبشر، مع تطابق واحد لواحد بين الكود المصدري والكود الناتج.
  • توافق بيني ممتاز مع JavaScript: يمكنك استخدام كود مكتوب بـ JS من داخل CoffeeScript بسهولة (والعكس صحيح). استخدم أي مكتبة JS مكتوبة
  • تضيف ميزات كانت أو ما زالت غائبة في JavaScript: استيعاب القوائم، وإدراج السلاسل النصية، ومعامل الوجود ?، والمقارنات المتسلسلة
  • لغة صغيرة، فحجم المُصرّف نحو 500 كيلوبايت (100 كيلوبايت مضغوط)

Dart

  • صمّمها Lars Bak وKasper Lund في Google
  • أول إصدار في عام 2011
  • كان الهدف إنشاء لغة سريعة وعالية الإنتاجية، مناسبة بشكل خاص لبناء واجهات المستخدم
  • ذات أنواع ساكنة
  • متعددة الأنماط: كائنية التوجه في المقام الأول، لكنها أيضًا وظيفية وأمرية
  • يمكن تفسيرها وترجمتها آنيًا
  • تُستخدم أساسًا لبناء التطبيقات، لكن يمكن استخدامها أيضًا لبناء Backend

لماذا هي رائعة

  • سهلة التعلم بسبب صيغتها المألوفة
  • نظام أنواع حديث: استنتاج الأنواع، ومطابقة الأنماط، وasync/await
  • توثيق ممتاز
  • الأمان بفضل نظام سليم للسلامة من القيم الفارغة: لا مزيد من استثناءات المؤشر الفارغ
  • أدوات جيدة، ودعم في بيئات التطوير المتكاملة (IDE) المتنوعة. ومحسّنة لحلقة تغذية راجعة قصيرة، مثلًا عبر إعادة التحميل السريعة
  • منظومة متنامية مع مكتبات كثيرة متاحة

ميزات بارزة

  • يمكن ترجمتها إلى JS وإلى الكود الأصلي، وكذلك إلى Swift وKotlin، وهي رائعة لتطبيقات الجوال.
  • يمكن استخدام مكتبة Flutter لبناء تطبيقات الجوال والويب وسطح المكتب والمضمّنة بسرعة. اكتب مرة واحدة، وشغّل على منصات مختلفة
  • دعم ممتاز للتزامن، مع async/await، وisolates (بنى خفيفة لتشغيل التزامن)، وfutures والمزيد

Delphi

  • طوّرت Borland لغة Delphi وأصدرتها في عام 1995.
  • هي لغة برمجة Object Pascal، وطوّرها Anders Hejlsberg، أحد المعماريين الرئيسيين في C#
  • قوية وبأنواع ساكنة
  • تُترجم إلى كود أصلي
  • متعددة الأنماط: كائنية التوجه في الغالب، لكنها أيضًا أمرية وتصريحية ومدفوعة بالأحداث
  • تُستخدم في تطبيقات الأعمال وواجهات المستخدم الرسومية والمدارس (لتعليم البرمجة)

لماذا هي رائعة

  • سهلة التعلم. تجمع Object Pascal بين بساطة Pascal ووضوحه وميزات البرمجة كائنية التوجه، ما يسهّل كتابة الكود وصيانته
  • بيئة التطوير المتكاملة (IDE): تقدّم بيئة تطوير Delphi بيئة سهلة الاستخدام وغنية بالميزات تبسّط عملية التطوير. فهي توفّر التنقل في الكود، وأدوات Debug، وإكمال الكود، وميزات إنتاجية أخرى تجعل التطوير أكثر كفاءة.
  • الاستقرار: موجودة منذ أوائل التسعينيات بسجل حافل بكونها أداة ولغة تطوير موثوقة ومستقرة، مع توافق خلفي قوي. فالكود المكتوب في إصدارات Delphi الأقدم يمكن أن يظل يُترجم ويعمل في الإصدارات الأحدث بأقل تعديلات.
  • دعم المنصات المتعددة: وسّعت Delphi قدراتها إلى ما هو أبعد من Windows، وتقدّم دعمًا للتطوير عبر المنصات، ما يتيح للمطورين استهداف أنظمة تشغيل متعددة مثل macOS وiOS وAndroid وغيرها. وهذا يمكّن من إنشاء تطبيقات لجمهور أوسع ويزيد من انتشار المشاريع.
  • مجتمع ودعم قويان: لـ Delphi مجتمع مخلص ونشط من المطورين يساهمون بمكتبات وأدوات وموارد في المنظومة.

ميزات بارزة

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

Elm

  • أنشأ Evan Czaplicki اللغة لأطروحته الجامعية النهائية وأصدرها في عام 2012
  • تناولت في البداية موضوع البرمجة التفاعلية الوظيفية (FRP) لواجهات المستخدم الرسومية (FRP بالإشارات)، لكن في عام 2017 تُخلّي عن FRP لصالح TEA (معمارية Elm)
  • لغة وظيفية ذات أنواع ساكنة وقوية
  • صيغتها مستوحاة من Haskell
  • لغة مفتوحة المصدر، لكنها صارمة في خياراتها التصميمية، وأسلوب التطوير يتضمن فترات طويلة من العمل العميق من Evan قبل إتاحة الأمور للعموم. لذا قد لا تُدمج طلبات السحب (PRs) لفترة طويلة جدًا، وقد تبدو المشروع راكدًا، لكنه مجرد أسلوب عمل Evan.
  • تُستخدم في المواقع، مثل NoRedInk وVendr وRakuten وBrilliant

لماذا هي رائعة

  • لغة صغيرة جدًا، ومن أسهل ما يمكن تعلّمه من عائلة ML للغات الوظيفية ذات الأنواع الساكنة. وهذا يجعلها تقريبًا مثالية لتعليم البرمجة الوظيفية.
  • رسائل أخطاء المُصرّف من ألطف وأكثر ما ستجده فائدة.
  • لغة مستقرة: آخر إصدار لها من عام 2019
  • حزم المنظومة قليلة لكنها عالية الجودة.
  • منظومة قوية لأدوات فحص الكود مع elm-review (وهي التي تُشغّل محلل مسار Elm في Exercism).

ميزات بارزة

  • معمارية Elm (TEA) تقوم عليها جميع تطبيقات Elm، لذا يصبح مراجعة تطبيقات Elm غير المألوفة سهلًا جدًا.
  • لا استثناءات في وقت التشغيل! باستثناء بضعة أمور فقط.
  • لا شيء ينكسر عند تحديث التبعيات، فالمُصرّف يفرض الإصدار الدلالي.
  • عندما تُترجم، فإنها تعمل (باستثناء الأخطاء المنطقية). وعندما تعتاد عليها، يصبح من الصعب جدًا العودة إلى لغات أخرى.
    • تتيح مكتبة "elm-ui" لـ Matthew Griffith مبدأ "عندما تُترجم، فإنها تعمل" للأنماط والتخطيط، فلا تحتاج إلى CSS.
  • تطبيقات ويب متكاملة: Lamdera مشروع متفرّع يستخدم Elm لتطبيقات ويب متكاملة دون أي كود وسيط بين Frontend وBackend.

Java

  • طوّرها James Gosling في Sun Microsystems وأُصدرت في عام 1995.
  • خمسة أهداف أصلية:
    • بسيطة وكائنية التوجه ومألوفة.
    • متينة وآمنة.
    • محايدة تجاه المعمارية وقابلة للنقل.
    • عالية الأداء.
    • مفسّرة ومتعددة الخيوط وديناميكية.
  • قوية وبأنواع ساكنة
  • تُترجم إلى كود البايت (ويجري العمل على الكود الأصلي)
  • متعددة الأنماط: أمرية وكائنية التوجه ووظيفية
  • للغة والآلة الافتراضية مواصفات رسمية، وبالتالي هناك أيضًا تطبيقات متعددة لها (مثل OpenJDK JVM وHotspot VM من Oracle)
  • تُستخدم في كميات هائلة من البرمجيات، من المواقع إلى الأنظمة المضمّنة، ومن التطبيقات إلى قواعد البيانات

لماذا هي رائعة

  • تعمل في كل مكان تقريبًا (كما سيذكّرك مُحدّث Java بكل سرور ;))
  • عامة الغرض: يمكن استخدامها لأي عبء عمل تقريبًا، بما في ذلك التطبيقات والمواقع والأنظمة المضمّنة
  • التوافق البيني مع لغات JVM الأخرى، مثل Kotlin وGroovy وScala وClojure
  • أدوات ممتازة، سواء لبيئات التطوير المتكاملة أو لأدوات أخرى مثل أنظمة البناء

ميزات بارزة

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

JavaScript

  • استقطبت Netscape برندان إيخ في عام 1995 لتوفير لغة تجعل صفحات الويب ديناميكية. وقد أُنشئ النموذج الأولي الأول في 10 أيام، وهو أمر مشهور
  • وُضعت معيارها باسم ECMAScript في عام 1997
  • ذات أنواع ديناميكية وضعيفة
  • كانت تُفسّر فقط في السابق، لكنها اليوم تُترجم آنيًا غالبًا
  • متعددة الأنماط: نموذجية (وهي نادرة جدًا)، لكنها أيضًا كائنية التوجه وأمرية ووظيفية
  • كان لها تأثير هائل في جعل الويب يحقق النجاح الذي هو عليه اليوم. فمثلًا كان AJAX مفيدًا جدًا في إضافة التفاعلية. وهي المعيار الفعلي لتطوير الويب، إذ إنها اللغة البرمجية الوحيدة المدعومة مباشرةً في المتصفح
  • ربما أكثر اللغات استخدامًا في أيامنا هذه
  • تُستخدم في Backend وFrontend والسكربتات وأدوات سطر الأوامر

لماذا هي رائعة

  • عامة الغرض: يمكن استخدامها لأعباء عمل كثيرة: Backend وFrontend والسكربتات وأدوات سطر الأوامر. وكثير من الأدوات المستخدمة في الويب مكتوبة بـ JavaScript (وتعمل على nodejs)
  • بيئات التشغيل (مثل V8) محسّنة بشكل كبير ويمكن أن تكون عالية الأداء، رغم أن اللغة شديدة الديناميكية
  • لغة صغيرة نسبيًا، ما يجعل تعلّمها سهلًا نسبيًا. والقدرة على تشغيلها في المتصفح تجعلها رائعة بشكل خاص، إذ يمكنك الحصول على تغذية راجعة بصرية أثناء التعلم
  • يجري تحديث المواصفة بشكل متكرر لإدخال ميزات جديدة، مثل async/await وإدراج السلاسل النصية. وهناك أيضًا الكثير من الابتكار حول الأدوات، مع تطوير أدوات أحدث مثل deno وesbuild وbun.js للمساعدة في العمل مع قواعد كود JavaScript
  • دعم JSON ممتاز، والدليل على ذلك أن JSON اختصار لـ JavaScript Object Notation
  • مصممة لتكون جيدة للكود المدفوع بالأحداث وغير الحاجب

ميزات بارزة

  • منظومة ضخمة. يتوفر عدد هائل من المكتبات (2.1 مليون حزمة في سبتمبر 2022)، وكذلك لغات أخرى كثيرة تُترجم إلى JavaScript
  • تعمل على معظم المنصات والأجهزة، من Windows إلى Apple، ومن Raspberry Pi إلى الهواتف، ومن خوادم الويب إلى المنصات اللاخادمية. فمتصفحات الويب تدعمها أصلاً بشكل مدمج، فلا حاجة إلى تثبيت بيئة تشغيل.
  • مثالية لتطوير الويب، مع أطر عمل كثيرة للاختيار من بينها (React وVue وAngular)، فضلًا عن أدوات كثيرة تساعد في بناء تطبيقات الويب (مثل eslint وparcel)
  • يمكن استخدامها بشكل متناظر، أي أنه يمكن استخدام اللغة نفسها (وقاعدة الكود نفسها) في كل من Backend وFrontend. وهذا يسهّل الصيانة ويتيح إعادة استخدام الكود بين Frontend وBackend
  • الشعبية الهائلة تعني: موارد كثيرة للتعلم منها (فيديوهات ومدونات ودورات)، ومجتمع واسع للتفاعل معه

Kotlin

  • طوّرتها JetBrains في عام 2010، وهي مشهورة ببيئات التطوير المتكاملة (IDE) التي تنتجها (مثل IntelliJ وCLion وGoLand وRider)
  • كانت معظم منتجات JetBrains مكتوبة بـ Java، لكنهم أرادوا لغة JVM تقلّل الكود المتكرر وتسرّع التطوير وتدعم بعض الميزات التي كانت تنقصهم. وكانت Scala تملك هذه الميزات، لكن وُجد أنها بطيئة جدًا في الترجمة. وهكذا بدأ مشروع Kotlin.
  • قوية وبأنواع ساكنة
  • متعددة الأنماط: أمرية وكائنية التوجه ووظيفية وتصريحية
  • تُترجم افتراضيًا إلى كود بايت JVM، لكن يمكن أيضًا ترجمتها إلى JS وإلى الكود الأصلي (وهو مفيد للمنصات التي لا تكون فيها الآلات الافتراضية ممكنة أو مرغوبة، مثل أجهزة iOS)
  • أعلنت Google في عام 2019 أنها اللغة المفضلة لكتابة تطبيقات Android
  • تُستخدم لبناء المواقع والتطبيقات (معظمها Android) وحتى بيئات التطوير المتكاملة بالكامل (البيئات المذكورة آنفًا)

لماذا هي رائعة

  • عامة الغرض: يمكن استخدامها لأي عبء عمل تقريبًا، بما في ذلك التطبيقات والمواقع. وقد اعتبرت Google أن Kotlin هي اللغة المفضلة لتطوير تطبيقات Android في عام 2019
  • ولأنها تعمل على JVM، فتنطبق عليها كل مزاياها: آلة افتراضية ناضجة وعالية الأداء وعدد هائل من المكتبات المتاحة
  • تخفّف الكثير من المشكلات التي قد يواجهها الناس مع Java، مثل الاستثناءات المُتحقَّق منها والسلامة من القيم الفارغة والإسهاب
  • لغة حديثة: استنتاج متقدم للأنواع، وقائمة على التعبيرات، والثبات، ومطابقة الأنماط، والكوروتينات، والقنوات
  • أدوات ممتازة (وهو أمر متوقع عندما تكون بيئة التطوير نفسها مكتوبة باللغة :))

ميزات بارزة

  • عالية الإنتاجية: تتبنّى Kotlin أفضل ما في اللغات الأخرى، وتصوغه في لغة واحدة متسقة وعالية الإنتاجية، وفي بعض الحالات تحسّن الأصل أكثر (مثل دوال الإضافة المحلية)
  • الكوروتينات: بينما في لغات كثيرة يكون async/await جزءًا أصيلًا من اللغة، فإن ذلك في Kotlin مُنفَّذ كمكتبة تستخدم ميزة الكوروتينات في اللغة. والكوروتينات وسيلة للتعامل مع الدوال المُعلَّقة، وهي توفّر تجريدًا أكثر أمانًا وأقل عرضة للخطأ للعمليات غير المتزامنة من futures وpromises.
  • تزامن رائع: async/await والقنوات والثبات كلها تساعد في تحقيق تزامن ممتاز
  • يتيح Compose multiplatform بناء واجهات مستخدم مشتركة من قاعدة الكود نفسها باستخدام صيغة تصريحية

Objective-C

  • طوّرها Brad Cox وTom Love في الأصل في أوائل الثمانينيات، واختارتها NeXT لنظام تشغيلها NeXTSTEP. وبسبب انحدار macOS من Apple مباشرةً من NeXTSTEP، أصبحت اللغة المفضلة لبرمجيات Apple
  • صُمّمت لتجمع أفكار SmallTalk كائنية التوجه مع لغة C، مستخدمةً تمرير الرسائل بوصفه البنية الأساسية كائنية التوجه
  • مجموعة فائقة لـ C، لذا فإن أي كود C هو كود Objective-C صالح، ويمكن الجمع بين الاثنين في قاعدة الكود نفسها
  • أنواع ساكنة وديناميكية
  • تُترجم
  • اللغة القياسية لكتابة تطبيقات macOS وiOS حتى مجيء Swift في عام 2014
  • تُستخدم لتطبيقات macOS وiOS

لماذا هي رائعة

  • مزيج C مع ميزات كائنية التوجه يمكن أن يكون قويًا حقًا
  • بيئة تشغيل خفيفة، ما يجعلها فعّالة في استخدام الموارد
  • صيغة خفيفة للأصناف
  • التعداد السريع يتيح حلقات for أسهل مما في C
  • توافق خلفي قوي

ميزات بارزة

  • تدعم العدّ المرجعي التلقائي (ARC)، الذي يحرّر الذاكرة تلقائيًا عندما لا يعود هناك مرجع إلى كائن، ما يسهّل إدارة الذاكرة
  • تتيح بيئة التشغيل الديناميكية تبديل الطرق (method swizzling) (أي تغيير سلوك محدد ديناميكيًا، مثل monkey patching)، والانعكاس، وتمرير الرسائل (وهو رائع لنمط المراقب أو الوكيل)
  • تجلب البروتوكولات والواجهات ميزات الواجهات إلى C، بل إن واجهات الفئات تتيح للمرء توسيع الأنواع الموجودة

PHP

  • طوّرها ونفّذها Rasmus Lerdorf في عام 1993 وأُصدرت لأول مرة في عام 1995
  • اسمها اختصار عودي: PHP: Hypertext Preprocessor
  • ذات أنواع ديناميكية وضعيفة، مع إمكانية إضافة تحققات قوية للأنواع في وقت التشغيل تدريجيًا
  • متعددة الأنماط: أمرية ووظيفية وكائنية التوجه وإجرائية وتأملية
  • تُفسّر أو تُترجم آنيًا
  • المنصة الأصلية للعرض من جانب الخادم
  • تُستخدم في المواقع (مثل Facebook وWikipedia وغيرها الكثير) وكذلك في كثير من أنظمة إدارة المحتوى (Wordpress وJOOMLA).

لماذا هي رائعة

  • إنها منتشرة في كل مكان، فـ PHP مستخدمة في 77.4% من جميع المواقع^1، بشكل مستقل عن منصات معينة
  • صيغة بسيطة، تشبه لغات برمجة راسخة أخرى مثل Java وJavaScript وC، ما يجعل تعلّمها سهلًا
  • عامة الغرض. استخدمها لأغراض كثيرة، من إنشاء سكربتات ويب صغيرة إلى إنشاء تطبيقات كبيرة من جانب الخادم تشغّلها المؤسسات.
  • راسخة جدًا ومعتمدة على نطاق واسع. وتوجد موارد تعليمية وأطر عمل ومكتبات كثيرة.
  • دعم قوي لقواعد البيانات
  • لا تزال في تطوير نشط وتصدر ميزات حديثة
  • عبر المنصات. تعمل على كل شيء: Windows وMac وLinux وUnix
  • مفتوحة المصدر ومجانية

ميزات بارزة

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

PureScript

  • صمّمها Phil Freeman وأُصدر أول إصدار لها في عام 2013
  • بدأ العمل على PureScript لأنه لم يكن راضيًا عن محاولات أخرى لترجمة Haskell بينيًا إلى JavaScript
  • قوية وبأنواع ساكنة
  • تُترجم إلى JS
  • لغة وظيفية خالصة
  • صيغتها وميزاتها مستوحاة من Haskell
  • تُستخدم لبناء تطبيقات الويب، لكن يمكن استخدامها أيضًا لبناء تطبيقات من جانب الخادم أو تطبيقات سطح المكتب عبر Electron

لماذا هي رائعة

  • تتشارك الكثير مما يجعل Haskell رائعة:
    • نظام أنواع قوي وفعّال: أنواع البيانات الجبرية، وأصناف الأنواع، والأنواع ذات الرتب الأعلى
    • تعبيرية: مطابقة الأنماط، واستنتاج الأنواع
    • أمان: لا قيم فارغة، وأنواع غير قابلة للتغيير
    • وظيفية خالصة: تُرمَز الآثار الجانبية في نظام الأنواع
  • فك ترميز JSON وترميزها إلى أنواع بسهولة وأمان نوعي
  • تُترجم إلى JavaScript مقروءة للبشر
  • أدوات جيدة

ميزات بارزة

  • النواة الوظيفية مثالية لتطبيقات ويب آمنة نوعيًا دون أخطاء في وقت التشغيل
  • توافق بيني ممتاز مع JS
  • تُترجم إلى JS فعّالة

ReasonML

  • أنشأها Jordan Walke في Facebook وأُصدر أول إصدار لها في عام 2016
  • مبنية على OCaml، لكن مع إزالة خصائصها الغريبة وصُمّمت للتوافق البيني مع JS
  • لغة وظيفية ذات أنواع ساكنة
  • تُترجم
  • تُستخدم لبناء المواقع (مثلًا في Facebook)

لماذا هي رائعة

  • كل محاسن OCaml لكن في بيئة ويب:
    • نظام أنواع قوي: جميع القيم لها أنواع أبسط (مثل السجلات والأنواع البديلة وأنواع الخيار) تُفضَّل على الأنواع المعقدة. لا مزيد من أخطاء undefined، ما يحسّن الموثوقية
    • تعبيرية: مطابقة الأنماط، واستنتاج الأنواع، والتفكيك
    • أمان: لا قيم فارغة، والثبات افتراضيًا
  • تُترجم إلى JavaScript مقروءة للبشر
  • يمكن ترجمتها إلى OCaml (والعكس صحيح)، ما يعني أنها تستطيع استخدام منظومة OCaml كاملة (مثلًا للترجمة إلى ملف تنفيذي أصلي)

ميزات بارزة

  • أزمنة ترجمة ReasonML سريعة للغاية، ما يعني دورات تكرار سريعة.
  • توافق بيني ممتاز مع JS، سواء لاستخدام JS من كود ReasonML أو لتصدير ReasonML إلى JS. بل يمكنها توليد أنواع TS. ويمكنها أيضًا التوافق البيني مع C. وتدعم حتى صيغة شبيهة بـ JSX.

Swift

  • بدأ Chris Lattner تطوير Swift في عام 2010، وأُعلن عنها عالميًا في حدث WWDC في عام 2014.
  • كان الهدف استبدال لغة Apple البرمجية القديمة Objective-C، التي لم تتلقَّ أي تغييرات جوهرية منذ أوائل الثمانينيات، بلغة جديدة وحديثة. وقد صُمّمت للتوافق البيني مع أجزاء كبيرة من Objective-C.
  • قوية وبأنواع ساكنة
  • تُترجم، باستخدام LLVM للتعامل مع الترجمة إلى لغة الآلة (مثل Rust)
  • متعددة الأنماط: وظيفية وكائنية التوجه وأمرية وتصريحية
  • كانت في الأصل برمجية مملوكة، لكنها أصبحت مفتوحة المصدر في عام 2015
  • تُستخدم أساسًا لتطبيقات الجوال وسطح المكتب، لكنها تُستخدم أيضًا في Backend وفي السيناريوهات اللاخادمية

لماذا هي رائعة

  • لغة حديثة: استنتاج الأنواع، ومطابقة الأنماط، وأنواع البيانات الجبرية، وسلاسل نصية بترميز Unicode
  • عالية الإنتاجية: تتبنّى Swift أفضل ما في اللغات الأخرى (مثل Rust وPython وC# وRuby)، وتصوغه في لغة واحدة متسقة وعالية الإنتاجية
  • آمنة: لا تُكشف المؤشرات، ونوع اختياري يمنع استثناءات المؤشر الفارغ، ومعالجة صريحة للأخطاء، وإدارة تلقائية للذاكرة عبر ARC (العدّ المرجعي التلقائي)
  • تُحدَّث بانتظام. في بداياتها، لم تكن Apple تخشى إدخال تغييرات كاسرة للأمور التي ثبت أنها لا تعمل جيدًا. وهذا يمنع تراكم "الأعباء". وعادةً ما تُتاح أداة للمساعدة في ترحيل الكود. ومنذ Swift 5، أصبحت واجهة التطبيقات الثنائية (ABI) مستقرة
  • وعلى عكس Objective-C، تعمل Swift على جميع المنصات الرئيسية: macOS وWindows وLinux

ميزات بارزة

  • سريعة. تُترجم إلى لغة آلة فعّالة، ما يجعلها تعمل بسرعة
  • توافق بيني سلس مع Objective-C، وتتوافق بشكل جيد أيضًا مع C وC++
  • مجتمع كبير، مع توفر موارد ممتازة كثيرة

TypeScript

  • أُنشئت في Microsoft استجابةً للإحباط الذي واجه تطوير التطبيقات واسعة النطاق بـ JS. وكان أحد مصمميها Anders Hejlsberg، المعماري الرئيسي لـ C# ومبتكر Delphi وTurbo Pascal
  • أُصدر الإصدار الأول في عام 2012
  • متعددة الأنماط: وظيفية ونموذجية وأمرية وكائنية التوجه وعمومية
  • تستخدم الأنواع التدريجية والتنميط البطّي
  • تُترجم (إلى JS)
  • تُستخدم في المواقع، في Frontend وBackend، وفي السكربتات وأدوات سطر الأوامر

لماذا هي رائعة

  • نظام أنواع قوي ومرن: الأنواع الاتحادية، والأنواع الحرفية، والصفوف. وبشكل أساسي، يمكن وصف أي نمط يمكن استخدامه في كود JS بطريقة آمنة نوعيًا في TS. ونظام الأنواع قوي لدرجة أنه مكتمل تورينغيًا
  • كونها مجموعة فائقة لـ JS يسمح بإدخالها تدريجيًا في قاعدة كود JS
  • تجمع أفضل ما في العالمين: الأنواع الديناميكية والساكنة
  • تتنامى شعبيتها بسرعة، مع أدوات كثيرة إما توفّر أنواع TypeScript أو تُحوَّل إلى TypeScript. وتتوفر موارد كثيرة
  • تُحدَّث اللغة بانتظام، مع تبنّي مبكر لميزات ECMAScript القادمة

ميزات بارزة

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

أيها تجرّب؟

  1. إذا كنت تريد بناء تطبيقات أصلية، فإن Dart وDelphi وJava وKotlin وSwift خيارات رائعة. ومع ذلك، يمكن استخدام أي من اللغات الأخرى التي تُترجم إلى JS لبناء تطبيقات أصلية أيضًا. ومن الجدير بالذكر أن اللغة الرسمية لبناء تطبيقات iOS/macOS هي Swift، ولتطبيقات Android هي Kotlin
  2. إذا كنت تريد بناء تطبيقات ويب، فإن CoffeeScript وDart وElm وJava وJavaScript وKotlin وPHP وPureScript وReasonML وTypeScript خيارات رائعة
  3. إذا كنت مهتمًا بالبرمجة الوظيفية، فإن Elm وPureScript وReasonML خيارات طبيعية، كما تدعم CoffeeScript وDart وJava وJavaScript وKotlin وSwift وTypeScript البرمجة الوظيفية أيضًا
  4. للبرمجة كائنية التوجه، فإن ABAP وDart وDelphi وJava وKotlin وObjective-C وPHP وSwift مرشحات منطقية، كما تدعم CoffeeScript وJavaScript وTypeScript هذا النمط أيضًا
  5. إذا كنت مهتمًا بكتابة تطبيقات الأعمال، فإن ABAP وDelphi مثاليتان لذلك
1 أغسطس، 2023 · هل وجدته مفيدًا؟