هاتف

مقدمة في لغة سي C وهل يجدر بك تعلمها في 2021

السي C


ماهي لغة السي C ؟

   لغة سي C هي لغة متعددة الاستخدامات ذات شعبية كبيرة، بسيطة و مرنة. هي لغة برمجة مهيكلة Structured programming languages، تستطيع الاشتغال في جميع أنواع الآلات و تستعمل بكثرة في مجالات متنوعة.

   السي C كانت اللغة الأساسية في بناء أنظمة التشغيل مثل نظام ويندوز و حتى البرامج المعقدة مثل قاعدة بيانات أوراكل Oracle، برنامج جت Git، مفسر لغة بايثون Interpreter... يمكن القول أن لغة السي هي من أساسات البرمجة، إذا تعلمت السي فيمكنك بسهولة تعلم لغات البرمجة الأخرى المبنية على سي.
 
   تساعد لغة السي في فهم كيفية اشتغال ذاكرة الحاسوب، و ذلك لأن هذا يعد أساسيا في التعامل مع هذه اللغة. 

تاريخ لغة السي C : 

   تعد لغة ألغول ALGOL أم لغات البرمجة. تم إنشائها في عام 1960، تم استخدامها بشكل كبير في الدول الأوروبية. تعد ألغول أول لغة استخدمت مفهوم البرمجة المهيكلة. في عام 1967 تم الإعلان عن لغة برمجة جديدة تدعى BCPL، هذه اللغة تم تصميمها و تطويرها من قبل مارتن ريتشاردس Martin Richard's، خصيصا لكتابة برمجيات الأنظمة. كان هذا عصر لغات البرمجة بامتياز، فبعد ثلاث سنوات فقط تم الإعلان عن لغة برمجة جديدة تدعى B من قبل Ken Thompson، و التي احتوت على العديد من مميزات لغة BCPL، هذه اللغة تم إنشائها باستعمال برنامج التشغيل يونكس UNIX في مختبرات AT&T and Bell

   كل من لغتي BCPL و B كانتا لغات نظام System. في عام 1972، قام شخص اسمه دينيس ريتشي Dennis Ritchie ، وهو عالم حاسوب بإنشاء لغة السي C في مختبرات Bell. تم بنائها على لغة ALGOL، BCPL و B. تحتوي السي على جميع خاصيات هذه اللغات زيادة على مميزات و مفاهيم جديدة. 

   تعد سي C لغة برمجة قوية، يتم ربطها كثيرا ببرنامج التشغيل يونكس UNIX. فمعظم هذا النظام تم كتابته بلغة سي C. ففي الأساس كانت لغة السي محدودة في UNIX. لكن سرعان ما انتشرت في جميع أنحاء العالم. اليوم لغة سي تشتغل في العديد من المنصات و أنظمة التشغيل. 

   مع مرور الوقت تطورت و تم إطلاق نسخ متعددة، كان يصعب أحيانا على المطورين المواكبة مع النسخ الجديدة إذ كانت الأنظمة تشتغل بنسخ أقدم. لضمان أن لغة سي ستظل لغة أساسية ومعيارية قام المعهد الوطني الأمريكي للمعايير ANSI، بتعريف معيار تجاري للغة سي سنة 1989. لاحقا قامت المنظمة العالمية للمعايير بالمصادقة عليها. 

  ثم تطوير لغات برمجة مثل سي بلس بلس و جافا Java من لغة السي C ، هذه اللغات تستخدم في العديد من المجالات، ولهذا لغة سي C تعد أساسا للعديد من اللغات الأخرى المستخدمة حاليا. 

استخدامات لغة سي C :

1 - سي C تستخدم في برمجة الأنظمة المضمنة. 

2 - تستخدم في تطوير برمجيات الأنظمة. 

3 - تستخدم بشكل واسع في تطوير تطبيقات الحاسوب. 

4 - جل تطبيقات شركة أدوبي Adobe تم تطويرها بلغة سي. 

5 - تستخدم في تطوير المتصفحات و إضافاتها. جوجل كروم تم تطويره بلغة سي. 

6 - تستخدم في تطوير قواعد البيانات فقاعدة البيانات المشهورة ماي إس كيو إل MySQL تم تطويرها بلغة سي. 

7 - يتم استخدامها في تطوير أنظمة التشغيل مثل مايكروسوفت و ماك أو إس، وكذلك أنظمة تشغيل الهواتف الذكية. 

8 - تستخدم في صناعة المحولات البرمجية.
 
Compilers - 9.يتم استخدامها بشكل واسع في إنترنت الأشياء. 

لماذا عليك تعلم لغة سي C ؟

السي C

  السي C ستعلمك بالضبط كيف تعمل الحواسيب تعلم لغة السي سيعلمك المبادئ الأساسية لعلوم الحاسوب، كمثال مفهوم المؤشرات pointers وهذه الأخيرة من الضروري فهمها لكل شخص يريد برمجة تطبيقاته الخاصة. 

  لغة السي C ستجعلك واثقا مما تكتب في ملفاتك بأي لغة برمجية مهما كانت و ذلك لأنك تعلم كيف يشتغل البرنامج على المستوى المنخفض القريب للآلة. 

  لكي نفهم هذا الأمر دعني أعطيك مثالا: يمكنك إتباع حمية غدائية خاصة بك بالإستعانة بشخص خبير في التغذية، لكن لن تكون قادرا على أن تفهم لماذا تم اختيار بعض المكونات دون أخرى. في حالة ما لم تنفع معك هذه الحمية الغذائية ( لم تفقد وزنك، لم تكتسب كتلة عضلية...) ،فلن تكون قادرا على معرفة السبب و لن تكون قادرا على إصلاح هذه الحمية حتى تكون مناسبة لك.
 
  لكن لو قمت بتأليف حميتك الغذائية بنفسك و تعلمت بعض الأمور حول علم التغذية، الصحة، و كيفية اشتغال الجسم البشري. فستكون قادرا في حالة بروز مشكلة ما و بنسبة كبيرة على إصلاحها. نفس الأمر ينطبق على مجال البرمجة، يمكنك اختيار لغة برمجة عالية المستوى (الإستعانة بخبير في التغذية)، أو تعلم الأمر بنفسك و اختيار لغة كلغة السي C

  معرفة كيفية اشتغال الأمور سيعطيك القدرة أيضا على حل المشاكل. 

إيجابيات تعلم لغة السي C كأول لغة : 

   تعلم لغة السي C ليس ضروريا لك كمبرمج، لكن هذه اللغة ستنفع كثيرا مسيرتك في البرمجة.
 
   هناك العديد من الفوائد لتعلم لغة السي كأول لغة بالنسبة لك كمبرمج عوض اللغات العالية المستوى مثل سي بلس بلس ++C أو بايثون Python. حين تشتغل مع لغات مثل جافا Java، سي شارب #C أو بايثون Python، فإنك تبتعد عن المبادئ الجوهرية للبرمجة و تتوجه أكثر نحو المكتبات Libraries و إطارات العمل Frameworks. لكن مع لغة السي فأنت تتوفر على مكتبات معدودة وقليلة، ستركز أكثر على ألفاظ اللغة، كما أن السي ستفرض عليك التفكير أكثر و بشكل أعمق حول ما يحصل على مستوى الالة أو الحاسوب.
 
   لغة السي C هي لغة برمجة متوسطة المستوى ( ليست منخفضة المستوى كما يظن بعض الناس). لغة السي C هي لغة المحولات و المفسرات البرمجية Compilers and interpreters، لغة محررات النصوص، لغة أنظمة التشغيل و البرمجة المضمنة Embedded Programming

   إذا أردت تعلم لغة السي C فيتوجب عليك فهم طريقة تنفيذ البرامج Execution، التعرف على مفاهيم سجل المعالج Register، المكدس Stack، الكومة Heap، الذاكرة المخططة Mapped Memory... ستندهش عندما تتعلم مثلا كيف يتم استدعاء الدوال على مستوى الآلة وهذا ليس الشيء الوحيد الذي سيدهشك حول هذه اللغة. 

البساطة و السرعة : 

   من وجهة نظر برمجية فلغة السي C هي لغة بسيطة، أنا لا أقول أن طفلا يمكنه تعلم هذه اللغة لكن من حيث البساطة فهي تعد مناسبة للمبتدئين (شرط أن يكون المتعلم متمكنا من أساسيات البرمجة). البرامج المكتوبة بلغة السي سريعة و ذات كفاءة عالية، فإذا كان برنامجك بطيئ فعليك التوجه إلى لغة سي . برامج سي C ليست سريعة و حسب بل حتى اللغة نفسها Syntax ستعودك على كتابة كود برمجي فعال و سريع. 

   لغة سي تتعامل أيضا مع المؤشرات Pointers، ذاكرة الوصول العشوائي و العديد من المفاهيم الأخرى. ستتعلم أيضا لماذا يعد تمرير المتغيرات الكبيرة بواسطة المرجع أفضل من تمريره بالقيمة ( Pass by reference and pass by value). الشيء الوحيد الذي سيعلمك كتابة الكود بشكل أفضل من سي هو لغة منخفضة المستوى، لكن لا أنصحك بالتوجه لهذا المجال. 

كود برمجي نظيف : 

   تعلم لغة سي سيعلمك أيضا كيفية كتابة كود برمجي عملي بصيغة أمرية. السي ليست لغة كائنية التوجه و بالتالي لن تحتاج إلى إتعاب نفسك في تعلم مفاهيم الوراثة Inheritance و تعدد الأشكال Polymorphism. أنا لا أقول أن هذه المفاهيم سيئة أو أنه لا يجب عليك تعلمها، لكنها تجعل البرمجة أكثر تعقيدا. 

الانضباط البرمجي : 

   لغة سي هي لغة متطلبة، حساسة و أحيانا غامضة. يمكنك كتابة كود برمجي يصعب قرائته بلغة سي لكنك لست مجبرا على ذلك،  كتابة كود قابل للصيانة بلغة سي سيتطلب انضباطا برمجيا. أغلبية لغات البرمجة الأخرى لا تعلمك الإنضباط البرمجي، لغة السي تتفرد و تتميز في هذا الأمر. إصلاح الأخطاء البرمجية في معظم اللغات المعاصرة يعد سهلا وتافها أحيانا. لكن في لغة سي ستكون حذرا عند إضافة أي رمز من الرموز البرمجية، و بالتالي ستتعود على استيعاب كل حرف تقوم بكتابته. 

البرمجة المضمنة : 

   البرمجة ممتعة، مشاهدة حاسوبك يقوم بما تأمره به أمر رائع. لكننا كبشر لا نستطيع إستيعاب ماهية مرور الكهرباء في الأسلاك، ولهذا تعد مشاهدة يد روبوت قمت ببرمجة دارته الكهربائية أمرا مسليا و ممتعا. تعد لغة سي مناسبة للبرمجة المضمنة، كما ذكرت سابقا، لغة سي سريعة ولديها القدرة على الوصول إلى أشياء منخفضة المستوى في حاسوبك، وهذا مايجعلها مناسبة للبرمجة المضمنة Embedded Programming

الشعبية : 

   كما ذكرت سابقا لغة سي مناسبة للبرمجة المضمنة، ولهذا فهي تتوفر على شعبية كبيرة في هذا المجال. سي لديها أيضا شعبية كبيرة في المجالات الأخرى. هذا ترتيب لغة سي سنة 2020 حسب مجلة IEEE Spectrum. و مجلة TIOBE Index

السي C

السي C

   سي C دائما تحتل المراكز الأولى كما أن شعبيتها تزداد يوما بعد يوم. لكن أليست سي بلس بلس أفضل؟ هذا سؤال وجيه. لغة سي بلس بلس مشتقة من لغة سي، فإذا تعلمت السي فسيسهل عليك كثيرا الانتقال إلى تعلم السي بلس بلس. 


   أشكرك على قرائتك لهذا المقال، إذا كان لديك تساؤل أو توضيح ضعه في خانة التعليقات أسفله و أراك في مقالة جديدة إن شاء الله.alert-info

إرسال تعليق

0 تعليقات