ahmed.o.mohamed

[C] الخطوات الأولى لتعلم لغة C

1 مشاركة في هذا الموضوع

فهرس الأسئلة:

  1. نبذة تاريخية عن لغة C
    • من أين جاءت لغة C ؟
    • ماهي مميزاتها ؟

[*]الأدوات اللازمة

  • ما هـو المترجـم ؟
  • لماذا نحتاج إليه ؟
  • لماذا يحلل المترجم وبعدها يبدأ بالتوليد ؟
  • ماذا يعني مصطلح IDE ؟
  • ماهي أشهر الــ IDE المُستخدمة حاليا ؟
  • ما هي سلبيات و إيجابيات كلِّ من Visual C++, Code::Blocks و NetBeans ؟

1. نبذة تاريخية عن لغة C :

من أين جاءت لغة C ؟

في الخمسينيات من القرن الماضي كانت توجد مجـموعة من لغـات البرمجة منها لـغـة الـ Fortran و الـ Cobol و الـ Basic و Pascal و ..., و كان لكـل مـن هذه اللغات مجالها الخاص !, حيث كانت تُستخدم لغة الفورتران في التطبيقـات الهندسية و العلمية .. بينما تُستخدم لغة الكوبول في التطبيقات التجارية .. و هكذا بالنسبة للبقية.

بدأ مطوروا لغات البرمجة يسعون لدمج هذه اللغات في لغة واحدة تتميز برامجها بسـرعة التنفيذ و سهولة الإستخدام وكانت المحاولة الأولى من نصيب لغة CPL و هي اخـتصار لــ Combined Programming Language حيث قامت بتطويرها جـامعة كامبريدج (Cambridge) في المملكة المتحدة البريطانية, أما المحاولة الثانية فقد كانت على يد الخبير مارتين ريتشارد (Martin Richards) و هي لغة BCPL,كـان ذلك في سنة 1967 في جامعة كامبريدج أيضا, بينما كانت المحاولة الثالثة مـن طرف السيد كين تومسون (Ken Thompson) وهي لغة B حيث كانت هذه اللغة أحـسن من سابقاتها إلا أن ذلك لم يمنع من كونها بطيئة إلى حد ما ! و في سنة 1972 ولدت لغة C على يد خبير يُدعى دنيس ريتشي (Dennis Ritchie) في الولايات المتحدة الأمريكية و بالتحديد في مختبرات Bell

post-219439-015074800 1343735948_thumb.p

في عام 1978 قام دنيس ريتشي و براين كارنيغان (brian kernighan) بتأليف أول كتاب لهذه اللغة تحت عنوان : The C Programming Language و الذي يعتبر المرجع الأساسي لهذه اللغة.

post-219439-050770300 1343735996_thumb.p

ماهي مميزاتها ؟

كانت لغة C تحتوي على كثير من المميزات التي يرغب بها المبرمجون مثل السرعة و كونها متنقلة (حيث يمكن استعمالها تحت أكثر من نظام تشغيل) و هي لغة قياسية أيضا ففي عام 1989 تم تعريف نسخة قياسية من لغة C و سميت بـ ANSI C و هي مختصرة من American National Standards Institute C أي اللـجنة الوطنية الأمـريكية للمعايير, و بتعاون بين اللجنة الـوطنية الأمريكية للمعايير و المنظـمة العالمية للمعايير تم إطلاق لغة C القياسية سنة 1990 و سميت بـ ISO C و هي اختصار لـ International Organization For Standarizatoin.

2. الأدوات اللازمة:

لكي نقوم بتنفيذ أي كود برمجي في لغة C لا بد من وجود بـرنامج يُقال له الـ compiler أو المترجـم, و لكن .. ما هـو المترجـم ؟ و لماذا نحتاج إليه ؟ و ما هي أشهر المترجمات المتداولة حاليا ؟

ما هـو المترجـم !؟

المترجم (بشكل عام) هو برنامج يقوم بتحويل كود مكتوب بلغة برمجة عالية المستوى إلى لغة برمجة أخرى منخفضة المستوى, و بشكل خاص فإن المترجم هو برنامج يقوم بتحويل كود C إلى لغة منخفضة المستوى (قد تشبه لغة الأسمبلي) تسمى Intermediate Representation .

لماذا نحتاجه !؟

لنفرض أنك لا تعرف اللغة اليابانية و ذهبت إلى اليابان للقاء أحـد الأشخاص هناك !

الآن لديك مشكلة .. فأنت تريد التحدث مع شخص لا يعرف سوى اليابانية و أنت لا تعرف لغته !, يعني باختصار : كلاكما لا يعرف لغة الآخر.

إذا أردتُما التحدث إلى بعضكما البعض فلابد من وجود شخص ثالث يعمل كـمترجم فيقوم بتحويل كلامك إلى اللغة اليابانية (لـكي يفهمه الياباني) و يحول كلام الياباني إلى اللغة العربية (لكي تفهمه أنت), إذن فـهو يعمل كوسيط بينكما لكي يفهم كل منكما تعليمات الآخر.

التعريف السابق بنفس الشكل والصورة هو الذي يحدث في عالم البرمجة, فجميعنا نعرف أن الحاسب (المعالج والذاكرة) لا يتعاملان إلا مع الأرقام الثنائية 0 و 1 (سريان تيار أو عدم سريانه), فلكي يفهم الحاسوب برامجنا لا بد أن يتم تحويلها إلى لغة الآلة , وهـذا بالضبط ما يفعله المترجم حيث يقوم بالتحويل من لغة إلى أخرى (قد تكون لغة الآلة أو لغة أخرى على حسب نوع المترجم والغرض المصمم من أجله.)

عوداً على بدء .. و لكي يكون الكلام أدق فإن الشخص الثالث (المترجم) يجب أن يقوم بالترجمة بشكل صحيح لذلك عليه أن يفهم مالذي يقوله الشخص الأول (تحليل الكلام) ومن ثم يقوم بترجمة ما فهمه إلى الشخص الثاني (توليد الكلام).

نفس الأمر يحدث للـ compiler حيث يقـوم بتحليل النص أولا في مرحلة يمكـن أن نطلق عليها إجمالا Analysis Phases, بعدها يقوم بتحويل الكود إلى اللغة الجديدة المراد الوصول إليها وهي مرحلة التوليد أو ما يعرف بــ Synthesis Phases.

ولكن .. لماذا يحلل المترجم وبعدها يبدأ بالتوليد ؟

سنوضح هذا السؤال بسؤال آخر !, لنفرض أنك تتكلم مع الشخص الثالث (ليترجم ما قلتَه إلى الياباني) و قلت له كلام ليس بالعربية (المترجم يحول من العربية إلـى اليابانية فقط), الآن سيعترض المترجم .. لأن الكلام الذي قلتَه لا يملك معنى في العربية حتى يتم تحويله إلى اليابانية, نفس الشيء بالنسبة للـ compiler , فالمترجم يحلل الكلام للتأكد من أن البرنامج صحيح وموافق تماما لقواعد اللغة, فإذا كان هناك خطأ ما في هذه المرحلة سيتوقف المترجم عن العمل وسيخبرك بمكان هذا الخطأ, إذا كـان الخطأ نحـوي (يتعلق بقواعد اللغةSyntax Error ) سيتوقف المترجم مباشرة عن العمل, أمـا فـي الأخطاء الأخرى فلن يتوقف عن العمل وسيكمل مرحلة تحليله واكتشاف باقي الأخطاء, طبعا هذا ما يعرف ب Error Recovery.

جميع المترجمات الحديثة متوفرة لها عدة IDE, ماذا يعني هذا المصطلح؟

أولا الكلمة IDE مختصرة من Integrated Development Environment أي بيئة تطوير متكاملة, حيث تساعد هذه المترجمات المبرمج في كل من التحرير,التـرجمة و الربط ففي السـابق كانت الترجمة و الربـط يتمان على شكل أوامر ! أما في الـ IDE فأصبحت عملية الربط و الترجمة تتم عن طريق الضغط على زر واحد من لوحة المفاتيح.

باختصار : بيئة التطوير هي من يقوم بتـنفيذ هذه الأوامر بدلا منك.

ماهي أشهر الــ IDE المُستخدمة حاليا ؟

يوجد العديد من الــ IDE .. منها, العملاق Visual C++ المقدم من شركة Microsoft و الرائع Dev المقدم من شركة Bloodshed و العجوز Borland, المقدم من شركة Borland, كما يوجد أيضا الأنيق Code::Blocks, بالإضافة إلى الـ IDE الممتاز و الذي أفضله شخصيا وهو NetBeans و إذا أردنا سرد أسماء جميع المترجمات المتميزة فالمقام يطول ...!

ما هي سلبيات و إيجابيات كلِّ من Visual C++, Code::Blocks و NetBeans ؟

  1. Code::Block
    • سلبياته : لا يحتوي على العديد من الخيارات المتقدمة, لكنه مُناسب للمبتدئين-المتوسطين.
    • إيجابياته : سريع, خفيف ومجاني أيضا, كما أنه متعدد المنصات.

[*]Visual C++

  • سلبياته : يعمل على الـ Windows فقط ! كما أنه كبير الحجم و بطيء شيئا ما, غير مجاني أيضا.
  • إيجابياته : يدعم أكثر من لغة برمجة. يمكنك من خلاله الإتصال بقواعد البيانات. يحتوي على Debugger قوي جدا !

[*]Netbeans

  • سلبياته : حجمه كبير شيئا ما لكنه أصغر حجم من الــ VC.
  • إيجابياته : يدعم مُعظم لغات البرمجة (C, C++, J2SE, J2EE, J2ME, FORTRAN, PHP, ...), سريع, خفيف ومجاني, كما أنه متعدد المنصات. يمكنك أيضا من خلاله الإتصال بقواعد البيانات.

تم تعديل بواسطه أحمد الشنقيطي
إضافة أسئلة جديدة.
3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .