يتكون الحاسوب المعاصر عموماً من عنصر معالجة واحد على الأقل، غالباً ما يكون وحدة معالجة مركزية بهيئة معالج صغري، ويُلحَق بها ذاكرة مكونة من رقائق أشباه مُوصِلات بالإضافة لأجهزة الإدخال، مثل لوحة المفاتيح والفأرة، والإخراج مثل الشاشةوالطابعة، والإدخال والإخراج مثل شاشة اللمس. يُنفِّذ عنصر المعالجة العمليات الحسابية والمنطقية، في حين تعمل وحدة التحكم فيه على تغيير ترتيب العمليات بما يتوافق مع المعلومات المخزَّنة، أما أجهزة إدخال البيانات وإخراج المعلومات، فتَربط عنصر المعالجة مع العالم الخارجي.
كلمة حاسوب بالإنجليزية هي (computer)، وتُشتق من الفعل (بالإنجليزية: Compute) وهو يعني حَسَبَ أو حَدَّدَ قيمة ما باستعمال العمليات الحسابية أو الرياضية، أما (computer) فهي تدل على من يعمل الحِساب، فإما أن يكون شخصاً يُجري الحساب، وهو أول معنى لهذه الكلمة وأقدمها، ويرجع استعماله إلى قرابة سنة 1646م، وإما أن يُشير إلى آلة حِساب، وبخاصةٍ إلكترونية، تُجري عمليات رياضية ومنطقية، ويرجع أقدم استعمال مُوثَّق للكلمة بهذا المعنى لسنة 1897م.[1]
أما في العربية، فسواء أسمَيت الآلة حاسوباً أو حاسباً[عر 2] أو حاسبةً[عر 3]، فالجذر هو (ح س ب)، وقد أورد لسان العرب ست دلالات لهذا الجذر، هي ما يدل على:[عر 4]
عطاء وكرم، فأحْسَب وحسَّب بمعنى أطعم، والحَسَب: المال، والحِسْبة: الأجر، والاحتساب طلب الأجر ﴿وَيَرْزُقْهُ مِنْ حَيْثُ لَا يَحْتَسِبُ﴾ [الطلاق:3]، والحَسْبُ والتحْسِيب: دَفْنُ الميت إكراماً له، والمُحَسَّب: المدفون.
كفاية: الحسيب من أسماء الله الحسنى، بمعنى الكافي، ﴿يَا أَيُّهَا النَّبِيُّ حَسْبُكَ اللَّهُ وَمَنِ اتَّبَعَكَ مِنَ الْمُؤْمِنِينَ ٦٤﴾ [الأنفال:64] أي يكفيك الله، ويكفي من معك، ومنها الفعل المتعدي: أحسبني الشيءُ إحساباً أي كفاني.
الخُلُق والفعل الصالح، وفعلها حَسُب، ومنها: احتسب فلاناً: اختبره، ولا حسَب له ولا نسب، أي لا أفعال صالحة ولا أصل شريف.
يحمل اسم هذه الآلة في العربية المعنى الرابع (الدلالة على العدد). أما حاسب وحاسبة، فهما على صيغة اسم الفاعل، الأول مذكره والآخر مؤنثه، وهو لفظ مستحدَث يدل على آلة الحِساب،[عر 5] وأما (حاسوب) فهي اسم آلة وزنها فاعول،[عر 6] وهي صيغة تدل على المبالغة في الآلة نفسها.
وقد أوردت معاجم التقانة في أغلبها لفظ حاسوب مقابلاً للمصطلح الأجنبي، كما أوردت لفظ حاسب وحاسبة ومِحْساب كذلك، وذكر بعضها المصطلح منقولاً نقلاً حرفياً بصيغة: "كُمْبيُوتر"[عر 7] (الجمع: كمبيوترات) أو "الكومبيوتر". وفي ما يأتي بيان المشتقات الإنجليزية من اللفظة (compute) وما يقابلها في العربية في جملة من المعاجم العامة والمختصة:
تراجم بعض من المعاجم العربية العامة والمتخصصة ثنائية اللغة لمفردة (compute) واشتقاقاتها
استُعملت الأدوات للمساعدة على العد منذ آلاف السنين، وغالباً ما اعتُمِدَت الأصابع. يُعتقد أن أقدم أدوات العد كانت على هيئة عصا تسجيل[الإنجليزية]. ظهرت أول السجلات في منطقة الهلال الخصيب على هيئة حصوات أو كرات طين في مخاريط من الطين غير المشوي، والغالب أنها استُعمِلت لتدوين الأعداد المرتبطة بالمحاصيل والغلال.[وب-إنج 1][2]
واستعملت المِعددات أولاً لإنجاز المهام الحسابية. وقد طُوِّر المعداد الروماني[الإنجليزية] من أداة استُعمِلت في بابل منذ سنة 2400 قبل الميلاد على الأقل. وظهرت بعد ذلك أشكال عدّة من ألواح الحساب أو جداوله. وكانت توضع في مكاتب الحساب في العصور الوسطى في أروبا قطعة من الملابس على الطاولة، وتُحرَّك علامات مُحددة فوقها حسب قواعد معينة لتساعد على حسابات المال والأعمال.
وتعد آلة أنتيكيثيرا أقدم حاسوب تماثلي ميكانيكي معروف، حيث اكتشفت سنة 1901م في حطام سفينة مقابل ساحل جزيرة أنتيكيثيرا اليونانية الواقعة بين كيثيراوكريت. يُقدَّر أنها صُممت في القرن الثاني قبل الميلاد لحساب المواقع الفلكية. لم تظهر آليات مُعقَّدة يمكن مقارنتها بآلة أنتيكيثيرا حتى القرن الرابع عشر الميلادي.[3]
ساعدت الحيل الميكانيكية في الحساب والقياسات، واستعملت لبنان أدوات فلكية كان لها أثرٌ جلي في تطور المِلاحة. وضع البيروني خريطة نجوم دائرية[الإنجليزية] في القرن الحادي عشر الميلادي.[4] اُخترع الأسطُرلاب في العصر الهلنستي بين القرنين الثاني والأول قبل الميلاد، وغالباً ما يُنسب إلى أبرخش، وهو عملياً حاسوب تماثلي قادر على حل مشكلات عديدة في الفلك الكروي، يتكون الأسطُرلاب من ديوبترا وخريطة نجوم دائرية لآلية ميكانيكية لحساب التقويم.[5]
جمع الأسطرلاب الكروي بين الأسطرلاب التقليدي وذات الحلق أو الأُسطرلاب الكروي، وصُنع في العالم الإسلامي خلال العصر الذهبي للحضارة الإسلامية.[ا] يُسند أقدم وصف معروف للأسطرلاب الكروي إلى أبي العباس النيريزي، قرابة 892–902 م. أما شرف الدين الطوسي، فقد اخترع الأسطرلاب الخطي، الذي يُسمى أيضاً "عصاة الطوسي"، وكان "قضيباً بسيطاً من الخشب من غير رسوم عليه علامات متدرجة، ومزُوَّد بخط ناظم ووتر مزدوج لعمل القياسات الزاويَّة بمؤشر مثقوب". أما الأسطرلاب الميكانيكي، فقد اخترعه أبو بكر الأصفهاني سنة 1235م.[7] واخترع البيروني أول أسطرلاب ميكانيكي فيه تقويم شمسي قمري[8]وتروس متقاطرة قرابة سنة 1000 ميلادية.[9]
طُورت المسطرة القطاعية[الإنجليزية] في أواخر القرن السادس عشر الميلادي، حيث استعملت لحل مشكلات تتضمن الضرب والقسم والمثلثات ولحساب الجذور التربيعية والتكعبيبة، وكان لها تطبيقات مهمة في المدفعية ومسح الأراضي والملاحة. أما مقياس السطوح[الإنجليزية]، أو الممساح، فكان أداة يدوية تُستعمل لحساب مساحة سطح مغلق من خلال الحركة فوقه.
اخترع ويليام أوتريدالمسطرة الحاسبة في العقد الثالث من القرن السابع عشر بعد فترة قصيرة من نشر مفهوم اللوغاريتم. المسطرة الحاسبة بالأساس هي حاسوب تماثلي مُشغل يدوياً يُنجز الضرب والقسمة، وأضيف إليها لاحقاً حساب المربعات والجذور التربيعية والمكعبات والجذور التكعيبية بالإضافة للدوال المتسامية نحو دوال اللوغاريتمات والدوال الأسية والزائدية والمثلثية. ما تزال المساطر الحاسبة متداولة، ويمكن استعمالها لإجراء حسابات تكرارية سريعة، وأشهر أمثلتها المسطرة E6B[الإنجليزية] التي تُستعمل في حساب المسافات عند التدريب على الطيران، أو في بعض الرحلات البسيطة.
بنى صانع الساعات السويسري بيير جاكيه دروز[الإنجليزية] في عقد السبعينيات من القرن الثامن عشر لعبة ميكانيكية (آلة ذاتية التشغيل) يمكنها الكتابة بقلم مع إمكانية لتغيير الإعدادات لإنتاج حروف مختلفة. وهذا يعني أنها كانت تقبل البرمجة الميكانيكية. تُعرض هذه الآلة، إلى جانب آلتين معقدتين أُخريين في متحف الفن والتاريخ (بالفرنسية: Musée d'Art et d'Histoire) في نوشاتيل في سويسرا.
وقد صنع المهندس والرياضي جيوفاني بلانا آلة تقويم دائم بين عامي 1831 و1835م. اعتمدت الآلة على الأسطوانات والبكرات، وكانت قادرة على تحديد يوم الأسبوع الموافق لأي يوم في أي سنة ميلادية بين 1 و4000م، بما في ذلك السنوات الكبيسة. واخترع وليم طومسونآلة لتوقع حركة المد والجزر[الإنجليزية] في عام 1872م، وكانت ذات فائدة كبرى في الملاحة قرب السواحل. اعتمدت آلة طومسون على البكرات والأسلاك لحساب توقع لمستوى المد والجزر لموقع محدد.
بدأ ليوناردو توريس كيبيدو في العقد الأخير من القرن التاسع عشر بتطوير سلسلة من الآلات التماثلية القادرة على إيجاد الجذور الحقيقية والمركبة لعديدات الحدود.[10] ونشرت الأكاديمية الفرنسية للعلوم نتائج أعماله سنة 1901م.[فر 1]
ترجع أصول الحاسوب القابل للبرمجة إلى مهندس الميكانيك والموسوعي الإنكليزي تشارلز بابيج. صاغ بابيج مفهوم الحاسوب الميكانيكي وصنعه في بدايات القرن التاسع عشر، لذلك يُنظر إليه على أنه المؤسس الحقيقي لعلم الحاسوب.
كشف بابيج سنة 1822م، بعد فترة من عمله على محركه التفاضلي[الإنجليزية]، عن اختراعه: الحاسوب الميكانيكي، وكان ذلك بورقة بحثية أرسلها إلى الجمعية الفلكية الملكية عنوانها: ملاحظات على تطبيق المكننة لحساب الجداول الرياضية والفلكية (بالإنجليزية: Note on the application of machinery to the computation of astronomical and mathematical tables). أدرك بابيج سنة 1833م إمكانية تعميم عمله وإنشاء محرك تحليلي يمكن تزويده ببرنامج دخل وبيانات باستعمال بطاقات مثقوبة، وكانت هذه الطريقة شائعة في أيامه لضبط عمل المناسج مثل منسج جَكَرد. أما الخرج فكان طابعة وراسمة منحنيات وجرسًا، وكانت الآلة قادرة، بالإضافة لذلك، على تثقيب بطاقات لقراءتها لاحقاً. احتوت الآلة على وحدة حساب ومنطق، وعلى انسياب للتحكم بصورة تعابير شرطية وحلقات وذاكرة ليكون بذلك التصميم الأول لحاسوب عام يمكن وصفه بأنه مكتمل وفقاً لتورنغ.[وب-إنج 3]
احتاجت آلة بابيج لآلاف القطع الميكانيكية يدوية الصنع، وهذه كانت عقبة رئيسة واجهتها الآلة، ثُمَّ توقف المشروع نهائياً بعد أن أوقفت الحكومة البريطانية التمويل. سبقت آلة بابيج عصرها قرناً على الأقل، ويمكن القول أن سبب إخفاق بابيج في إنهاء محركه التحليلي كان الصعوبات المالية والسياسية إلى جانب إصراره على صنع آلة شديدة التعقيد يسبق بها كل أقرانه. أكمل هنري بابيج[الإنجليزية] عمل والده وصنع نسخة مُبسَّطة من وحدة الحساب في المحرك التحليلي سنة 1888م، وقدم عرضاً ناجحاً لكيفية استعمالها في جداول الحوسبة سنة 1906م.
آلات الحساب الميكانيكية الكهربائية
ذكر ليوناردو توريس كيبيدو في عمله الذي نشره سنة 1914 وعنوانه مقالات في الأتمتة (بالإنجليزية: Essays on Automatics) جهود بابيج في إنشاء محرك تفاضلي ميكانيكي ومحرك تحليلي. وصف كيبيدو المحرك التحليلي بأنه تنفيذ لنظرياته حول القدرة الكامنة في الآلات، وجعل مشكلة تصميم هذا المحرك تحدياً لمهاراته بصفته مخترعاً لآلات ميكانيكية كهربائية. تضمن العمل تصميماً لآلة قادرة على حساب قيمة الصيغة آلياً من أجل مجموعة من القيم المتغيرة. كانت الآلة محكومة ببرنامج قروء فقط تضمَّن بنى متفرَّعة شرطية، قدَّم كيبيدو في هذا العمل أيضاً فكرة حسابات الفاصلة المتحركة.[11]
عرض كيبيدو في باريس سنة 1920 مقياسَ حسابٍ ميكانيكياً كهربائياً في الذكرى المئوية لاختراع مقياس الحساب[الإنجليزية]. تكوَّن المقياس من وحدة حساب متصلة من عامل يحدد الدخل الذي يكون بصورة أوامر، أما الخرج فيطبع آلياً.[12] أظهر هذا العرض إمكانية تصنيع محرك تحليلي ميكانيكي كهربائي.[13]
ساعدت الحواسيب التماثلية التي ازداد تعقيدها في النص الأول من القرن العشرين في إنجاز العديد من الحسابات العلمية، واعتمَدَتْ هذه الحواسيب عادة على نموذج كهربائي أو ميكانيكي للمشكلة أساساً لبدء الحساب. لكن هذه الحواسيب افتقدت الدقة مقارنة بنظيراتها الرقمية المعاصرة، ولم يكن بالإمكان برمجتها، بل كانت تُصمَّم لحل مُشكلة محددة سلفاً.[وب-إنج 4] كانت آلة توقع المد والجزر[الإنجليزية] التي صنع وليام طومسون نموذجها الأول سنة 1872م أول حاسوب تماثلي معاصر. أما المحلل التفاضلي، الذي صممه جيمس طومسون، شقيق وليام، سنة 1876، فاعتمد الأقراص والعجلات لإنجاز التكاملات لحل المعادلات التفاضلية.[وب-إنج 2]
بلغ تصنيع الحواسيب الميكانيكية التماثلية ذروته مع المحلل التفاضلي الذي بناه هارولد لوك هازنوفانيفار بوش في معهد ماساتشوستس للتقانة بدءاً من سنة 1927م. بُني هذا المحلل باستعمال المكاملات الميكانيكية التي صنعها جيمس طومسون، ومضخمات عزم الدورات التي اخترعها هنري نيمان (بالإنجليزية: Henry Nieman).
أنهى ظهور الحواسيب الرقمية الإلكترونية في خمسينيات القرن العشرين عصر آلات الحساب الميكانيكية، ولكنها بقيت في الاستعمال خلال الخمسينيات في تطبيقات محددة، مثل التعليم (المسطرة الحاسبة)، والطيران (نظم التحكم).
كانت الحواسيب الرقمية المبكرة ميكانيكية كهربائية، تسحب فيها مفاتيح كهربائية مرحلات ميكانيكية لإجراء الحسابات. حاسوب زد2[الإنجليزية] الذي صنعه المهندس الألماني كونراد سوزه في برلين سنة 1939م هو أحد أوائل الحواسيب من هذا النوع. كانت هذه الحواسيب بطيئة في إجراء العمليات، ولم تدم لفترة طويلة، ليحل محلها حواسيب كهربائية بالكامل استعملت الصمامات المفرغة.[وب-إنج 5]
تابع سوزه العمل وصنع في سنة 1941 حاسوباً أكثر تعقيداً أسماه زد3، وكان أول حاسوب ميكانيكي كهربائي رقمي يمكن برمجته.[وب-إنج 7] بُني زد3 باستعمال 2000 مُرحِّلة وعمل بكلمات طولها 22 بت بتردد 5-10 هرتز.
زوِّد الحاسوب بالبرامج باستعمال شريط رقيق مثقوب، أما البيانات فكانت تُخزَّن في ذاكرة تتسع 64 كلمة تُدخل من لوحة المفاتيح. تشابه هذا الحاسوب مع الحواسيب المعاصرة في مسائل عديدة، منها مثلاً القدرة على إجراء حسابات تتضمن فاصلة متحركة. اعتمد حاسوب سوزه على نظام العد الثنائي، وكان تصميم الآلة أبسط وأسهل من تصميم آلة بابيج الذي اعتمد نظام العد العشري قياساً للتقانات الموجودة في ذلك الزمن. لم يكن زد3 حاسوباً عاماً، ولكن كان بالإمكان توسعته ليصبح كاملاً حسب تورنغ.[14]
تأخر سوزه في صناعة الحاسوب التالي؛ بسبب الحرب العالمية الثاني، ولكنه انتهى من صنع حاسوب زد4 في سنة 1950م، وأصبح بذلك أول حاسوب تجاري في التاريخ، وسُلِّم للمعهد الاتحادي السويسري للتقانة في زيورخ.[15] صُنع الحاسوب في شركة أسسها سوزه اسمها: سوزه التضامنية المحدودة (بالألمانية: Zuse Kommanditgesellschaft) اختصاراً Zuse KG، أنشئت سنة 1941م وكانت الشركة الأولى التي تتخصص فقط بتطوير الحواسيب في برلين.[15]
الصمامات المفرغة والدارات الإلكترونية الرقمية
حلت العناصر الإلكترونية في الدارات محل مكافآتها الميكانيكية والميكانيكية الكهربائية في الوقت نفسه الذي ساد فيه الحساب الرقمي على الحساب التماثلي. بدأ تومي فلاورز، وهو باحث في مركز أبحاث مكتب البريد[الإنجليزية] في لندن في ثلاثينيات القرن العشرين، التجارب على استعمال الإلكترونيات في مقاسم الهاتف. صُنعت نماذج تجريب سنة 1934، ثم استعملت في إنجاز العمليات بعد 5 سنوات، فحولت جزءًا من شبكة مقاسم الهاتف إلى نظام إلكتروني لمعالجة البيانات بالاعتماد على آلاف الصمامات المفرغة.[وب-إنج 4] طوَّر جون أتاناسوفوكليفورد بيري من جامعة ولاية آيواحاسوب بيري وأتاناسوف[الإنجليزية] وجربوه سنة 1942م، وكان أول حاسوب "رقمي إلكتروني ذاتي التشغيل". كان هذا الحاسوب ذا تصميم إلكتروني بالكامل، فيه 300 صمام مُفرَّغ مع مكثفات مثبَّتة على أسطوانات دوَّارة تمثِّل الذاكرة.[16]
نجح مستخرجو التعمية الإنجليز في حديقة بلتشلي خلال الحرب العالمية الثانية في اختراق الاتصالات الألمانية العسكرية المُعمَّاة. كانت آلة إنجما الألمانية هدفاً رئيساً لمستخرجي التعمية الذي استعملوا آلة سميت بُمب (بالإنجليزية: bombe)، ولعبت النساء دوراً بارزاً في عملية استخراج المعمى هذه.[وب-إنج 8]
أما لاستخراج مُعمَّى آلات ألمانية أكثر تعقيداً مثل آلة لورينز للتعمية، والتي استعملت عاد لتعمية اتصالات القيادة العليا للجيش الألماني، فقد بنى ماكس نيومان حاسوب كولوسس.[16] استغرقت عملية تصميم الحاسوب وبناؤه 11 شهراً بدءاً من شهر فبراير 1943م.[وب-إنج 9] اجتاز كولوسس اختبارًا للتجريب بنجاح، ثم شُحِن إلى حديقة بلتشلي، وسُلِّم في 18 يناير 1944،[وب-إنج 10] ليبدأ العمل في استخراج المُعمَّى في 5 فبراير من العام نفسه.[16]
كولوسس هو أول حاسوب إلكتروني رقمي يمكن برمجته،[وب-إنج 4] استعملت الصمامات المفرَّغة في بنائه. كان دخل كولوسس شريطاً من الورق، وكان قادراً على معالجة الدخل باستعمال مجموعة متنوعة من العمليات المُعرَّفة حسب جبر بول، لكنه لم يكن كاملاً حسب تورنغ. سُمي هذا الحاسوب بالإصدار الأول (بالإنجليزية: Colossus Mark I)، ورقيَّت هذه الآلة إلى إصدارٍ ثان (بالإنجليزية: Colossus Mark II)، وصنع منها 9 نسخ فقط، ليكون المجمل، مع الآلة التي رُقِّيت 10 آلات. ضمَّ الإصدار الأول 1500 صماماً والثاني 2400، وكان الإصدارات أسرع بخمس مرات من الإصدار الأول لحاسوب هَرفرد، وكان استعمالهما أبسط ما سرَّع عملية فك التعمية.
الحاسوب والمكامِل الرقمي الإلكتروني (بالإنجليزية: Electronic Numerical Integrator And Computer) تختصر ENIAC، وتُلفظ إنياك، هو أول حاسوب إلكتروني يمكن برمجته يُبنى في الولايات المُتحدة.[17] كان إنياك أسرع من كولوسس وأسهل بالاستعمال، وكان كاملاً حسب تورنغ. يُعرَّف البرنامج في إنياك حسب حالة المفاتيح والكبلات. ويلزم إدخاله يدوياً إلى الآلة، بعد أن يُكتب، باستعمال مقابس ومفاتيح. عملت ست نساء في برمجة إنياك، وأُشير إليهم معاً باسم "فتيات إنياك" (بالإنجليزية: ENIAC girls).[18]
بدأ تطوير إنياك وبناؤه في سنة 1943م تحت إشراف جون ماكليوجون برسبر إيكيرت في جامعة بنسلفانيا، ودخل الخدمة سنة 1945م. جمع هذا الحاسوب بين سرعة الإلكترونيات العالية وإمكانية البرمجة، ومكَّنه ذلك من حل مشكلات معقدة. كان إنياك قادراً على إنجاز 5000 آلاف عملية جمع أو طرح في الثانية، أسرع بألف مرة من الآلات الأخرى. وكان قادراً أيضاً على حساب الضرب والقسم والجذر التربيعي، وكانت ذاكرته عالية السرعة محدودة بعشرين كلمة فقط، قرابة 80 بايتاً. ولكنه كان هائل الحجم، يزن 30 طناً، ويحتاج 200 ألف واط من الاستطاعة الكهربائية لتغذية 18 ألف صمام مُفرَّغ و1500 مُرحِّلة ومئات الآلاف من المقاومة والمكثفات والوشائع.
الحواسيب المعاصرة
مفهوم الحاسوب المعاصر
اقترح آلان تورنغ مفهوم الحاسوب المعاصر في ورقة بحثية نُشرت سنة 1937م عنوانها: "عن الأرقام الحَسُوبة أو الأعداد القابلة للحساب (بالإنجليزية: Computable Numbers)،[19] أشار تورنغ في عمله إلى آلة بسيطة سمَّاها (آلة الحوسبة العامة) (بالإنجليزية: Universal Computing machine)، وهي تُسمَّى اليوم آلة تورنغ العامة. أثبت تورنغ أن آلة كهذه تستطيع حساب أي عملية حَسُوبة (أعداد قابلة للحساب) من خلال تنفيذ برنامج مكوَّن من مجموعة تعليمات مخزونة على شريط، وهذا يعني إمكانية برمجة الآلة. لقد تمحور تصميم تورنغ حول مفهوم جوهري هو البرنامج المخزون حيث تُخزَّن كل تعليمات الحوسبة في الذاكرة. يُرجع جون فون نيومان الفضل في تطوير الحاسوب الحديث إلى هذا المفهوم المركزي.[20] ما تزال آلات تورنغ مادة للدراسة في نظرية الحوسبة. على فرض إهمال حجم الذاكرة المحدود نظرياً، فإن الحواسيب المعاصرة هي كاملة حسب تورنغ، وهذا يعني أنها قادرة على تنفيذ الخوارزميات تنفيذاً يُجارِي آلة تورنغ العامة.
عملت آلات الحوسبة المبكرة ببرامج ثابتة، لذلك كان التغيير في وظيفتها يتطلَّب تغييراً في توصيل الأسلاك، وفي بنية الآلة.[16] ولكن هذا تغيير مع اقتراح استعمال البرامج المخزونة، فأصبحت الآلات تتضمن في تصميمها مجموعة تعليمات، وتدعم تخزين برنامج مُكوَّن من هذه التعليمات في الذاكرة، وتكون تفاصيل الحوسبة في هذا البرنامج. وضع آلان تورنغ الأساس النظري لحاسوب البرنامج المخزون في ورقة بحثية نشرها سنة 1936م. انضم تورنغ في سنة 1945م إلى المختبر الفيزيائي الوطني، وبدأ العمل على تطوير حاسوب برنامج مخزون إلكتروني رقمي، وكان تقريره المنشور في السنة نفسها والمعنون: حاسبة إلكترونية مقترحة (بالإنجليزية: Proposed Electronic Calculator) أول مُحددات لآلة من هذا النوع. نشر جون فون نويمان في الوقت ذاته في جامعة بنسلفانيا تقريراً حول الحاسوب الذي يطوره عنوانه: "المسودة الأولى لتقرير عن إدفاك" (بالإنجليزية: First Draft of a Report on the EDVAC).[وب-إنج 4]
أصبح الإصدار الأول لحاسوب مانشستر سريعاً الإصدار الأول لحاسوب فيرانتي[الإنجليزية]، الذي كان أول حاسوب تجاري عام الاستخدام[وب-إنج 13] كما يدل الاسم، فقد بنت فيرانتي هذا الحاسوب لجامعة مانشستر، وسلَّمته في فبراير 1951م. صُنِعت سبعة حواسيب أخرى على الأقل من الإصدار نفسه بين عامي 1953 و1957م، سُلِّم أحدها إلى مختبرات شركة شل في أمستردام. قرر مديرو شركة جي ليونز البريطانية للأطعمة في أكتوبر 1947 أن يكون لشركتهم دور فاعل في الترويج للتطوير التجاري للحواسيب. صُنِع، نتيجة لذلك، حاسوب ليو الأول[الإنجليزية] وفق نموذج مشابه لنموذج الحاسبة الآلية الإلكترونية ذاتية التخزين[الإنجليزية]، المعروفة اختصاراً بالاسم إدساك، الذي طورتها جامعة كامبريدج. شُغِّل هذا الحاسوب في أبريل 1951، وأنجز أول عمل برمجي[الإنجليزية] مكتبي محوسب في التاريخ.
اقترح جوليوس إدغار ليلينفيلد مبدأ ترانزستور الأثر الحقلي سنة 1925م، وصنع جون باردينووالتر براتين في أثناء عملهما بإشراف وليم شوكلي في مختبرات بلترانزستور التلامس النقطي في سنة 1947م، ليكون أول ترانزستور مصنوع، ثم صنع شوكلي الترانزستور ثنائي القطب سنة 1948م.[22] حلَّت الترانزستورات محل الصِّمامات المفرغة في تصميم الحواسيب بدءاً من سنة 1955م، وكان هذا الاستبدال هو بداية الجيل الثاني من الحواسيب. للترانزستورات فوائد عديدة مقارنةً بالصِّمامات المُفرَّغة، هي أصغر حجم وأقل استهلاكاً للطاقة،[عر 14] وأقل إشعاعاً للحرارة، وأكثر موثوقية وذات عمر خدمة أطول. أمكن للحاسوب، بعد استعمال الترانزستور، أن يحوي عشرات الآلاف من الدارات المنطقية في حيز صغير نسبياً، لكن الترانزستورات الأولى كانت كبيرة نسبياً، ويصعب تصنيعها على نطاق واسع، لذلك فقد كان استعمالها محدوداً بعدد من التطبيقات المتخصصة.[23]
صنع جاك كيلبي في تكساس إنسترومنتسوروبرت نويس في فيرتشايلد لأشباه الموصلات أول الدارات المتكاملة. كتب كيلبي أفكاره الأولى حول الدارات المتكاملة في شهر يوليو سنة 1958م،[وب-إنج 17] ونجح بتنفيذها في 12 سبتمبر 1958م. وصف كيلبي ما صنعه في براءة الاختراع كما يأتي: "تركيب من أشباه الموصلات... تكون كل مكونات الدارة الإلكترونية فيه متكاملة" (بالإنجليزية: a body of semiconductor material ... wherein all the components of the electronic circuit are completely integrated)[31] لم يكن اختراع كيلبي في الواقع دارة متكاملة مطبوعة على رقاقة واحدة،[32] بل كان دارة متكاملة هجينة[الإنجليزية] فيها أسلاك توصيل خارجية، لذلك كان تصنيعها على نطاق واسع صعباً.
وضع نويس مفهومه الخاص عن الدارات المتكاملة بعد نصف سنة من كيلبي،[33] وكان اختراعه هو أول دارة متكاملة مطبوعة على رقاقة واحدة،[وب-إنج 18] وحلَّت رقاقته مشكلات عديدة لم تستطع رقاقة كيلبي حلها. كانت رقاقة نويس مصنوعة من السيلكون، في حين أن رقاقة كيلبي كانت مصنوعة من الجرمانيوم. صُنعت رقاقة نويس باستعمال تقنية العملية السطحية التي طورها زميله في فيرتشايلد لأشباه الموصلات جان هورني.[34]
الدارات المتكاملة المعاصرة المطبوعة على رقاقة واحدة مكونة في أغلبها من أشباه الموصلات والأكاسيد المعدنية، وتُبنَى باستعمال موسفت.[35] أقدم مثال معروف لدارة متكاملة مصنوعة من أشباه الموصلات والأكاسيد المعدنية هو رقاقة فيها 16 ترانزستوراً بناها فريد هايمن وإستيفن هوفشتاين سنة 1962م في شركة راديو أمريكا. أطلقت شركة الإلكترونيات الصغرية العامة لاحقاً أول دارة متكاملة مصنوعة من أشباه الموصلات والأكاسيد المعدنية لأغراض تجارية سنة 1964م،[وب-إنج 19] وكانت من تطوير روبرت نورمان. بعد أن طوَّر روبرت كيرون ودونالد كلين[الإنجليزية] وجون سارس ترانزستورات أشباه الموصلات والأكاسيد المعدنية ذات البوابة ذاتية المحاذاة[الإنجليزية] من السيلكون في مختبرات بل سنة 1967م، نجح فيدريكو فاجين في تطوير دارات متكاملة من أشباه الموصلات والأكاسيد المعدنية ذات بوابة ذاتية المحاذاة من السيلكون في فيرتشايلد لأشباه الموصلات سنة 1968م.[وب-إنج 20] وأصبح موسفت بعدها المكون الأكثر أهمية في الدارات المتكاملة المعاصرة.[35]
نتج عن تطوير الدارات المتكاملة باستعمال أشباه الموصلات والأكاسيد المعدنية اختراع المعالجات الصغرية،[36] وكان فاتحةً لعصر جديد سادت فيه الحواسيب الشخصية بوصفها منتجات تجارية. لا يوجد توافق حول من هو المعالج الصغري الأول؛ بسبب عدم التوافق حول تعريف ما هو المعالج الصغري بالأصل، ولكن يُقبل على نطاق واسع أن المعالج الصغري الأول المصنوع على رقاقة واحدة كان إنتل 4004، صنعه فيدريكو فاجين باستعمال تقانة الدارات المتكاملة المكونة من أشباه الموصلات والأكاسيد المعدنية ذات البوابة السِّلكونية، بمساعدة تيد هوفمانوماساتوشي شيما[الإنجليزية]وستانلي مزور في إنتل.[ب][38] نجحت تقانة الدارات المتكاملة المكونة من أشباه الموصلات والأكاسيد المعدنية في بدايات سبعينيات القرن العشرين بصناعة رقاقة واحدة فيها أكثر من 10 آلاف ترانزستور.[27]
النظام على رقاقة هو حاسوب كامل على رقاقة واحدة لا تزيد أبعادها عن قطعة نقد. ليس بالضرورة أن تحتوي دائماً على ذاكرة وصول عشوائيوالذاكرة الوميضية، في حالات عدم وجودها تُضاف ذاكرة الوصول العشوائي مباشرة فوق الرقاقة (تُسمى التقنية عندها مُحيفِظة على المُحيفِظة[الإنجليزية]) أو تحتها (على الوجه المعاكس من لوحة الدارة)، في حين تضاف الذاكرة الوميضية عادةً إلى جانب الرقاقة، والهدف من ذلك هو تقليل المسافة التي تقطعها الإشارات ومن ثم زيادة سرعة نقل البيانات.
كانت الحواسيب المنقولة الأولى ثقيلة الوزن، وتحتاج إلى توصيل بمصادر الطاقة الكهربائية توصيلاً دائماً، مثلاً الحاسوب آي بي إم 5100 كان يزن قرابة 23 كغ، أما الحاسوبان أوسبرن 1[الإنجليزية]وحاسوب كومباك المنقول، فكانا أخف وزناً خفة ملحوظة، ولكنهما احتاجا توصيلاً دائماً بمصدر للطاقة الكهربائية. أما الحواسيب المحمولة المُبكرة، فألغت الحاجة للتوصيل بالمصدر الكهربائي؛ لأنها اشتملت على بطاريات مُدمجة، مثل حاسوب بوصلة غريد[الإنجليزية]. استمرت عملية تصغير العتاد وموارد الحوسبة وتحسين عمر البطاريات، حتى أصبحت الحواسيب المحمولة خياراً شائعاً منذ العقد الأول من القرن الواحد والعشرين. ساعدت هذه التحسينات المصنعين على تصغير عتاد موارد الحوسبة لتُستعمل في الهواتف المحمولة أيضاً في الفترة نفسها.
تدعم الهواتف الذكيةوالحواسيب اللوحية أنظمة تشغيل متنوعة وهي أجهزة الحاسوب السائدة بين المستهلكين، يحوي كل من هذه الحواسيب ما يُسمى "نظام على رقاقة"، وهي كما تقدم، حاسوب كامل على رقاقة لا تزيد أبعادها عن قطعة نقد معدنية.
يشمل مصطلح العتاد كل الأجزاء المادية الملموسة من الحاسوب: الرقائق الإلكترونية، مثل: بطاقة الرسوميات، وبطاقة الصوتيات، وبطاقة الذاكرة، واللوحة الأم؛ والدارات الكهربائية، مثل وحدة التغذية والكبلات؛ وأجهزة الإدخال والإخراج، مثل لوحة المفاتيح والطابعة.
يضم الحاسوب شائع الاستعمال أربعة مكونات رئيسة: وحدة الحساب والمنطق، ووحدة المعالجة المركزية، والذواكر، ووحدات الإدخال والإخراج. تتصل هذه المكونات فيما بينها باستعمال المساري التي غالباً ما تكون مجموعة من الأسلاك. في داخل كل من هذه المكونات دارات إلكترونية صغيرة قد يصل عددها إلى المليارات، يمكن تشغيلها أو إيقافها باستعمال ترانزستور. تُمثّل كل دارة بتًا واحدًا من المعلومات، لو شُغِّلت فهي تُمثِّل القيمة "1" ولو أُوقِفت تُمثِّل القيمة "0".
أجهزة الإدخال
تساعد أجهزة الإدخال الحاسوبَ على استقبال بيانات غير معالجة لمعالجتها وإرسالها للخرج.
تدير وحدة التحكم مكونات الحاسوب الأخرى، وتُسمَّى أحياناً نظام التحكم أو المُتحكِّم المركزي. وظيفتها الرئيسة قراءة تعليمات البرنامج وتفسيرها، أي فك ترميزها، ثم تحويلها إلى إشارات تحكم تُفعِّل أجزاء أخرى من الحاسوب.[د] يمكن لوحدات التحكم في الحواسيب المتقدمة أن تُغير ترتيب تنفيذ بعض التعليمات لتحسين الأداء.
عداد البرنامج هو عنصر رئيس مشترك في تصاميم وحدات المعالجة المركزية، وهو موقع في الذاكرة يُسمَّى سجلاً، ويحتفظ بعنوان الذاكرة للتعليمة التي ستقرأ تالياً.[ه]
قراءة رموز التعليمة التالية من الموقع المحدَّد بالعنوان الموجود في عداد البرنامج.
فك الرمز الرقمي للتعلمية والحصول على مجموعة من الأوامر أو الإشارات لتطبيقها على مكونات أخرى.
زيادة قيمة عداد البرنامج ليشير إلى موقع التعليمة التالية في الذاكرة.
قراءة البيانات التي تحتاجها التعليمة من الذاكرة، أو من أداة دخل مثلاً، يكون موقع أو مصدر البيانات مُحدداً بالرموز الرقمية التي تكوِّن التعليمة نفسها.
جلب البيانات الضرورية لوحدة الحساب والمنطق.
لو كان تنفيذ التعليمة يحتاج استعمالاً مخصصاً للعتاد، أرسل الأوامر اللازمة للعتاد لعمل العملية المطلوبة.
كتابة ناتج عمل وحدة الحساب والمنطق في الذاكرة، أو في سجل أو عرضه على أداة خرج.
عودة إلى الخطوة الأولى.
إن عداد البرنامج هو موقع تخزين في الذاكرة، ويمكن تغيير قيمته بعمليات حسابية. إضافة 100 مثلاً إلى قيمة عداد البرنامج ستسبب قراءة التعليمة التي تقع بعد 100 تعليمة من موقع التنفيذ الحالي. تُسمى عملية تعديل قيمة عداد البرنامج بالقفز، وهي تسمح بإنشاء عناصر التحكم بالانسياب نحو بنى الاختيار وبنى التكرار.
تتابع العمليات الذي تجريه وحدة التحكم لمعالجة عملية ما هو برنامج حاسوب صغير بحد ذاته، وفي بعض تصاميم وحدات المعالجة المعقدة يُنظِّم متتبع صغري هذا المسألة بتنفيذ نص برمجي صغري يسبب حصول ما سبق.
تُعرف وحدة الحساب والمنطق مع المسجلات باسم وحدة المعالجة المركزية. صُنعت وحدات المعالجة المُبكِّرة من مكونات منفصلة، لكنها تُنشَأ منذ سبعينيات القرن العشرين على دارة متكاملة واحدة مصنوعة من الأكاسيد المعدنية لأشباه الموصلات، وتُسمَّى معالجاً صغرياً.
تُنجِز هذه الوحدات نوعين من العمليات: الحسابية والمنطقية.[39] قد تكون العمليات الحسابية التي تجريها وحدة الحساب والمنطق محصورة بالجمع والطرح فقط، وقد تشمل الضرب والقسمة والدوال المثلثية، نحو: الجيب، وجيب التمام، والجذور التربيعية. تدعم بعض الوحدات فقط الأعداد الصحيحة، في حين تشمل عمليات بعضها الأعداد ذات الفواصل مع درجات دقة مختلفة. يكون كل حاسوب قادراً في العموم على تبسيط العمليات المعقدة إلى عدد من العمليات البسيطة التي يمكن أن ينفذها، ولكن الوقت المستغرق لعمل ذلك سيكون أكبر. تنفَّذ الوحدة عمليات منطقية، ويكون خرجها قيماً منطقية، أي إمَّا 0 أو 1. من العمليات المنطقية: النفي، والعطف المنطقي، والفرق المنطقي. تستعمل هذه العمليات لبناء عبارات منطقية أكثر تعقيداً مثل التعابير الشرطية.
الذاكرة في الحاسوب هي مجموعة من الخلايا التي يمكن كتابة الأرقام فيها أو قراءتها. تخزِّن كل خلية رقماً واحداً، ويكون لها مُعرِّف مميز يُسمَّى عنوانها. ويمكن بعدها للحاسوب أن يجري عمليات حسابية على القيم المُخزَّنة في الخلايا باستعمال عنوانها. المعلومات المخزنة في الذاكرة مجرَّدة، ويمكن أن تستعمل لتمثيل أي شيء: حرف أبجدي أو عدد رياضي أو حتى تعليمة من تعليمات الحاسوب، ولا تميز الذاكرة بينها، وتكون عملية التمييز من مهام البرمجيات.
تخزِّن كل خلية في الحواسيب المعاصرة عدداً ثنائياً مكون من مجموعة من 8 بتات تُسمَّى بايتاً. يمكن لكل بايت أن يُمثِّل 256 رقماً مختلفاً (28 = 256) تتراوح بين 0 إلى 255 أو بين −128 إلى +127. أما لتخزين أعداد أكبر، فتُستعمل مجموعة من البايتات المتتالية، اثنان أو أربعة أو ثمانية، في حين تُمثَّل الأعداد السالبة باستعمال المتمم الثنائي. مع أن طرق تمثيل أخرى ممكنة، إلا أنها نادراً ما تستعمل.
تضم وحدة المعالجة المركزية مجموعة خاصة من خلايا الذاكرة تُسمَّى السجلات، تستعمل الوحدة السجلات لتخزين البيانات الأكثر استعمالاً لتجنب قراءتها في كل من الذاكرة الرئيسة، فالكتابة والقراءة في السجلات أسرع مقارنة مع الذاكرة الرئيسة. قد تحتوي وحدة المعالجة على سجلين فقط، ولكن قد يزيد عدد السجلات عن مئة في بعض الأنواع.
يمكن قراءة ما يوجد في ذاكرة الوصول العشوائي أو الكتابة فيها في أي وقت، وهي تفقد ما يُخزَّن فيها لو قُطِعت عنها التغذية الكهربائية نتيجة لإيقاف تشغيل الحاسوب. أما ذاكرة القراءة فقط، فإنها تُحمَّل ببيانات وبرمجيات لا تتغير، وتقرؤها وحدة المعالجة فقط، وهي لا تفقد ما فيها، حتى لو قطعت التغذية الكهربائية عنها، لذلك تُستعمل عادة لتخزين تعليمات الإقلاع. تضم ذاكرة القراءة فقط في الحاسوب الشخصي برنامجاً مخصصاً يُسمَّى النظام الأساسي للإدخال والإخراج ينسِّق عملية تحميل نظام التشغيل من القرص الصلب إلى ذاكرة القراءة العشوائية. أما في الأنظمة المُضمَّنة التي لا تحتوي أقراص تخزين صلبة، فإنَّ كل البرمجيات الضرورية تُخزَّن في ذاكرة القراءة فقط، وتُسمَّى البرمجيات التي تُخزَّن بهذا الشكل بالبرمجيات الثابتة؛ لأنها مُثبتة على العتاد لا يُمكن للمستخدم تغييرها. تطمس الذاكرة الوميضية الحد الفاصل بين ذاكرة القراءة فقط وذاكرة الوصول العشوائي، فهي تحتفظ بما يُخزن فيها بعد انقطاع التغذية، ويمكن إعادة الكتابة فيها، ولكنها أبطأ بكثير من النوعين السابقين، لذلك يكون استعمالها محصوراً في التطبيقات التي تكون السرعة العالية فيها غير ضرورية.[ز]
يوجد في الحواسيب الأكثر تعقيداً أكثر من ذاكرة مخبئية مرفقة مع وحدة المعالجة المركزية. تكون عملية القراءة والكتابة فيها أبطأ من السجلات، ولكنها أسرع من الذاكرة الرئيسة. تُصمم هذه الحواسيب لتنقل آلياً البيانات الأكثر استعمالاً إلى الذاكرة المخبئية من دون تدخل المبرمجين.
وحدات الدخل والخرج هي الوسائل التي يتبادل فيها الحاسوب المعلومات مع العالم المحيط.[42] تسمَّى الأجهزة التي تؤدي وظائف الدخل والخرج بالطرفيات.[43] تشمل الطرفيات في حاسوب شخصي أجهزة الدخل مثل الفأرةولوحة مفاتيح حاسوب، وأجهزة الخرج مثل الشاشة والطابعة. بعض الأجهزة مثل شاشة اللمس تكون جهاز إدخال وإخراج في الوقت نفسه.
يمكن للحاسوب أن يكون متعدد المهام، وهذا يعني أنه قادر على تشغيل برامج عديدة في الوقت نفسه من التبديل بسرعة بين البرامج.[44] يمكن أن تُنفَّذ الآلية السابقة باستعمال المقاطعة، وفيها يتوقف الحاسوب عن تنفيذ تعليمات البرنامج التي يُنفذها حالياً، وينتقل إلى تنفيذ تعليمات أخرى، ثم يعود مرة أخرى بعد الانتهاء من تنفيذ التعليمات الأخرى إلى التعليمات الأولى التي كان يعمل عليها قبل المقاطعة وينهي تنفيذها، وهذا يعني بالضرورة أن الحاسوب يحتاج إلى تخزين موقع التعليمات الأولى قبل الانتقال إلى تنفيذ الأخرى. لو نُفِّذت العملية السابقة عدة مئات من المرات في الثانية على برامج عديدة، فإنها ستبدو وكأنها تُنفَّذ في الوقت نفسه، أما الحقيقة فهي أن الحاسوب ينفذ برنامجاً واحداً فقط في كل لحظة زمن. تُسمى هذه الطريقة لتعدد المهام بتشارك الزمن؛ لأن كل برنامج يحصل على "شريحة" محددة من الزمن ليُنفذ فيها، ويكون زمن التنفيذ المجمل مُشتركاً بين البرامج.[45]
قبل انتشار الحواسب رخيصة الثمن، كان الهدف من تعدد المهام هو السماح بمشاركة حاسوب واحد بين أشخاص متعددين. يبدو مما سبق أن الحاسوب سيكون أبطأ في التنفيذ بما يتناسب مع عدد البرامج التي يُشغلها، ولكن في التطبيق العملي وُجِد أن سبب التأخير هو انتظار الحاسوب لمدخلات أجهزة الدخل التي لم تنهِ مهمتها بعد. أي إذا كان البرنامج ينتظر أن يضغط المستخدم على مفتاح في لوحة المفاتيح، أو ينقر بالفأرة، فعندها لم يحصل البرنامج على "الشريحة الزمنية" حتى حصول الحدث الذي يُنتظر حدوثه. تُحرر هذه الخاصية مزيداً من الزمن للبرامج الأخرى لتعمل معاً من غير إبطاء غير مُستحَب.
تُصمم بعض الحواسيب لتوزع عملها على وحدات معالجة مركزية عديدة باستعمال تقانة تُسمَّى المعالجة المتعددة، اختصت هذه التقانة بالحواسيب الكبيرة ذات قدرات المعالجة العالية مثل الحواسيب الفائقةوالمركزيةوالخوادم فيما سبق، ولكنها أصبحت متوفرة في الحواسيب الشخصية والحواسيب المحمولة، خاصة بهيئة معالج متعدد النوى.
يكون للحواسيب الفائقة عادةً معمارية فريدة تختلف عن معمارية حواسيب البرامج المخزونة والحواسيب عامة الاستعمال.[ح] وتحتوي في الغالب على آلاف وحدات المعالجة المركزية ومساري مخصصة عالية السرعة وعتاد مصمم لدعم الحوسبة. تستعمل هذه الحواسيب عادة في إنجاز محاكاة كبرى بالحاسوب، وفي تصيير واسع النطاق للرسوميات، وفي تطبيقات التعمية.
تشمل كلمة "البرمجيات" أجزاء الحاسوب التي ليس لها هيئة مادية، مثل: البرامج، والبيانات، والمكتبات، والبروتوكول، وتتكون من معلومات مرموزة أو تعليمات، على عكس العتاد الذي يُبنى منه الحاسوب. تُقسم البرمجيات عادةً إلى برمجيات النظم وبرمجيات تطبيقية، ويشمل المفهوم أيضاً بيانات لا يمكن تنفيذها كما تُنفَّذ البرامج مثل مستندات توثيق البرمجيات.
تحتاج البرمجيات والعتاد بعضهما البعض، ولا يمكن لأحدهما أن يعمل بمعزلٍ عن الآخر. لكن البرمجيات تكون مستقلة عن العتاد عموماً، أي يمكن استعمالها مع غير قيود صارمة تحدد العتاد المطلوب، أما البرمجيات التي لا تعمل إلا مع نوع محدد من العتاد بالبرمجيات الثابتة مثل النظام الأساسي للإدخال والإخراج.
ما يميز الحواسيب الحديثة اليوم عن كل الآلات الأخرى هو إمكانية البرمجة، وهذا يعني أنه يوجد طريقة ما لإدخال مجموعة من التعليمات تُسمى برنامجاً إلى الحاسوب لينفذها. تملك الحواسيب الحديثة لغة آلة يمكن كتابة برنامج بها باستعمال البرمجة الأمرية، وقد يكون طول البرنامج فيها سطور متعددة، وقد يطول لملايين التعليمات، ويمكن للحواسيب أن تعالج (تُنفِّض) الملايين من هذه التعليمات كل ثانية من غير وجود أخطاء، وتقاس هذه القدرة بوحدة فلوبس وهي عدد التعليمات الشاملة للفاصلة المتحركة التي يمكن للحاسوب تنفيذها في الثانية.
تعليمات الحاسوب في معظم الحالات بسيطة: أضف عدداً إلى آخر، أو أُنقل بعضاً من البيانات من موقع إلى آخر، أو أرسل رسالة إلى جهاز خارجي... تُقرأ التعليمات من ذاكرة الحاسوب، وتُنفَّذ[الإنجليزية] وفق الترتيب الذي وردت به. يوجد تعليمات معدودة وظيفتها تغيير تتابع التنفيذ، وتسمى تعليمات التفرع[الإنجليزية]: إما تنفيذ تعليمات تسبق التعليمة الحالية في الترتيب، ويكون القفز حينها إلى الخلف، وإما تنفيذ تعليمات تتبع التعليمة الحالية في الترتيب، ويكون القفز حينها إلى الأمام. قد تحتوي تعليمة التفرع على تعبير شرطي، يحدد حصول عملية القفز من عدمها نتيجة لحساب رياضي يعتمد على قيم مخزنة في الذاكرة. تدعم العديد من الحواسب مفهوم "الدوال" وهي مجموعة من التعليمات التي يمكن تنفيذها عند الحاجة من خلال تعليمة تفرع خاصة تُسمى تعليمة الاستدعاء، وهي تحفَظ موقع التنفيذ الذي يسبقها لتعود إليه بعد انتهاء تنفيذ الدالة اعتماداً على تعليمة تفرع خاصة تُسمَّى تعليمة العودة توجد في نهاية الدالة.
يُشبه تنفيذ برنامج الحاسوب قراءة كتاب. يُقرَأ الكتاب تتابعاً من البداية إلى النهاية: كلمة كلمة وسطراً سطراً، ولكن يمكن في أحيانٍ كثيرة أن يعود القارئ إلى مواقع من الكتاب قرأها سابقاً ليتذكر معلومة محددة ذُكرت فيها، ويمكن أن يتجاوز فصلاً كاملاً فلا يقرأه لعدم اهتمامه بمحتواه. يُسمَّى تتابع القراءة، ويقابله تتابع تنفيذ التعليمات في حالة الحاسوب، انسياب التحكم. ينساب التحكم عند التنفيذ من غير تدخل المبرمجين، فقد يسبب تنفيذ مجموعة محددة من التعليمات تكراراً عدة مرات حتى تحقق شرطًا محددًا، ويمكن أن يستدعي دالة ما حسب قيمة شرط آخر، وقد ينفذ التعليمات تتابعاً حتى نهاية البرنامج.
يمكن للإنسان باستعمال آلة حاسبة أن ينفذ عمليات حساب بسيطة، مثل أن يجمع عددين، أو يضربهما بضغطات بسيطة ومعدودة. أما عمليات الحساب الطويلة أو المعقدة مثل مجموعة الأعداد الصحيحة بين 1 و1000، فيصعب تنفيذها يدوياً؛ لأنها تتطلب آلاف الضغطات على مفاتيح الآلة الحاسبة ووقتاً طويلاً للتنفيذ، ناهيك باحتمال حدوث أخطاء قد تؤدي إلى إعادة التنفيذ من البدء. يمكن برمجة الحاسوب لتنفيذ المجموع السابق باستعمال عدد قليل من التعليمات البسيطة مقارنة بالإنسان. المثال التالي هو لبرنامج مكتوب بلغة تجميع ميبس:
begin:addi$8,$0,0# القيمة الابتدائية للمجموعة هي 0addi$9,$0,1# أول عدد سيُضاف هو 1loop:slti$10,$9,1000# تحقق من أن قيمة العدد المُضاف أقل من 1000beq$10,$0,finish# اخرج من التكرار لو كانت القيمة أكبر من 1000add$8,$8,$9# احسب المجموع تراكمياًaddi$9,$9,1# احسب العدد التالي الذي سيُضاف (+1)jloop# كرر عملية الجمعfinish:add$2,$8,$0# ضع المجموع في سجل الخرج
عند تنفيذ هذا البرنامج، فإن الحاسوب سينفذ تكراراً عملية الجمع من غير تدخل المبرمجين، ومن غير أخطاء. يمكن للحواسيب المعاصرة أن تُنفِّذ هذا البرنامج في أجزاء قليلة من الثانية.
نكتب التعليمات في الحواسيب باستعمال لغة الآلة، ويكون لكل تعليمة رقم فريد مميز يُسمَّى رمز العملية، أي يكون لتعليمة جمع عددين رمز واحد فريد، ويكون لعملية ضرب عددين رمز آخر فريد مختلف عن رمز تعليمة الجمع، وهكذا... يكون عدد التعليمات في الحواسيب البسيطة صغيراً محدوداً، أما في الحواسب المعقدة، فقد يبلغ عددها المئات. بما أن ذاكرة الحاسوب تخزِّن الأرقام، فإنها قادرة على تخزين التعليمات أيضاً، لأن برنامج الحاسوب بأكمله هو مجموعة من الأرقام، ويمكن بالتالي تخزينه والتعامل معه بالطريقة نفسها التي تُخزَّن البيانات الرقمية فيها، وهذه هي الفكرة الجوهرية في معمارية فون نيومان.[46] يوجد معماريات أخرى أقل انتشاراً مثل معمارية هارفارد، وفيها تكون الذاكرة التي تُخزِّن البيانات مفصولة تماماً عن الذاكرة التي تخزن التعليمات.
كتبت البرامج في الحواسيب المبكرة بلغة الآلة مباشرة، ولا يوجد مانع نظرياً من كتابة أي برنامج بلغة الآلة مباشرة، ولكنها عملية صعبة وكثيرة الأخطاء، خاصةً لو كان البرنامج معقداً وطويلاً. تعطى كل تعليمة بدلاً عن ذلك اسماً بسيطاً مختصراً يُستدل به على وظيفتها بسهولة مثل: وADD للجمع، وSUB للطرح، وMULT للضرب، وJUMP للقفز، وهكذا... وتجمع هذه التعليمات بعضها مع بعضٍ لتشكل ما يُعرف باسم لغة التجميع. ينقل تطبيق خاص، يُسمَّى المُجمِّع، البرنامج المكتوب بلغة التجميع إلى لغة الآلة.
تستعمل لغات البرمجة لكتابة البرامج التي تنفذها الحواسيب. تُصمم لغات البرمجة، على خلاف اللغات الطبيعية، لتُعبِّر عن المراد بجلاء وإيجاز. لغات البرمجة كلها مكتوبة، وتصعب قراءتها جهاراً، تترجم إلى لغة الآلة قبل تنفيذها باستعمال مُصرِّف أو مُجمِّع، أو تترجم مباشرة عند تنفيذها باستعمال مُفسِّر، تُنفَّذ بعض البرامج بطريقة هجينة تشمل التقنيتين السابقتين.
تشمل اللغات منخفضة المستوى لغات الآلة ولغات التجميع، وتكون كل لغة منها متخصصة بمعمارية فريدة لوحدة المعالجة المركزية في الحاسوب. وحدة المعالجة المركزية في معمارية آرم، الموجودة عادة في الهواتف الذكية لا يمكنها أن تفهم لغة الآلة المستعملة في معمارية إكس 86 الموجودة عادة في الحواسيب الشخصية.[ط] لم يمنع هذا تصميم معماريات حوسبة أخرى على مر تاريخ الحوسبة، وانتشارها انتشاراً واسعاً.
كتابة البرامج بلغة التجميع أسهل من كتابتها بلغة الآلة، ولكنها، مع ذلك، صعبة وكثيرة الأخطاء ومستهلكة للوقت. لذلك، فإن البرامج تكتب عادةً بلغات أكثر تجريداً تُسمَّى لغات البرمجة عالية المستوى. تُصرَّف البرامج المكتوبة بلغات البرمجة عالية المستوى إلى لغة الآلة مباشرةً أو مروراً بلغة تجميع، ويُسمَّى البرنامج الذي يُصرِّفها بالمُصِّرف.[ي] تكون اللغات عالية المستوى أقل ارتباطاً بالحاسوب الهدف الذي تعمل عليه مقارنةً بلغات التجميع، لذلك فمن الممكن استعمال مُصرِّفات متعددة لترجمة برنامج واحد إلى لغة الآلة لحواسيب مختلفة، يمكن مثلاً توفير لعبة فيديو ما على مشغلات ألعاب فيديو مختلفة باستعمال مُصرِّفات مختلفة تترجم النص البرمجي للعبة، المكتوب بلغة عالية المستوى، للغات آلة المُشغِّلات المطلوبة. طوَّرت جريس هوبر أول مُصرِّف للغة برمجة.[47]
تصميم البرامج
تصميم البرامج الصغيرة بسيط، ويتضمن تحليل المشكلة وجمع المدخلات ثم استعمال لغة البرمجة لتنفيذ الخوارزميات وكتابة الإجرائيات، ثم طباعة البيانات الناتجة على أداة الخرج.[48] تُستعمل ميزات مثل البرامج الفرعية والتوثيق عندما تصبح المشكلة أعقد وأكبر حجماً، وقد تستعمل أنماط برمجة أخرى مثل برمجة كائنية التوجه.[49] تتألف البرامج الكبيرة من آلاف السطور، وتحتاج إلى منهج عمل متناسق لتطويرها.[50] إن مهمة إنتاج برمجيات مقبولة ذات موثوقية عالية في إطار زمني محدد ما تزال صعبة المنال. وهي موضوع بحث يدرسه اختصاص هندسة البرمجيات وتحدٍ تسعى شركات البرمجة للتغلب عليه.[51]
توجد الأخطاء البرمجية في البرامج، وقد تكون حميدة لا أثر لها على عمل البرنامج، أو قد تكون ذات أثر محدود، ولكنها قد تؤدي أيضاً إلى تجمَّد[الإنجليزية] البرنامج وجعله لا يستجيب للمستخدمين، كما قد تؤدي إلى فشل البرنامج كاملاً أو انهياره.[وب-إنج 21] قد يستغل بعض قراصنة الحاسوب الأخطاء الحميدة لتطوير برمجيات استغلال وتعطيل التنفيذ السليم لتنفيذ البرنامج. ليست الأخطاء وليدة الحواسيب التي تنفِّذ فقط التعليمات التي تُعطى لها، لكنها نتيجة لخطأ ارتكبه المبرمج عند كتابة البرنامج.[يا] الكلمة الإنكليزي التي تدل على الخطأ البرمجي هي (بالإنجليزية: Bug)، وهي تدل على كلمة حشرة أيضاً. يُنسَب الاستعمال الأول لهذه الكلمة في سياق الحوسبة للدلالة على الخطأ البرمجي لعالمة الحاسوب الأمريكية غريس هوبر، التي طوَّرت مُصرِّف لغات البرمجة الأول، فقد عثرت على عثة ميتة محشورة في مُرحِّل في الإصدار الثاني من حاسوب هارفرد في سبتمبر 1947م.[وب-إنج 22]
استعملت الحواسيب لنقل المعلومات بين مواقع عديدة منذ خمسينيات القرن العشرين. كانت بيئة الأرض نصف الآلية[الإنجليزية] المعروفة اختصاراً بالاسم الرمزي ساج (بالإنجليزية: SAGE) المثال الأول لنظام شبكة بيانات، وكان الأساس الذي بُنيت عليه عدد من أنظمة التشبيك التجارية لاحقاً مثل بيئة أبحاث الأعمال نصف الآلية المعروفة[الإنجليزية] اختصاراً بالاسم سِيبر (بالإنجليزية: Sabre).[52] بدأ مهندسو الحاسوب في مراكز الأبحاث في الولايات المتحدة بربط شبكاتهم المحلية معاً باستعمال تقانات الاتصال البُعدي، وموَّلت وكالة مشاريع أبحاث الدفاع المتقدمة، التي كانت تُعرَف بالاسم المُختصر أربا (بالإنجليزية: ARPA) هذه الجهود، وبُنيت شبكة الحاسوب أربانت نتيجة لذلك.[53] ثم شاعت التقانات التي استعملت لبناء أربانت خارج النطاقين البحثي والعسكري، وتطورت لتكون الأساس للإنترنت.
ساهم صعود شبكات البيانات في إعادة تعريف طبيعة الحاسوب وحدوده وإمكانياته. عُدِّلت أنظمة التشغيل والبرامج لتسمح بالنفاذ إلى موارد موجودة في حواسيب أخرى على الشبكة أو لتخزين البيانات وقراءتها من مخدِّمات متصلة مع الشبكة. كان انتشار هذه التقنيات محدوداً في البداية بالعاملين في البيئات المتطورة عالية التقانة، ولكن انتشار التطبيقات البسيطة التي لا تتطلب معرفة تقنية متقدمة مثل البريد الإلكترونية وخدمات الوب بالإضافة لتطوير تقنيات شبكة سريعة مثل الإثرنتوخط المشترك الرقمي غير المتناظر جعل استعمال الحواسيب في بيئات العمل كلها أمراً لا مفر منه بدءاً من تسعينيات القرن العشرين، وأصبح اتصال الحواسيب مع الإنترنت لنقل البيانات في العمل والمنزل أمراً واسع الانتشار، وتطورت في الفترة نفسها شبكات البيانات اللاسلكية مثل واي فايوشبكات الاتصال الخلوية؛ مما سمح باتصال أسهل مع الإنترنت.
المستقبل
ليس بالضرورة أن يكون الحاسوب مكوناً من عناصر إلكترونية ولا أن يحتوي على معالج أو ذاكرة وصول عشوائي أو قرص صلب. مع أن الاستعمال الدارج لكلمة الحاسوب مرتبط بالحاسوب الشخصي الإلكتروني، إلا أن تعريف الحاسوب هو: "أي آلة تقوم بثلاث مهمات: تتلقى مدخلات ذات بنية مُعرَّفة، وتعالجها وفق قواعد معرَّفة سلفاً، وتولَّد النتائج كمخرجات"[عر 15]، حسب هذا التعريف، فإن أي جهاز يعالج المعلومات يمكن أن يُصنَّف على أنه حاسوب.
يحل الحاسوب المشكلات التي تواجهه متبعاً الطريقة التي بُرمِج بها بحذافيرها، ومن غير اهتمام بوجود طرائق أخرى أكثر كفاءة أو حلولًا بديلة أو اختصارات ممكنة أو حتى أخطاء في النص البرمجي. لكن الذكاء الصنعيوتعلُّم الآلة سوف يغيران هذا الجانب، فهما يسمحان للحاسوب بالتعلم من التجارب السابقة والتكيف مع الظروف المحيطة وطرح حلول إبداعية جديدة غير موجودة في البرامج التي ينفذها.
المهن والمنظمات
أصبح الحاسوب جزءاً من سوق العمل، فعُدِّل بعضٌ من الاختصاصات القديمة لتشمل الحاسوب أو أحد جوانبه وتدرسها، في حين ظهرت مهن وأعمال جديدة مرتبطة بالحاسوب وتقانته، لم تكن موجودة قبله.
تستعمل الحواسيب في تبادل المعلومات بين أطراف مختلفة، لذلك وجدت حاجة لاستعمال مواصفات موحدة متفق عليها، لذلك تهتم مجموعة من منظمات المعايير ومجموعات مهنية أو منتديات، بعضها رسمي وبعضها غير رسمي، بوضع معايير مرتبطة بالحاسوب وتطبيقاته.
^لا يوجد دليل على الأصل الهيليني للأسطرلاب الكروي، وتشير الأدلة المتوفرة إلى أنه قد يكون صناعة إسلامية مبكرة أصيلة من غير جذورٍ إغريقية.[6]
^ كانت مساحة نردة إنتل 4004، التي صُنعت سنة 1971م، 12 ملم2 وضمت 2300 ترانزستور. للمقارنة، مساحة نردة بنتيوم برو هي 306 ملم2 وتضم 5.5 مليون ترانزستور.[37]
^ الغالبية العظمى من مجموعات التعليمات بطول 64 بتاً هي توسيعات لمجموعات مبكرة. على سبيل المثال، فإن مجموعات التعليمات المذكورة في هذا البند في الجدول، ما خلا مجموعة ألفا، وُجِدت أولاً بطول 32 بتاً.
^ لم يكن تفسير التعليمات هو دور وحدة التحكم الوحيد في الماضي كما هو الحال في الحواسيب الحديثة. كان لدى بعض من الحواسب تعليمات تُفسَّر جزئياً بوحدة التحكم على أن يُستكمل التفسير بجهاز آخر لاحقاً. مثلاً استعمل الحاسوب الإلكتروني الذاتي ذو المتغير المنفصل[الإنجليزية]، الشهير بالاسم الرمزي إدفاك، وحدة تحكم تُفسِّر أربعة تعليمات فقط. أما التعليمات الحسابية، فكانت تُمرَّر إلى وحدة الحساب فيه حيث يُفك ترميزها هناك.
^تشغل التعليمات عادةً أكثر من عنوان ذاكرة، لذلك فإن عداد البرنامج لا يزيد عادةً بمقدار واحد، بل بعدد مواقع الذاكرة اللازمة لتخزين تعليمة واحدة
^هذا الوصف مُبسَّط وبعض الخطوات فيه قد تنفذ على التوازي أو بترتيب مختلف حسب نوع وحدة المعالجة المركزية.
^يمكن إعادة الكتابة في الذاكرة الومضية لعدد محدود من المرات قبل تلفها، لذلك تكون فائدتها قليلة في حالات الوصول المكثَّف.[41]
^من الشائع أيضًا تجميع حواسيب فائقة من مكونات الأجهزة الاستهلاكية الرخيصة؛ وعادةً ما تكون حواسيب فردية متصلة بشبكة. يمكن لهذه الحواسيب التي توصف أيضاً بأنها عناقيد، أن تؤدي أداءً يرقى، في كثير من الأحيان، لأداء حاسوب فائق، ولكن بتكلفة أقل بكثير من التصاميم المخصصة.
^يوجد في بعض الحالات لغات آلة متوافقة مع معماريات حوسبة مختلفة. معمارية
إكس86-64 مثلاً متوافقة مع معالج صغري مثل آثلون 64، وفي الوقت نفسه مع معالجات إنتل مزدوجة النواة بالإضافة لمعالجات أقدم مثل بنتيوموإنتل 80486. أما الحواسيب التجارية المبكرة، فتنزع لغات الآلة فيها لتكون مخصصة لمعماريتها وحدها، ولا تتوافق مع معماريات أخرى.
^يُمكِن أن تُفسَّر اللغات عالية المستوى أحياناً بدلاً من أن تُصرَّف. وهذا يعني ترجمتها إلى لغة الآلة مباشرة في أثناء التنفيذ باستعمار برنامج آخر يُسمَّى المُفسِّر.
^لا يمكن تعميم كون الأخطاء البرمجية مقتصرة على أخطاء المبرمجين وحدهم، قد يُخفِق عتاد الحاسوب، أو قد يحوي مشكلة في بنيته تؤدي إلى ظهور نتائج غير متوقعة في حالات متعددة. مثلاً سبب خطأ بنتيوم عند القسمة مع فاصلة متحركة[الإنجليزية] في معالج بنتيوم في أوائل تسعينيات القرن العشرين بظهور نتائج غير دقيقة عند قسمة الأعداد ذات الفاصلة المتحركة. كان سبب هذه المشكلة عيباً في تصميم المعالج الصغري.
^Joanne Allison; Kulwinder Gill (16 Nov 2008). "Introduction to the Mark 1". University of Manchester (بالإنجليزية). Archived from the original on 2008-10-26. Retrieved 2008-10-26.
^Clay Shields (31 May 2004). "Why do computers crash?". Scientific Aamerican (بالإنجليزية). Archived from the original on 2018-05-01. Retrieved 2024-06-15.
Silvio Bedini; Francis R. Maddison (1966). "Mechanical Universe: The Astrarium of Giovanni de' Dondi". Transactions of the American Philosophical Society (بالإنجليزية). 56 (5): 1–69. DOI:10.2307/1006002. ISSN:0065-9746. JSTOR:1006002. OCLC:914240. QID:Q55921922.
B. E. Deal (1998). "Highlights of silicon thermal oxidation technology". Silicon materials science and technology: proceedings of the Eighth International Symposium on Silicon Materials Science and Technology (بالإنجليزية). 98–1: 179–199. ISBN:978-1-56677-193-1. QID:Q126850376.
Gaston Wiet; Jean Devisse (1975), History of Mankind: The Great medieval Civilisations (بالإنجليزية), London: Allen & Unwin, vol. 3, OCLC:1270943078, QID:Q126678691
Agatha C. Hughes; Thomas Parke Hughes (2000). Systems, experts, and computers: the systems approach in management and engineering, World War II and after. Dibner Institute studies in the history of science and technology (بالإنجليزية). Cambridge: The MIT Press. ISBN:978-0-262-27587-3. OCLC:51938329. QID:Q126811036.
Fuat Sezgin (2004). Science and technology in Islam: Catalogue of the exhibition of the Institute for the History of Arabic-Islamic Science (بالإنجليزية). Frankfurt: Institute for the History of Arabic-Islamic Science. ISBN:978-3-8298-0079-2. OCLC:58048850. QID:Q126678735.
Arjun N. Saxena (2009). Invention of integrated circuits: untold important facts. International series on advances in solid state electronics and technology (بالإنجليزية). Hackensack: World Scientific. ISBN:978-981-281-446-3. OCLC:555908412. QID:Q126736541.
Ronald J. Leach (2016). Introduction to software engineering. Chapman & Hall/CRC innovations in software engineering and software development (بالإنجليزية) (2nd ed.). Boca Raton: CRC Press. ISBN:978-1-4987-0528-8. OCLC:960211949. QID:Q126740398.
Sanford L. Moskowitz (2016). Advanced materials innovation: managing global technology in the 21st century (بالإنجليزية). New Jersey: Wiley. ISBN:978-0-470-50892-3. QID:Q126724537.
Robert Puers; Livio Baldi; Marcel Van de Voorde; Sebastiaan E. Van Nooten (2017). Nanoelectronics: Materials, Devices, Applications. Applications of Nanotechnology Ser (بالإنجليزية). Newark: Wiley. ISBN:978-3-527-80071-1. OCLC:983743895. QID:Q126723646.