السبت، أبريل 03، 2010

.ما هو الحاسب الالــى ( الكمبيوتر)؟

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


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


3- المعلومات (Information) وهى الناتج المفيد القيم الذى تم انتاجه بعد معالجة البيانات الخام التى ادخلت الى الحاسب مسبقاً. وهذه المعلومات يمكن الاستفاده منها بالشكل الذى يرغبه المستخدم فمثلاً يمكن ان تكون معروضة على الشاشة وممكن ان تكون مطبوعة أو حتى من الممكن أن تكون مخزنة ومحفوظة لحين إستغلالها فى اى وقت.
مراحل معالجة البيانات
مما يتكون الحاسب الالـى
تُقســم أجزاء ومكونات الحاسب منطقيا أو حسب طبيعة عملها الى ستة وحدات رئيسية وهى كالأتــى:
1- وحدة إدخال البيانات (Input Unit)
وهى الوحدة المسئولة عن إستقبال البيانات مع إختلاف طبيعتها وصورها وتوصيلها إلى الوحدات الأخرى لتتم معالجتها. ويتم إستقبال البيانات من خلال أجهزة إدخال البيانات المناسبة لنوعية وصورة البيانات المدخلة الى الحاسب فمثلاً تستخدم لوحة المفاتيح (Key Board) إذا كانت البيانات المدخلة فى صورة نصوص أو أرقام, ويستخدم المايكروفون (MIC) إذا كانت البيانات فى صورة مادة صوتية . ويستخدم المصور الضوئى (Scanner) فى حالة إذا كانت البيانات فى صورة صور ضوئية أو صور ورقية. وهكذا كلما أختلفت نوعية البيانات يختلف الجهاز الذى يستخدم فى إدخالها إلى الحاسب. وكلما تطور الحاسب نجد ان هناك أجهزة إدخال جديدة ظهرت لتناسب الانواع المختلفة من البيانات.
2- وحدة الحساب والمنطق (Arithmetic and Logical Unit - ALU)
وهى الوحدة المسئولة عن إجراء العمليات الحسابية والمنطقية مثل عمليات الضرب ,القسمة,الجمع والطرح وغيرها من العمليات الحسابية المعروفة مع ذيادة تعقيدهـا. بالإضافة إلى مسئولية هذه الوحدة عن القرارات المنطقية مثل المقارنة بين عنصرين أو قيمتين وتحديد ما إذا كانو متساويين أم أن أحدهما أكبر من الأخر.
3- وحدة الذاكرة الرئيسية (Main Memory Unit)
وهى المكان الذى يتم فيه تخزين البيانات المدخلة عبر أجهزة إدخال البيانات بشكل مؤقت لحين معالجتها وإجراء العمليات الحسابية والمنطقية عليها. وايضاً تستخدم لتخزين المعلومات الناتجة من عملية المعالجة لحين إخراجها إلى المستخدم أو لحين تخزينها وحفظها بشكل دائم فى وحدات التخزين الدائمة (Secondary Storage). وتتميز هذه الذاكرة الرئيسية بأنها قليلة السعة إذا ما قورنت بوحدات التخزين الدائمة (Secondary Storage) ولكنها فى نفس الوقت سريعة جداً فى التخزين أو فى استرجاع البيانات والمعلومات المخزنة عليها.
4- وحدة التخزين الدائم للبيانات (Secondary Storage Unit)
وتستخدم هذه الوحدة لتخزين البيانات والمعلومات بشكل دائم يُمكن من إستخدامها والاستفادة منها فى أى وقت لاحق. وتتميز هذه الوحدة التخزينية بالسعــة الضخمة التى تمكن من حفظ بلايين المعلومات وتنظيمها بالشكل المرغوب فيه ولمدد طويلة. كما تتميز أيضاً بتنوع أشكالها فمثلاً هناك ما يعرف بالهارد ديسك(Hard Desk) والذى يعتبر الصورة البديهية لوحدات التخزين الدائمة وعادة لا يخلو اى جهاز حاسب اّلى من هذه الوحدة وتتميز بسعتها الكبيرة جداً والتى لا تكف الشركات العاملة فى مجال تصنيعها عن زيادة أحجامها بشكل مستمر وسريع جداً. وهناك ما يعرف بالإسطوانات (Compact Drive - CD) التى تعتمد على تكنولوجيا الليز فى التسجيل عليها والقراءة منها. وهناك العديد من الأشكال الأخرى التى تُستخدم لحفظ البيانات والمعلومات بشكل ثابت يُمكن من نقلها من مكان إلى أخر.
5- وحدة التحكم المركزية (Central processing Unit - CPU )
تعتبر هذه الوحدة هى المدير لجهاز الحاسب الالى وهى المنسق لعمل الوحدات الأخرى. يمكن ان تتخيل هذه الوحدة كما لوكانت مديراً لاوركسترا تعزف سيمفونية أو لحناً . فكلاً من العازفين يستطيع ان يعزف بمفرده ولكن لن يؤدى هذا الى لحن بديعاً او عملاً فنياً ذو قيمة, ولكن ستتزاحم الأصوات وتشُز النغمات. ولكن بوجود القائد ينتظم العمل وينتج إنتاجاً مفيداً ذو قيمة. وهكذا هو دور وحدة التحكم, فهى التى تأمر وحدة إدخال البيانات (Input Unit) بأن تأخذ مدخلات وان تحفظها فى الذاكرة الرئيسية (Main Memory) بل و تحدد لها فى أى مكان فى الذاكرة سيكون التخزين.وهى التى تأمر وحدة الحساب والمنطق(ALU) بأن تأخذ البيانات المخزنة فى الذاكرة الرئيسية فى أماكن محددة وأن تجرى عليها عمليات حسابية أو منطقية معينة. وهى التى تأمر وحدة إخراج البيانات(Output Unit) بإخراج النتائج والمعلومات الى المستخدم فى الصورة التى يرغبها المستخدم , وهى التى تقوم بحفظ الملفات والمعلومات بشكل دائم على وحدة التخزين الدائمة(Secondary Storage) وهى التى تستدعي هذه البيانات المخزنة مرة أخرى فى حالة الرغبة فى تعديلها أو إستغلالها فى غرض أخر. وهكذا فهى بالفعل العقل المدبر والمتحكم فى كل شئون الحاسب الالـى.
6- وحدة إخراج البيانات (Output Unit)
هذه الوحدة هى المسئولة عن إخراج المعلومات النهائية بعد ان تمت عليها عمليات المعالجة او مايسمى (Processing) . ويمكن ان تخرج هذه المعلومات فى صور مختلفة حسب رغبة المستخدم وحسب توفرأجهزة إخراج البيانات المناسبة (Output Devices). فمثلاً ممكن ان يكون إخراج البيانات فى صورة عرض على الشاشة او فى صورة طباعة على الطابعة او فى صورة رسومات على اجهزة الرسم الهندسى او غيرها من الاشكال المتعددة.
أمثلة لبعض أجهزة إدخال وإخراج البيانات (Input - Output Devices
كيف يعمل الحاسب الألى؟
يتكون الحاسب الألى من مجموعة كبيرة من الأجزاء والوحدات التى تؤدى كل منها وظيفة ودور محددين. و يطلق المتخصصين فى مجال الحاسب الألى على هذه الأجزاء مُجمعة مصطلح (Hardware). إذا فكلمة ال (Hardware) تعنى كل الاجزاء الاجهزة والمكونات الاساسية للحاسب الألى وتشمل على سبيل المثال لا الحصر (لوحة المفاتيح – المؤشر-جهاز قراءة الاسطوانات المدمجة- الشاشة – إلخ...) بالإضافة إلى الإجهزة الإضافية المكملة مثل (الطابعــة, السماعات, المايكروفون – إلخ ...) .
ولكن كل هذه الأجهزة تحتاج الى أوامر لتشغيلها وحسن إستغلالها للوصول إلى الفائدة منها, فهى وحدها لاتمثل قيمة فى حد ذاتها لذا كان من الضرورى وجود برامج تشغيل لكل هذه الأجهزة. ويطلق المتخصصين فى مجال الحاسب الالى على هذه البرامج مصطلح (Software). إذاً فكلمة (Software) تعنى كل البرامج والاوامر التى تستخدم لتشغيل أجزاء ومكونات الحاسب وايضاً تشمل البرامج التى تعمل على معالجة البيانات المدخلة للحصول على نتائج ومعلومات مفيدة للمستخدم.
أنظمـة تشغيل الحاسبات وكيف تتطور؟
كما اتضح لنا ان اجزاء ومكونات الحاسب الالى المختلفة الـ (Hardware) لاتعمل بمفردها ولكن تحتاج الى اوامر وبرامج لتديرها وتوظفها كما ينبغى. ولم تكن الحاسبات الالية بهذا التطور والقوة التى عليها الان فقد كانت متواضعة السرعة والسعة التخزينية وكانت تستطيع ان تؤدى وظيفة واحدة فى الوقت الواحد. بمعنى انك لو أردت ان تؤدى اكثر من عمليه حسابية مثلاً فإنه يستلزم عليك ان تأخذ دورك وتنتظر حتى يفرغ الحاسب من أداء المهمة التى شرع فيها وهكذا.
لذلك كان الناس يأتون بما يريدون تنفيذه من مهام ويسلمونها للشخص المسئول عن تشغيل الحاسب والذى عادة ما يطلق عليه الـ (Computer Operator) والذى بدوره يدخل البيانات الخاصة بكل عملية إلى الحاسب الالى فى دورها بعد انتهاء الحاسب من أداء المهمة الحالية. فتخيل كيف كانت صعوبة الامر إذا اردت ان تنفذ عشرات او مئات المهام. بمرورالوقت أتضح ان إعتمادنا على العنصر البشرى الـ (Computer Operator) فى الأنتقال بين المهام التى يقوم بأداءها الحاسب الالى قد يضيع الكثير من الوقت فبدأ إشتغال العلماء بأن يعتمدوا على برنامج يقوم هو بإدارة عملية تنفيذ المهام وأطلقوا عليه إسم نظام التشغيل (Operating System) . ويمكننا تعريف نظام التشغيل (Operating System) على انه نظام اّلى(Software) لإدارة كل شئون الحاسب الالى مثل تنفيذ البرامج والاوامـر والتنسيق بين المهام لضمان استمرار عمل الحاسب بشكل منتظم ومحكم.
تطوير برامج الحاسب الألــى
برامج الحاسب الالى هى عبارة عن مجموعة مسلسلة من الاوامر التى يقوم الحاسب بتنفيذها لأداء مهمة أو أكثر. عادة مايكون هناك بيانات مدخلة للبرنامج ليقوم بمعالجتها وإخراج معلومات ونتائج ذات قيمة لمستخدم هذا البرنامج.
كيف يتم كتابة برامج الحاسب الالى؟
يتم كتابة برامج الحاسب الالى بإستخدام لغات البرمجة (Programming languages) والتى هى عبارة عن مجموعة كبيرة من الاوامر والجمل التى يستخدمها المبرمج او مطور البرنامج للتعبيرعن الاشياء والمهام التى يطلب من الحاسب تنفيذها. فهى كأى لغة بها كلمات وجمل يستخدمها مجموعة من البشر للتواصل بينهم وللتعبير عن كل ما يحتاجه أحدهم من الاخر. وقد مرت لغات البرمجة بعدة مراحل حتى تصل إلى المستوى الراقى الذى هى عليه الأن. وسنسرد أهم هذه المراحل فيما يلى :
لغة الألــة (Machine Language)
وهى اللغة التى يفهما الحاسب الالى وينفذها مباشرة عن طريقة وحدة التحكم المركزية الخاصة به او ما يسمـى (Central Processing Unit ). وهى مرتبطة فى شكل ومعنى أوامرها بنوع الحاسب الذىستنفذ عليه هذه الاوامر بمعنى ان لكل نوع من انواع الحواسب لغة الة خاصة به لان هذه اللغات عادة ما يضع قواعدها واوامرها مصنعوا أجهزة الحاسب انفسهم.واوامر لغة الالة فى طبيعتها عبارة عن نصوص رقمية تتكون من رقمين 1 , 0 وهى الشكل الذى تفهمه اجزاء الحاسب وتخاطب بعضها بإستخدامه. وبما ان الحاسب لايفهم إلا لغة الالة المكونة من 1 , 0 توجب على مطور البرامج إستخدام نفس اللغة ليخبرالحاسب بما يريده وهو ما كان امراً فى غاية المشقة وهو ما جعل عدد المطورين للبرامج قليل جداً وبالتالى عدد البرامج الحاسوبية المطورة قليل جداً.
لغـة الرمـوز (Assembly Languages)
نتيجة لصعوبة التعامل بلغة الالـة (Machine Language) إتجه مطوروا البرامج الى تسهيل مهتهم فى التعامل مع الحاسب فبدلاً من إستخدام الأوامر الصعبة المكونة من 1 , 0 بدأو فى استخدام إختصارات إنجليزية سهلة للتعبير عن الاوامر الصعبة فى لغة الالـة وبعد كتابة البرنامج بإستخدام هذه الاختصارات والرموز يقوم برنامج أخر بعمل المترجم فيقوم بفك هذه الرموز وتحويل هذه الاختصارات الى لغـة الالة حتى يفهمهاالحاسب. ويطلق على هذا البرنامج المترجم (Assembler) . ونتيجة لهذا التقدم الكبير نسبياً فى هذا الوقت تطورت صناعة البرمجيات شيئاً فشيئاً لكنها ما زالت مهنة شاقة وبها الكثير من ضياع الوقت حيث انه كان يستلزم لتنفيذ مهمة واحدة كتابة الكثير من الأوامر فى صورة عدد كبير من الخطوات.
اللغات الراقيــة (High Level Languages)
بمرور الوقت اصبح طموح مطورى البرامج يتعدى كل ما انجزوه وبدأو فى تطوير لغات برمجة تشبه اللغة التى يتحاورون بها فى حياتهم العادية وهو ما أطلق عليه مصطلح(High Level Languages) وتتميز هذه اللغات بأنها سهلة الإتقان وتستطيع بإستخدام جملة واحدة تنفيذ الكثير من الأوامر مما ادى بإستخدامها إلى زيادة الإنتاج من البرامج والتطبيقات التى يحتاجها الناس فى حياتهم اليومية. ولكن كما اتفقنامسبقاً ان الحاسب لا يفهم إلا لغة الالــة, لذا لابد من وجود مترجم يحول الجمل والاوامر المكتوبة بهذه اللغات الراقية الى لغة الالــة. ويطلق على هذا الببرنام المترجم (Compiler). وسوف نتعامل فى هذه السلسلة من المقالات مع لغة ال (C) كمثال للغات الراقيـة.
ما هى المراحل التى يمر بها البرنامج قبل ان يكون جاهزاً للتنفيذ؟
1- مرحلة كتابة وتحرير البرنامج (Editing)
يمر البرنامج بعدة مراحل قبل ان يكون جاهزاً للتنفيذ بداية بمرحلـة كتابة البرنامج او ما يطلق عليها مرحلة التحرير للبرنامج (Editing) وعادة ما تتم هذه المرحلة بإستخدام برامج تحريرمخصصة لكتابة البرامج والتطبيقات بلغة برمجة معينة وتسمى (Editors) وعادة ما تكون هذه البرامج مجهزة بالعديد من الوسائل المساعدة التى تجعل مرحلة الكتابة سهلة وشبه نمطية وخالية من الاخطاء النصية فى اوامر لغة البرمجة المستخدمة وهو ما يُطلق عليه (Syntax Errors). وهذه المساعدات بدورها تجعل المبرمج يصرف اهتمامه الى التفكير فى وضع الحل المناسب للمشكلة التى من أجلها كتب البرنامج دون الانشغال بأعمال التنسيق.
2- مرحلة تحويل البرنامج إلى أوامر يفهمها الحاسب (Compilation)
بعد الانتهاء من كتابة البرنامج والتأكد من سلامته من الأخطاء النصية للاوامر والجمل, يتم تحويل البرنامج الى اللغة التى يفهما الحاسب الالى او ما يسمى بلغـة الالـة (Machine Language) لانه كما ذكرنا مسبقاً ان اللغات الراقية (High Level Languages) التى يُكتب بها البرامج هى لغات لا يفهما الحاسب الالى وإنما تُستخدم لتسهيل كتابة البرامج . ويقوم بدور الترجمة والتحويل الى لغة الالــة برنامج يسمى (Compiler).
3- مرحلة ربط البرنامج بما يحتاجه من أوامر و وظائف خارجية (Linking)
ربما يحتاج البرنامج إلى إستخدام اوامر ووظائف خارجية(Functions) كانت قدتم كتابتها وتنفيذها فى برامج أخرى وهذه ميزة واسلوب مفيد جداً لتوفير الوقت والجهد والتكلفة فبدلاً من إعادة كتابة بعض الاوامر والوظائف (Functions) مرة اخرى يمكننا استغلال ما قد تم كتابته مسبقاً. ولكن اذا تم ذللك لابد من ربط البرنامج بهذه الوظائف الخارجية والتأكد من انها تعمل بكفاءة حتى يتسنى للبرنامج العمل بطريقة صحيحة أثناء عملية التنفيذ. ويطلق على عملية الربط هذه اسم (Linking) .
4-مرحلة تحميل البرنامج إلى الذاكرة الرئيسية لتنفيذه (Loading)
بعد ترجمة البرنامج من لغات البرمجة الراقية (High Level Languages) الى لغة الالة التى يفهمها الحاسب وبعد تجهيزالبرنامج بكل ما يحتاج اليه من اوامر ووظائف خارجية, اصبح البرنامج جاهزاً للتنفيذ ولكن حتى يتسنى لوحدة التحكم المركزية او ما يطلق عليه ال (Centeral Processing Unit) لابد من تحميله من وحدة التخزين الدائمــة (Secondary Storage) إلـى وحدة الذاكرة الرئيسية القريبة من وحدة المعالجة حتى يتم التنفيذ بسرعة.
5-مرحلة تنفيذ أوامر البرنامج فعلياً (Execution)
وهى المرحلة النهائية وفيها يتم تنفيذ اوامر البرنامج بالترتيب واحداً تلو الاخر حتى الانتهاء منها جميعاً وخلال هذه المرحلة يقوم المعالج او ما يسمى بالـ (Processor) بتوجيه وحدات الادخال الى استقبال البيانات اللازمة من المستخدم من خلال أجهزة الإدخال, ويوجه وحدات الاخراج الى اخراج المعلومات الى المستخدم عبر اجهزة الإخراج المناسبة وهكذا حتى ينتهى البرنامج.
المراجِع:مراحل تطوير برامج الحاسب
C How To Program 5th Edition ISBN: 0132404168 © 2007, pp. 1112 by Deitel
http://www.deitel.com/Books/C/CHowtoProgram5e/tabid/1704/Default.aspx