# تاريخ البرمجيات

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

## ما قبل البرامج المخزنة في أجهزة الحاسوب الرقمية
### أصول علوم الحاسوب

يعود مفهوم الحوسبة إلى العصور القديمة، حيث توجد أمثلة على أجهزة الحاسب البدائية مثل العداد وآلية أنتيكيثيرا وساعة القلعة للجزري. تعتمد قُوى الحوسبة لهذه الأجهزة عمومًا على هيئتها وهندستها، إذ إن البرمجيات غير مشمولة في وصف عتاد الحاسوب (بالإنجليزية: Hardware).
تتطلب برمجيات الحاسوب مفهوم وحدة المعالجة المركزية، ما يوصف الآن بآلة تورنغ، إضافة إلى ذاكرة الحاسوب التي يمكن فيها تخزين مجموعات قابلة لإعادة الاستخدام من الإجراءات الروتينية والوظائف الرياضية التي تشتمل على برمجيات الحاسوب، التي يجري بدء تشغيلها وإيقافها بنحو فردي، ولم تظهر هذه الميزات إلا مؤخرًا في تاريخ البشرية.
تمت كتابة أول خوارزمية حاسوبية معروفة بوساطة آدا أوجستا كنغ في القرن التاسع عشر للمحرك التحليلي، لترجمة عمل لويجى فيديريكو مينابريا على أرقام برنولي لتعليم الآلة. أثبتت حالة الهندسة في عمر هذين الرياضيين أنها غير كافية لبناء المحرك التحليلي، لذا ظل هذا العمل نظريًا فقط.
اقترح آلان تورنغ أول نظرية حديثة للبرمجيات في مقالته عام 1935 بعنوان «الأرقام المحسوبة» مع تطبيق على «مشكلة القرار».
أدى هذا في النهاية إلى إنشاء المجالين الأكاديميين لعلوم الحاسوب وهندسة البرمجيات، يدرس المجالين البرامج وكيفية إنشائها. يعد مجال علوم الحاسوب أكثر نظرية «مقال تورنغ هو مثال لعلوم الحاسوب»، بينما تركز هندسة البرمجيات على المزيد من الاهتمامات العملية.
مع ذلك، قبل عام 1946، لم تكن برمجيات الحاسوب التي نفهمها الآن والبرامج المخزنة في ذاكرة أجهزة الحاسوب الرقمية للبرامج موجودة بعد. بدلًا من ذلك، أعيد توصيل أولى أجهزة الحوسبة الإلكترونية من أجل «إعادة برمجتها».
جرت برمجة إينياك (بالإنجليزية: Electronic Numerical Integrator And Computer) وتختصر (بالإنجليزية: ENIAC)، وهو أحد أوائل أجهزة الحاسوب الإلكترونية، إلى حد كبير من قبل النساء اللائي كن يعملن سابقًا بوصفهن أجهزة حاسوب بشري. كان المهندسون يعطون المبرمجين المخططات الأولية لأسلاك إينياك ويتوقعون منهم اكتشاف كيفية برمجة هذا الجهاز.
قامت النساء المبرمجات بإعداد إينياك للظهور العلني الأول، إذ قاموا بتوصيل لوحات الربط معًا للمظاهرات.
طورت كاثلين بوث وهي عالمة حاسوب لغة التجميع في عام 1950 لتسهيل برمجة أجهزة الحاسوب التي عملت عليها في كلية بيركبيك.
جريس موراي هوبر من أوائل مبرمجي جهاز الحاسوب «هارفارد مارك آي». أنشأت لاحقًا دليلًا من 500 صفحة لهذا الحاسوب. كان المصطلحين «خطأ» و «تصحيح الأخطاء» موجودان قبل هوبر ولكن غالبًا ما يُنسَب الفضل لها خطأً في صياغة المصطلحين، حيث عثرت هوبر على فراشة موجودة في حاسوب مارك آي تسببت في حدوث عطل في الجهاز.
طورت هوبر أول مترجم ونقلت فكرتها من العمل على جهاز الحاسوب مارك آي، إلى العمل على يونيفاك (بالإنجليزية: UNIVAC) أو الحاسوب الآلي العالمي في الخمسينيات من القرن الماضي. طورت هوبر أيضًا لغة البرمجة فلو-ماتيك (بالإنجليزية: FLOW-MATIC) لبرمجة جهاز يونيفاك.
قامت فرانسيس إي هولبيرتون، بتطوير رمز سي-10، الذي يسمح للمبرمجين باستخدام مدخلات لوحة المفاتيح، وأنشأت أيضًا في عام 1951 تطبيق مولد الفرز والجمع (بالإنجليزية: Sort-Merge Generator). ابتكرت أيضًا كل من ميلدريد كوس وهوبر دليلًا لبرامج إنشاء التقارير (بالإنجليزية: report generator).

## السنوات الأولى لبرمجيات الحاسوب (1948-1979)

قدم كلود إيلود شانون (1916-2001) في مخطوطته «النظرية الرياضية في الاتصال» مخططًا لكيفية تنفيذ المنطق الثنائي لبرمجة جهاز الحاسوب. لاحقًا، استخدم مبرمجي الحاسوب الأوائل الرمز أو المنطق الثنائي لإرشاد أجهزة الحاسوب لأداء مهام مختلفة. ومع ذلك، كانت العملية شاقة جدًا. فقد كان على مبرمجي الحاسوب تقديم سلاسل طويلة من التعليمات البرمجية الثنائية لإخبار الحاسوب بالبيانات التي يجب تخزينها. وتحميل التعليمات البرمجية والبيانات على أجهزة الحاسوب باستخدام آليات مملة مختلفة، متضمنةً مفاتيح التبديل أو وضع بعض الثقوب في المواضع المحددة مسبقًا في البطاقات وتحميل هذه البطاقات المثقبة في الحاسوب. باستخدام هذه الأساليب، إذا ارتكب خطأ ما، فقد يتعين تحميل البرنامج بأكمله مرة أخرى من البداية.
نجح أول جهاز حاسوب كتبه توم كيلبورن بتخزين وتنفيذ قطع من البرمجيات في ذاكرته الإلكترونية، في الساعة 11 صباحًا في 21 يونيو 1948، في جامعة مانشستر، على آلة مانشستر التجريبية صغيرة النطاق (بالإنجليزية: The Manchester Small-Scale Experimental Machine) أو (بالإنجليزية: Manchester Baby).
حسب كليبورن أيضًا العامل الأعلى للعدد الصحيح 2 ^ 18 = 262،144. بدءًا من مقسوم تجريبي كبير، أجرى عمليات قسمة 262،144 عن طريق الطرح المتكرر ثم التحقق مما إذا كان الباقي يساوي صفرًا. إذا لم يكن يساوي الصفر، فقد قلل من قسوم التجربة بواحد وكرر العملية. أصدرت جوجل تكريمًا لـ Manchester Baby، احتفالًا بها على أنها «أم البرمجيات».
طور لغة البرمجة فورتران (بالإنجليزية: FORTRAN) فريق بقيادة جون باكوس في شركة آي بي إم في الخمسينيات من القرن الماضي. وجرى إصدار أول محول برمجي أو مترجم في عام 1957. أثبتت لغة فورتران شعبيتها في مجال الحوسبة العلمية والتقنية حتى أنه بحلول عام 1963، نفذت جميع الشركات المصنعة الكبرى فورتران أو أعلنت عنه لأجهزة الحاسوب الخاصة بها.