السي هي لغة برمجة طورها دينيس ريتشي
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 اللي هتستخدمها في البرنامج، ممكن تكتب ملف header انت وتعرف 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 اللي هيساعدك في تصليح الاخطاء.