روبي ليست لغة برمجة خطيرة
نظريتي الصغيرة هو أن مفهوم “البصمة” في علم النفس يمكن تطبيقه بسهولة على البرمجة: مثلما يقرر طفل الإوزة أن أول شكل من أشكال الحياة المتحرك الذي يواجهه هو أبوه، فإن المبرمجين الجنينيين يشكلون ارتباطات لا يمكن إزالتها بأنماط وجوهر لغتهم التكوينية الأولى.
بالنسبة لكثير من الناس، تلك اللغة هي روبي. غالبًا ما يُنسب إليه الفضل في جعل البرمجة “نقرة”؛ يتحدث المطبوعون عنها بقدر معين من المديونية والمودة. لقد فهمت ذلك. لقد كتبت كتابي الأول “Hello World” بلغة فظيعة تسمى Java، لكن البرمجة بدأت تبدو بديهية فقط عندما تعلمت JavaScript (أعلم، أعرف) وOCaml، وكلاهما شكل أذواقي بشكل أساسي.
لقد وصلت متأخراً بعض الشيء إلى روبي. لم أجد نفسي إلا في وظيفتي الرابعة في فريق استخدمها بشكل أساسي. بحلول ذلك الوقت، كنت قد سمعت ما يكفي من الأناشيد عن أناقتها لدرجة أنني كنت ممتلئًا بالترقب، وعلى استعداد للسحر، لتجربة هذا النوع من الساتوري الاحترافي الذي وصفه أتباعه. كان كرهي لذلك فوريًا.
إن الوصول إلى لغة ما متأخرًا يعني رؤيتها دون ضباب العاطفة المتسامح الذي يأتي مع البصمة – الرغبة المحببة في التغاضي عن الخلل باعتباره أمرًا غريبًا. ما رأيته لم يكن أداة مرصعة بالجواهر، بل كان شيئًا صغيرًا سيئًا لم يتلق الأخبار التي تفيد بأن عالم البرمجة قد تطور.
تم إنشاء روبي في عام 1995 على يد المبرمج الياباني يوكيهيرو ماتسوموتو، الملقب بمودّة “ماتز”. بصرف النظر عن إنشاء لغة البرمجة الرئيسية الوحيدة التي نشأت خارج الغرب، فإن هذا المورمون الممارس المولود في أوساكا معروف أيضًا بكونه لطيفًا بشكل استثنائي، لدرجة أن مجتمع روبي تبنى شعار MINASWAN، الذي يعني “Matz Is Nice And So We Are Nice”.
بما يتناسب مع هذا، بالإضافة إلى اسمها الجميل، فإن روبي مريحة للعينين. بناء الجملة بسيط، خالي من الفواصل المنقوطة أو الأقواس. وحتى أكثر من بايثون – وهي لغة معروفة بقابلية قراءتها – فإن لغة روبي تُقرأ تقريبًا مثل اللغة الإنجليزية البسيطة.
تنقسم لغات البرمجة عمومًا إلى معسكرين: مكتوبة بشكل ثابت ومكتوبة ديناميكيًا. يشبه النظام من النوع الثابت مجموعة من قطع الليغو حيث تتشابك القطع فقط مع القطع الأخرى ذات الشكل والحجم الصحيحين، مما يجعل بعض الأخطاء مستحيلة ماديًا. باستخدام الكتابة الديناميكية، يمكنك تجميع القطع معًا كما تريد. في حين أن هذا من الناحية النظرية أكثر مرونة على نطاق صغير، إلا أن هذه الحرية تأتي بنتائج عكسية عندما تقوم ببناء هياكل كبيرة – يتم اكتشاف أنواع معينة من الأخطاء فقط عند تشغيل البرنامج. بعبارة أخرى، في اللحظة التي تضع فيها وزنًا على جسر المشاة الخاص بك من قطع الليغو، فإنه ينزلق إلى كومة عديمة الفائدة.
ربما خمنت أن روبي تتم كتابتها ديناميكيًا. إن Python وJavaScript كذلك، ولكن على مر السنين، طورت هذه المجتمعات أدوات متطورة لجعلها تتصرف بشكل أكثر مسؤولية. لا يوجد أي من حلول روبي الحالية على قدم المساواة مع تلك الحلول. إنها مفيدة للغاية لما يسميه المبرمجون “البنادق”، وهي الميزات التي تجعل من السهل جدًا إطلاق النار على قدمك.