برمجة الحاسوب

من ويكيبيديا، الموسوعة الحرة
اذهب إلى الملاحة اذهب الى البحث

برمجة الكمبيوتر هي عملية تصميم وبناء برنامج كمبيوتر قابل للتنفيذ لتحقيق نتيجة حاسوبية محددة أو لأداء مهمة معينة. تتضمن البرمجة مهام مثل التحليل ، وتوليد الخوارزميات ، ودقة تحديد الخوارزميات واستهلاك الموارد ، وتنفيذ الخوارزميات في لغة البرمجة المختارة (يشار إليها عادةً باسم الترميز ). [1] [2] و الكود هو مكتوب من برنامج في واحد أو أكثر من اللغات التي هي واضح إلى المبرمجين ، بدلا من رمز الجهاز، والتي يتم تنفيذها مباشرة بواسطة وحدة المعالجة المركزية . الغرض من البرمجة هو العثور على سلسلة من التعليمات التي من شأنها أتمتة أداء مهمة (والتي يمكن أن تكون معقدة مثل نظام التشغيل ) على جهاز كمبيوتر ، غالبًا لحل مشكلة معينة. تتطلب البرمجة المتقنة عادة خبرة في العديد من الموضوعات المختلفة ، بما في ذلك المعرفة بمجال التطبيق ، والخوارزميات المتخصصة ، والمنطق الرسمي .

تشمل المهام المصاحبة والمتعلقة بالبرمجة الاختبار ، وتصحيح الأخطاء ، وصيانة كود المصدر ، وتنفيذ أنظمة البناء ، وإدارة القطع الأثرية المشتقة ، مثل كود الآلة لبرامج الكمبيوتر. يمكن اعتبارها جزءًا من عملية البرمجة ، ولكن غالبًا ما يتم استخدام مصطلح تطوير البرامج لهذه العملية الأكبر مع مصطلح البرمجة أو التنفيذ أو الترميز المخصص للكتابة الفعلية للكود. تجمع هندسة البرمجيات بين التقنيات الهندسية وممارسات تطوير البرمجيات.الهندسة العكسية هي عملية ذات صلة يستخدمها المصممون والمحللون والمبرمجون لفهم وإعادة الإنشاء / إعادة التنفيذ. [3]

التاريخ

Ada Lovelace ، التي أضيفت ملاحظاتها إلى نهاية ورقة لويجي مينابريا ، تضمنت أول خوارزمية مصممة للمعالجة بواسطة محرك تحليلي . غالبًا ما يتم التعرف عليها كأول مبرمجة كمبيوتر في التاريخ.

الأجهزة القابلة للبرمجة موجودة منذ قرون. في وقت مبكر من القرن التاسع ، اخترع الإخوة الفارسيون بنو موسى منظم الموسيقى القابل للبرمجة ، الذين وصفوا عازف الفلوت الآلي في كتاب الأجهزة المبتكرة . [4] [5] في عام 1206 ، اخترع المهندس العربي الجزري آلة طبول قابلة للبرمجة حيث يمكن صنع آلة موسيقية ميكانيكية لعزف إيقاعات وأنماط طبل مختلفة ، عبر أوتاد وكاميرات . [6] [7] في عام 1801 ، تلوح الجاكار في النوليمكن أن تنتج نسجًا مختلفة تمامًا عن طريق تغيير "البرنامج" - سلسلة من بطاقات اللصق المثقوبة بداخلها.

توجد أيضًا خوارزميات فك الشفرات لعدة قرون. في القرن 9th، و عالم الرياضيات العربي الكندي صفت التشفير خوارزمية لفك رمز مشفر، في مخطوطة على الرسائل فك رموز التشفير . قدم أول وصف لتحليل الشفرات عن طريق تحليل التردد ، وهو أقدم خوارزمية لكسر الشفرة. [8]

أول برنامج كمبيوتر مؤرخة عام 1843، عندما رياضيات أدا لافليس نشرت خوارزمية لحساب سلسلة من الأرقام برنولي ، وتهدف إلى أن تقوم بها تشارلز باباج الصورة التحليلية المحرك . [9]

تم تخزين البيانات والتعليمات مرة واحدة على بطاقات خارجية مثقبة ، والتي تم حفظها بالترتيب وترتيبها في مجموعات البرامج.

في ثمانينيات القرن التاسع عشر ، اخترع هيرمان هوليريث مفهوم تخزين البيانات في شكل يمكن قراءته آليًا. [10] في وقت لاحق ، تمت إضافة لوحة تحكم ( لوحة توصيل) إلى عام 1906 Type I Tabulator مما سمح ببرمجتها لوظائف مختلفة ، وبحلول أواخر الأربعينيات ، تمت برمجة معدات تسجيل الوحدات مثل IBM 602 و IBM 604 بواسطة لوحات التحكم بشكل مشابه كما كان الحال مع أول حواسيب الكترونية . ومع ذلك ، مع مفهوم كمبيوتر البرنامج المخزن الذي تم تقديمه في عام 1949 ، تم تخزين كل من البرامج والبيانات ومعالجتها بنفس الطريقة في ذاكرة الكمبيوتر . [11]

لغة الآلة

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

لوحة تحكم سلكية لجهاز محاسبة IBM 402 .

لغات المترجم

جعلت اللغات عالية المستوى عملية تطوير البرنامج أبسط وأكثر قابلية للفهم ، وأقل ارتباطًا بالأجهزة الأساسية. تم تطوير أول أداة مرتبطة بالمترجم ، وهي نظام A-0 ، في عام 1952 [12] بواسطة جريس هوبر ، التي صاغت أيضًا مصطلح "المترجم". [13] [14] FORTRAN ، أول لغة عالية المستوى مستخدمة على نطاق واسع لها تطبيق وظيفي ، ظهرت في عام 1957 ، [15] وسرعان ما تم تطوير العديد من اللغات الأخرى - على وجه الخصوص ، COBOL التي تهدف إلى معالجة البيانات التجارية ، و Lisp لأبحاث الكمبيوتر.

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

إدخال رمز المصدر

تم إدخال البرامج في الغالب باستخدام بطاقات مثقبة أو شريط ورقي . وبحلول أواخر 1960s، و أجهزة تخزين البيانات و محطات الكمبيوتر أصبحت يكفي الرخيصة التي برامج يمكن أن تنشأ عن طريق كتابة مباشرة إلى أجهزة الكمبيوتر. تم أيضًا تطوير برامج تحرير النصوص التي سمحت بإجراء التغييرات والتصحيحات بسهولة أكبر بكثير من البطاقات المثقوبة.

البرمجة الحديثة

متطلبات الجودة

مهما كان نهج التطوير ، يجب أن يفي البرنامج النهائي ببعض الخصائص الأساسية. الخصائص التالية من بين أهم الخصائص: [16] [17]

  • الموثوقية : مدى صحة نتائج البرنامج. هذا يعتمد على صحة نظرية الخوارزميات والتقليل من الأخطاء البرمجة، مثل الأخطاء في إدارة الموارد (على سبيل المثال، عازلة الفيضانات و شروط السباق ) والأخطاء منطق (مثل القسمة على صفر أو من جانب واحد وأخطاء ).
  • المتانة : مدى جودة توقع البرنامج للمشكلات الناتجة عن الأخطاء (وليس الأخطاء). يتضمن ذلك مواقف مثل البيانات غير الصحيحة أو غير المناسبة أو الفاسدة ، وعدم توفر الموارد اللازمة مثل الذاكرة ، وخدمات نظام التشغيل ، واتصالات الشبكة ، وخطأ المستخدم ، وانقطاع التيار غير المتوقع.
  • سهولة الاستخدام : بيئة العمل الخاصة بالبرنامج: السهولة التي يمكن بها لأي شخص استخدام البرنامج للغرض المقصود منه أو في بعض الحالات حتى لأغراض غير متوقعة. مثل هذه القضايا يمكن أن تجعل نجاحها أو تفسده حتى بغض النظر عن القضايا الأخرى. يتضمن ذلك مجموعة واسعة من العناصر النصية والرسوماتية وأحيانًا الأجهزة التي تعمل على تحسين وضوح واجهة مستخدم البرنامج وحدسها وتماسكها واكتمالها.
  • قابلية النقل : مجموعة أجهزة الكمبيوتر وأنظمة التشغيل الأساسية التي يمكن من خلالها تجميع / تفسير التعليمات البرمجية المصدر للبرنامج وتشغيلها. يعتمد هذا على الاختلافات في تسهيلات البرمجة التي توفرها الأنظمة الأساسية المختلفة ، بما في ذلك موارد الأجهزة ونظام التشغيل ، والسلوك المتوقع للأجهزة ونظام التشغيل ، وتوافر برامج التحويل البرمجي الخاصة بالنظام الأساسي (وأحيانًا المكتبات) للغة التعليمات البرمجية المصدر.
  • الصيانة : السهولة التي يمكن تعديل برنامج من قبل المطورين الحاضر أو المستقبل لها من أجل إدخال تحسينات أو تخصيص، إصلاح الخلل و الثغرات الأمنية ، أو تكييفه مع بيئات جديدة. تُحدث الممارسات الجيدة [18] أثناء التطوير الأولي فرقًا في هذا الصدد. قد لا تظهر هذه الجودة للمستخدم النهائي بشكل مباشر ولكنها قد تؤثر بشكل كبير على مصير البرنامج على المدى الطويل.
  • الكفاءة / الأداء : قياس موارد النظام التي يستهلكها البرنامج (وقت المعالج ، ومساحة الذاكرة ، والأجهزة البطيئة مثل الأقراص ، وعرض النطاق الترددي للشبكة ، وحتى تفاعل المستخدم إلى حد ما): كلما كان ذلك أقل ، كان ذلك أفضل. يتضمن هذا أيضًا الإدارة الدقيقة للموارد ، على سبيل المثال تنظيف الملفات المؤقتة والقضاء على تسرب الذاكرة . غالبًا ما تتم مناقشة هذا الأمر في ظل لغة البرمجة المختارة. على الرغم من أن اللغة تؤثر بالتأكيد على الأداء ، إلا أن هناك لغات أبطأ ، مثل بايثون، يمكنه تنفيذ البرامج على الفور من منظور إنساني. تعد السرعة واستخدام الموارد والأداء مهمة للبرامج التي تعيق النظام ، ولكن الاستخدام الفعال لوقت المبرمج مهم أيضًا ويرتبط بالتكلفة: قد يكون المزيد من الأجهزة أرخص.

سهولة قراءة شفرة المصدر

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

تعد سهولة القراءة مهمة لأن المبرمجين يقضون معظم وقتهم في القراءة ، ومحاولة فهم وتعديل كود المصدر الحالي ، بدلاً من كتابة كود مصدر جديد. غالبًا ما تؤدي التعليمات البرمجية غير القابلة للقراءة إلى حدوث أخطاء وعدم كفاءة وتكرار التعليمات البرمجية . وجدت دراسة أن بعض التحولات البسيطة في قابلية القراءة جعلت الشفرة أقصر وقللت بشكل كبير من الوقت لفهمها. [19]

غالبًا ما يساعد اتباع أسلوب برمجة متسق في سهولة القراءة. ومع ذلك ، فإن المقروئية هي أكثر من مجرد أسلوب برمجة. تساهم العديد من العوامل ، التي لها علاقة قليلة أو لا علاقة لها بقدرة الكمبيوتر على ترجمة التعليمات البرمجية وتنفيذها بكفاءة ، في سهولة القراءة. [20] بعض هذه العوامل تشمل:

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

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

التعقيد الحسابي

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

خوارزميات الشطرنج كمثال

كانت "برمجة الكمبيوتر للعب الشطرنج" ورقة بحثية صدرت عام 1950 لتقييم خوارزمية "minimax" التي تعد جزءًا من تاريخ تعقيد الخوارزمية ؛ تعد دورة عن برنامج Deep Blue (كمبيوتر الشطرنج) من IBM جزءًا من منهج علوم الكمبيوتر في جامعة ستانفورد . [21]

المنهجيات

الخطوة الأولى في معظم عمليات تطوير البرمجيات الرسمية هي تحليل المتطلبات ، متبوعًا باختبار لتحديد نمذجة القيمة ، والتنفيذ ، والقضاء على الفشل (تصحيح الأخطاء). هناك الكثير من الأساليب المختلفة لكل من هذه المهام. أحد الأساليب الشائعة لتحليل المتطلبات هو تحليل حالة الاستخدام . يستخدم العديد من المبرمجين أشكالًا من تطوير البرامج Agile حيث يتم دمج المراحل المختلفة لتطوير البرامج الرسمية معًا في دورات قصيرة تستغرق بضعة أسابيع بدلاً من سنوات. هناك العديد من الأساليب لعملية تطوير البرمجيات.

تشمل تقنيات النمذجة الشائعة التحليل والتصميم الموجه للكائنات ( OOAD ) والهندسة المعمارية القائمة على النموذج ( MDA ). لغة النمذجة الموحدة ( UML ) هي تدوين يستخدم لكل من OOAD و MDA.

أسلوب مماثل يستخدم لتصميم قاعدة البيانات هو نمذجة العلاقة بين الكيانات ( نمذجة ER ).

تتضمن تقنيات التنفيذ اللغات الحتمية ( الموجهة للكائنات أو الإجرائية ) ، واللغات الوظيفية ، واللغات المنطقية .

قياس استخدام اللغة

من الصعب جدًا تحديد أكثر لغات البرمجة الحديثة شيوعًا. تشمل طرق قياس شعبية لغة البرمجة: حساب عدد إعلانات الوظائف التي تذكر اللغة ، [22] عدد الكتب المباعة والدورات التي تدرس اللغة (وهذا يبالغ في تقدير أهمية اللغات الأحدث) ، وتقدير عدد السطور الموجودة من التعليمات البرمجية المكتوبة باللغة (هذا يقلل من عدد مستخدمي لغات الأعمال مثل COBOL).

تحظى بعض اللغات بشعبية كبيرة لأنواع معينة من التطبيقات ، بينما تستخدم بعض اللغات بانتظام لكتابة العديد من أنواع التطبيقات المختلفة. على سبيل المثال ، لا يزال COBOL قويًا في مراكز بيانات الشركات [23] غالبًا على أجهزة الكمبيوتر الكبيرة الكبيرة ، و Fortran في التطبيقات الهندسية ، ولغات البرمجة النصية في تطوير الويب ، و C في البرامج المضمنة . تستخدم العديد من التطبيقات مزيجًا من عدة لغات في بنائها واستخدامها. يتم تصميم اللغات الجديدة بشكل عام حول بناء جملة لغة سابقة مع إضافة وظائف جديدة ، (على سبيل المثال ، يضيف C ++ اتجاه الكائن إلى C ، وتضيف Java إدارة الذاكرة و bytecode إلى C ++ ، ولكن نتيجة لذلك ، تفقد الكفاءة والقدرة على المعالجة منخفضة المستوى).

تصحيح

كان أول خطأ فعلي معروف يسبب مشكلة في الكمبيوتر هو عثة محاصرة داخل جهاز هارفارد المركزي ، تم تسجيلها في إدخال دفتر سجل بتاريخ 9 سبتمبر 1947. [24] كان مصطلح "خطأ" مصطلحًا شائعًا بالفعل لعيب برمجي عند هذا تم العثور على الخلل.

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

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

غالبًا ما يتم التصحيح باستخدام IDEs . تُستخدم أيضًا مصححات الأخطاء المستقلة مثل GDB ، وغالبًا ما توفر بيئة مرئية أقل ، وعادةً ما تستخدم سطر أوامر . تسمح بعض برامج تحرير النصوص مثل Emacs باستدعاء GDB من خلالها ، لتوفير بيئة مرئية.

لغات البرمجة

تدعم لغات البرمجة المختلفة أنماطًا مختلفة من البرمجة (تسمى نماذج البرمجة). يخضع اختيار اللغة المستخدمة للعديد من الاعتبارات ، مثل سياسة الشركة أو الملاءمة للمهمة أو توفر حزم الجهات الخارجية أو التفضيل الفردي. من الناحية المثالية ، سيتم اختيار لغة البرمجة الأنسب للمهمة المطروحة. تتضمن المقايضات من هذا النموذج المثالي إيجاد عدد كافٍ من المبرمجين الذين يعرفون اللغة لبناء فريق ، وتوافر المترجمين لتلك اللغة ، وكفاءة تنفيذ البرامج المكتوبة بلغة معينة. تشكل اللغات طيفًا تقريبيًا من "المستوى المنخفض" إلى "المستوى العالي" ؛ عادةً ما تكون اللغات "منخفضة المستوى" أكثر توجهاً نحو الآلة وأسرع في التنفيذ ، بينما تكون اللغات "عالية المستوى" أكثر تجريدًا وأسهل في الاستخدام ولكنها يتم تنفيذها بسرعة أقل. عادةً ما يكون الترميز بلغات "عالية المستوى" أسهل منه في "منخفضة المستوى ".

كتب ألين داوني في كتابه كيف تفكر مثل عالم الكمبيوتر :

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

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

المبرمجون

مبرمجو الكمبيوتر هم أولئك الذين يكتبون برامج الكمبيوتر. عادة ما تتضمن وظائفهم:

على الرغم من تقديم البرمجة في وسائل الإعلام كموضوع رياضي إلى حد ما ، إلا أن بعض الأبحاث تظهر أن المبرمجين الجيدين لديهم مهارات قوية في اللغات البشرية الطبيعية ، وأن تعلم البرمجة يشبه تعلم لغة أجنبية . [25] [ مطلوب مصدر أفضل ]

انظر أيضا

المراجع

  1. ^ بيبينجتون ، شون (2014). "ما هو الترميز" . نعرفكم . مؤرشفة من الأصلي في 29 أبريل 2020 . تم الاسترجاع 3 مارس ، 2014 .
  2. ^ بيبينجتون ، شون (2014). "ما هي البرمجة" . نعرفكم . مؤرشفة من الأصلي في 29 أبريل 2020 . تم الاسترجاع 3 مارس ، 2014 .
  3. ^ إليام ، إلداد (2005). عكس: أسرار الهندسة العكسية . وايلي. ص. 3. ISBN 978-0-7645-7481-8.
  4. ^ Koetsier ، Teun (2001) ، "في عصور ما قبل التاريخ للآلات القابلة للبرمجة: الآلات الموسيقية الموسيقية ، والأنوال ، والآلات الحاسبة" ، الآلية ونظرية الآلة ، Elsevier ، 36 (5): 589-603 ، دوى : 10.1016 / S0094-114X (01) 00005-2 .
  5. ^ كابور ، أجاي. كارنيجي ، دايل ؛ ميرفي ، جيم. لونج ، جايسون (2017). "مكبرات الصوت اختيارية: تاريخ الموسيقى الكهربية الصوتية غير القائمة على مكبرات الصوت" . صوت منظم . مطبعة جامعة كامبريدج . 22 (2): 195-205. دوى : 10.1017 / S1355771817000103 . ISSN 1355-7718 . 
  6. ^ فاولر ، تشارلز ب. (أكتوبر 1967). "متحف الموسيقى: تاريخ الآلات الميكانيكية". مجلة معلمي الموسيقى . 54 (2): 45-49. دوى : 10.2307 / 3391092 . JSTOR 3391092 . S2CID 190524140 .  
  7. ^ نويل شاركي (2007) ، روبوت قابل للبرمجة من القرن الثالث عشر ، جامعة شيفيلد
  8. ^ دولي ، جون ف. (2013). تاريخ موجز لعلم التشفير وخوارزميات التشفير . Springer Science & Business Media. ص 12 - 3. رقم ISBN 9783319016283.
  9. ^ فويجي ، ياء ؛ فرانسيس ، ج. (2003). "لافليس وباباج وإنشاء" مذكرات 1843 " ". حوليات IEEE لتاريخ الحوسبة . 25 (4): 16. دوى : 10.1109 / MAHC.2003.1253887 .
  10. ^ دا كروز ، فرانك (10 مارس 2020). "تاريخ الحوسبة بجامعة كولومبيا - هيرمان هوليريث" . جامعة كولومبيا . كولومبيا. مؤرشفة من الأصلي في 29 أبريل 2020 . تم الاسترجاع 25 أبريل ، 2010 .
  11. ^ "الذاكرة والتخزين | الجدول الزمني لتاريخ الكمبيوتر | متحف تاريخ الكمبيوتر" . www.computerhistory.org . تم الاسترجاع 3 يونيو ، 2021 .
  12. ^ ريدجواي ، ريتشارد (1952). "تجميع الإجراءات" . متابعة إجراءات ACM '52 وقائع الاجتماع الوطني لـ ACM لعام 1952 (تورنتو) .
  13. ^ موريس في ويلكس . 1968. أجهزة الكمبيوتر آنذاك والآن. مجلة جمعية الآلات الحاسوبية ، 15 (1): 1-7 ، يناير. ص. 3 (تعليق بين قوسين أضافه المحرر) ، "(لا أعتقد أن مصطلح المترجم كان في ذلك الوقت [1953] في الاستخدام العام ، على الرغم من أنه تم تقديمه في الواقع بواسطة Grace Hopper.)"
  14. ^ [1] أول مجمعي برامج COBOL في العالم أرشفة 13 أكتوبر 2011 في آلة Wayback
  15. ^ أ ب بيرجشتاين ، بريان (20 مارس 2007). "وفاة خالق فورتران جون باكوس" . ان بي سي نيوز . مؤرشفة من الأصلي في 29 أبريل 2020 . تم الاسترجاع 25 أبريل ، 2010 .
  16. ^ "NIST لتطوير خارطة طريق السحابة" . أسبوع المعلومات . 5 نوفمبر 2010. تسعى مبادرة الحوسبة إلى إزالة العوائق التي تحول دون اعتماد السحابة في مجالات الأمان وقابلية التشغيل البيني وقابلية النقل والموثوقية.
  17. ^ "ما هو أساسه". عالم الكمبيوتر . ٩ أبريل ١٩٨٤. ص. 13. هل يقوم على ... الموثوقية قابلية النقل. التوافق
  18. ^ "البرمجة 101: نصائح لتصبح مبرمجًا جيدًا - Wisdom Geek" . الحكمة المهوس . 19 مايو 2016 . تم الاسترجاع 23 مايو ، 2016 .
  19. ^ Elshoff ، James L. ؛ ماركوتي ، مايكل (1982). "تحسين إمكانية قراءة برامج الكمبيوتر للمساعدة في التعديل". اتصالات من ACM . 25 (8): 512-521. دوى : 10.1145 / 358589.358596 . S2CID 30026641 . 
  20. ^ متعدد (ويكي). "المقروئية" . دوكفورج . مؤرشفة من الأصلي في 29 أبريل 2020 . تم الاسترجاع 30 يناير ، 2010 .
  21. ^ بيش ، كريس. "ديب بلو" . في عام 1950 ، نشر كلود شانون ... "برمجة الكمبيوتر للعب الشطرنج" ، ... خوارزمية "minimax"
  22. ^ إنتيكناب ، نيكولاس (11 سبتمبر 2007). "مسح رواتب تكنولوجيا المعلومات الأسبوعي SSL / الكمبيوتر: الطفرة المالية تدفع نمو وظائف تكنولوجيا المعلومات" .
  23. ^ ميتشل ، روبرت (21 مايو 2012). "هجرة الدماغ كوبول" . عالم الكمبيوتر . تم الاسترجاع 9 مايو ، 2015 .
  24. ^ الصورة مجاملة من Naval Surface Warfare Center ، دالغرين ، فيرجينيا ، من ناشيونال جيوغرافيك سبتمبر 1947
  25. ^ برات ، شانتيل إس. مادياستا ، تارا م ؛ موتاريلا ، Malayka J. ؛ Kuo ، Chu-Hsuan (2 مارس 2020). "ربط الكفاءة اللغوية الطبيعية بالاختلافات الفردية في تعلم لغات البرمجة" . التقارير العلمية . 10 (1): 3817. دوى : 10.1038 / s41598-020-60661-8 . ISSN 2045-2322 . PMC 7051953 .  

المصادر

قراءات إضافية

روابط خارجية