لغة سي C هي لغة برمجة عامة الأغراض طورها المبرمج دينيس ريتشي Dennis Ritchie من شركة Bell Labs عام 1972 بهدف إيجاد لغة برمجة فعالة ومفهومة تصلح لبرمجة أنظمة التشغيل، فكانت لغة سي C التي اتسمت ببساطتها وقوتها ووفرت إمكانية الوصول المباشر لموارد الحاسوب.<br />كما استخدمت لغة سي لبرمجة نظام التشغيل يونكس Unix المُطوَّر كذلك في شركة Bell Labs فقد كانت نواة يونكس مكتوبة بلغة التجميع assembly وهي لغة برمجة منخفضه المستوى ثم نقلت للغة C التي تفوقت عليها وتمكنت من تأدية مهامها بنفس الكفاءة وبعدد أقل من أسطر التعليمات البرمجية وهذا زاد من قوتها وشهرتها وبدأ استخدامها في العديد من المجالات والتطبيقات العديدة الأخرى.<br />ستجد أن لغة C تصنف وفق عدة مستويات للغات البرمجه فبعض المراجع تصنفها على أنها لغة برمجة عالية المستوى high level programming language في حين تصنفها مراجع أخرى بأنها لغة برمجة متوسطة المستوى medium level programming language لكونها تتضمن العديد من الميزات والوظائف منخفضة المستوى وعالية المستوى بنفس الوقت، ويمكن اعتبارها كلغة وسيطة بين اللغات منخفضة المستوى المنخفض مثل لغة الآلة أو لغة التجميع، واللغات عالية المستوى مثل لغة جافا أو بايثون <br />كما تسمى لغة البرمجة C بأم لغات البرمجة حيث اعتمدت معظم لغات البرمجة الأحدث مثل C++ و C# وجافا وبايثون و PHP وجو Go على طريقتها وأسلوبها في كتابة التعليمات ولهذا السبب ستجد أن لغة سي C أول لغة برمجة يقرر تعليمها لطلاب كليات هندسة البرمجيات وعلوم الحاسوب والتعرف على أساسيات البرمجة من خلالها، فتعلم هذه اللغة يوفر الأساس المتين الذي يمكن المبرمج من فهم اكواد أي لغة برمجة أخرى بسهولة أكبر واحتراف حل المشكلات البرمجية وبعد تعلمها لن يصعب عليه تعلم أي لغة برمجة أخرى.<br /><br />استخدامات لغة سي C<br />تستخدم لغة C في مجموعة منوعة من التطبيقات والمجالات ومن أبرز استخداماتها:<br /> • تطوير أنظمة التشغيل فنواة نظام التشغيل يونكس UNIX ولينكس Linux وويندوز Windows ونواة أنظمة Apple OS X كلها مكتوبة بلغة سي C. <br /> • برمجة التطبيقات المساعدة لنظام التشغيل فمعظم متصفحات الويب على سبيل المثال مبرمجة بلغة C كما أن معظم إضافات المتصفحات مكتوبة بها. <br /> • تطوير لغات البرمجة ومصرفاتها Compilers أو مفسراتها Interpreters وهي عبارة عن برامج تحول أو تترجم لغات البرمجة عالية المستوى إلى لغة الآلة، على سبيل المثال مفسر لغة بايثون Python Interpreter مطور باستخدام لغة C. <br /> • برمجة التطبيقات المضمنة وتطبيقات انترنت الأشياء والأنظمة المدمجة وبرمجة المتحكمات الدقيقة المستخدمة في برمجة الأجهزة الذكية كالسيارات ذاتية القيادة أو الروبوتات الذكية لما توفره من تحكم مباشر بالعتاد. <br /> • بناء قواعد البيانات فالعديد من أنظمة إدارة قواعد البيانات المعروفة مثل أوراكل Oracle و MySQL و PostgreSQL تستخدم لغة C. <br /> • تعد لغة C كذلك لغة مثالية لبرمجه تطبيقات سطح المكتب فعالة وعالية الأداء، فهي تمكن المطور من الوصول بسهولة لموارد الحاسوب كالمعالج والذاكرة والتحكم في أداء التطبيق بمرونة كبيرة. <br /> • برمجه الالعاب الالكترونيه وتطوير محركات الألعاب ومن أشهر الألعاب المطورة باستخدام لغة سي C لعبة Quake و Doom. <br /> • تطوير خوادم الويب الكبيرة التي تحتاج إلى التعامل مع عدد كبير من الطلبات في وقت واحد و معالجة البيانات بسرعة مثل خادم اباتشي أو إنجن إكس <br /> • وبالعموم تصلح لغة سي بشكل عام لتطوير كافة التطبيقات عالية الأداء التي تحتاج لإنجاز الكثير من العمليات أو تتطلب معالجة كمية ضخمة من البيانات بسرعة.<br />عيوب لغة سي C<br /> • لا تدعم لغة سي مبدأ البرمجة كائنية التوجه OOP بشكل ضمني وتدعم فقط نموذج البرمجة الإجرائية وهذا يجعل إعادة استخدام الشيفرة محدود ويصعب صيانة البرامج الكبيرة، لكن هناك مكتبات يمكن أن توسع ميزات اللغة وتضيف لها بعض الميزات كائنية التوجه للغة مثل مكتبة OOPC.<br /> • تجبرك لغة سي C على تحديد نوع المتغير عند التصريح عنه، لكنها لا تفرض قيودًا صارمة على أنواع المتغيرات، حيث يمكنك على سبيل المثال تعريف متغير من نوع عدد صحيح int واستخدامه لاحقًا لتخزين قيمة من نوع عدد حقيقي float وهذا قد يؤدي إلى وقوع بعص الأخطاء في البرنامج.<br /> • تتحقق لغة C من الأخطاء البرمجية وقت تشغيل الكود "runtime" مما يصعب عملية فحص الكود وتصحيح الأخطاء البرمجية خاصة في المشاريع الضخمة.<br /> • لا تدعم لغة C مفهوم الاستثناءات exceptions وهو مفهوم برمجي يسهل تحديد الأخطاء البرمجية وتصحيحها.<br /> • لا تدعم لغة C مفهوم فضاءات الأسماء namespace التي تعد من الميزات البرمجية المفيدة في منع تضارب بين أسماء المتغيرات أو الوظائف وتساعد في تنظيم التعليمات البرمجية<br />