قصة البرمجة


#!/usr/bin/python
story = open(story_of_programming)
reading = story.read()
while reading:
focus()

story.close()
# ^_^


بداية البرمجة
مع تطور الآلة جيلا بعد جيل وزيادة قدرتها للقيام بأمور كثيرة ومعقدة, استخدمت البرمجة للإستفادة من هذه الإمكانيات وللحصول على نتائج دقيقة ولإعطاء الآلة الأوامر المراد تطبيقها بلغة تستطيع أن تفهمها.


البطاقات المثقوبة
من أقدم الوسائل التي استخدمت لمخاطبة الآلة كانت البطاقات المثقوبة فقد استخدمها جوزيف جاكرد في 1801 في آلة النسيج, بحيث كان يضع البطاقة المثقوبة في الآلة وبحسب أماكن الثقوب على البطاقة تستطيع الآلة معرفة أي الأذرع تستخدم للحياكة وتوليد الزخارف بصورة أوتوماتيكية.




آدا لوفلس مساعدة تشارلز بابيج الذي طور المحرك التحليلي, وهو حاسوب ميكانيكي, نشرت في 1843 مجموعة من التعليمات المفصلة حول كيفية حساب أرقام بيرنولي باستخدام المحرك التحليلي, وهو ما اعتبره البعض أول برنامج للحاسوب.

بعد لوفلس بمئة عام قام المهندس الألماني كونراد زيوس في 1946 بتصميم لغة برمجة أسماها بلان-كالكول لتساعد على حل المشاكل العلمية والهندسية, ولكن لم يكن لها في ذلك الوقت مترجم (كمبايلر)  وتم إهمالها لعدة عقود بالرغم من أنه وضع لها تصميما متقدما جدا في وقته وتعتبر من أوائل لغات البرمجة العالية (الجيل الثالث). وتم عمل كومبايلر لها عام 2000 في جامعة برلين بلغة جافا.


لغة الآلة (الجيل الأول)
الآلة (الحاسوب) تتحدث بالأرقام الثنائية 1 و 0 فإذا أردت أن توجهها لتنفيذ أمر معين عليك أن تخاطبها بلغتها التي تفهمها وتكتب ما تريده على هيئة سلسلة من الآحاد والأصفار. هذا كان حال البرمجة الأولى للحواسيب الإلكترونية وكان يعيبها صعوبة كتابة البرامج بهذه الطريقة وإحتمالية وقوع الأخطاء عالية وتصحيحها جدا صعب, عندما تقرأ صفحة مليئة بالآحاد والأصفار يصعب عليك معرفة أين الخطأ وأي رقم يجب تعديله.
اليوم لغة الآلة لم تعد تستخدم في البرمجة.


الأسمبلي (الجيل الثاني)
تسمى لغة التجميع وهي أقرب إلى لغة الإنسان من لغة الآلة, ظهرت في نهاية الأربعينات نتيجة لصعوبة لغة الآلة ففي الأسمبلي عليك أن تتذكر كلمات سهلة بدلا من كتابة سلسلة من الآحاد والأصفار, وتتميز بسرعتها ولكن يصعب عمل برامج كبيرة باستخدامها, والبرنامج الذي  تنتجه يكون مخصص لنوع معين من المعالجات وحتى يعمل على معالج مختلف يجب إعادة كتابته. بعد كتابة الكود يتم تحويله إلى لغة الآلة  باستخدام أسمبلر (مترجم) حتى يستطيع الكمبيوتر فهمه وتنفيذه. وأغلب استخداماتها حاليا تكون في:
  • كتابة التعريفات للعتاد.
  • الهندسة العكسية.
  • البرامج التي تحتاج دقة شديدة في التوقيت مثل أنظمة الطيران.






لغات عالية (الجيل الثالث)
وهي لغات قريبة جدا للغة الإنسان مقارنة مع لغة الآلة أو الاسمبلي, ويتم استخدامها للبرامج التجارية والعلمية وللبرامج العامة. ومنها لغة فورتران وباسكال وكوبول وسي وسي++ وجافا.
وتتميز اللغات العالية عن لغة الآلة والاسمبلي:
  • يمكن قرائتها وفهمها بسهولة.
  • مناسبة للإستخدامات التجارية والعلمية.
  • ليست مرتبطة بمعالج محدد.
  • إيجاد وتصحيح الأخطاء فيها أسهل.

لغة كوبول تعتبر من اللغات القديمة جدا بحيث ظهرت في عام 1959 لعمل برامج تجارية وإدارية وينتشر استخدامها في الشركات والإدارات الحكومية وطريقة كتابتها قريبة جدا من اللغة الإنجليزية. بالرغم من أن عمرها الان تعدى الخمسين عاما إلا أنها لا زالت تستخدم بنطاق واسع بين الشركات وقد يكون البرنامج الذي تستمعله عند سحب الاموال من جهاز السحب الآلي أو البرنامج المستخدم في البنك ليعطيك قرضا ماليا مكتوبا بلغة كوبول.

ومن اللغات القديمة أيضا لغة سي التي تم تطويرها من قبل كين ثومبسون ودينيس ريتشي عام 1973 وتمت إعادة كتابة أجزاء عديدة من نواة نظام التشغيل يونكس باستخدامها بدلا عن الاسمبلي, ولعل هذا أحد أهم الأسباب التي ساهمت في استخدامها بشكل واسع حتى يومنا.

لغة سي++ بدأت بإضافة بعض المميزات للغة سي في 1979 ثم استمر مطورها بجارن ستروستراب بإضافة المزيد لها حتى عام 1983 حيث تم تسميتها بإسمها الحالي. وتستخدم في برمجة أنظمة التشغيل والبرامج العامة ولتعريفات العتاد.




Fine, Java MIGHT be a good example of what a programming language should be like. But Java applications are good examples of what applications SHOULDN'T be like. ~pixadel

من اللغات التي انتشرت بشكل كبير بين المبرمجين لغة جافا التي طورتها شركة صن ميكروسستمز في 1996 وكان هدف إنشائها هو جعل البرامج المكتوبة بها تكتب مرة واحدة وتعمل على أكثر من نظام تشغيل بلا حاجة لتعديل البرنامج في كل نظام.




الجيل الرابع
ظهر مصطلح الجيل الرابع للغات البرمجة لأول مرة في أحد كتب جيمس مارتن في بداية الثمانينات. وهي غالبا ما تستخدم في قواعد البيانات ولتقليل الجهد المبذول في البرمجة, وتركز على ما يحتاج أن ينجزه المبرمج بدلا من كيفية القيام به. وتنقسم إلى قسمين:
Report Generator
وهي لغات نزودها بوصف للبيانات التي سنستخدمها في البرنامج والتقرير الذي نريده حول هذه البيانات, ثم تقوم بعمل برنامج يولد لنا التقرير المطلوب.

Form Generator
تقوم بتوليد برامج تدير التفاعل مع مستخدمي البرنامج عبر الإنترنت.

ومن لغات الجيل الرابع أوراكل ريبورتس ولينك.


الجيل الخامس
Computers are good at following instructions, but not at reading your mind. ~Donald Knuth

لغات الجيل الخامس تحاول أن تجعل الحاسوب (بدلا من المبرمج) يقوم بحل المشكلة, وما على المبرمج إلا معرفة مواصفات المشكلة والقيود وليس عليه الانشغال بالأمور التطبيقية, وتستخدم في الأبحاث خاصة في مجال الذكاء الإصطناعي, وأشهرها لغة برولوغ.
بالرغم من أن اليابان قامت بالعديد من الأبحاث وأنفقت الكثير من الأموال على لغات الجيل الخامس منذ بداية الثمانينات حتى بداية التسعينات للإعتقاد السائد آنذاك بأنها ستحل محل بقية لغات البرمجة في المستقبل, إلا أن توليد خوارزمية Algorithm بصورة أوتوماتيكية لحل مشكلة معينة عن طريق إدخال مواصفات المشكلة تبين أنها بحد ذاتها مشكلة ليست باليسيرة.


لغات البرمجة النصية
لغات البرمجة النصية Scripting Language هي لغات يمكن تشغيل برامجها بدون الحاجة لترجمتها بكاملها ويمكن أستخدامها للقيام بالأعمال البسيطة والدورية في نظام التشغيل والتعامل مع الملفات بصورة أسهل من لغات البرمجة الأخرى.

قامت شركة آي بي أم بتطوير أول لغة برمجة نصية في 1964 وهي Job Control Language لتسمح بتشغيل بعض البرامج بصورة أوتوماتيكية في Mainframe Computer. وبالمناسبة, لغة JCL كان تستخدم عن طريق البطاقات المثقوبة.



One day my daughter came in, looked over my shoulder at some Perl 4 code, and said, "What is that, swearing?" Larry Wall

من لغات البرمجة النصية القديمة لغة بيرل التي طورها لاري وول في 1987 لتستخدم في نظام يونكس وتعتبر مرنة بحيث يمكن إنجاز المهمة بأكثر من طريقة TIMTOWTDI وكانت لها شهرة كبيرة في التسعينات في كتابة سكريبتات الويب.



لغة بايثون لها مكانة خاصة عند مجتمع مبرمجي المصادر المفتوحة ولها انتشار ملحوظ في السنوات الأخيرة وفلسفتها تختلف عن لغة بيرل بحيث لكل مهمة طريقة واحدة فقط لتنفيذها لتمنع المبرمج من عمل برامج يصعب فهمها ولهذا فهي تتميز عن كثير من اللغات الأخرى بسهولة قراءة كود البرامج المكتوبة بها. قام بتطويرها جيدو فان روسام في 1989 وفي عامي 2007 و2010 جائت في المركز الأول بين العديد من لغات البرمجة في زيادة شعبيتها.




لعل أشهر لغة برمجة نصية هي PHP التي تستخدم في تطوير مواقع وتطبيقات الوب وطورها راسموس ليردروف في 1995 وبدايتها كانت عبارة عن مجموعة من التطبيقات المكتوبة بلغة بيرل وكان أسمها Personal Homepage Tools ثم طورها بعد ذلك بكتابة التطبيقات بلغة سي وجعلها قادرة على الإتصال بقاعدة بيانات وتغير إسمها إلى PHP Hypertext Preprocessor. وهي مفتوحة المصدر ولعل هذا ساهم في انتشارها بحيث يمكن لأي شخص يستخدم اللغة أن يشارك في تطويرها وتصحيح أخطائها وكتابة مكتبات يمكن للمبرمجين الآخرين من الاستفادة منها في برامجهم.





لغة روبي التي طورها يوكيهيرو ماتسوموتو في 1993 ونشرها للعامة في 1995 بهدف أن تكون لغة سهلة للمبرمجين, طورها من لغتي بيرل وسمول توك وهي تتبنى فلسفة بيرل بإمكانية استخدام عدة أساليب مختلفة لإنجاز مهمة واحدة. وهي تعتبر من اللغات الشيئية بدرجة عالية بحيث يمكن معاملة أي شيء على أنه كائن ويمكن للمبرمج أن يضيف Methods لل String & Integer أو استبدالهم بMethods من عنده. وهي تعتبر لغة ديناميكية بحيث لا تحتاج أن تعلن نوع البيانات لكل متغير.
لعل شهرة روبي لم تكن كبيرة إلا بعد إصدار إطار البرمجة Ruby on Rails في 2005.





Zawinski's Law: Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can. Jamie Zawinski



روابط


مراجع
A Brief History of Computing by Gerard O'Regan
موسوعة الويكيبيديا

تشارلز بابيج ومحركات الكمال



اسم الكتاب: تشارلز بابيج ومحركات الكمال
المؤلف: بروس كوليير وجيمس ماكلاشلان
ترجمة: عبدالكريم ناصيف
عدد الصفحات: 159
الطبعة: الاولى 2004
دار النشر: مكتبة العبيكان

أتمنى من الله أن يكون بالمستطاع إجراء هذه الحسابات بواسطة محرك بخاري.

هذا ما قاله تشارلز بابيج, المعروف بأبو الحاسوب, بعدما وجد كمية كبيرة من الأخطاء عند مراجعته لعمل مجموعة ممن قاموا بحساب القيم الخاصة بمواقع عدد من النجوم. فقد رأى أن عمله هذا مضجر ويجب أن يكون هناك طريقة أفضل لأداءه. وظلت الفكرة تجول في رأسه حتى عزم بعدها بأيام على القيام بصنع آلة حاسبة لتفادي الأخطاء.

كان لبابيج طفولة فضولية حول كيفية عمل الأشياء من حوله, وفي مراهقته كانت له مهارات في الرياضيات التي تعلمها بنفسه بالإستعانة بمكتبة مدرسته وكان يقضي أوقاتا كثيرة في تعلمها حتى صار مولعا بالجبر. وفي عام 1810 التحق بجامعة كامبردج لكن لم تعجبه مناهج الرياضيات في هذه الجامعة لأنها لم تتقدم في الرياضيات من بعد أعمال إسحاق نيوتن, ورأى بأنه لن يصبح عالم رياضيات إلا إذا تابع بنفسه تعلمها.

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

مع اهتمامات بابيج العلمية, ونشاطاته الإجتماعية الكثيرة, إلا أنه كان مهتما بالسياسة, فقد كان رئيس لجنة انتخابية لأحد المرشحين للبرلمان وحاول هو كذلك خوضها لأكثر من مرة ولكن لم يحالفه الحظ. وعند سفره لبعض الدول الأوروبية كان معجبا بالطريقة التي يعامل بها العالم والنفوذ الذي يمتلكه عند حكومته مقارنة مع وضع العلماء في بريطانيا, وظهر هذا واضحا في إحدى عباراته عندما قدم استقالته من منصبه كأستاذ لوكاسي للرياضيات في جامعة كامبردج بقوله: "إنه الشرف الوحيد الذي تلقيته في بلادي"
وحاول أن يغير من هذا الواقع فأسس مع مجموعة من العلماء جمعية لندن الفلكية. وبعد تأسيسها بعام طلبت الجمعية من بابيج وزميل له القيام بتحسين جداول التقويم البحري, وأثناء هذه المهمة خرج بابيج بفكرة لعمل آلة تقوم بالحسابات الروتينية بصورة ميكانيكية وهي ما عرفت لاحقا "بمحرك الفارق".

استغرق سنوات عديدة في محاولة صنع "محرك الفارق" ولكنه لم يكتمل, ثم بدأ بتصميم حاسوبه الميكانيكي "المحرك التحليلي" والذي وضع فيه أربعة أقسام لوظائف الآلة لازالت تستخدم حتى اليوم في تصميم أي حاسوب إلكتروني وهم الإدخال, الذاكرة, وحدة المعالجة المركزية والإخراج.

هذا الكتاب يذكر المراحل الكثيرة التي حاول فيها بابيج أن ينشئ آلته الأولى "محرك الفارق" ليتفادى الأخطاء التي يقع بها من يقوم بإجراء الحسابات بشكل يدوي, ثم تفاصيل توقفه عن هذا المشروع قبل أن ينتهي تماما وشروعه في تصميم آلة متطورة أكثر من سابقتها قضى في تصميمها أكثر من 20 عاما وهي "المحرك التحليلي" وهذا المحرك هو الذي جعل بابيج جديرا بلقب أبو الحاسوب.


-------
نشرت هذه المقالة في العدد 13 من مجلة عرب هاردوير