أداة التطوير CodeLite للغات سي/سي++

وجدت اليوم بالصدفة أداة التطوير CodeLite  ضمن Ubuntu Software Center، وقمت بتثبيتها وتجربتها. وهو برنامج خفيف وسريع يصلح لأغراض التعليم وكتابة برامج سي و سي++. وهذا المشروع مبني على مكتبة wxWidgets المشابهة للـ QT والـ GTK+، وهي مكتبة تشتهر بخفتها، وهي مفتوحة المصدر ومتعددة المنصات، حيث تعمل في وندوز ولينكس وماكنتوش.

طبعاً في لغة السي عموماً كتابة برامج Command Line  تعتبر سهلة، لكن البرامج ذات الواجهة الرسومية ليست بالسهلة أبداً. فقد حاولت تشغيل برنامج Hello World ذو واجهة رسومية، فلم استطع، كل مرة يخبرني بأن هناك مكتبات ناقصة، وقد قمت بإنزال مكتبة wxWidgets 2.6 ثم  wxWidgets 2.8، وحاولت نقل الملفات الناقصة لكن بدون فائدة، مع أنها تعمل بدون مشاكل في بيئة التطوير CodeBlocks.

أحياناً احس بأن مبرمجي السي والسي++ لا يستهدفون مبرمجين جدد، وإلا كانوا ركزوا على تسهيل الدخول في تعليم هذه اللغات ومكتباتها. فلا يمكن أن نُقارن أدوات تطويرها باﻵدوات اﻷخرى مثل  دوت نت، دلفي، لازاراس، وحتى بي إتش بي . حيث أن كل هذه اﻷدوات سهلة ومشجعة للمبتدئين. وأحياناً أحس بأنها لغة موجهة فقط لبرامج سطر اﻷوامر والمكتبات والبرامج التي ليست لها واجهة رسومية. كذلك فهي موجهة للأنظمة المدمجة.

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

Advertisements

21 فكرة على ”أداة التطوير CodeLite للغات سي/سي++

  1. إن wxWidgets هي طبقة تغلف GTK+ و ليست منافسة لها و تستخدم اسلوبه في توزيع العناصر و هي تغلف حسب النظام المستهدف أي ليس فقط GTK لذلك هي متعددة المنصات، شيء شبيه تماما بالـ LCL Wedgetsets في اللازارس.

  2. قمت بتعديل كلمة “منافسة” إلى”مشابهة”. لكن أحياناً ينافس الفرع اﻷصل، مثلما قال الشاعر: علمته الرمي حتى إذا ما اشتد ساعده رماني. وهي ملاحظة بين اﻷوبونتو والديبيان، حيث أن الأوبنتو أصبح منافس للديبيان.
    ربما تستخدم wxWidgets الـ GTK+ في نظام لينكس، أما في باقي اﻵنظمة فهي تستخدم المكتبات اﻹفتراضية لها مثل Windows API و Cocoa في نظام ماكنتوش

  3. >> حاولت تشغيل برنامج Hello World ذو واجهة رسومية، فلم استطع، كل مرة يخبرني بأن هناك مكتبات ناقصة، وقد قمت بإنزال مكتبة wxWidgets 2.6 ثم wxWidgets 2.8، وحاولت نقل الملفات الناقصة لكن بدون فائدة، مع أنها تعمل بدون مشاكل في بيئة التطوير CodeBlocks.
    مشكلة الاعتماديات الضخمة هذه كانت من أكبر الأسباب التى دعت فريق إنتاج لغة GO فى Google إلى عد “تطوير” لغة قديمة و لكن “إتاج” لغة جديدة تماماً، و كما قال أحد المبرمجين فى الفريق رداً على هذا التساؤل: نحن بحاجة إلى التقليل من الموجود، و هذا أبعد ما يكون عن إضافة كود لحل المشكلة.

    و لقد لاحظت بالفغعلأن لغتى الـC و الـ++C يمتلكان أكبر عدد من بيئات البرمجة المتكاملة، و مع ذلك فليس من بينها ما يجعل البرمجة بهما فى نفس سهولة البرمجة بالـDelphi و الـ#C و غيرها من اللغات الأخرى ذات الإنتاجية العالية، و السبب فى ذلك أنه مهما فعلت فسيظل القبح الذاتى للغتين حاجزاً يغل يديك و يمنعك من مجرد المحاولة، و لذلك فقد أراح هؤلاء المبرمجون أنفسهم و أهملوا هذا الأمر، و لا أعرف من حاول هذا إلا microsoft فى بيئة الـVisual studio التى ضمت بريمجاً لإنشاء الواجهات المرئية بالسحب و الإلقاء، و لكن حتى مع هذه المحاولة كان الأمر كاللعب مع النحل 🙂

  4. اﻷسهل من Visual Studio كانت Borland C++ Builder، لكنها لم تشتهر كثيراً، وبدأت البيئات المجانية بالإحلال محلها.
    اﻵن نوكيا نحجت إلى حد ما بتسهيل البرمجة بلغة سي ++ مع مكتبة QT، إلا أن ترخيصها يحد من استخدامها للأنظمة التجارية

  5. أفضل الباسيك مثل PUREBASIC و BLITZMAX فهي اسهل, شامله ,و الأهم بسرعة ال AASSEMBLY..

  6. السعر إذا كان أقل من 100 دولار لايعني أنه بسيط، فمثلاً كم تكون التكلفة عند شراء 2000 أو 5000 نسخة للمدارس الثانوية مثلاً. مجال التعليم من أكثر المجالات استهلاكاً لترخيص البرامج. فمثلاً إذا كانت هناك شركة برمجة، يمكنها شراء لغات برمجة أو نُظم تشغيل محدودة بين فترات متباعدة ، مثلاً كل ثلاث سنين لعدد محدود من المستخدمين. أما المعاهد والجامعات والمدارس فهي تريد تجربة أكبر عدد من اﻷدوات، لذلك اﻷفضل لها هو البرامج المجانية

  7. المشكلة فى لغة الـBasic بلهجاتها المتعددة أنها ضعيفة من الناحية النحوية (قواعد اللغة) على الرغم من وجود مترجمات و بيئات برمجة متكاملة لها قوية للغاية، مثل مترجم powerBasic:
    http://en.wikipedia.org/wiki/PowerBASIC
    و اللهجة الوحيدة (و الصحيح أنها لغة منفصلة قائمة بذاتها) التى لها قواعد قوية تيسر على المبرمج عمله هى لغة VIsual Basic.Net التى تنتجها microsoft، و بيئتها التطويرية كذلك قمة فى القوة.
    و لكن الحق أننى أفضل لغة الـjava من بين لغات البرمجة الأكثر قوة و شهرة، ليس لأنها تحقق كل ما أطمح إليه، بل ﻷنها الأكثر تحقيقاً له من بين اللغات التى تعلمتها.

  8. الأفضل قواعديا بالنسبة لي هي C#
    أما الجافا فصدمت بعدم وجود property في الكائنات لديها، و للاسف لا يعتبرون ذلك نقصا فيها.

  9. The main disadvantage of interpreting lang such vb.net java or c# is a much slower speed of program execution compared to direct machine code execution

  10. على العكس من ذلك أنا أعد الـ#C متخمة بقواعد ومكونات لا داعى لوجودها، أو يمكن لقواعد أو مكونات أخرى أن تقوم بنفس دورها بتعديل بسيط للغاية، و على رأسها الـinterfaces والـstructs و الـproperties.
    و بالنسبة للـproperties فإننى أعاديها للغاية بسبب كونها تكراراً للدوال بشكل أقرب إلى التغليف للمتغيرات (و لذلك فإنى أطلق عليها تعبير “المغلفات” و ليس “الخصائص” كما هى الترجمة الحرفية المتداولة لها)، ولو نظرنا إلى مدى الاحتياج إليها لرأينا أننا نقدر على الاستغناء عنها بدالتين واحدة للكتابة فى المتغير و الأخرى لقراءته، و تتميز هذه الطريقة أنها:
    1. لا تزيد من قواعد لغة البرمجة.
    2. يمكننا إعطاء مستوى وصول (access modifier) مختلف لكل دالة من الدالتين على العكس من المغلفات (الـproperties) التى تجبرنا على مستوى وصول واحد للكتابة و القراءة.

  11. الـinterfaces و ال الـproperties لا تزيد من القواعد هي مزايا في اللغة و ليست قواعد، أي انت غير مجبر على استعمالها

    كما الحالة 2 تستطيع عندما تريد وصول مختلف أن لا تستعمل ال الـproperties و تضع لـ set و get بدلا منها
    أنا اعرف الكثير ممن يعاني من عدم وجودها خاصة عندما يتم تغليف ال SET و GET بطريقة ملتوية لإظهار الخصائص للعناصر في وضع التصميم.
    أما interfaces فأنا احاول جهدي أن استعملها خاصة في المكتبات الرئيسية (منخفضة المستوى) بل ان لدي Component يعرض العناصر التي فيه بناء على interfaces
    لا أعرف ماذا تقصد بالـ structs 😦

  12. الـ Interfaces يمكن أن تُستخدم عند بناء الحزم، وهي تُساعد في الـ Abstraction وعن طريقها يمكن عمل Molyporphism. وهي مفيدة إيضاً هي تُستخدم في الـ SOAP. وهي موجودة في لغة جافا، ولا أعتقد أنه توجد لغة برمجة مهمة لاتدعم الـ Interfaces

  13. بالطبع أنا غير مجبر عل استعمالها، و لكنى مجبر على معرفتها و تعلمها جيداً إذا وجدت كوداً يتعلق بعملى و يستخدمها، و هذا موقف لا يمكن الفكاك منه و يحدث دائماً.
    و وجهة نظرى هى تساؤل مباشر: لماذا نضع هذه المكونات ما دمنا قادرين على استخدام مكونات أخرى بدلاً منها موجودة بالفعل فى اللغة؟؟؟
    و أنا عن نفسى لم أقابل مشاكل فى استخدام الدوال بديلاً عن المغلفات 🙂
    و الـinterfaces يمكن الاستغناء عنها باستخدام الـsealed classes = abstract classes بتعدسل حصائص ذلك الأخير بعض الشئ لتتوافق مع خصائص الـinterfaces إذا كان هناك تضارب.
    أنا أحاول قدر الإمكان تقليل حجم اللغات حتى يتسنى تعلمها و احترافها و التمكن منها بشكل كامل لمعظم الناس بجهد أقل، بدلاً من بذل الجهد و الوقت الكبيرين جداً لمجرد التمكن من اللغة التى هى مجرد الأداة التى نستخدمها فى عملنا 🙂

    و قد ذكرت هذا فى مقال سابق لى عن هذه النقطة:

    البساطة و الاستقرار:
    من أكثر الأمور التى تثير غيظى فى لغة الـ(C#) أننى بعد أن قضيت فترة لا بأس بها أتعلمها فيها و أتشرب طريقة التفكير التى تتميز بها كسابقتها فى العمر الـ(java) أصبحت أحس بأننى لا أعرف البرمجة بها على الإطلاق، و يراودنى الإحساس بهذا كلما رأيت مقالاً أو كتيباً يتحدث عن الإصدارات الجديدة التى تصدرها (microsoft) من اللغة كل فترة. فهذه الإصدارات أصبحت رويداً رويداً تنفخ فى قربة كمية قواعد اللغة حتى انفجرت فى وجه المستخدمين البرءاء و لى الفخر فى أن أكون واحداً منهم.
    .
    .
    .
    للاستزادة:
    http://www.engaswan.com/t28073-topic

  14. واحدة من مساويء تقنيات ميكروسوفت هي إجبار المبرمجين بمتابعة التقنيات الجديدة وإلا خرجوا من سوق العمل. فمثلاً عندما قامت ميكروسوفت بالتحول إلى الدوت نت، بدأت بالقضاء على الفيجوال بيسك. فنجد أن المبرمج الذي يستخدم أدوات ميكروسوفت في متابعة دائمة للجديد ويبذل مجهود أكبر من غيره لعمل نفس البرامج التي يقوم بعملها غيره بدون بذل هذا المجهود، فنجدهم مثلاً منهمكين في معرفة , Web Forms, QML, WCF, WPF, SilverLight, وغيرها من التقنيات ثم بعد فترة ربما ميكروسوفت تتخلص منها وتتجه إتجاهات أخرى وتجبرهم على تعلم أشياء جديدة. فتجد أن المبرمج يقضي معظم وقته في التعلم بدلاً من إنتاج وتطوير البرامج

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s