2008/07/13

Source Code Store Application

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

  • برنامج صغير الحجم وذو قابلية على العمل المستقل Portability، يعني النظام بأكمله يتكون من البرنامج التشغيلي وقاعدة البيانات الخاصة به.
  • البرنامج يعمل بطريقة مباشرة (لايحتاج الى تثبيت بالجهاز) , ويمكنه العمل من أي وسيلة تخزين (USB, CD-ROM, Network) بكل سهولة.
  • يتم تخزين الموضوعات بترتيب شجري علائقي (أفضل تمثيلها بالأداة Treeview) حيث أقوم بتخزين الموضوعات (Files, Database, System) بحيث توجد إمكانية تفرع مواضيع فرعية من مواضيع رئيسية (تتفرع من قاعدة البيانات موضوع التخزين، الإسترجاع، إصلاح البيانات).
  • كل موضوع (فرعي أو رئيسي) يتضمن مجموعة من الأكواد البرمجية الخاصة بلغة معينة، مثلا موضوع التخزين المتفرع من قاعدة البيانات يتضمن مجموعة من أمثلة لأكواد برمجية تقوم بتخزين البيانات بإستخدام ADO و ADO2.0 و ADO3.0 و SQL Direct Connection، أو Linq to SQL و ODBC Commands و Stored Procedures و غيرها من الطرق الخاصة بالربط مع قاعدة البيانات.
  • يتم تخزين الدوال التعرفية مع كل كود (كما كنا نقوم بتخزين Declaration الخاصة بدوال API في لغة VB6).
  • إذا كنت أريد مثال لكود برمجي لتخزين قيمة في قاعدة البيانات أقوم بإختيار موضوع قاعدة البيانات ثم موضوع التخزين ثم إختيار الكود المناسب ونسخه (Copy) تم لصقه (Paste) بداخل الكود الخاص ببرنامجي.

ببساطة هذه هي الفكرة العامة للبرنامج، وأخر نسخة منه برمجتها سنة 2003 وكانت تقوم بتخزين الأكواد البرمجية للغة VB6، ولكن بعد عدة مرات من التطوير كنت أقوم بإضافة ميزات جديدة لبرنامجي مثل ميزة توليد الكود برمجياً (Code Generator) فمثلاً إذا كنت أود أن أقوم بعمل دالة تقوم بتعبئة ComboBox من جدول معين من قاعدة البيانات فإنني أقوم بإختيار الجدول (جدول اللغات أو الدول) ويقوم برنامجي بتخليق الكود البرمجي الخاص بتعبئة البيانات من قاعدة البيانات الى ComboBox ألياً، ثم أضفت ميزة التعليق الألي على الأكواد المنسوخة (إضافة تعليقات تتعلق بتاريخ نسخ الكود وتاريخ كتابة الدالة ووظيفتها وغيرها من المعلومات المهمة) ولم أنسى إضافة إسم المبرمج كذلك، كما أضفت ميزة تكوين كود الربط مع قاعدة البيانات وتحويل إستعلامات Access إلى إستعلامات SQL (بغرض إعطاء البرنامج إمكانية الربط مع قاعدة بيانات  Access أو قاعدة بيانات SQL بدون كتابة نفس الكود مرتين)، وفي كل مرة أقوم بإصدار نسخة جديدة من البرنامج أقوم معها بإضافة ميزة جديدة، ولكن أنا أتكلم عن إصدارة بأفكار قديمة نسبياً (قبل ثورة WEB2.0)، الأن أنا في المراحل النهائية من إصدارة جديدة من البرنامج مبنية على C Sharp وتقنيات Dot NET من مايكروسوفت، ومخصصة لتخزين الأكواد البرمجية لبيئة التطوير Visual Studio.NET، فماهي الأفكار البرمجية التي تتوقعون أن أقوم بإستخدامها؟

  • إستخدام طريقة Tagging لوصف الكود وتسريع البحث.
  • إستخدام C#3.0 و Access2007  و NET Framework 3.5
  • التركيز أكثر على عمليات تكوين الكود من Template مخزنة مسبقاً، بحيث يتم تطبيق الكود على Template مباشرة لتسريع العملية
  • التعامل مع التقنيات الحديثة في البرمجة الخاصة بالإصدار 2.0 مثل Generics و Delegates و Anonymous Methods و yield.
  • التعامل مع التقنيات الحديثة في البرمجة الخاصة بالإصدار 3.0 مثل Local Type Inference و Lambda Expressions و Extension Methods و Object Initialization Expressions و Anonymous Type.
  • تسريع عمليات القراءة من قاعدة البيانات بالإستخدام الأمثل لمصادر الذاكرة،
  • النسخ المباشر الى داخل بيئة التطوير IDE
  • إضافة قائمة للأكواد المفضلة وكثيرة الإستخدام.
  • إضافة ميزة تجميع مجموعة من الأكواد تحت مشروع واحد بحيث أنك ستجد كل الأكواد الخاصة بمشروعاتك مجموعة مع بعضها البعض.
  • إمكانية الربط مع الإنترنت لجلب أخر أخبار البرمجة بإستخدام RSS أو البحث داخل Google أو إستخدام خدمات MSDN الجديدة، كما توجد فكرة الربط مع Newsgroups التي تبدو قديمة نسبياً ولكنها لازالت مهمة.

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

No comments: