زائر زائر
| موضوع: عالم البرمجة الجمعة مايو 30, 2008 4:00 am | |
| لغة السي , و من لا يعرفها ؟ لغه السي هي احد اللغات عاليه المستوى و المستخدمه بشكل كبير جداً في بناء البرامج و التطبيقات , ولا بد ان اي شخص له اهتمام بتقنيات البرمجه قد سمع عن لغة السي او السي++ التي تعتبر خليفتها , لغة السي لها علاقه قويه مع نظام التشغيل Unix , حتى نتعرف على ماضي السي لا بد ان نتعرف اولاً على ماضي يونكس .
من كتاب نظره على نظم التشغيل المختلفه عن ماضي يونكس : "بدأ نظام Unix في عام 1969 حين بدأ Ken Thompson, Dennis Ritchie و آخرون بالعمل في مختبرات بيل , قصة هذا النظام من اروع القصص التي مرّت علي .
نظام Unix صُمم لكي يكون نظام قابل للنقل من جهاز إلى آخر , متعدد المهام و متعدد المستخدمين , و تميز بالعديد من المفاهيم .
في البدايه تم كتابة هذا النظام بلغة التجميع (Assembly) , بعدها قام Dennis Ritchie بكتابة لغة برمجه جديده بإسم سي (C) و اعاد كتابة نظام Unix بهذه اللغه الجديده في عام 1973 , اعادة كتابته بهذه اللغه جعله نظام قابل للنقل من جهاز إلى آخر حيث غيّر من تاريخ انظمة التشغيل ."
حسناً , جميعنا نعرف لغة التجميع (Assembly) التي لا زالت تستخدم حتى اليوم في وظائف معينه تتعلق بالعتاد و التي ظهرت في الجيل الثاني من الحواسيب , في الحقيقه لغات التجميع كثيره ! سوف اوضح لكم كيف ذلك , لكل معالج لغة تجميع خاصه به , مثلاً معالجات Pentium لها لغة تجميعه الخاصه التي تختلف عن لغة تجميع المعالج PowerPC , حسناً هذا يعني انني اذا قمت بكتابة اي برنامج بلغة التجميع و كانت لغة التجميع هذه هي الخاصه بـ معالجات Pentium لن اتمكن من تشغيل برنامجي هذا على الحواسيب التي تعمل على معالج PowerPC و العكس صحيح , و كذلك بالنسبه للمعالجات الاخرى مثل AMD , حسناً تخيلوا ان البرنامج الذي تحدثنا عنه هو نظام التشغيل Unix , في بادئ الامر تم كتابة يونكس كاملاً بإستخدام لغة التجميع على الحاسوب PDP-11 , هذا يعني انه لن نتمكن من استخدام يونكس إلا على هذا الحاسوب و على العتاد الموجوده فيه , و هذا يحد من نشر النظام على العامّه و يقيدهم بنوع معين من الحواسيب من اجل تشغيل النظام .
الآن لنأتي للغة السي , عندما اقوم بكتابة برنامج بلغة السي على معالج Pentium سوف يكون نفس هذا البرنامج لمعالجات PowerPC و معالجات AMD و سوف يعمل برنامجي بدون اي مشاكل على المعالجات الاخرى قد احتاج إلى ترجمة البرنامج على كل معالج و لكن لن يتغير في الكود شئ , هذا ما تم بالفعل في نظام يونكس , حيث قرروا كتابته بـ لغه عالية المستوى حتى يتمكنوا من تشغيل يونكس على مجموعه كبيره من الحواسيب , في ذلك الوقت لم يكن هناك لغه اسمها C بل كانت اللغه المستخدمه آنذاك لغه اسمها B , هذه اللغه لم تكن بالقوه الكافيه التي تجعلها قادره على كتابة نظام تشغيل لذا قرر Dennis Ritchie بتطوير هذه اللغه و اضاف عليها اضافات جديده حتى تصبح بالقوّه المطلوبه , بعد ذلك ظهرت لغة الـ C و تم كتابة نظام يونكس كاملاً بها و اصبح قابل للنقل إلى الاجهزه الاخرى .
هناك نقطه لابد من توضيحها , متابعين نظام التشغيل Linux سوف يلاحظون ان يتوفر من كيرنل لينكس العديد من النسخ الخاصه بالمعالجات الاخرى , اي لكل معالج اصداره من النواه خاصه بها , قد يتسائل البعض لماذا و لينكس مكتوب بـ لغة السي , في الحقيقه نعم لينكس مكتوب بـ لغة السي و لكن هناك اجزاء صغيره من كل نظام تشغيل لا بد من كتابتها بـ لغة التجميع , و عندما نريد نقل نظام تشغيل معين من معالج إلى آخر لا بد من تعديل الاجزاء المكتوبه بـ لغة التجميع إلى لغة التجميع المناسبه للمعالج الذي سوف يتم الانتقال له . |
|
الكارط عضو نشيط
عدد الرسائل : 29 تاريخ التسجيل : 27/05/2008
| موضوع: رد: عالم البرمجة الجمعة مايو 30, 2008 12:45 pm | |
| مشكوره بارك الله مشاركاتكي | |
|