في وقت مبكر من بعد جائحة كوفيد-19، قدم حاكم ولاية نيوجيرسي اعترافًا غير عادي: لقد نفد مطورو COBOL. تمت كتابة أنظمة التأمين ضد البطالة في الولاية بلغة برمجة عمرها 60 عامًا وكانت بحاجة إلى التحديث للتعامل مع مئات الآلاف من المطالبات. والمشكلة هي أن القليل من موظفي الدولة يعرفون كيفية القيام بذلك. وذهبت الأزمة إلى ما هو أبعد من ولاية نيوجيرسي، وهي مجرد واحدة من الولايات العديدة التي اعتمدت على هذه الأنظمة غير العملية. وبحسابات تقريبية واحدة، فإن عدم كفاءة كوبول كلف الناتج المحلي الإجمالي الأمريكي 105 مليار دولار في عام 2020.
قد تظن أن نيوجيرسي كانت ستستبدل نظامها بعد ذلك، وأن كوفيد كان آخر رمق لكوبول. ليس تماما. جاء نظام البطالة الجديد في الولاية مع عدد من التحسينات في نوعية الحياة، ولكن على الواجهة الخلفية، كان لا يزال ممكنًا بفضل حاسوب مركزي يدير اللغة القديمة.
تعد لغة COBOL، وهي اختصار لعبارة Common Business-Oriented Language، لغة الكمبيوتر الأكثر انتشارًا في التاريخ. ومن بين 300 مليار سطر من التعليمات البرمجية التي تمت كتابتها بحلول عام 2000، كان 80 بالمائة منها بلغة COBOL. ولا يزال يُستخدم على نطاق واسع ويدعم عددًا كبيرًا من الأنظمة الحكومية، مثل سجلات المركبات والتأمين ضد البطالة؛ في أي يوم، يمكنه التعامل مع شيء بقيمة 3 تريليون دولار من المعاملات المالية. أعتقد أن كوبول هو نوع من الأسبستوس الرقمي، الذي كان موجودًا في كل مكان تقريبًا في وقت ما، والآن أصبح من الصعب للغاية إزالته بشكل خطير.
تم اقتراح كوبول لأول مرة في عام 1959 من قبل لجنة تضم معظم صناعة الكمبيوتر في الولايات المتحدة (بما في ذلك جريس هوبر). ودعت إلى “مواصفات لغة عمل مشتركة لأجهزة الكمبيوتر الرقمية الآلية” لحل مشكلة متنامية: تكلفة البرمجة. كانت البرامج مكتوبة خصيصًا لأجهزة معينة، وإذا كنت تريد تشغيلها على شيء آخر، فهذا يعني إعادة كتابة شبه كاملة. وتواصلت اللجنة مع وزارة الدفاع التي تبنت المشروع بكل سرور.
تصميم لغة COBOL يميزها عن اللغات الأخرى في ذلك الوقت والآن. كان من المفترض أن تتم كتابته باللغة الإنجليزية البسيطة حتى يتمكن أي شخص، حتى غير المبرمجين، من استخدامه؛ تمت إضافة التدوين الرياضي الرمزي فقط بعد جدل كبير. تسمح معظم إصدارات لغة COBOL باستخدام مئات الكلمات (تسمح Java بـ 68 كلمة فقط)، بما في ذلك “is” و”then” و”to” لتسهيل الكتابة. حتى أن البعض قال إن الهدف من لغة COBOL هو استبدال مبرمجي الكمبيوتر، الذين احتلوا في الستينيات مكانًا نادرًا في العديد من الشركات. وكانوا أساتذة في التكنولوجيا التي بالكاد يستطيع معظم الناس فهمها. وكان مصممو COBOL يأملون أيضًا في إنشاء وثائق خاصة بها، مما يوفر وقت المطورين ويجعلها سهلة. للحفاظ عليها على المدى الطويل.
ولكن ماذا يعني حتى أن تكون قابلة للقراءة؟ البرامج ليست كتبًا أو مقالات؛ إنها مجموعات مشروطة من التعليمات. في حين أن لغة COBOL كانت قادرة على تحويل تعقيد سطر واحد من التعليمات البرمجية إلى شيء يمكن لأي شخص أن يفهمه، إلا أن هذا التمييز انهار في البرامج التي كانت تصل إلى آلاف الأسطر. (إنه مثل دليل تجميع Ikea: أي خطوة معينة تكون سهلة، ولكن بطريقة ما لا يزال الأمر غير مكتمل.) علاوة على ذلك، تم تنفيذ COBOL بقطعة من المنطق التي أصبحت محتقرة: عبارة GO TO، وهي آلية تفرع غير مشروطة ترسلك من قسم واحد من البرنامج إلى آخر. وكانت النتيجة “شفرة السباغيتي”، كما يحب المطورون أن يقولوا، والتي جعلت من التوثيق الذاتي أمراً لا أهمية له.
واجه الكثير من علماء الكمبيوتر مشكلات مع كوبول منذ البداية. من المعروف أن إدسجر ديكسترا كان يكرهها قائلاً: “إن استخدام لغة الكوبول يشل العقل؛ وبالتالي، ينبغي اعتبار تدريسها بمثابة جريمة جنائية”. وبالمثل، كره ديكسترا بيان GO TO، بحجة أنه يجعل فهم البرامج شبه مستحيل. كانت هناك درجة من التكبر الحقيقي: غالبًا ما كان يُنظر إلى لغة COBOL بازدراء باعتبارها لغة نفعية بحتة تهدف إلى حل المشكلات المملة.
رأى جان ساميت، أحد المصممين الأصليين، الأمر بشكل مختلف – فاللغة ببساطة كانت لها مهمة معقدة تتمثل في تمثيل أشياء معقدة، مثل الضمان الاجتماعي. أو كما كتب مدافع آخر: “للأسف، هناك عدد كبير جدًا من برامج تطبيقات الأعمال التي كتبها مبرمجون لم يستفيدوا أبدًا من تدريس لغة COBOL بشكل جيد.” كانت لغة COBOL الجيدة تقوم بالفعل بالتوثيق الذاتي، ولكن الكثير يعتمد على المبرمج المحدد. وقد عبّر فريد غرونبرغر، عالم الرياضيات في مؤسسة راند، عن الأمر بهذه الطريقة: “إن كوبول، في أيدي المعلم، هو أداة جميلة – أداة قوية للغاية. كوبول، حيث أنه سيتم التعامل معها من قبل كاتب منخفض الدرجة في مكان ما، ستكون فوضى بائسة.”










