المعلوماتية > برمجيات

لغةُ "Elixir" البرمجية، مستقبل تطبيقات الويب

لغةُ "Elixir" البرمجية هي لغةُ برمجةٍ وظيفيةٍ وديناميكية تم تصميمُها لبناء برمجياتٍ قابلةٍ للتوسعِ والتمدد وسهلةِ الصيانة.

تعملُ هذه اللغةُ ضمن آلةٍ افتراضية تُدعى آرلانج "Erlang Virtual Machine"، وتستفيد بذلك من إمكانيات هذه الآلة الافتراضية المعروفة بسرعةِ الاستجابة وبكونها قادرةً على العمل بشكل رائعٍ في بيئات الأنظمة الموزّعة (Distributed Systems). إضافةً إلى إثباتها للقدرة على العمل خلال فتراتِ الخلل؛ أي أنها (fault-tolerant).

تم تطويرُ لغة البرمجة من قبل «خوسيه فيلام»، وكان هذا جزءًا من مشروع البحث والتطوير في شركة "Plataformatec"، والذي يهدفُ إلى إضافة قدرةٍ أكبرَ على التمدد (extensibility) والإنتاجية في آلة آرلانج الافتراضية.

لايمكن لأيِّ كاتبٍ أو مبرمجٍ أو معدِّ مقال أن يكتبَ عن لغة البرمجة هذه دون الحديث عن الآلة الافتراضية التي تدعمها. فما بالك إن كانت هذه الآلة الافتراضية هي آرلانج!

إن كنت لم تسمع بها من قبل فهي سرُّ نجاح برنامج تبادل الرسائل النصية "WhatsApp" المعروف بسبب قدرتها الجبارةِ على التزامن (concurrency)(يمكنك الاطلاع أكثر على هذا الموضوع من خلال هذا المقال هنا). إذ تمَّ تطويرُ آرلانج من قِبل شركة "Ericsson" في ثمانينيات القرن الماضي لمساعدتها على تطوير برمجياتٍ داعمةٍ لشبكات الهواتف بشكل أكبر وأكثر فعالية. إن كان هاتفك يعمل على شبكة الجيل الرابع، فعلى الأغلب أن تكونَ البياناتُ التي يقوم بإرسالها واستقبالها تمرُّ عبر أجهزة مصنَّعةٍ من قِبل "Ericsson" ومُدارةٍ من قِبل آرلانج.

هل سبق وتساءلت: " لماذا لا تحتاجُ شركاتُ الاتصالات إلى قطعِ خدمة الهاتف عن جميع المشتركين خلال فترة تطبيق التحديثات على الشبكة؟"

الجواب هو لأن آرلانج تسمحُ بإبقاء التطبيقات عاملة وتطبيق التحديثات عليها دون الحاجة إلى توقفها.

أما بالنسبة لتطبيق WhatsApp، فهذا التطبيق الذي يخدمُ مئاتِ ملايين المشتركين يعملُ على عدد كبير جدًا من المخدّمات، وكلُّ مخدم يستقبلُ مليوني اتصالٍ لوحده في اللحظة نفسِها، لذلك من الصعب أن يتمَّ دون أن يكون مُدارًا من قِبل آرلانج.

لعلّك الآن تتساءل لماذا لم يتم استخدامُ آرلانج في برمجة تطبيقات الويب إن كانت تملكُ هذا الكمَّ من القدرات ومالذي ستغيره "Elixir"؟

تكمنُ مشكلةُ آرلانج في أنّ تراكيبَ جملها صعبةُ القراءة والتركيب على عكس «جافا» أو «روبي». إضافةً إلى أن بناءَ موقع إلكتروني على مخدمِ آرلانج وتشغيله ليس بالبساطة كما في لغات البرمجة المعروفة. عدا عن عدم وجودِ الكمِّ الجيد من مبرمجي آرلانج، وهذا كان أحدَ أسباب عزوف «فيس بوك» عن برمجةِ برنامج التواصل النصي الخاص بها "Facebook Chat" بلغة برمجة آرلانج و"Elixir" كما ذُكر في تقارير عدة.

وهنا يأتي دورُ لغة برمجة "Elixir"، فهي تعالجُ جميعَ هذه المشاكل التي تقف عائقًا في طريق الاستفادة من قدرات آرلانج؛ إذ أنها تأتي بأداة إدارة الحزم (Package Management) الخاصة بها، وأداةِ بناء التطبيقات وإمكانية تعاملها و(Unicode).

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

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

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

أما بالنسبة لقابلية التوسع، فإنه من المعتاد أن يكون هناك مئاتُ آلافِ العمليات المتزامنة والمستقلّة عن بعضها البعض تعمل على جهاز واحد، وهذه الخاصية تتيح القيام بعمليات جمع البيانات المهملة (Garbage Collection) لكل عملية على حدى، مما يقللُ من فترات التوقف للنظام ككل.

منصةُ "Phoenix" البرمجية لتطبيقات الإنترنت:

هي أشهرُ المنصاتِ لمبرمجي "Elixir" في الوقت الحالي. يُعطي دعمُ آرلانج لما يُسمى (hot code reloading) مبرمجي الويب ميزةً فريدةً وهي التعديل على الكود المصدري أثناء سير التطبيق دون الحاجة إلى إعادة تشغيل المخدم الذي يعمل عليه تطبيق الويب. يجب أن نعلمَ أنّه وبكتابتنا لبرمجياتنا بلغة "Elixir" فإننا نتيحُ لكل مستخدمٍ لتطبيق الإنترنت أن يكونَ له عملية خاصة به في المخدم وهذا ما يتيح لمنصة "Phoenix" فتحَ قنواتِ اتصال مباشرة بين جافاسكربت على المتصفح وبين المخدم والعملية الخاصة بالمستخدم على هذا المخدم. أيّ أنّ المستخدمَ سيستقبل استجابةً في الوقت الحقيقي لأي طلب يقوم به، وهذه السرعة في التصفح نادرًا ما نجدها مدعومةً من منصة بشكل جاهز دون الحاجة لتدخل المبرمجين.

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

المصادر:

كتاب Programming Elixir، Author: Dave Thomas

هنا