توجد أمثلة على أجهزة الحساب البدائية والتي تمثل الأسلاف الأوائل للحاسوب، منها abacu أو المعداد (أداة تستخدم الآن في تعليم الأطفال العد) Antikythera mechanism وهو جهاز يوناني قديم كان يستخدم لحساب حركات
الكواكب والتأريخ من سنة 87
ق.م. تقريباً. شهدت نهاية
العصور الوسطى نشاطًا أوروبيًا في علمي
الرياضيات والهندسة وكان
ويلهلم شيكارد الأول من عدد من العلماء الأوروبيين الذي أنشئ
آلة حاسبة ميكانيكية. تم تدوين abacus (المعداد) على أنه حاسوب بدائي وذلك لأنه كان يشبه الآلة الحاسبة في الماضي. في عام
1801 قام
جوزيف ماري جاكار بعمل تحسين للأشكال النولية الموجودة والتي تستخدم مجموعة متتالية من البطاقات الورقية المثقوبة وكأنها برنامج لنسج أشكال معقدة. والنتيجة كانت أن نول Jacquard لم يتم اعتباره حاسوبًا حقيقيًا ولكنه كان خطوة هامة في تطوير الحواسيب الرقمية الحديثة. كان
تشارلز باباج أول من فكر وصمم حاسوبًا مبرمجًا بالكامل وذلك في بداية عام
1820 ولكن بسبب مجموعة من الحدود
التقنية في ذلك الوقت والمحدودية المالية، وكذلك عدم القدرة على حل مشكلة الإصلاح غير الجيد في تصميمه فإن الجهاز لم يتم بناءه فعلياً في حياته. ظهرت عدد من التقنيات التي أثبتت فائدتها لاحقًا في الحوسبة، مثل البطاقة المثقوبة وأنبوب الصمام بنهاية
القرن التاسع عشر، ومعالجة البيانات أوتوماتيكيًا ذات التدرج الكبير باستخدام البطاقات المثقوبة صُنٍعت باستخدام آلات جدولة والتي صممها
هيرمان هولليريثإن نجاح الحواسيب القوية والمريحة بدأ في الثلاثينيات والأربعينات من القرن العشرين، وأضيفت -بالتدريج- المميزات الرئيسية في الحواسيب الحديثة مثل استخدام الإليكترونيات الرقمية (اخترع معظمها
كلود شانون عام
1937) والقدرة على البرمجة بطريقة أكثر سلاسة. إن تحديد نقطة واحدة خلال هذا المشوار على أنها "أول حاسوب اليكتروني رقمي" أمر صعب جدا.
من الإنجازات الأساسية، حاسوب Atanasoff-Berry 1937، وهي آلة ذات غرض مخصص والتي كانت تستخدم الحوسبة المقادة بالصمامات (أنبوب الصمام) والأرقام الثنائية والذاكرة المجددة. حاسب Colossus البريطاني السري (1944) والذي كان يملك قدرة محدودة على البرمجة ولكنه قدم جهازًا يستخدم الآلاف من الصمامات من الممكن أن يكون موثوقا وإعادة برمجته إلكترونيا. Harvard Mark I 1944 حاسوب إلكتروميكانيكي ذو تدرج كبير ولديه قدرة محدودة على البرمجة.
الحاسوب الأمريكي المبني على نظام العد العشري (1946-
ENIAC) وكان أول حاسوب إلكتروني ذو أغراض عامة ولكن في الأساس فإن بنيته غير سلسة مما يعني أن إعادة برمجته أساسيًا تتطلب إعادة توصيله. وآلات Z الخاصة بـ Konrad Zuse، مع الاليكتروميكانيكي Z3)1941) يكون أول آلة عاملة تقدم ميزة الحساب الاوتوماتيكي للأرقام الثنائية والقدرة على البرمجة بطريقة عملية وملائمة.
إن فريق العمل الذي قام بتطوير
ENIAC أدرك عيوب جهازه وجاء بتصميم أكثر مرونة وروعة والذي صار يعرف ببنية
Von Neumann (أو "بنية البرنامج المخزن"). أصبحت بنية البرنامج المخزن افتراضيا القاعدة لكل الحواسيب الحديثة. بدأ عدد من المشاريع لتطوير حاسوب يعتمد على بنية البرنامج المخزن في منتصف إلى آخر الأربعينات من القرن العشرين. إن أول حاسوب من هولاء تم الانتهاء منه في بريطانيا. أول هولاء الذي يعتبر أفضل وعامل كان ما يعرف بآلة التدرج الصغير التجريبية (Small-Scale Experimental Machine) ولكن EDSAC ربما كان أول نسخة عملية تم تطويرها.
إن تصميمات الحاسوب المقاد بأنبوب الصمام أصبحت قيد الاستخدام خلال الخمسينات من القرن العشرين، ولكن مع الوقت تم استبدالها بالحواسيب الترانزستورية حيث أنها أصغر وأسرع وأرخص وأكثر موثوقية، كل ذلك أتاح لها أن يتم إنتاجها على المستوي التجاري وذلك في الستينات من القرن العشرين. في سبعينات القرن العشرين، ساعد اختيار تكنولوجيا الدائرة المتكاملة في إنتاج الحواسيب بتكلفة قليلة كافية لأن تسمح للافراد بامتلاك حاسوب شخصي من الأنواع المعروفة حاليا...
كيف تعمل الحواسيب؟بينما تغيرت التقنيات المستخدمة في الحواسيب بصورة مثيرة منذ ظهور أوائل الحواسيب الإليكترونية متعددة الأغراض من أربعينات القرن العشرين، ما زال معظمها يستخدم بنية
البرنامج المخزن (يطلق عليها في بعض الأحيان بنية von Neumann). استطاع التصميم جعل الحاسوب العالمي حقيقة جزئيا.
و تصف هذه البنية الحاسوب في أربع أقسام رئيسية:
وهذه الأجزاء تتصل ببعضها عن طريق حزم من الاسلاك (تسمى "النواقل" BUS عندما تكون نفس الحزمة تدعم أكثر من مسار بيانات) و تكون في العادة مقاسة بمؤقت أو ساعة (مع أن الأحداث الأخرى تستطيع أن تقود دائرة التحكم).
فكريا، من الممكن رؤية ذاكرة الحاسوب كأنها قائمة من الخلايا. كل خلية لها عنوان مرقم وتستطيع الخلية تخزين كمية قليلة وثابتة من المعلومات. هذه المعلومات من الممكن أن تكون إما تعليمة (أمر) والتي تخبر الحاسب بما يجب أن يفعله وإما أن تكون بيانات وهي المعلومات التي يقوم الحاسب بمعالجتها باستخدام الأوامر التي تم وضعها على الذاكرة. عموما، يمكن استخدام أي خلية لتخزين إما أوامر أو بيانات.
وحدة الحساب والمنطق هي تعتبر قلب الحاسوب. وهي قادرة على تنفيذ نوعين من العمليات الأساسية.
- الأولى هي العمليات الحسابية، جمع أو طرح رقمين سويا. إن مجموعة العمليات الحسابية قد تكون محدودة جدا، في الواقع، بعض التصميمات لا تدعم عمليتي الضرب والقسمة بطريقة مباشرة (عوضا عن الدعم المباشر، يستطيع المستخدمون دعم عمليتي الضرب والقسمة وذلك من خلال برامج تقوم بمعالجات متعددة للجمع والطرح والأرقام الأخرى).
- القسم الثاني من عمليات وحدة الحساب والمنطق هي عمليات المقارنة بإدخال رقمين، تقوم هذه الوحدة بالتحقق من تساوي أو عدم تساوي الرقمين وتحديد أي الرقمين هو الأكبر. وهي تسمى العملية المنطقية وهي مهمة في البرمجة.
ويقوم
نظام التشغيل يجمع مكونات الحاسوب مع بعضها. حيث يقوم بقراءة الأوامر والبيانات من الذاكرة أو من أجهزة الإدخال والإخراج، ليتم تنفيدها من قبل المعالج. و كذلك فك شفرة الأوامر، بتغذية وحدة الحساب والمنطق بالمدخلات الصحيحة طبقا للأوامر، حيث يخبر وحدة الحساب والمنطق بالعملية الواجب تنفيذها على تلك المدخلات وتعيد إرسال النتائج إلى الذاكرة أو إلى أجهزة الإدخال والإخراج.
يعتبر العداد Counter من المكونات الرئيسية في نظام التحكم والذي يقوم بمتابعة عنوان الأمر الحالي، في العادة تزداد قيمة العنوان في كل مرة يتم فيها تنفيذ الأمر إلا إذا أشار الأمر نفسه إلى أن الأمر التالي يجب أن يكون في عنوان آخر (ذلك يسمح للحاسوب بتنفيذ نفس الأوامر بطريقة متكررة).
بدءا من ثمانينات القرن العشرين، صار كل من وحدة الحساب والمنطق ووحدة التحكم (يسميان مجتمعان بوحدة المعالجة المركزية)(
CPU)المعتاد وجودهما في دائرة متكاملة واحدة تسمى
المعالج الصغري (المايكروبروسيسور).
آلية عمل الحاسوبإن آلية عمل أي حاسوب في الأساس تكون واضحة تمامًا. في المعتاد، في كل دورة معالجة Processing Circle يقوم الحاسوب بجلب الأوامر والبيانات من الذاكرة الخاصة به. يتم تنفيذ الأوامر، يتم تخزين النتائج، ثم يتم جلب الأمر التالي. هذا الإجراء يتكرر حتى تتم مقابلة أمر التوقف Halt.
إن الأوامر التي تقوم وحدة التحكم بتفسيرها وتقوم وحدة الحساب والمنطق بتنفيذها يكون عددها محدود، ومحددة بدقة وتكون عمليات بسيطة جدا. بصفة عامة، فإنها تندرج ضمن واحد أو أكثر من أربعة أقسام:
- نقل بيانات من مكان لاخر (مثال على ذلك أمر "يخبر" وحدة المعالجة المركزية أن "تنسخ محتويات الخلية 5 من الذاكرة ووضع النسخة في الخلية 10")
- تنفيذ العمليات الحسابية والمنطقية على بيانات (على سبيل المثال "قم بإضافة محتويات الخلية 7 إلى محتويات الخلية 13 وضع الناتج في الخلية 20")
- اختبار حالة البيانات ("لو أن محتويات الخلية 999 هي 0 فإن الأمر التالي يكون موجود في الخلية 30")
- تغيير تسلسل العمليات (يغير المثال السابق تسلسل العمليات ولكن الاوامر مثل "الامر التالي يوجد في الخلية 100" تكون أيضا قياسية).
إن الأوامر تكون ممثلة مثل البيانات في صورة
شفرة ثنائية (نظام للعد قاعدته الرقم 2). على سبيل المثال، الشفرة لنوع من أنواع عملية "نسخ" في المعالجات الدقيقة من نوع Intel x86 هي 10110000. إن الأمر الجزئي يكون معدًا بحيث أن حاسوبًا معينًا يدعم ما يعرف ب
لغة الآلة. إن استخدام لغة الآلة سابقة التبسيط جعلها أكثر سهولة لتشغيل برامج موجودة على آلة جديدة: وهكذا في الأسواق حيثما تكون أتاحة البرامج التجارية أمرا ضروريا فإن المزودين يتفقون على واحد أو عدد صغير جدا من لغات الآلة البارزة.
إن الحواسيب الأكبر مثل (
الخادوم) تختلف عن الأنواع السابقة في أمر هام هو أن بدلا من وجود وحدة معالجة مركزية واحدة فإنه في الغالب يوجد أكثر من وحدة. غالبا ما تمتلك هذه الحواسيب بنيات غير عادية بدرجة كبيرة وهذه البنيات مختلفة بشكل ملحوظ عن بنية البرنامج المخزن الأساسية وفي بعض الأحيان تحتوي على الآلاف من وحدة المعالجة المركزية، ولكن مثل هذه التصميمات تصبح ذات فائدة فقط لأغراض متخصصة.
أجهزة الإدخال والإخراجI/O (اختصارا لـ Input/Output) هو مصطلح عام يطلق على الأجهزة التي ترسل المعلومات من العالم الخارجي وتلك التي تعيد نتائج الحسابات. هذه النتائج يمكن إما أن تظهر مباشرة للمستخدم أو أن يتم إرسالها إلى آلة أخرى والتي يكون تحكمها مخصص للحاسب.
الجيل الأول من الحواسيب كان مجهزا بمدى محدود جدا من أجهزة الإدخال. مثل قارئ الكروت المثقبة أو الاشياء المماثلة التي أستخدمت لإدخال الأوامر والبيانات في ذاكرة الحاسوب، و كذلك استخدم بعض أنواع الطابعات وهو في العادة عبارة عن teletype معدل لتسجيل النتائج. وعلى مر السنين، أجهزة أخرى تمت إضافتها. بالنسبة إلى الحاسبات الشخصية، فان
لوحة المفاتيح و
الفأرة هما الطريقتين الرئيسيتين المستخدمتين لإدخال المعلومات مباشرة إلى الحاسب، والشاشة هي الطريقة الرئيسية لإظهار المعلومات للمستخدم وذلك بالرغم من أن الطابعات والسماعات منتشرة أيضا. توجد تشكيلة ضخمة من أجهزة الإدخال الأخرى لإدخال أنواع أخرى من المدخلات. مثال على ذلك هو الكاميرا الرقمية حيث تستخدم لإدخال معلومات مرئية.
من الممكن توصيل مجموعة ضخمة ومتنوعة من الأجهزة الإلكترونية إلى الحاسوب لتعمل كأجهزة إدخال وإخراج.بشرط توفر نظام لتعرفها على الحاسوب ويسمى
المشغل (حاسوب) أو Driver
إن برامج الحاسوب ببساطة هي عبارة عن قائمة من الأوامر ينفذها الحاسوب، وتتراوح هذه الأوامر (
التعليمات) بين بعض الأوامر القليلة التي تؤدي مهمة بسيطة إلى قائمة أوامر أكثر تعقيدًا والتي من الممكن أن تحتوي جداول من البيانات. العديد من برامج الحاسوب تحتوي الملايين من الأوامر والعديد من هذه الأوامر يتم تنفيذها بصورة متكررة. إن الحاسوب الشخصي الحديث النموذجي يمكنه تنفيذ حوالي 3 مليار أمر في الثانية. إن الحواسيب لم تكتسب قدراتها غير العادية من خلال قدرتها على تنفيذ الأوامر المعقدة. ولكن بالأحرى فإنها تقوم بالملايين من الأوامر المرتبة عن طريق أشخاص يعرفون ب
المبرمجين.
عادة، فإن
المبرمجين لا يكتبون الأوامر إلى الحاسوب مباشرة بلغة الآلة.إن
البرمجة بهذه اللغة عملية مملة وصعبة جدًا وتميل للخطأ بصورة كبيرة مما يجعل
المبرمجين غير قادرين على الإنتاج بصورة كبيرة. و عوضا عن ذلك، يقوم
المبرمجون بوصف العملية المرادة في
لغة برمجة "عالية المستوى" مثل لغة
باسكال أو
لغة سي أو لغات خاصة بتطبيقات الإنترنت مثل
جافا والتي يتم ترجمتها أوتوماتيكيا بعد ذلك إلى لغة الآلة عن طريق برامج حاسوب مخصصة (
مفسرات و
مترجم) يدعى بالانجليزية كومبايلر compiler. بعض
لغات البرمجة ترسم خريطة قريبة جدًا من لغة الآلة مثل لغة التجميع
Assembly (لغات برمجة منخفضة المستوى) و على الجانب الآخر فإن
لغات البرمجة مثل
البرولوج Prolog مبنية على قواعد مجردة ومفصولة عن تفصيلات العملية الحقيقية للآلة (لغات برمجة عالية المستوى). إن اللغة المختارة لمهمة جزئية تعتمد على طبيعة هذه المهمة والمهارة التي يمتلكها
المبرمجون وتوافر الأدوات وعادة احتياجات المستهلكين (على سبيل المثال، فإن المشاريع الخاصة بالاستخدامات الحربية الأمريكية في الغالب يجب أن تكون مبرمجة ب
لغة Ada).
إن الكيان المعنوي للحاسوب
Computer software (الأجزاء غير الملموسة بالحاسوب) هو مصطلح بديل
لبرامج الحاسوب (computer programs): وهي عبارة أكثر شمولية وتتكون من كل المواد الهامة المصاحبة
للبرنامج والتي يحتاجها لأداء المهام المهمة على سبيل المثال فإن لعبة الفيديو لا تحتوي فقط على البرنامج نفسه ولكن تحتوي أيضا على بيانات تمثل الصور والاصوات والمواد الأخرى المطلوبة لعمل البيئة التخيلية للعبة. تطبيق الحاسوب هو قطعة من برامج الحاسوب التي تقدم للعديد من المستخدمين غالبا في سوق تجزئة. من الأمثلة الحديثة المطبقة تماما هي الأدوات المكتبية office suite وهي عبارة عن برامج ذات صفات مشتركة لأداء مهام المكتب الشائعة.
بالذهاب من القدرات شديدة البساطة الخاصة بأمر
لغة آلة واحد إلى القدرات الضخمة للبرامج التطبيقية يعني أن الكثير من برامج الحاسوب تكون كبيرةً جدًا ومعقدةً للغاية. من الأمثلة على ذلك
نظام التشغيل ويندوز إكس بي والذي يتكون من حوالي 40 مليون سطر من شفرة الحاسوب في لغة برمجة
C++ يوجد العديد من المشاريع التي تكون أكبر هدفا، يقوم بإنشائه فرق كبيرة من
المبرمجين. إن إدارة هذه المشاريع شديدة التعقيد هو مفتاح إمكانية تنفيذ هذه المشاريع:
لغات البرمجة وتطبيقات البرمجة تسمح بتقسيم المهمة إلى مهام فرعية أصغر فأصغر حتى تصبح في قدرات
مبرمج واحد وفي وقت مناسب.
كما أن هناك بعض النظم الأكثر تطوراً والتي تستخدم في الحواسيب الضخمة والحواسيب الحساسة كمخدمات الويب وغيرها، وهي الأنظمة المشتقة من نظام
UNIX، مثل RedHat (
ريد هات) و
Sun Solaris، وقد تطورت لتصلح للاستخدام المكتبي، وذلك بتوفير واجهات رسومية يمكن أن تتفوق أحياناً على أنظمة
Microsoft Windows، حيث توفر تأثيرات تتفوق على تلك الموجودة في
Windows 7 كما هو الحال في
Ubuntu، كما تم استخدام أنظمة UNIX في بعض الأنظمة الخاصة بالموبايل، وتتميزهذه الأنظمة بالوثوقية، حيث يمكن أن تبقى قيد التشغيل حتى عشر سنوات متواصلة أو أكثر بدون أي توقف، كما أنها لا تأثر بما يسمى
فيروسات، وتقدم أداء عالي حتى على الأجهزة الضعيفة إلى حد ما.
لكن مع هذا فإن هذه الأنظمة عير مستخدمة بشكل شخصي في عامنا العربي، وذلك لعدم توافق كل البرامج التي تعمل على أنظمة
Microsoft Windows معها، لكن معظم البرامج المكتبية يوجد بديل عنها كبرامج عرض الصوت والفيديو والبرامج المكتبية وبرامج تصفح الإنترنت، وكلها برامج مجانية غالباً تكون متوفرة مع النظام.
إن عملية تطوير البرامج لا زالت بطيئة ولا يمكن التنبؤ بها وتميل للخطأ: إن نظم هندسة البرامج حاولت وقد نجحت جزئيا في جعل العملية أكثر سرعة وإنتاجية وتحسين جودة المنتج النهائي.
المكتبات وأنظمة التشغيلبعد فترة وجيزة من تطوير الحاسوب، تم اكتشاف أن هناك مهام معينة تكون مطلوبة في برامج مختلفة؛ إن مثالا قديما على ذلك كان حساب بعض
الدوال الرياضية الأساسية. ومن أجل الفعالية، فقد تم جمع نسخ نموذجية من تلك الدوال ووضعها في مكتبات تكون متاحة لمن يحتاجها. إن مجموعة المهام الشائعة بعض الشئ والتي تتعلق بمعالجة كتل البيانات الخاصة "بالتحدث" إلى أجهزة الإدخال والإخراج المختلفة، ولذلك تم تطوير مكتبات لها سريعا.
بانتهاء الستينات من القرن العشرين، ومع الاستخدام الصناعي الواسع للحاسوب في العديد من الأغراض، أصبح من الشائع استخدامه لإنجاز العديد من الوظائف في المؤسسات. بعد ذلك بفترة وجيزة أصبح متاحا وجود برامج خاصة لتوقيت وتنفيذ تلك المهام العديدة. إن مجموع كل من إدارة
"الأجزاء الصلبة" وتوقيت المهام أصبح معروفا باسم
نظام التشغيل؛ من الأمثلة القديمة على هذا النوع من أنظمة التشغيل القديمة كان OS/360 الخاص بـ
IBM.
إن التطوير الرئيسي التالي في أنظمة التشغيل كان timesharing - وفكرته تعتمد على أن عددا من المستخدمين بإمكانهم استخدام الآلة في وقت واحد وذلك عن طريق الاحتفاظ بكل برامجهم في الذاكرة وتنفيذ برنامج كل مستخدم لمدة قصيرة وبذلك يصبح وكأن كل مستخدم يملك كل منهم حاسوبًا خاصًا به. إن مثل هذا التطوير يتطلب من نظام التشغيل بأن يقدم لكل برامج المستخدمين "آلة تخيلية" وذلك لمنع برنامج المستخدم الواحد من التداخل مع البرامج الأخرى (بالصدفة أو التصميم). إن مدى الأجهزة التي يجب أن تتعامل معها نظم التشغيل قد تمدد؛ من الأمثلة الملاحظة كان القرص الصلب؛ إن فكرة الملفات الفردية والترتيب البنائي المنظم للادلة "directories" (حاليا يطلق عليها في الغالب مجلدات "folder") قد سهلت وبشكل كبير استخدام هذه الأجهزة للتخزين الدائم. من الأمثلة الحديثة المطبقة تماما هي الأدوات المكتبية office suite وهي عبارة عن برامج ذات صفات مشتركة لأداء مهام المكتب الشائعة. إن متحكمات الوصول الآمن سمحت لمستخدمي الحاسوب بالوصول فقط إلى الملفات والأدلة والبرامج التي لديهم تصريح باستخدامها كانت أيضًا شائعة.
ربما تكون آخر إضافة لنظام التشغيل كانت عبارة عن أدوات تزود المستخدم بواجهة مستخدم رسومية معيارية. بينما كانت هناك بعض الأسباب التقنية لضرورة ربط واجهة المستخدم الرسومية (
GUI) مع باقي أجزاء نظام التشغيل، فقد سمح ذلك لبائع نظام التشغيل بجعل كل البرامج الموجهة لنظام تشغيله تمتلك نفس الواجهة.
خارج هذه المهام الداخلية "core"، فإن نظام التشغيل غالبًا ما يكون مزودًا بمجموعة من الأدوات الأخرى، بعض منها ربما يملك اتصالًا ضئيلًا بهذه المهام الداخلية الأصلية ولكن وجد أنها مفيدة لعدد كافي من المستهلكين مما جعل المنتجين بضيفونها، فعلى سبيل المثال
ماك أو.إس عشرة يقدم مع تطبيق لتحرير الفيديو الرقمي.
نظم تشغيل الحواسيب الأصغر ربما لا تقدم كل هذه المهام. نظم التشغيل للمايكروكمبيوتر القديم ذي الذاكرة وقدرات المعالجة المحدودتين كانت لا تقدم كل المهام، والحواسيب المدمجة دائما إما تملك نظم تشغيل متخصصة أو لا تملك نظام تشغيل بالكلية، مع برامجه التطبيقية المتخصصة والتي تؤدي المهام التي من الممكن أن تعود بطريقة أخرى إلى نظام التشغيل.