قصة لغة . C

أرسل من قبل siminov في الثلاثاء, 2008/02/12 - 9:38pm.
صورة siminov

تاريخ التسجيل: 2008-02-06
مشاركات: 64

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الأولى
الاختصاص: غير ذلك

يقولون بأنه بمعرفة التاريخ فإنك تستطيع تحليل ما كان... وفهم ما أنت عليه الآن ... وتوقع ما سيكون (إن أراد الله) ... لذلك كان هو بداية حديثنا.

تبدأ قصتنا في عام 1960 كان لكل مجال أو تخصص لغة خاصة به, حيث كانت لغة الـ COBOL تستخدم في التطبيقات التجارية ولغة الـ FORTRAN تستخدم في التطبيقات الهندسية والعلمية, وهكذا.. ومن هنا بدأ المطورون بالتفكير (هل من الممكن إختزال جميع هذه التطبيقات في لغة واحده) وجاءت الإجابة في لغة الـ ALCOL 60 والذي قام بتطويرها (International Committee) ولأكنها لم يكتب لها الإنتشار وذلك بسبب ضعفها الشديد وهذا طبيعي لأول تجربة, وجاءت بعدها لغة الـ (Combined Programming Language) والتي تختصر إلى (CPL) وقام بتطويرها (Cambridge University) كانت هذه اللغة أفضل من سابقتها بكثير وكتب لها الإنتشار ولكن بشكل محدود بسبب صعوية التعامل مع عناصرها, مما أتاح المجال لتطويرها لتصبح لغة (Basic Combined Programming Language) وتختصر إلى (BCPL) قام بتطويرها (Martin Richards at Cambridge University) حيث قاموا بحل مشكلة الصعوبة ولكنها نتيجة لذلك أصبحت لغة إلى حد ما ضعيفة, وبعدها ظهرت لغة الـ (B) والتي تطورت بواسطة (Ken Thompson at AT&T) جاءت هذه اللغة ببعض التحسينات على لغة (BCPL) إلا أنها حوت على بعض نقاط الضعف مثل إحتوائها على نوع بيانات واحد فقط يسمى (Cell), وعدم دعدمها للـ (Floating Point Hardware), بالإضافة إلى بطئ الـ (Compiler). وبعدها وفي سنة 1972 ولدت بطلة قصتنا على يد رجل يدعى Dennis Richie في مختبر الـ AT&T’s في الولايات المتحدة الأمريكية, قام هذا الرجل بعملية التهجين ما بين BCPL و B لتولد البطله حامله لأفضل الجينات ومتلافيه الاخطاء السابقة لتحقق السهولة والقوة معاً .. أطلقوا على بطلتنا إسم الـ C , وعند نزولها وكأي لغة جديدة بدأت حربها مع باقي اللغات من أجل البقاء والإنتشار, ولتحقيق ذلك فلابد من وجود الدعاية والإعلام الجيدان لتصل بهذه اللغه إلى الأهداف المرجوه منها وإستعراض مميزاتها أمام باقي اللغات. والآن السؤال كيف كانت الدعاية لهذه اللغة الوليده والتي ما زلنا إلى اليوم نتغنى بها؟ الجواب ............ لا شئ!! ماذا؟ نعم لا شئ ... فلم يكن هناك دعاية ولا خطة للترويج, نعم دخلت السوق بصدر مفتوح ولكن بعد أيام قليلة .. كانت الصدمة حيث أنها ربحت الرهان ولم تكتفي بذلك فقط بل وحلت مكان بعض اللغات في ذلك العصر مثل (PL/I) و (ANGOL ) وغيرها.. لدرجة أن السيد/ Dennis نفسه كان مندهش من سرعة إستجابة المستخدميين لهذه القنبلة, حتى أنها وهي في عمرها القصير أصبحوا يفضلونها عن بعض اللغات العملاقة مثل الـ FORTRAN. ولكن ما سر هذا الإقبال؟ تميزت لغة C بالسهوله , وإمكانية الإعتماد عليها. حيث أنها وصفت بأنها الأخت الجميلة للغة PASCAL. وكما كانوا يقولون بأنك لو وقعت في حب PASCAL ففي النهاية ستتزوج من الـ C, وتمكنت في يومنا هذا من حصد عدة مميزات إضافية لم تكن في عصرها موجودة فأصبحت لغة متنقله: تعمل تحت أكثر من نظام تشغيل (Windows , IBM, Apple), لغة قويه وسريعه: فهي شبيهه بالـ (Assembly) ولكن مع (High Level Syntax) وأيضاً وقوعها في التصنيف تحت الـ Low Level فهذا يعني بأنها تتيح التعامل مع الآله بشكل شبه مباشر, لغه قياسية: ففي نهاية عام 1989 إستحوذت على مواصفات الـ ANSI ومن ثم أخذت القبول من الـ ISO في عام 1990.

ولكن ألا يراودنا سؤال يبدأ بكيف وينتهي بعلامة إستفهام ..
كيف للغة قديمة أن تستمر كل هذه الفترة بدون أن تندثر ؟ ...
كيف لهذه البطله أن تحوي كل هذه القوة ؟ ...
كيف لهذه العجوز أن تصرع اللغات الحديثة ؟ ...
كيف وكيف وكيف ؟؟؟؟؟؟

الإجابة الشائعة لهذه الأسئله .. بسبب المميزات التي تملكها والتي ذكرنها بالأعلى ... لا ضير ... سنرد الجواب بسؤال من أين جاءت هذه المميزات .. ؟؟؟

الإجابة لن تعجب البعض ....... وهي ........ (إقطعوا يد السارقة).

لنكشف القناع .. ونرى ماذا تخبئ لنا العجوز ..

منذ نعومة أصابعها لم ترد أن تتعلم الحبو ولم ترغب بالإستمرار بمرحلة الطفولة فعلمت أولى جرائمها وبدأت مع العائلة وهي سرقة أبوها (B) وجدتها (BCPL) وأقاربها من الـ (Fortran) و (ALGOL 60).
فقد أخذت من (BCPL) رشاقة التراكيب (Structure) مما أتاح لها التصريح بأكثر من Loop وأيضاً أخذت من الجدة رموز الـ Comment وهي (//), وقامت بالحركة القاتلة حين أخذت العامود الفقري للجده وهو الـ (Pointer).
وجاء دور الأب (B) ليدفع الثمن لتأخذ كنز لا يقدر بثمن وهو الـ (Static) و (Auto) والذان يعتبران من أدوات الـ Storage Data, ولم تكتفي السارقة بهذا فأخذت فكرة العدادات التي تكون بالصيغة التالية (x = +y) وأيضاً الـ (++) و (--), وإستمرت في جرائمها لتستولي على الـ (Array) وعلى الأساسات مثل (Switch , goto, If, AND, OR) فقد قامت بتصفية الأب حتى أن طريقة الـ Declaration أخذت منه, أما عن سبب تسمية الـ (C) بهذا الإسم, فهي أخذت الحرف الابجدي الذي يلي الأب (B).
نزلت البطله إلى الميدان وقد سرقت كل نفيس وغالي فها هي الـ (Basic) تنحني, وها هي الـ FORTRAN تجعلها من الماضي, أما الحسناء PASCAL فتتنازل عن التاج كرهاً, وبقيت البطله تكتسح كل جديد من عام 1973 إلى 1980, وأيضاً خلال هذه الفترة زادت قوتها من خلال التطويرات التي أضيفت لها وهي الـ Unsigned و Long و Enumeration و Structure مما سقلها وجعلها كالحديد في مواجهة أي عدو .. وأيضاً أضافوا إليها السلاح الخارق وهي الـ Union والتي ساعدت بالتحكم بي الـ (Hardware), هل إكتفت البطله بذلك لا فما زالت الشهيه مفتوحه, في نفس زمن ولادة الـ (C) كان نظام التشغيل الـ (Unix) وكان يعتمد على لغة الـ (B).. أعتقد بأنه لا يوجد داعي للتجريح وقول هل بقي للأب شئ, إستولت السارقة على كل شئ فأصبح النظام الـ (Unix) بالكامل مكتوب بواسطتها.
مرت الايام وما من منافس للبطله إلى أن جاء مصطلح الـ (Object Oriented Programmed) يمثل هذا المصطلح نقطة تحول جذرية فهو يمثل طريقة تفكير لجيل جديد.. فما موقف البطلة من هذا فالمواكبة تعني الإستغناء عن الكثير من التفاصيل والتي تمثل مصدر قوة والوقوف يعني الإنسحاب ومن هنا جاءت لغة الـ (C++) وهي عبارة عن جلد جديد للبطله لتنافس به مثيلتها من الـ (Height Level Programming), وعلى ما يبدوا بأنها حنت من جديد إلى السرقة ولكن من منْ نعم من إبنتها الـ (C++) فها هي تقوم بأخذ الـ (Function) لتضيفها إلى قائمة المسروقات, وما وزال مسلسل السرقات مستمر.... على يد السارقة.. فهي لا تميز بين أب أو جدة أو إبنة ...

هذه حكاية السارقة والبطله والعجوز الـ (C) أحببت أن أصيغها بأسلوب مختلف ليسهل فهم تاريخها,, وأنها ليست وحدها صاحبة المجد بل كان هناك لغات أخرى ساهمت في تكوين هذا البناء.
__________________

يا حيف عالزمن

 
دخول أو تسجيل لإرسال التعليقات | قراءة: 393

خيارات عرض التعليقات

اختر طريقتك المفضلة لعرض التعليقات و اضغط "حفظ الإعدادات" لتفعيل تغييراتك.
الأربعاء, 2008/02/13 - 12:24am
عضو فعال
صورة ahnaqsh

تاريخ التسجيل: 2005-03-15
مشاركات: 1294

الجامعة: الافتراضية
الكلية: هندسة النظم المعلوماتية
المرحلة: السنة الأولى

موضوع كتير حلو, شكرا. Very Happy

In an artificial world, only extremists live naturally -- Paul Graham

(35/165)@SVU

 
دخول أو تسجيل لإرسال التعليقات
الأربعاء, 2008/02/13 - 1:50am
صورة hakerintheworld

تاريخ التسجيل: 2006-12-04
مشاركات: 440

موضوع مشوق بس انا حبيت #c++ , c

 
دخول أو تسجيل لإرسال التعليقات
الأربعاء, 2008/02/13 - 2:15am
صورة helaly

تاريخ التسجيل: 2006-11-25
مشاركات: 132

الجامعة: غير ذلك
الكلية: الهندسة المعلوماتية
الاختصاص: هندسة برمجيات

حلو الموضوع كتير, وشكرا عالمعلومات القيمة.
و لو صغت الفكرة بطريقة أكثر حبا للغة الـc مثلا لو قلت استعارت بدل سرقت كان ممكن يكون أحلى بشوي.
لأنو حسب عرضك للموضوع كل واحد منا بيسرق مصريات أبوه و حكايات جدو وقصص زمان و بيسرق العلم من المدرسة و الجامعة و بيلطش الهو من الدنيا و بيستهلك الشجر مشان يدفا.

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

بس شكرا جزيلا عالمعلومة المهمة.


و في السماء رزقكم و ما توعدون {} فو رب السماء و الأرض إنه لحق مثل ما أنكم تنطقون

 
دخول أو تسجيل لإرسال التعليقات
الأربعاء, 2008/02/13 - 10:21am
مشرف
صورة mpcabd

تاريخ التسجيل: 2006-02-19
مشاركات: 2323

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثالثة

هلأ بيجي strontium90 وبيحكيلنا مغامرتو مع هاللغة Mr. Green
الله يعطيك العافية على هالمقالة, اللغة قوية على عيننا وراسنا بس ما حبيتها Sad شو ساوي! يعني عندي الـ #C والـ Visual Basic 2005 أحلى منها بكتير.

كتب NightWolf:
Windows Sucks, Ubuntu Rocks
Going Linux Very Happy

 
دخول أو تسجيل لإرسال التعليقات
الأربعاء, 2008/02/13 - 4:30pm
صورة siminov

تاريخ التسجيل: 2008-02-06
مشاركات: 64

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الأولى
الاختصاص: غير ذلك

السلام عليكم يا إخوان و شكراً لتعليقاتكم الجميلة......و رأيت أن أضع هذه المعلومات عن لغة C لاستكمال الفائدة :

تعتبر لغة C من أقوى لغات المستوى العالي إن لم تكن أقواها(سواء حبيناها أو كرهناها) , بمعنى إن البرامج التي تكتب بها تتميز بالسرعة العالية في التنفيذ و قلة الحجم , وهما العنصران اللذان تقاس بهما كفاءة أي برنامج . و ميزة ثالثة للغة C, هو كونها لغة هيكلية structured , بمعنى إن البرامج التي تكتب بها يمكن تقسيمها إلى أجزاء منطقية logical blocks مما يسهل فهمها و السيطرة عليها خاصة إذا زاد حجمها . ولهذه الأسباب انتشرت لغة C في العام خلال العقدين الماضيين انتشاراً كبيراً . و الانتشار في حد ذاته يعتبر ميزة أخرى لأي لغة , حيث إن المبرمج يجد مصادر كثيرة و سهلة لمعلوماته , كما يجد سوقا كبيرة لمنتجاته . ومن مظاهر انتشار لغة C وجود مترجمات لها تقريبا على كل أنواع الأجهزة من المنزلية إلى الفائقة وتقريبا لكل أنواع نظم التشغيل من الوحيدة المستخدم إلى المتعددة المستخدم .
وتتكون لغة C كأي لغة أخرى على جمل statements , يمكن تقسيمها من الناحية الفنية إلى أوامر commands ( أو تعليمات instructions ) ودوال function .
وأوامر لغة C قليلة جداً و ثابتة في كل المترجمات . أما الدوال فكثيرة جداً و تختلف من مترجم إلى أخر فيما عدا بعض منها تم توحيده قياسياً ويوجد في كل المترجمات تقريباً .
أهم مميزات لغة C :
1. لغة C متعددة الأغراض و متطورة بصورة جيدة و تعد كذلك من اللغات الوسيطة بين اللغات العليا و الدنيا .
2. لغة C لغة ملائمة لمبرمجي هندسة نظم الحاسبات .
3. تعدد مترجمات لغة C لأصناف عديدة من الحاسبات .
4. كونها لغة نظام التشغيل UNIX .

يا حيف عالزمن

 
دخول أو تسجيل لإرسال التعليقات
الخميس, 2008/02/14 - 1:43am
عضو فعال
صورة strontium90

تاريخ التسجيل: 2004-04-21
مشاركات: 3098

الجامعة: حلب
الكلية: الهندسة المعلوماتية
المرحلة: ماجستير
الاختصاص: ذكاء صنعي

كتب mpcabd:
هلأ بيجي strontium90 وبيحكيلنا مغامرتو مع هاللغة Mr. Green

Come on man, I don't possess that sort of extensive expertise. Innocent Smile

C is here to stay however. Too strong a legacy, too many lines of code, and too many followers.

I wouldn't code in C though, unless bound by API choice or some other prerequisite.

Read the rules
Use the search engine

Believe in healthy, hearty laughter, at the expense of the whole human race, if needs be.
H. Allen Smith

 
دخول أو تسجيل لإرسال التعليقات