مضى على اختراع الإنترنت ثلاثون سنةً، ويحتفل يوم 9 أبريل بهذه المناسبة، وظهرت وعود سابقًا بأن أيّ شخص يستطيع الضغط على خيار (View source) لأي صفحة ويب ليتعلّم ما يجب معرفته من أجل تصميم شيء مشابه لها. وقد نشر موقع Glitch تصميمًا معادًا لأول صفحة في تاريخ الإنترنت، لكي يسلط الضوء على إمكانية الدخول ومشاهدة مكونات صفحة ما، فتظهر أجزاء الصفحة محددةً بكلمات مثل (title وbody وp التي ترمز لكلمة paragraph التي تعني مقطعًا باللغة الإنجليزية).
يبدو الأمر عاديًا للوهلة الأولى، لكنه ينطبق فقط على الناطقين باللغة الإنجليزية. فلو أعاد شخص ما تصميم الصفحة ذاتها مع تعديل الكلمات لتصبح باللغة الروسية، هل سيرغب أحد بمحاولة فهم مكونات الصفحة على الإنترنت؟ غالبًا لا.
من الممكن اختراع لغة برمجة مكونة من أي لغة أو أي عدد من الرموز. فالحاسوب لا يُبالي بالرموز، لأنه مزود بأداة تسمى المترجم، تعمل على ترجمة الجملة الشرطية البرمجية (if) أو محتوى لغة توصيف النص الفائق مثل (body) إلى أصفار وواحدات ليتعامل معها على المستوى الحاسوبي.
يُساعد وضع كل الرموز الموجودة اليوم في لغات البرمجة ضمن اللغة الإنجليزية على تسهيل التعامل معها، إذ إن العقل البشري يُجيد تذكر الأوامر المكتوبة بلغة متداولة أو كثيرة الاستخدام.
لكن الواقع يُثبت عكس ذلك فليس الجميع متحدثًا باللغة الإنجليزية، ويُخالف هذا أيضًا الوعود السابقة التي كانت مبنيةً على إتاحة الإنترنت للجميع، إذ يبدو أنه لا أحد يستفيد من تعلم البرمجة باللغة الإنجليزية سوى المتحدثين بها، أو المحظوظين الذين أتقنوا اللغة في سن مبكرة في مناطق أخرى في العالم عبر الدراسة في نخبة المؤسسات التعليمية.
ومع إن البرامج اليوم ومنصات التواصل الاجتماعي متوفرة بلغات اخرى قد تصل 30 إلى 100،فإن ذلك ينطبق فقط على صعيد استهلاك المحتوى فقط، بينما الأدوات المعنية بالابتكار وصناعة البرمجيات لا تزال أغلبها تدعم اللغة الإنجليزية. والأمر لا ينطبق فقط على اللغات المهمشة، وإنما يشمل أيضًا كبار اللغات المستخدمة حول العالم، التي يوجد عدد كبير من الناطقين بها (كالإسبانية والصينية والهندية والعربية). ولا تتوفر أدوات لغات البرمجة في هذه اللغات العريقة كما ينبغي.
توجد حاليًا 4 لغات برمجة فقط تدعم لغات أخرى غير الإنجليزية، اثنتان منها مصممة لتعليم الأطفال وهما Scratch و Blockly. أجرى مطورو لغة Scratch دراسةً مفادها أن الأطفال الذين يتعلمون الترميز بلغة برمجة تدعم لغتهم الأم، يتقنون لغة البرمجة بسرعة أكبر من الأطفال المجبرين على تعلم لغة أخرى، حتى يستطيعوا تعلم لغة البرمجة.
أما بالنسبة للبالغين فغالبًا ما يواجهون صعوبةً في تعلم اللغات. لذلك يتوجهون إلى استخدام أدوات برمجية شائعة تدعم لغتهم الأم، كاستخدام إكسل والمعادلات التي فيه، ولغة التوصيف.
إذ يدعم إكسل وجداول غوغل لغات غير الإنجليزية، فمن الممكن كتابة:
=IF(condition,value_if_true,value_if_false)
باللغة الإنجليزية، وأيضًا بلغة أخرى مثل الإسبانية:
=SI(prueba_lógica,valor_si_es_verdadero,valor_si_es_falso)
وغيرها من اللغات.
يوجد تطبيق آخر للجداول لا يعلم به الكثيرون، من الممكن تحويله إلى آلة تورنغ إلى حد ما، وهي أداة لها استخدامات في لغات عديدة، لأنها قادرة على التلاعب بالرموز.
يُمكن أيضًا التعديل على صفحات ويكيبيديا وغيرها من الصفحات المشابهة، بالتلاعب بلغة التوصيف ضمن سياق لغات أخرى، فأغلب خصائص لغات التوصيف لا ترتبط بلغة واحدة غالبًا، ومن الممكن وضع الأقواس المربعة [[حول رابط ما]] لإتمام أوامر معينة. لكن الكثير من الخصائص المتقدمة تحتاج إلى استخدام الكلمات ضمن لغة معينة للاستفادة منها.
فمثلًا لوضع مربع معلومات تدل على هوية الشخص يتطلب وضع مؤشرات معينة هي:
name =
birthplace =
بالطبع، ينطبق هذا على صفحة ويكي باللغة الإنجليزية. فلو أراد أحدهم إجراء العملية ذاتها باللغة البلغارية، ستصبح البيانات باللغة ذاتها:
име =
роден-място =
تتوفر كثير من لغات البرمجة غير اللغات الأربعة المذكورة بلغة أو لغتين غير الإنجليزية، فتوجد لغة (قلب) البرمجية في اللغة العربية، والبايثون في اللغة الصينية، وفاريسينت بالفارسية ونظام البرمجة الهنداوي ويشمل اللغات (البنغالية والغوجاراتية والهندية) وتوجد أيضًا نسخة من لغة البرمجة بيرل باللاتينية.
يعود تاريخ بعض لغات البرمجة بلغات غير الإنجليزية إلى حقبة الاتحاد السوفيتي، عندما كانت الحواسيب تحتاج إلى غرفة كاملة لتتسع فيها، وبعض هذه اللغات البرمجية لغات خاصة بالاتحاد السوفيتي فكانت بالنتيجة مبنية على اللغة الروسية، وبعض اللغات الأخرى الأكثر شهرة (ALGOL68، و4th Dimension).
شارك في صنع اللغات البرمجية المعاصرة (مثل بايثون وروبي ولوا) مبرمجون من بلدان لا تتحدث الإنجليزية (هولندا، واليابان والبرازيل). ومع ذلك طغى استخدام الكلمات الإنجليزية كليًا في هذه اللغات.
بعد هذه المراجعة السريعة لتاريخ لغات البرمجة، يتضح لنا أن وعود الإنترنت بجعل لغات البرمجة متاحةً للجميع تبدو أشبه بتهديد: إما أن تتحدث اللغة الإنجليزية، أو لن تستطيع المشاركة في تعلم البرمجة وإتقانها.
وُجدت هذه اللغات لأنه ليس من الصعب ترجمتها، بمعنى آخر يوجد الكثير من الوسائل لتحويل النص بين لغات البرمجة وتقديمه بلغة المستخدم الأم. إذ يظهر التداخل بين لغات البرمجة بوضوح عند إدراك إمكانية أخذ أمر معين في لغة Javascript والحصول على نسخته في Python، أو أمرٍ بلغة Markdown لغة التوصيف، والحصول على نص أوامر مشابه في HTML.
كل ذلك ممكن لأن لغات البرمجة تعتمد على عدد محدود من الكلمات اللغوية لتنفيذ الأوامر دون الحاجة إلى التفكير بمعانٍ ثانية، يتعلق بعضها بالمخزون الثقافي للغة ما، أو حالات التباس مفاجئة تواجه اللغويين. فمن السهل ابتكار طريقة تُجمع فيها كلمات لغة برمجية ما، وترجمتها مباشرةً إلى لغة غير الإنجليزية لتصبح متاحةً لفئة أكبر من الناس.
ويُقدم الكثير من المبرمجين بالفعل على ترجمة لغات البرمجة في لغات متنوعة لأغراض شخصية، أو بدافع التسلية أو التفنن. فمثلًا ترجم أحدهم لغة البرمجة الغريبة LOLCODE المبنية على lolcats التي تعتمد على البدء بكلمة HAI وتنتهي عند KTHXBAI. والفراغات فيها غير مرئية للبشر. ويوجد لغات أخرى غريبة مثل لغة Pikachu التي تتألف فقط من الكلمات pi، وpika، و pikachu.
قد تبدو بعض اللغات المذكورة هنا سخيفة، ولكن إتاحة لغات البرمجة بغير الإنجليزية بما يسمح لمليارات البشر من تعلم البرمجة ودخول سوق العمل التقني ذو الوظائف ذات المردود العالي ليس بفائدة مفترضة سخيفة.
لا تُعنى لغات البرمجة بالجانب التقني فقط، فيوجد أيضًا جانب بشري لها. فقد حققت اللغات البرمجية الأربع تقدمًا على صعيد توسيع نطاق مستخدميها بسبب توفرها بلغات أخرى، بعكس اللغات البرمجية المحصورة بلغة غير الإنجليزية إذ ما زالت تُعاني من قلة في مستخدميها.
يتعلق الأمر بقلة الموارد المتاحة، إذ يحتاج المستخدمون إلى العثور على مواقع تدعم استخدام هذه اللغات، ففي بعض الأحيان يصعب حتى إدراج اللغة ضمن محرر أكواد على حاسوب معين. لذلك سعى المصممون من Glitch إلى إتاحة إمكانية التعديل على العناصر المكونة لهذه الصفحة، وليس فقط عرضها.
هذا مفيد للناطقين باللغة الإنجليزية، ولكنه لا ينطبق على غير الناطقين بها.فالسؤال الذي يتراود إلى أذهان الجميع هو: كيف نستطيع تسهيل التعديل على صفحات الإنترنت للناس غير الناطقين باللغة الإنجليزية؟
يُشبه الوضع الحالي في عالم البرمجة اليوم ما كان يحدث في أوروبا في العصور الوسطى، آنذاك كانت لغة التواصل الأساسية هي اللاتينية. إن أراد أحدٌ تعلم الكتابة، كان مجبرًا على تعلم اللاتينية أولًا. ليس فقط من أجل التواصل وإنما من أجل الاندماج في المجتمع والعمل وأشياء أخرى. كان تعلم لغات ثانية نشاطًا مهمشًا وغير مرغوب، إذ لم تكن اللغات الأخرى مثل الإنجليزية والفرنسية ذات فائدة تُذكر، وظل التحدث بها محصورًا بمناطق جغرافية معينة. فكانت اللاتينية اللغة المهيمنة في ذلك الوقت مثل الإنجليزية اليوم.
يتساءل كثير من الناس عن سبب هوس المجتمع حينها باللغة اللاتينية، والجواب منطقي جدًا، إذ كان تعلم اللاتينية فرضًا على الجميع حتى يُتقنوا الكتابة، فكانت اللغة اللاتينية وحدها تكفي للوصول إلى جميع مصادر التعلم. ومع إن ذلك التقليد كان سائدًا في أغلب أوروبا، فإن الاكتشافات العلمية اليوم تنطبق على حالة اللغة آنذاك، فالأطفال كانوا سيتعلمون الكتابة والقراءة على نحو أفضل لو سُمح لهم ذلك بلغتهم الأم دون فرض اللغة اللاتينية عليهم.
أما اليوم فتنشر مواقع تعلم الترميز الشهيرة مثل Stack OverFlow آراءً مشابهةً، إذ يزعم البعض أن تعلم الإنجليزية سيُسهل عملية الانخراط في العالم التقني بجوانبه كافةً للجميع ولا حاجة لتعلم لغة أخرى، وإهدار الوقت.
مع مرور الوقت انتهت هيمنة اللغة اللاتينية، وانتشرت طرق تعلم الكتابة حول العالم بلغات أخرى. لذا يرى البعض أنه لا بد من حدوث أمر مشابه في عالم البرمجة والترميز اليوم، وضرورة التفريق بين اللغة الإنجليزية، ولغة البرمجة. فيُمكن التفرقة مثلًا بين سطور الترميز المكتوبة باستخدام HTML واللغة الإنجليزية التي مكنت المبرمجين من وضع السطور ضمن صفحة إنترنت. كذلك الحال عند التمعن بمقطع الرموز المكتوب بلغة برمجة Javascript، إذ تجري كتابة الأكواد في لغة البرمجة باستخدام اللغة الإنجليزية، ولا مانع لو استُخدمت لغة أخرى للتعبير عن التعليمات ذاتها.
سريعًا ما يُمكن ملاحظة أن الحالة العامة في عالم البرمجة هي اللجوء للغة الإنجليزية دائمًا. تأتي الخطوة التالية في محاولة تغيير ذلك، وإعطاء اللغات الأخرى فرصةً أكبر للبروز، وتسهيل تعلم البرمجة لناطقيها. ولا بذور لولادة مثل هذا العالم بعد، وقد يتطلب الأمر الانتظار ثلاثين سنةً حتى تتحقق هذه الرؤية.
اقرأ أيضًا:
كم تطورت البرمجة خلال العقد الماضي؟ وهل هي صعبة التعلم حقًا؟
لماذا لن تستخدم لغة البرمجة (بايثون) في المستقبل؟
ترجمة: طاهر قوجة
تدقيق: منال توفيق الضللي
مراجعة: محمد حسان عجك