سي (لغة برمجة)

قبل الخوض في التفاصيل، سي أو سِ (، وباللاتينية C)، هي لغة برمجة متعددة الاستخدامات ابتكرها دينيس ريتشي في عام 1972. وبحكم تصميمها، تتيح لغة سي للمبرمجين وصولاً مباشراً نسبيًا إلى ميزات هيكليات وحدة المعالجة المركزية (CPU)، مُخصصة لمجموعة التعليمات المستهدفة. وقد استُخدمت ولا تزال تُستعمل لإنشاء أنظمة التشغيل (خاصةً النواة)، وبرامج تعريف الأجهزة، والبروتوكولات، على الرغم من تراجع استخدامها في التطبيقات. تُستعمل لغة سي على أجهزة الكمبيوتر بدءًا من الحواسيب الفائقة وصولًا إلى وحدات التحكم الدقيقة والأنظمة المدمجة. وتعرض الأقسام التالية جوانب أخرى من الموضوع.
إضافةً إلى ذلك، لغة سي هي لغة أمرية إجرائية، تدعم البرمجة المهيكلة، ومجال المتغيرات المعجمي، والعودية، مع نظام أنواع ثابت. وقد صُممت هذه اللغة بحيث يتم تصريفها لتوفير وصول منخفض المستوى إلى الذاكرة وبنيات لغوية تتوافق بكفاءة مع لغة الآلة، كل ذلك مع الحد الأدنى من الدعم أثناء التشغيل. وعلى الرغم من قدراتها منخفضة المستوى، فقد صُممت اللغة لتشجيع البرمجة عبر منصات متعددة. ويمكن ترجمة برنامج سي متوافق مع المعايير ومكتوب مع مراعاة قابلية النقل لمجموعة واسعة من منصات الحاسوب وأنظمة التشغيل مع إجراء تغييرات قليلة على شفرة المصدر الخاصة به.
وعلى صعيد آخر، تم تطوير لغة سي في البداية كخليفة للغة البرمجة بي في مختبرات بيل على يد ريتشي بين عامي 1972 و1973. وكان الغرض الأولي منها هو إنشاء برامج مساعدة تعمل على نظام يونكس، ثم أُعيد استخدامها لاحقًا لإعادة تطوير نواة نظام التشغيل يونكس. خلال الثمانينيات، اكتسبت لغة سي شعبية تدريجية، مما أدى إلى أن تصبح واحدة من لغات البرمجة الأكثر استخدامًا، مع توفر مصرفات لغة سي عمليًّا لجميع معماريات الكمبيوتر وأنظمة التشغيل الحديثة. كان كتاب «لغة البرمجة سي»، الذي شارك في تأليفه مصمم اللغة الأصلي، بمثابة المعيار الفعلي للغة لسنوات عديدة. تم توحيد معايير لغة سي منذ عام 1989 من قبل المعهد الوطني الأمريكي للمعايير(ANSI)، ثم بشكل مشترك لاحقًا من قبل المنظمة الدولية لمعايير (ISO) واللجنة الكهروتقنية الدولية (IEC).
وفي هذا الصدد، على الرغم من أن لغة سي ومكتبتها الرسمية لا توفران بعض الميزات الشائعة الموجودة في لغات أخرى، إلا أنها تتمتع بالمرونة الكافية لدعمها. مثلًا، يتم دعم البرمجة غرضية التوجه وخاصية جمع القمامة من خلال مكتبتين خارجيتين هما جي أوبجيكت (GLib Object System) و جامع القمامة البوهيمي (Boehm garbage collector).
ومن جهة أخرى، منذ عام 2000، احتلت لغة سي عادةً المرتبة الأولى أو الثانية بين اللغات الأكثر شعبية في فهرس تيوبي للغات البرمجة الأكثر شعبية.
أمثلة
- #include
- int main {
- int num1,num2;
- printf("enter two numbers \n");
- scanf("%d%d",&num1,&num2);
- printf("[+] = %d \n",num1+num2);
وفي هذا السياق، العمليات الحسابية و هذا المثال هو عبارة عن حاسبة بسيطة تقوم بالعمليات الحسابية الأساسية بين عددين:
printf("[-] = %d \n",num1-num2);
- if (num2 != 0) printf("[/] = %d \n",num1/num2);
- printf("[*] = %d \n",num1*num2);
- }
- انظر كذلك
- أنسي سي
- سي++
- تجميعة مترجمات جنو
خاصيات
وعلى صعيد آخر، تدعم اللغة الوصول على مستوى منخفض إلى ذاكرة الحاسوب عبر المؤشرات (pointers)، والتركيبات الشبيهة بالإجراءات في شكل دوال تُرجع النوع الفارغ ، وتنظيم الذاكرة يدويا من خلال دوال المكتبة الرسمية. وتشمل اللغة معالج سي المسبق لتعريف الماكرو، وإدراج ملفات المصدر، والتصريف الشرطي. ويتم دعم البرمجة التركيبية من خلال معالجة الملفات بشكل منفصل، مع التحكم في مستوى الرؤية عبر السمات و. يتم تقليل الوظائف في اللغة الأساسية إلى الحد الأدنى، حيث يتم توفير الميزات المعقدة نسبيًا مثل الإدخال/الإخراج، ومعالجة السلاسل، والوظائف الرياضية من خلال المكتبات الرسمية. ويكون للكود المُجمَّع الناتج متطلبات بسيطة نسبيًا من النظام الأساسي، مما يجعل لغة سي خيارًا مفضلاً لأنظمة التشغيل والأنظمة المدمجة.
ومن جهة أخرى، يتم فرض نوع البيانات بشكل ضعيف وثابت، مع وجود تحويل ضمني بين الأنواع الأولية. تسمح الأنواع المُعرَّفة من قبل المستعمل باستخدام أسماء مستعارة لمحددات الأنواع. يتم تعريف المصفوفات والوصول إليها باستخدام صيغة الأقواس المربعة، مثلًا . يسمح النوع الهيكلي (struct) المُعرَّف من قبل المستعمل بتمرير عناصر البيانات ذات الصلة ونسخها كوحدة واحدة، على الرغم من أنه لا يمكن مقارنة هيكلين دون استخدام كود مخصص لمقارنة كل حقل على حدة. تدعم الاتحادات (unions) العناصر المتداخلة، مما يسمح لأنواع بيانات متعددة بمشاركة نفس موقع الذاكرة، كما تدعم الأنواع التعدادية (enumeration types) استخدام الأسماء المستعارة للقيم العددية. تفتقر لغة سي إلى نوع مخصص للسلاسل المحارف النصية (strings)، لكنها توفر صيغة للسلاسل المنتهية بقيمة null، مع معالجة مخصصة لها في مكتباتها الرسمية.
علاوةً على ذلك، يتم إرسال المدخلات بنسخ وإرسال قيمتهم فقط؛ ويتم التمرير بالمرجع (بمعنى إرسال المدخل نفسه) باستخدام المؤشرات (لإرسال عنوانه في الذاكرة). يمكن تجاهل ما ترجعه الدالة، وعلى الرغم من أنه لا يمكن عادةً تداخل دالة داخل دالة أخرى، إلا أن بعض المُترجمات تدعم ذلك. تدعم لغة سي العودية، ويمكن تحقيق تعدد الأشكال في وقت التشغيل باستخدام مؤشرات الدوال. يتم التحكم في تراتبية الأوامر البرمجة من خلال بنى مثل if و و و و . توفر اللغة أدوات حسابية وأدوات بتية وأدوات منطقية بما في ذلك و و و و ، ويمكن إجراء إسنادات متعددة في عبارة واحدة. لا يمكن الوصول إلى المتغير المُعلن داخل كتلة إلا داخل تلك الكتلة وأسفل إعلانه.
من جهة ثانية، لغة سي هي لغة أمرية وإجرائية تتميز بأنها حرة النسق. تنتهي الجمل بـفاصلة منقوطة وتُجمَّع في كتل باستخدام الحاضنتان . وتُحتوى كل التعليمات البرمجية القابلة للتنفيذ في دوال بدلاً من الجمل في المستوى الأعلى. تحتوي اللغة على عدد صغير نسبيًا من الكلمات المفتاحية، ولا يُفرَّق بين المعرِّفات التي يحددها المستعمل والكلمات المفتاحية بأي رمز مميز.
إستخدامات
- للغة سي إستخدامات عديدة، وتستعمل في:
- أنظمة التشغيل
- الأفلام ثلاثية الأبعاد
- إستخدامها كلغة وسيطة
- تطوير لغات برمجة عليها
تاريخ
ومن جهة أخرى، و لولا ظهور لغة السي وتجربتها التي فاقت الثلاثين عاماً لما كان من الممكن ظهور اللغات الحديثة والشيئية مثل السي++ أو على الأقل لما أصبحت كما تعرف عليهِ اليوم.
وفي هذا الصدد، ساهم في تطوير اللغة كل من شركة مايكروسوفت وشركة آي بي إم معاً ولذلك فإن الأساسيات العامة لأسلوب كتابتها تستعمل إلى الاَن وفي الكثير من اللغات المتطورة والمنشأة من خلالها حتى اَخر لغات السي وهي لغة السي شارب والتي تُعتبر أحدث تطور للغة السي ويوجد إصدارات عديدة منها بدءاً من سنة 2001 حتى إصدار سنة 2010.
من جانب آخر، وفي عام 1978 نشر بريان كيرنيغان ودينيس ريتشي الكتاب المشهور «لغة البرمجة سي» وذلك لتحديد خصائص اللغة، ويعرف هذا الكتاب في الأوساط المختصة ب K&R. إلا أن تقنين اللغة وتبنيها بصفة رسمية من طرف المعهد القومي الأمريكي للقياس والمنظمة الدولية للمعايير حصل في عقد الثمانينات وكنتيجة لذلك ظهرت الطبعة الثانية للكتاب بعنوان The C Programming Language, Second Edition، أو K&R2 وهو المرجع الرئيسي للغة إلى الآن ISBN 0-13-110362-8. وبتقنين اللغة تمت إضافة أجزاء وتنقيح أجزاء أخرى لتفادي السلبيات التي ظهرت في السابق ولتهيئة أداة أفضل وأقوى بالنسبة للمبرمج.
من جهة ثانية، صممت لغة السي في مختبرات بيل ما بين عامي 1972 و 1973، وسميت بالسي لأن جزءاً كبيراً منها اقتبس من لغة بي، وقد تطورت هذه اللغة إلى درجة أصبحت فيها بالقوة الكافية لتحويل نواة يونكس من لغة التجميع (الأسمبلي) إلى السي.
برنامج أهلا بالعالم
- هده هي النسخة الأصلية:main
- {
- printf("Hello, world!\n");
- }النسخة الحديثة منه:#include
- int main
- {
- printf("Hello, world!\n");
- return 0;
- }
وفي السياق ذاته، برنامج أهلا بالعالم التقليدي الذي ظهر في كتاب لغة البرمجة سي في النسخة الأولى أصبح هو المثال الذي يقدم في جميع كتب لغات البرمجة على وجه التقريب. البرنامج يقوم بكتابة أهلا يا بالعالم تيار البيانات المخرجة:
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟