الخميس، مارس 26، 2009

تاريخ السي C

بيل كلينتون يكرم دينيس ريتشي و كين تومسون

السي هي لغة برمجة طورها دينيس ريتشي Dennis Ritchie بين 1969 و 1973 في معامل at&t لكي تساعد في تطوير نظام التشغيل يونكس Unix .

حاليا تعتبر الـ C اللغة الاولى او الثانية على العالم من حيث الشعبيه، عدد مبرمجي الـ سي وكمية الكود المتاحة على الانترنت، ونظم التشغيل المكتوبة بالـ سي، من الويندوز لـ اللينوكس، كل هذا عظم من مكانة الـ سي وأصبحت تقريبا الاساس لكل لغات البرمجة المطورة بعد ذلك، كلغة الـ سي++ ++C التي بدأت أصلا كنسخة من السي لكن محدثة على اتجاه أخر هو الـ object oriented programming (ترجمتها بالعربي سيئه جدا، برمجة الكائنات او حاجه زي كده)، بعكس الـ سي function oriented programming، وكل نوع منهم له مميزاته وعيوبه، وحسب البرنامج والمطلوب منه يتم اختيار اللغة.

الكمبيوتر كجهاز لا يفهم لغة معينة، كل اللي يفهمه هو تسلسلات من الـ 0 و 1 التي تمثل قيمتين من الفولت او فرق الجهد، قيمة صغيرة ممكن 1 فولت هي الـ 0 وقيمة اعلى زي 5 فولت تمثل الرقم واحد، باستخدام تلك القيمتان بني الكمبيوتر على نظام ارقام او تشفير هو النظام الثنائي binary،وكل شيء ينفذه معالج الكمبيوتر او البروسيسور من أغاني او عرض صور هو في النهاية مشفر بالنظام الثنائي، والماشين كود Machine code او الكود المفهوم للمعالج هو عباره عن نظام الارقام الثنائي.

لكي تأمر الكمبيوتر بتنفيذ عمليات معينه على بيانات، او تطور برنامج، يجب ان توصف للمعالج تلك الاوامر بنظام الارقام الثنائي الـ binary، لتسهيل تلك العملية طورت شبه لغه اسمها الـAssembly language او اللغة التجميعيه، وهي عباره عن اوامر محفوظه تتغير من معالج لمعالج حسب المصنع، وهي لغة تعتبر صعبه كذلك، بسبب كثرة الكود المطلوب لتنفيذ البرامج.

هنا تظهر الـ سي، عبقرية تلك اللغة انها سهلت عملية البرمجه جدا، اوامرها وكلماتها من الانجليزي، وبعد كتابة البرنامج، المترجم او الـ compiler يترجمه للغة معظم معالجات السوق، فالكود واحد ويعمل على اجهزة مختلفة وأنظمة تشغيل مختلفة.

اللغة عباره عن كلمات محجوزة او key words محجوزة، بمعنى ان المبرمج لا يستطيع ان يسمي متغير مثلا بكلمة من تلك الكلمات لانها لها معنى، كلمات كـ int-float-if-while، وبالكلمات المحجوزة وقواعد معينة كتبت المكتبة او الـ library، المكتبه تحتوي على ملفات اسمها header files، كـ stdio.h و math.h، معرف فيها الدوال او الـ functions المطلوبة لكل البرنامج.

بعد انتشار اللغة، بدات تظهر نسخ مختلفة من اللغة، فكل شركة تطور compiler وتزود في المكتبه قليلا، وتزود قواعد لتسهيل اللغة، فالـ compiler تبعها ينتشر ويبيع اكثر، وهذا خطر على اللغة لانها تتحرف لنسخ مختلفه، في 1983، كونت الهيئة الوطنية الامريكية للمعايير "American National Standards Institute "ANSI لجنة لوضع المعايير او النسخة الاساسية للغة، 1989 صدق على المعايير وسميت ANSI X3.159-1989 "Programming Language C."، او ANSI C، وفي 1990 تبنت مؤسسة المعايير العالمية International Organization for Standardization او "ISO" تلك النسخة وسميت ISO/IEC 9899:1990. أخر نسخة اقرت في 1999 واسمها ISO/IEC 9899:1999.

يوجد حاليا الكثير من الـ compilers اشهرها GCC و Microsoft visual studio ، SUN studio و Geany.

معظم البرامج المذكورة تسمى IDE او Integrated Development Environment، لانها تحتوي علي text editor لكتابة الكود، والـ Compiler لترجمة الكود للغة المعالج، والـ debugger لتصليح الاخطاء.

الخميس، يناير 15، 2009

We will not go down - by Michael Heart

We will not go down (by Michael Heart)
song for gaza
لن نركع لمايكل هارت



A blinding flash of white light
Lit up the sky over Gaza tonight
People running for cover
Not knowing whether they’re dead or alive

They came with their tanks and their planes
With ravaging fiery flames
And nothing remains
Just a voice rising up in the smoky haze

We will not go down
In the night, without a fight
You can burn up our mosques and our homes and our schools
But our spirit will never die
We will not go down
In Gaza tonight

Women and children alike
Murdered and massacred night after night
While the so-called leaders of countries afar
Debated on who’s wrong or right

But their powerless words were in vain
And the bombs fell down like acid rain
But through the tears and the blood and the pain
You can still hear that voice through the smoky haze

We will not go down
In the night, without a fight
You can burn up our mosques and our homes and our schools
But our spirit will never die
We will not go down
In Gaza tonight


http://www.michaelheart.com/