السلام عليكم ورحمة الله تعالى وبركاته
مرحبا إخواني مع هذا الموضوع المقدم من عالم البرمجة
حول الدرس
هذا الدرس بحول الله سيكون بمثابة مقدمة عن لغة C نظرا لكونها لغة عالمية متداولة
على نطاق واسع ولا تزال تدرس في الجامعات .. وقد قمت بإعداد هذا الدرس - والذي سيكون بداية
لسلسلة دروس عن هاته اللغة الرائعة - خصيصا لطلبة الجامعات حيث يعاني الكثيرون منهم صعوبة
هاته اللغة نظرا للطريقة غير المناسبة المتبعة في تدريسها
إن شاء الله ستكون سلسلة الدروس عن طريق شروحات بالكتابة والصور
كما تتضمن فيديوات وكتب إلكترونية إضافة إلى الملحقات التي يحتاجها كل شخص سيبرمج بهاته اللغة
حول الدرس
هذا الدرس بحول الله سيكون بمثابة مقدمة عن لغة C نظرا لكونها لغة عالمية متداولة
على نطاق واسع ولا تزال تدرس في الجامعات .. وقد قمت بإعداد هذا الدرس - والذي سيكون بداية
لسلسلة دروس عن هاته اللغة الرائعة - خصيصا لطلبة الجامعات حيث يعاني الكثيرون منهم صعوبة
هاته اللغة نظرا للطريقة غير المناسبة المتبعة في تدريسها
إن شاء الله ستكون سلسلة الدروس عن طريق شروحات بالكتابة والصور
كما تتضمن فيديوات وكتب إلكترونية إضافة إلى الملحقات التي يحتاجها كل شخص سيبرمج بهاته اللغة
متطلبات الدرس
- أن تركز معي جيدا أخي القارئ في متابعة هذا الدرس وهاته المقدمة حتى تتكون عندك فكرة جيدة عن اللغة وأساس صحيح
- أن لا تمر إلى نقطة أخرى قبل أن تفهم النقطة التي قبلها حتى لا تختلط عليك أو تنسى فكرة معينة
- أن تسأل عن فكرة لم تفهمها حتى ترسخها في ذهنك
- أن تتوسع في هاته اللغة أكثر لتكون ثقافتك ومعرفتك بها أكبر
الدرس
ماهي لغة C ؟
هي لغة برمجة عالمية وقوية منخفضة المستوى ومتعددة المنصات, تم تطويرها ما بين 1969 و 1973 على يدي عالم الحاسوب الأمريكي دينيس ريتشي ( Dennis Ritchie ) وساعده فيها كين تومسن ( Ken_Thompson ) وتم ذلك فيمختبرات بيل ( Bell Labs ) المتواجدة بنيوجرسي بالولايات المتحدة الأمريكية والمسماة نسبة للعالم الإسكتلندي مخترع الهاتف جراهام بيل ( Graham Bell )
لكن لغة السي تبقى ذات أهمية كبيرة ومستعملة لحد الآن على نطاق واسع وتحتل المراتب الأولى عالميا في ترتيب اللغات الأكثر استعمالا
كيف نشأت اللغة ؟
حوالي سنة 1972 خرجت لغة السي لهذا العالم بعد أن قام بتطويرها عالم الحاسوب الأمريكي دينيس ريتشي رفقة كين تومسن وقد نشأت اللغة انطلاقا من عدة لغات قبلها وهي لغة B ولغة BCPL المنتمية لها
بحيث نشأت الأخيرة سنة 1966 على يد مارتن ريتشاردز من جامعة كامبريدج البريطانية ثم ظهرت بعدها لغة البي المطورة عنها سنة 1969 في مختبرات بيل وعلى يدي عالمي الحاسوب الأمريكيين دينيس ريتشي وكين تومسن اللذان وفي سنة 1972 وفي نفس المكان قاما بتطوير وإخراج لغة السي للعالم وكان ذلك عام 1972
بعدها بـ 11 سنة خلف لغة السي لغة مطورة عنها تدعم البرمجة كائنية التوجه أسرع وأقوى منها حيث كان ذلك عام 1983 في مختبرات بيل أيضا وهاته المرة تم تصميم اللغة من طرف بيارن ستروستروب من المنظمة العالمية للمقاييس ISO وقبل سنة من الآن وافقت الأخيرة على آخر التطويرات التي وصلت إليه اللغة وهي C++11 والتي لا يسعنا الحديث عنها الآن
كما أن المواضيع التي تتحدث عنها منعدمة في عالمنا العربي ولذلك قررت أن أكتب عنها لاحقا مقال أو عدة مقالا للتعريف بها
حتى لا نكون متأخرين كثيرا عن الغرب
هناك لغة أخرى تم تصميمها انطلاقا من C++/C تتشابه في مفاهيم عديدة لكنها لا تطابق اللغتين كما تختلف عنهما في الشيفرة
وهناك أيضا لغة JAVA التي تم تصميمها انطلاقا من C++ في مختبرات صن ميكروسيستمز
عموما كل ما ذكرته من مراحل تطور لغة السي واللغات التي قبلها والتي بعدها هاقد وضعت لك كل ذلك أخي في هاته الصورة بشكل ملخص جدا
لغات تأثرت بها لغة C ؟
تأثرت السي بعدة لغات سأذكر بعضها وهي :
لغات أثرت فيها لغة C ؟
على غرار لغة C++ المطورة عنها فإن هناك لغات عديدة تأثرت بلغة السي أو تم تطويرها بواسطتها
وفي القائمة التالية أذكر بعض هاته اللغات :
صيغ ملفات السي C ؟
هناك نوعان من صيغ الملفات الخاصة بلغة C, وهي :
- ملفات الهايدر (Header File) وصيغتها هي (.H أو .h) مثال (main.h)
- ملفات ذات الصيغة (.C أو .c) مثال (main.c)
والصيغ نفسها موجودة أيضا في لغتي C++/Objective-C
ما الشيء المهم في لغة C ؟
- اللغة مستعملة أو مساهمة في برمجة أنظمة التشغيل : Unix/Plan 9/Inferno/Singularity/Android
- أنها تسهل عملية التعامل مع موارد النظام ومختلف أجهزة الهاردوير والذاكرة وغيرها
- تمكن وتسهل من التعامل مع الملفات وقواعد البيانات
- تتعامل مع عدد كبير من قواعد البيانات
- يمكن ربطها مع عدد كبير من مكتبات الجرافيك والصوت والواجهات وغيرها كـ DirectX/OpenGL/Framework
- سريعة في التعامل مع الجهاز وموارد النظام
- برمجة تطبيقات باستعمال C قد يحتاج أكواد أكثر ومدة أطول للوصول إليها بلغات أخرى كـ Visual Basic مثلا
- لغة السي متعددة المنصات .. فهي متوافقة مع نظام Unix/Windows/Mac OS
مجالات استخدام لغة السي C ؟
لغة السي يمكن أن نقول أنها عامة وتشمل كل المجالات ويمكن أن تستعمل في الوصول لأي تطبيق
وفي مختلف أنظمة التشغيل حتى الموجودة على الهواتف الذكية وكذلك منصات أجهزة الألعاب كـ XBOX/PS
فيمكن برمجة برامج وتطبيقات وألعاب للحاسب ومنصات الألعاب وحتى للهواتف الذكية
مكتبات مستعملة في السي C ؟
هناك مكتبات عديدة تختلف حسب اختلاف مهامها ووظائفها
فهناك من بين المكتبات المعروفة والمشهورة في اللغة
هناك مكتبات أخرى كمكتبة string/float وغيرها
للمزيد : مكتبات أخرى تابعة للغة C
هل لغة السي متعددة المنصات ؟
- بالفعل لغة C متعددة المنصات تدعم Unix/Windows/Mac OS
وتدعم أنظمة تشغيل أخرى كثيرة كالمذكورة في الأعلى
كيف يمكنني أن أبرمج على بيئة السي ؟
لتكون مبرمجا بلغة C ولعمل تطبيقات عليها
يجب أن تتوفر على بيئة توفر لك ذلك
هناك برامج عديدة تتيح ذلك , منها
Microsoft Visual Studio
CodeBlocks
Notepad++
NetBeans
Embarcadero Delphi
وغيرها الكثير .. يمكنك التوسع فيها عن طريق جوجل
وأنا أفضل لك أخي أن تستعمل برنامج CodeBlocks
لأنه سريع وحجمه صغير ولا يأخذ مساحة كبيرة على جهازك
كما أنه يدعم مختلف المكتبات التي تدعمها اللغة
تحميل برنامج Codeblocks مترجم السي ( C Compiler )
روابط خارجية
لغة السي (ويكيبيديا)
مترجم جنو للغة سي
كتاب The C Programming Language
بعض أشكال الدوال في لغة C
فهرس شامل عن لغة C/C++
كتاب The C Programming Language الأول والثاني
من تأليف دينيس ريتشي مع براين كيرنيجان ويعدان أول كتابين يشرحان اللغة
للتحميل
الإصدار الأول
الإصدار الثاني
إلى هنا بحول الله أكون قد انتهيت وقد كانت هاته مقدمة متواضعة عن لغة السي
وإن شاء الله سأضع الدرس في كتاب PDF لتعم الفائدة أكثر
ملاحظة : اعتمدت في موضوعي هذا فكرة جديدة وهي بوضع الكلمات المفتاحية في الدرس وأسماء لغات البرمجة والشركات المطورة لها بروابط من ويكيبيديا .. بحيث لما تقرأت أنت شرحي هذا وتصل مثلا إلى كلمة متعدد المنصات أو c++ أو عبارة أخرى ولا تفهم ما هي .. فإنك فقط تضغط على هاته العبارة أو الكلمة ليتم نقلك إلى مقال عنها في موسوعة ويكيبيديا أو مكان آخر حتى يتسنى لك الفهم الجيد لها والتوسع في مفهومها ثم تعود وتكمل المقال
هنا ينتهي الموضوع وبالتوفيق
- أن لا تمر إلى نقطة أخرى قبل أن تفهم النقطة التي قبلها حتى لا تختلط عليك أو تنسى فكرة معينة
- أن تسأل عن فكرة لم تفهمها حتى ترسخها في ذهنك
- أن تتوسع في هاته اللغة أكثر لتكون ثقافتك ومعرفتك بها أكبر
الدرس
ماهي لغة C ؟
هي لغة برمجة عالمية وقوية منخفضة المستوى ومتعددة المنصات, تم تطويرها ما بين 1969 و 1973 على يدي عالم الحاسوب الأمريكي دينيس ريتشي ( Dennis Ritchie ) وساعده فيها كين تومسن ( Ken_Thompson ) وتم ذلك فيمختبرات بيل ( Bell Labs ) المتواجدة بنيوجرسي بالولايات المتحدة الأمريكية والمسماة نسبة للعالم الإسكتلندي مخترع الهاتف جراهام بيل ( Graham Bell )
وقد تم تطوير لغة سي ( C ) انطلاقا من لغة البي ( B ) التي بدورها مبرمجة بلغة BCPL
تم برمجة لغة السي خصيصا لتطوير نظام التشغيل يونيكس ( Unix )
تختلف عن لغة C++ في أن الأخيرة أكثر سرعة وتعتمد البرمجة كائنية التوجه ( OOP ) إضافة إلى خصائص أخرىتم برمجة لغة السي خصيصا لتطوير نظام التشغيل يونيكس ( Unix )
لكن لغة السي تبقى ذات أهمية كبيرة ومستعملة لحد الآن على نطاق واسع وتحتل المراتب الأولى عالميا في ترتيب اللغات الأكثر استعمالا
كيف نشأت اللغة ؟
حوالي سنة 1972 خرجت لغة السي لهذا العالم بعد أن قام بتطويرها عالم الحاسوب الأمريكي دينيس ريتشي رفقة كين تومسن وقد نشأت اللغة انطلاقا من عدة لغات قبلها وهي لغة B ولغة BCPL المنتمية لها
بحيث نشأت الأخيرة سنة 1966 على يد مارتن ريتشاردز من جامعة كامبريدج البريطانية ثم ظهرت بعدها لغة البي المطورة عنها سنة 1969 في مختبرات بيل وعلى يدي عالمي الحاسوب الأمريكيين دينيس ريتشي وكين تومسن اللذان وفي سنة 1972 وفي نفس المكان قاما بتطوير وإخراج لغة السي للعالم وكان ذلك عام 1972
بعدها بـ 11 سنة خلف لغة السي لغة مطورة عنها تدعم البرمجة كائنية التوجه أسرع وأقوى منها حيث كان ذلك عام 1983 في مختبرات بيل أيضا وهاته المرة تم تصميم اللغة من طرف بيارن ستروستروب من المنظمة العالمية للمقاييس ISO وقبل سنة من الآن وافقت الأخيرة على آخر التطويرات التي وصلت إليه اللغة وهي C++11 والتي لا يسعنا الحديث عنها الآن
كما أن المواضيع التي تتحدث عنها منعدمة في عالمنا العربي ولذلك قررت أن أكتب عنها لاحقا مقال أو عدة مقالا للتعريف بها
حتى لا نكون متأخرين كثيرا عن الغرب
هناك لغة أخرى تم تصميمها انطلاقا من C++/C تتشابه في مفاهيم عديدة لكنها لا تطابق اللغتين كما تختلف عنهما في الشيفرة
وهناك أيضا لغة JAVA التي تم تصميمها انطلاقا من C++ في مختبرات صن ميكروسيستمز
عموما كل ما ذكرته من مراحل تطور لغة السي واللغات التي قبلها والتي بعدها هاقد وضعت لك كل ذلك أخي في هاته الصورة بشكل ملخص جدا
لغات تأثرت بها لغة C ؟
تأثرت السي بعدة لغات سأذكر بعضها وهي :
- لغة البرمجة الأساسية المختلطة ( BCPL ) بطريقة غير مباشرة
- لغة البي ( B )
- لغة التجميع ( Assembly )
- لغة الفورتران ( Fortran )
لغات أثرت فيها لغة C ؟
على غرار لغة C++ المطورة عنها فإن هناك لغات عديدة تأثرت بلغة السي أو تم تطويرها بواسطتها
وفي القائمة التالية أذكر بعض هاته اللغات :
- لغة سي++ ( C++ ) اللغة المطورة عن السي والتي تدعم البرمجة الكائنية وهي لغة متعددة المنصات
- لغة جافا ( JAVA ) مطورة عن سي++ ومتأثرة أيضا بالسي وهي متعددة المنصات من تطوير Sun Microsystems
- لغة سي شارب ( C# ) لغة برمجة كائنية متعددة المنصات تعمل على إطار عمل .NET من تطوير شركةMicrosoft
- لغة بي إتش بي ( PHP ) من أقوى لغات برمجة المواقع لكنها ليست الأكثر حماية وحاليا هي في الإصدار 6
- لغة دي ( D ) وهي لغة برمجة كائنية تحمل بعض مفاهيم C++/C لكنها تخالفهما في الشيفرة
- لغة بيرل ( Perl ) لغة متعددة المنصات مفتوحة المصدر من تطوير لاري وول ( Larry Wall )
- لغة جافا سكريبت ( Javascript ) من تطوير شركتي Sun Microsystems و NetScape وظيفتها إضفاء الديناميكية على مواقع الويب
وأثرت في لغات أخرى لم يتم ذكرها نظرا لكونها غير مستعملة على نطاق واسع كـ AMPL , AWK , CSH , C-- , BitC , Go Limbo , LPC , Pike , Processing
صيغ ملفات السي C ؟
هناك نوعان من صيغ الملفات الخاصة بلغة C, وهي :
- ملفات الهايدر (Header File) وصيغتها هي (.H أو .h) مثال (main.h)
- ملفات ذات الصيغة (.C أو .c) مثال (main.c)
والصيغ نفسها موجودة أيضا في لغتي C++/Objective-C
ما الشيء المهم في لغة C ؟
- اللغة مستعملة أو مساهمة في برمجة أنظمة التشغيل : Unix/Plan 9/Inferno/Singularity/Android
- أنها تسهل عملية التعامل مع موارد النظام ومختلف أجهزة الهاردوير والذاكرة وغيرها
- تمكن وتسهل من التعامل مع الملفات وقواعد البيانات
- تتعامل مع عدد كبير من قواعد البيانات
- يمكن ربطها مع عدد كبير من مكتبات الجرافيك والصوت والواجهات وغيرها كـ DirectX/OpenGL/Framework
- سريعة في التعامل مع الجهاز وموارد النظام
- برمجة تطبيقات باستعمال C قد يحتاج أكواد أكثر ومدة أطول للوصول إليها بلغات أخرى كـ Visual Basic مثلا
- لغة السي متعددة المنصات .. فهي متوافقة مع نظام Unix/Windows/Mac OS
مجالات استخدام لغة السي C ؟
لغة السي يمكن أن نقول أنها عامة وتشمل كل المجالات ويمكن أن تستعمل في الوصول لأي تطبيق
وفي مختلف أنظمة التشغيل حتى الموجودة على الهواتف الذكية وكذلك منصات أجهزة الألعاب كـ XBOX/PS
فيمكن برمجة برامج وتطبيقات وألعاب للحاسب ومنصات الألعاب وحتى للهواتف الذكية
مكتبات مستعملة في السي C ؟
هناك مكتبات عديدة تختلف حسب اختلاف مهامها ووظائفها
فهناك من بين المكتبات المعروفة والمشهورة في اللغة
- ( مكتبة stdio.h ) نستدعيها لنتمكن من استعمال دوال الإدخال والإخراج
للمزيد من الدوال : دوال الإدخال والإخراج والتعامل مع الملفات لمكتبة stdio لغة السي
- ( مكتبة math.h ) لاستعمال الدوال الرياضية
- abs إعطاء القيمة الصحيحة لعدد
- sqrt حساب الجذر التربيعي
- pow حساب أس العدد
للمزيد من الدوال : دوال رياضية لمكتبة math لغة C
- ( مكتبة time.h ) لإعطاء الوقت والتاريخ نذكر منها
للمزيد من الدوال : دوال لإعطاء الوقت والتاريخ مكتبة time لغة C
هناك مكتبات أخرى كمكتبة string/float وغيرها
للمزيد : مكتبات أخرى تابعة للغة C
هل لغة السي متعددة المنصات ؟
- بالفعل لغة C متعددة المنصات تدعم Unix/Windows/Mac OS
وتدعم أنظمة تشغيل أخرى كثيرة كالمذكورة في الأعلى
كيف يمكنني أن أبرمج على بيئة السي ؟
لتكون مبرمجا بلغة C ولعمل تطبيقات عليها
يجب أن تتوفر على بيئة توفر لك ذلك
هناك برامج عديدة تتيح ذلك , منها
Microsoft Visual Studio
CodeBlocks
Notepad++
NetBeans
Embarcadero Delphi
وغيرها الكثير .. يمكنك التوسع فيها عن طريق جوجل
وأنا أفضل لك أخي أن تستعمل برنامج CodeBlocks
لأنه سريع وحجمه صغير ولا يأخذ مساحة كبيرة على جهازك
كما أنه يدعم مختلف المكتبات التي تدعمها اللغة
تحميل برنامج Codeblocks مترجم السي ( C Compiler )
روابط خارجية
لغة السي (ويكيبيديا)
مترجم جنو للغة سي
كتاب The C Programming Language
بعض أشكال الدوال في لغة C
فهرس شامل عن لغة C/C++
كتاب The C Programming Language الأول والثاني
من تأليف دينيس ريتشي مع براين كيرنيجان ويعدان أول كتابين يشرحان اللغة
للتحميل
الإصدار الأول
الإصدار الثاني
إلى هنا بحول الله أكون قد انتهيت وقد كانت هاته مقدمة متواضعة عن لغة السي
وإن شاء الله سأضع الدرس في كتاب PDF لتعم الفائدة أكثر
ملاحظة : اعتمدت في موضوعي هذا فكرة جديدة وهي بوضع الكلمات المفتاحية في الدرس وأسماء لغات البرمجة والشركات المطورة لها بروابط من ويكيبيديا .. بحيث لما تقرأت أنت شرحي هذا وتصل مثلا إلى كلمة متعدد المنصات أو c++ أو عبارة أخرى ولا تفهم ما هي .. فإنك فقط تضغط على هاته العبارة أو الكلمة ليتم نقلك إلى مقال عنها في موسوعة ويكيبيديا أو مكان آخر حتى يتسنى لك الفهم الجيد لها والتوسع في مفهومها ثم تعود وتكمل المقال
هنا ينتهي الموضوع وبالتوفيق
محمد فلاك
عالم البرمجة
يمكنك ان تستخدم الإبتسامات بالوقوف عليها لمعرفة الكود :
=q =w =s =d =f =g =h =t =y =u =z =x =c =v =b =n =m =a =e =r