الحاسوب أو الحاسب، أو الكمبيوتر هي كلها ألفاظ تشير إلى جهاز إلكتروني يتعامل مع البيانات، و يقوم بمعالجتها وفقاً لتعليمات محددة -برامج- و يخرج المعلومات.تتعدد أنواع الحواسيب من حيث طريقة عملها وحجمها. لا يمكن القول بأن الحاسوب هو اختراع بحد ذاته لأنه كان نتاج الكثير من الابتكارات العلمية و التطبيقات الرياضية. الحاسبات متنوعة، في الواقع إنها آلات معالجة بيانات عالمية . طبقا لفرض Church–Turing فإن حاسب له قدرة ذات حد أدنى معين يكون ببساطة قادر على إنجاز المهام الخاصة بأي حاسب آخر، بدءاً من المساعد الرقمي الشخصي إلى الحاسوب الفائق، طالما أن الوقت وسعة الذاكرة ليست في الاعتبار. لذلك فإن التصميمات المتماثلة من الحاسب من الممكن أن تضبط من أجل مهام تتراوح بين معالجة حسابات موظفي الشركات والتحكم في المركبات الفضائية بدون طيار. و بسبب التطور التكنولوجي فإن الحاسبات الاليكترونية الحديثة بشكل جبري تكون أكثر قدرة من تلك التي من الأجيال السابقة (ظاهرة موصوفة و مشروحة جزئيا بقانون مور).
تأخذ الحاسبات أشكالا ملموسة (فيزيائية) متعددة. لقد كانت الحاسبات الاليكترونية البدائية في حجم حجرة كبيرة وهذه الحاسبات الضخمة-الحواسيب الفائقة- ما زالت موجودة و ذلك لأداء الحسابات العلمية المتخصصة, و كذلك من أجل متطلبات إجراء المعالجة الخاصة بالشركات الكبيرة و غالباً ما يطلق عليها حواسيب الإطار الرئيسي mainframes. إن الحاسبات الاصغر و المستخدمة شخصياً و التي يطلق عليها الحاسبات الشخصية، و المعادل المتنقل لها والذي يسمى بالحاسب المحمول تعد أدوات معالجة معلومات و اتصالات كاملة، و هي أيضا ما يعتقده الغالبية العظمى من غير الخبراء لما يعرف بالحاسب. و مع ذلك فإن أكثر أشكال الحاسب شيوعاً واستخداماً هذه الأيام هي الحاسبات المدمجة و هي حاسبات صغيرة تستخدم للتحكم بجهاز آخر. تستطيع الحاسبات المدمجة التحكم في اجهزة تبدأ من الطائرة المقاتلة إلى الكاميرات الرقمية.
تاريخ الحاسوب
أساساً يعبر مصطلح "حاسب" عن الشخص الذي يقوم بالحسابات الرقمية و غالبا ما يكون ذلك بمساعدة جهاز حساب ميكانيكي. يوجد أمثلة على أجهزة الحساب البدائية تلك و التي تمثل الأسلاف الأوائل للكمبيوتر ، منها abacus أو المعداد (أداة تستخدم الآن في تعليم الاطفال العد) و Antikythera mechanism وهو جهاز يوناني قديم كان يستخدم لحساب حركات الكواكب و التأريخ من سنة 87 قبل الميلاد تقريباً. شهدت نهاية العصور الوسطى نشاطاً أوروبياً في علمي الرياضيات والهندسة وكان Wilhelm Schickard (1623) الأول من عدد من العلماء الاوربيين الذي انشاء آلة حاسبة ميكانيكية. تم تدوين abacus (المعداد) على أنه حاسب بدائي وذلك لانها كانت تشبه الالة الحاسبة في الماضي. في سنة 1801 قام Joseph Marie Jacquard بعمل تحسين للاشكال النولية الموجودة و التي تستخدم مجموعة متتالية من الكروت الورقية المثقبة و كأنها برنامج لنسج اشكال معقدة. والنتيجة كانت أن نول Jacquard لم يتم اعتباره وكأنه حاسب حقيقي ولكنه كان خطوة هامة في تطوير الحاسبات الرقمية الحديثة. كان تشارلز باباج أول من فكر و صمم حاسب مبرمج بالكامل و ذلك في بدايات سنة 1820 ولكن بسبب مجموعة من الحدود التكنولوجية في ذلك الوقت والمحدودية المالية، و كذلك عدم القدرة على حل مشكلة الإصلاح غير الجيد في تصميمه فإن الجهاز لم يتم بناءه فعلياً في حياته. عدد من التكنولوجيات و التي اثبتت فائدتها لاحقا في الحوسبة، مثل الكارت المثقب و أنبوبة الصمام ظهرت بنهاية القرن التاسع عشر، و معالجة البيانات أوتوماتيكيا ذات التدرج الكبير باستخدام الكروت المثقبة تم صنعها باستخدام آلات جدولة و التي تم تصميمها على يد Hermann Hollerith.
خلال النصف الاول من القرن العشرين، العديد من احتياجات الحسابات العلمية تزداد سوفسطائيا، الحاسبات التماثلية ذات الغرض المخصص والتي استخدمت نسخة ميكانيكية او كهربية مباشرة من المسألة كقاعدة في الحساب. اصبحت تلك الحاسبا غاية في الندرة بعد التطوير الذي طرأ على الحاسب الرقمي المبرمج.
إن نجاح اجهزة الحاسب القوية و المريحة بدأ في الثلاثينيات و الاربعينات من القرن العشرين، و بالتدريج إضافة المميزات الرئيسية في الحاسبات الحديثة مثل استخدام الاليكترونيات الرقمية (تم اختراع معظمها على يد Claude Shannon سنة 1937) و القدرة على البرمجة بطريقة أكثر سلاسة. إن تحديد نقطة واحدة خلال هذا المشوار على انها "أول حاسب اليكتروني رقمي" أمر صعب جدا. من الإنجازات الأساسية، حاسب Atanasoff-Berry (1937) ، و هي آلة ذات غرض مخصص و التي كانت تستخدم الحوسبة المقادة بالصمامات (أنبوبة الصمام) و الارقام الثنائية و الذاكرة المجددة. حاسب Colossus البريطاني السري (1944) و الذي كان يملك قدرة محدودة على البرمجة و لكنه قدم أن جهازا يستخدم الالاف من الصمامات من الممكن أن يكون موثوقا و إعادة برمجته اليكترونيا. Harvard Mark I حاسب إليكتروميكانيكي ذو التدرج الكبير لديه قدرة محدودة على البرمجة (1944). الحاسب الأمريكي المني على نظام العد العشري ENIAC (1946) و كان أول حاسب إليكتروني ذو أغراض عامة و لكن في الأساس فإن بنيته غير سلسة و الذي يعني أن أعادة برمجته أساسيا تتطلب إعادة توصيله. و آلات Z الخاصة بـ Konrad Zuse، مع الاليكتروميكانيكي Z3 (1941) يكون أول آلة عاملة تقدم ميزة الحساب الاوتوماتيكي للأرقام الثنائية و القدرة على البرمجة بطريقة عملية و ملائمة.
إن فريق العمل الذي قام بتطوير ENIAC أدرك عيوب جهازه و جاء بتصميم أكثر مرونة و روعة و الذي صار يعرف ببنية Von Neumann (أو "بنية البرنامج المخزن"). اصبحت بنية البرنامج المخزن افتراضيا القاعدة لكل الحاسبات الحديثة. بدأ عدد من المشاريع لتطوير حاسب يعتمد على بنية البرنامج المخزن في منتصف إلى آخر الأربعينات من القرن العشرين. إن أول حاسب من هولاء تم الانتهاء منه في بريطانيا. أول هولاء الذي يعتبر أفضل و عامل كان ما يعرف بآلة التدرج الصغير التجريبية (Small-Scale Experimental Machine) و لكن EDSAC ربما كان أول نسخة عملية تم تطويرها.
إن تصميمات الحاسب المقاد بأنبوبة الصمام أصبحت قيد الاستخدام خلال الخمسينات من القرن العشرين، و لكن مع الوقت تم استبدالها بالحاسبات الترانزستورية حيث أنها أصغر و أسرع و أرخص و أكثر معولية (وثوقية)، كل ذلك أتاح لها أن يتم إنتاجها على المستوي التجاري و ذلك في الستينات من القرن العشرين. في سبعينات القرن العشرين، ساعد اختيار تكنولوجيا الدائرة المتكاملة في إنتاج الحاسبات بتكلفة قليلة كافية لأن تسمح للافراد بامتلاك حاسب شخصي من الأنواع المعروفة حاليا.
كيف تعمل الحاسبات : بنية البرنامج المخزن
بينما تغيرت التقنيات المستخدمة في الحاسبات بصورة مثيرة منذ ظهور أوائل الحاسبات الإليكترونية متعددة الاغراض من أربعينات القرن العشرين ، ما زال معظمها يستخدم بنية البرنامج المخزن (يطلق عليها في بعض الاحيان بنية von Neumann). استطاع التصميم جعل الحاسب العالمي حقيقيا جزئيا.
تصف البنية حاسبا ذا أربع اقسام رئيسية: وحدة الحساب و المنطق (ALU) و دائرة التحكم و الذاكرة و أجهزة الإدخال و الإخراج (يعبر عنها بمصطلح I/O). هذه الاجزاء تتصل ببعضها عن طريق حزم من الاسلاك (تسمى "النواقل" عندما تكون نفس الحزمة تدعم أكثر من مسار بيانات) و تكون في العادة مساقة بمؤقت أو ساعة (مع أن الاحداث الاخرى تستطيع أن تقود دائرة التحكم).
فكريا، من الممكن رؤية ذاكرة الحاسب كأنها قائمة من الخلايا. كل خلية لها عنوان مرقم و تستطيع الخلية تخزين كمية قليلة و ثابتة من المعلومات. هذه المعلومات من الممكن أن تكون إما تعليمة (أمر) و التي تخبر الحاسب بما يجب أن يفعله و إما أن تكون بيانات و هي المعلومات التي يقوم الحاسب بمعالجتها باستخدام الأوامر التي تم وضعها على الذاكرة. عموما، يمكن استخدام اي خلية لتخزين إما أوامر أو بيانات.
إن وحدة الحساب و المنطق بالعديد من المعانى هي قلب الحاسب. إنها قادرة على تنفيذ نوعين من العمليات الأساسية. الأولى هي العمليات الحسابية، جمع أو طرح رقمين سويا. إن مجموعة العمليات الحسابية قد تكون محدودة جدا، في الواقع، بعض التصميمات لا تدعم عمليتي الضرب و القسمة بطريقة مباشرة (عوضا عن الدعم المباشر، يستطيع المستخدمون دعم عمليتي الضرب و القسمة و ذلك من خلال برامج تقوم بمعالجات متعددة للجمع و الطرح و الارقام الاخرى). القسم الثاني من عمليات وحدة الحساب و المنطق هي عمليات المقارنة: بإدخال رقمين، تقوم هذه الوحدة بالتحقق من تساوي او عدم تساوي الرقمين و تحديد أي الرقمين هو الأكبر.
إن أنظمة الإدخال و الاخراج هي الوسائل التي تجعل الحاسب يستقبل المعلومات من العالم الخارجي و يقرر النتائج ثانية إلى العالم. في الحاسب الشخصي العادي تتضمن أجهزة الإدخال مكونات مثل لوحة المفاتيح و الفأرة و تتضمن أجهزة الإخراج الشاشات و الطابعات و ما يشابهها، و لكن من الممكن توصيل مجموعة ضخمة و متنوعة من الأجهزة إلى الحاسب و تعمل كأجهزة إدخال و إخراج.
إن نظام التحكم يجمع كل ذلك. إن وظيفته هي قراءة الاوامر و البيانات من الذاكرة أو من أجهزة الإدخال و الإخراج، و كذلك فك شفرة الأوامر، تغذي وحدة الحساب و المنطق بالمدخلات الصحيحة طبقا للأوامر، تخبر وحدة الحساب و المنطق بالعملية الواجب تنفيذها على تلك المدخلات و تعيد إرسال النتائج إلى الذاكرة أو إلى أجهزة الإدخال و الإخراج. يعتبر العداد من المكونات الرئيسية في نظام التحكم و الذي يقوم بمتابعة عنوان الأمر الحالي، في العادة يزداد قيمة العنوان في كل مرة يتم فيها تنفيذ الأمر إلا إذا أشار الأمر نفسه إلى أن الأمر التالي يجب أن يكون في عنوان آخر (ذلك يسمح للحاسب بتنفيذ نفس الأوامر بطريقة متكررة).
بدءا من ثمانينات القرن العشرين، صار كل من وحدة الحساب و المنطق و وحدة التحكم (يسميان مجتمعان بوحدة المعالجة المركزية CPU) في المعتاد موجودين في دائرة متكاملة واحدة تسمى المعالج الدقيق (المايكروبروسيسور).
إن آلية عمل أي حاسب في الأساس تكون واضحة تماما. في المعتاد، في كل دورة زمنية يقوم الحاسب بجلب الأوامر و البيانات من الذاكرة الخاصة به. يتم تنفيذ الأوامر، يتم تخزين النتائج، ثم يتم جلب الأمر التالي. هذا الإجراء يتكرر حتى تتم مقابلة أمر التوقف.
إن الأوامر التي تقوم وحدة التحكم بتفسيرها و تقوم وحدة الحساب و المنطق بتنفيذها يكون عددها محدود، و محددة بدقة و تكون عمليات بسيطة جدا. بصفة عامة، فإنها تندرج ضمن واحد أو أكثر من أربعة اقسام:
- نقل بيانات من مكان لاخر (مثال على ذلك أمر "يخبر" وحدة المعالجة المركزية أن "تنسخ محتويات الخلية 5 من الذاكرة و وضع النسخة في الخلية 10")
- تنفيذ العمليات الحسابية و المنطقية على بيانات (على سبيل المثال "قم باضافة محتويات الخلية 7 إلى محتويات الخلية 13 و ضع الناتج في الخلية 20")
- اختبار حالة البيانات ("لو أن محتويات الخلية 999 هي 0 فإن الامر التالي يكون موجود في الخلية 30")
- تغيير تسلسل العمليات (يغير المثال السابق تسلسل العمليات و لكن الاوامر مثل "الامر التالي يوجد في الخلية 100" تكون ايضا قياسية).
إن الأوامر تكون ممثلة مثل البيانات في صورة شفرة ثنائية (نظام للعد قاعدته الرقم 2). على سبيل المثال، الشفرة لنوع من انواع عملية "نسخ" في المعالجات الدقيقة من نوع Intel x86 هي 10110000. إن الأمر الجزئي يكون معد بحيث أن حاسب معين يدعم ما يعرف بلغة آلة الحاسب. إن استخدام لغة الالة سابقة التبسيط جعلها أكثر سهولة لتشغيل برامج موجودة على آلة جديدة: و هكذا في الأسواق حيثما تكون إتاحة البرامج التجارية أمرا ضروريا فإن المزودين يتفقون على واحد أو عدد صغير جدا من لغات الآلة البارزة.
إن الحاسبات الأكبر مثل (minicomputers و mainframe computers و servers) تختلف عن الأنواع السابقة في أمر هام هو أن بدلا من وجود وحدة معالجة مركزية واحدة فإنه في الغالب يوجد أكثر من وحدة. غالبا ما تمتلك الحاسبات السوبر بنيات غير عادية بدرجة كبيرة و هذه البنيات مختلفة بشكل ملحوظ عن بنية البرنامج المخزن الاساسية و في بعض الاحيان تحتوي على الآلاف من وحدة المعالجة المركزية، و لكن مثل هذه التصميمات تصبح ذات فائدة فقط لأغراض متخصصة.
الدوائر الرقمية
إن التصميم الفكري أعلاه من الممكن أن يطبق باستخدام تشكيلة من التقنيات المختلفة، إن حاسب البرنامج المخزن يمكن تصميمه كليا من مكونات ميكانيكية مثل الحاسب الذي صممه Babbage. على الرغم من ذلك، تسمح الدوائر الرقمية بتطبيق منطق Boolean و الحساب باستخدام الأرقام الثنائية باستخدام الحاكمات (relays) بصورة أساسية و مفاتيح يتم التحكم فيها كهربيا. لقد بين لنا فرض Shannon الشهير كيف يمكن ترتيب الحاكمات (relays) لتشكيل و حدات تسمى بالبوابات المنطقية (logic gates) و تنفيذ العمليات البولينية البسيطة. و بعد ذلك، قرر الآخرون أن الانابيب الصمامية (أجهزة إليكترونية) من الممكن أن تستخدم عوضا عن الحاكمات. تستخدم الأنابيب الصمامية أساسا كمكبر إشارة في الراديو و التطبيقات الاخرى، و لكنها استخدمت في الإليكترونيات الرقمية كمفتاح سريع جدا: فعندما يتم توصيل الكهرباء لطرف من أطرافه يستطيع التيار المرور بين الطرفين الاخرين.
يمكن إنشاء دوائر رقمية لعمل مهام أكثر تعقيدا و ذلك باستخدام ترتيبات معينة للبوابات المنطقية، على سبيل المثال الجامع، و الذي يطبق في الإليكترونيات نفس الطريقة الفنية المستخدمة في الحاسبات.
أجهزة الإدخال و الإخراج
I/O (اختصارا لـ Input/Output) هو مصطلح عام يطلق على الأجهزة التي ترسل المعلومات من العالم الخارجي و تلك التي تعيد نتائج الحسابات. هذه النتائج يمكن إما أن تظهر مباشرة للمستخدم أو أن يتم إرسالها إلى آلة أخرى و التي يكون تحكمها مخصص للحاسب. على سبيل المثال في الإنسان الآلى (robot) يكون جهاز الإخراج الرئيسي لتحكم الحاسب هو الروبوت ذاته.
إن الجيل الأول من الحاسبات كان مجهزا بمدى محدود جدا من أجهزة الإدخال. إن قارئ الكروت المثقبة أو الاشياء المماثلة كانت تستخدم لإدخال الأوامر و البيانات في ذاكرة الحاسب، و كذلك استخدم بعض أنواع الطابعات و هو في العادة عبارة عن teletype معدل لتسجيل النتائج. و على مر السنين، أجهزة أخرى تمت إضافتها. بالنسبة إلى الحاسبات الشخصية على سبيل المثال، فان لوحة المفاتيح و الفأرة هما الطريقتين الرئيسيتين المستخدمتين لإدخال المعلومات مباشرة إلى الحاسب، و الشاشة هي الطريقة الرئيسية لإعادة إظهار المعلومات للمستخدم و ذلك بالرغم من أن الطابعات و السماعات منتشرة أيضا. يوجد تشكيلة ضخمة من أجهزة الإدخال الأخرى لإدخال أنواع أخرى من المدخلات. مثال على ذلك هو الكاميرا الرقمية حيث تستخدم لإدخال معلومات مرئية. يوجد نوعين بارزين من أجهزة الإدخال و الإخراج. النوع الأول هو أجهزة التخزين الثانوية مثل الأقراص الصلبة (hard disks) و وحدات الأسطوانات (CD-ROM) و key drives و ما يماثلها و التي تتميز بالبطء نسبيا و لكنها ذات سعات تخزينية عالية، حيث يمكن تخزين المعلومات لاستعادتها لاحقا: النوع الثاني هي الأجهزة المستخدمة للاتصال بشبكات الحاسب. إن القدرة على نقل البيانات بين الحاسبات فتح مدي واسع من القدرات للحاسب. شبكة الانترنت العالمية تسمح لملايين الحاسبات بنقل المعلومات من جميع الانواع بينها و بعضها.
البرامج
إن برامج الحاسب ببساطة هي عبارة عن قائمة من الأوامر يقوم الحاسب بتنفيذها. تتراوح هذه الأوامر (التعليمات) ابتداء من بعض الأوامر القليلة التي تؤدي مهمة بسيطة إلى قائمة أوامر أكثر تعقيدا و التي من الممكن أن تحتوي جداول من البيانات. العديد من برامج الحاسب تحتوي الملايين من الأوامر و العديد من هذه الأوامر يتم تنفيذها بصورة متكررة. إن حاسب شخصي حديث نموذجي يمكنه تنفيذ حوالي 3 مليار أمر في الثانية. إن الحاسبات لم تكتسب قدراتها غير العادية من خلال قدرتها على تنفيذ الأوامر المعقدة. و لكن بالأحرى فإنها تقوم بالملايين من الأوامر المرتبة عن طريق أشخاص يعرفون بالمبرمجين.
عادة، فإن المبرمجين لا يكتبون الأوامر إلى الحاسب مباشرة بلغة الالة.إن البرمجة بهذه اللغة عملية مملة جدا و تميل للخطأ بصورة كبيرة مما يجعل المبرمجين غير قادرين على الإنتاج بصورة كبيرة. و عوضا عن ذلك، يقوم المبرمجين بوصف العملية المرادة في لغة برمجة "عالية المستوى" و التي يتم ترجمتها أوتوماتيكيا بعد ذلك إلى لغة الالة عن طريق برامج حاسب مخصصة (مفسرات و مجمعات). بعض لغات البرمجة ترسم خريطة قريبة جدا من لغة الآلة مثل لغة التجميع Assembly (لغات برمجة منخفضة المستوى): و على الجانب الآخر فإن لغات البرمجة مثل البرولوج Prolog مبنية على قواعد مجردة و مفصولة عن تفصيلات العملية الحقيقية للآلة (لغات برمجة عالية المستوى). إن اللغة المختارة لمهمة جزئية تعتمد على طبيعة هذه المهمة و المهارة التي يمتلكها المبرمجين و توافر الأدوات و عادة احتياجات المستهلكين (على سبيل المثال، فإن المشاريع الخاصة بالاستخدامات الحربية الامريكية في الغالب يجب أن تكون مبرمجة بلغة Ada).
إن Computer software (الأجزاء غير الملموسة بالحاسب) هو مصطلح بديل لبرامج الحاسب (computer programs): إنها عبارة أكثر شمولية و تحتوي كل المواد الهامة المصاحبة للبرنامج و التي يحتاجها لأداء المهام المهمة على سبيل المثال فإن لعبة الفيديو لا تحتوي فقط على البرنامج نفسه و لكن تحتوي ايضا على بيانات تمثل الصور و الاصوات و المواد الاخرى المطلوبة لعمل البيئة التخيلية للعبة. تطبيق الحاسب هو قطعة من برامج الحاسب التي تقدم للعديد من المستخدمين غالبا في سوق تجزئة. من الأمثلة الحديثة المطبقة تماما هي الأدوات المكتبية office suite و هي عبارة عن برامج ذات صفات مشتركة لأداء مهام المكتب الشائعة.
بالذهاب من القدرات شديدة البساطة الخاصة بأمر لغة آلة واحد إلى القدرات الضخمة للبرامج التطبيقية يعني أن الكثير من برامج الحاسب تكون كبيرة جدا و معقدة للغاية. من الأمثلة المنطبقة على ذلك هو Windows XP و الذي يتكون من حوالي 40 مليون سطر من شفرة الحاسب في لغة برمجة C++: يوجد العديد من المشاريع التي تكون أكبر هدفا، يقوم بإنشائه فرق كبيرة من المبرمجين. إن ادارة هذه المشاريع شديدة التعقيد هو مفتاح إمكانية تنفيذ هذه المشاريع: لغات البرمجة و تطبيقات البرمجة تسمح بتقسيم المهمة إلى مهام فرعية أصغر فأصغر حتى تصبح في قدرات مبرمج واحد و في وقت مناسب.
إن عملية تطوير البرامج لا زالت بطيئة و لا يمكن التنبؤ بها و تميل للخطأ: إن نظام هندسة البرامج حاولت و قد نجحت جزئيا في جعل العملية أكثر سرعة و إنتاجية و تحسين جودة المنتج النهائي.
يتبع....