رغم قراءاتي المركزة عن عالم البرمجة ، بالخصوص عالم الفيجوال بيسك التي أعرف برمجتها من سنين طويلة ؛ لفت نظري الكم الكبير من المقالات حول الـفيجوال بيسك دوت نت Visual Basic.Net
ولما كانت هذه اللغة المطورة أكثر مما كان متوقعا عنها لاقت الإعجاب والإنبهار من كبار وصغار المبرمجين والملايين من هواتها وعشاقها ؛ فإني في هذا الموضوع الواسع عن هذه اللغة ياقاري هذا الموضوع يسرني في البداية ان أقدم لك هذه المقدمة
الرائعة جدا عن هذه اللغة العصرية ، مقدمة أثارت مشاعري ولوعاتي البرمجية ، وهي من إعداد أ. محمد حمدي غانم ، وبعدها
سنبدأ بالتوغل شيئا فشيئا في هذا العالم الواسع جدا ، عالم الـفيجوال بيسك دوت نت Visual Basic.Net :
المقدمة : من إعداد أ. محمد حمدي غانم
لماذا Visual Basic ؟ حينما أصدرت (ميكروسوفت) أوّل نسخة من لغة Visual Basic عامَ 1991، لم يكن في حسبانِها أنّها ستكتسبُ كلّ هذه الشهرةِ وستحقّق كلّ هذه الشعبيّة! إنّ لغة BASIC القديمة تُعَدّ من أسهل لغاتِ البرمجة، ولكّنها لم تستطع الصمود في المنافسة مع لغاتِ البرمجة الأخرى بسبب قدراتِها المحدودة. كانَ ذلك كذلك، حتّى أصدرت (ميكروسوفت) إصدارات VB المتتابعة، لتنتقل لغة BASIC من قِفار الدوس المجدبة إلى مراعي الويندوز الخصبة، مانحةً للمبرمج القدرة على إنشاءِ برامج ذات واجهة مرئيّة، بأسهلِ طريقةٍ وفي أسرعِ وقت. ومنذئذٍ ولغة VB تتصدّر قائمة مبيعات لغات البرمجة، لتدخلَ في بناءِ التطبيقاتِ التجاريّة وتطبيقاتِ قواعد البياناتِ البسيطة، وبرامج الوسائط المتعدّدة Multimedia والكثير من الألعاب. ولكن للأسف.. دائما وأبدا كانت VB أدنى من باقي لغاتِ البرمجة، فتطبيقاتُها أبطأ نسبيّا وأكبر حجما، وتعاني من بعض أوجهِ القصورِ في الأداء. ولقد استمرّت (مايكروسوفت Microsoft ) في تطوير VB عبرَ ستّ إصداراتٍ مختلفة، وفي كلّ إصدارٍ جديدٍ كانت تعالجُ بعضَ المشاكلِ القديمةِ وتضيفُ المزيدَ من القدرات، لتضيقَ الفجوةُ شيئًا فشيئا بين VB وباقي لغات البرمجة. ثمّ أخيرا أقدمت (ميكروسوفت) على الخطوة التي طال انتظارها.. أصدرت نسخة جديدةً بكلّ المقاييس من VB، بنتها من جذورها From scratch لتجعلها ندّا حقيقيّا لـ VC++، بحيثُ يمكنك أن تقولَ بثقة: إنّ العصرَ الذهبيَّ لـ VC++ آخذٌ في الأفول بلا رجعة، حيثُ سينحصرُ استخدامها في تصميم المحرّكات Engines التي تدخل في بناء تطبيقات أخرى، أو في كتابة الكود الذي يتيح للكمبيوتر التحكمّ في آلات أخرى، ولكنّ استخدامها سيتراجع بلا شكّ في تطبيقات الإنترنت والتطبيقات التجاريّة وتطبيقات قواعد البيانات والوسائط المتعدّدة ومعظم الألعاب وما شابه، نظرًا لصعوبتِها وتعقيدِها وطول الوقت اللازم للبرمجة بها! وأعتقدُ أنّ هذا هو السبب الذي دفع (ميكروسوفت) لإصدار اللغة الجديدة C#، التي تُعتبر توأما لـ VB إلا إنّها تستخدم قواعد C ++ في كتابة الأوامر، ممّا يشكّلُ لمبرمجي VC++ إغراءً تصعبُ مقاومته للانتقالِ إليها. ولكن مهما كانت سهولة C#، فإنّ VB يصرعُها في هذا المضمار، فهو أقربُ ما يكونُ للّغةِ الإنجليزيّة العاديّة، ولا يحتوي على الرموزِ الكثيرةِ المملّة التي تملأ C++، مثل ; ، ++ ، == ، ||.... إلى آخر هذه الرموزِ التي تجعلُ احتمالاتِ الخطإ عند كتابةِ الكودِ أعلى، وتجعلُ البرنامجَ أصعبَ فهمًا وأقلَّ ألفةً عندَ قراءته. مرحى لكلّ مبرمجي VB.. لقد صاروا على قمّة برمجة السوق!! ما الجديد في VB.Net : إنّ التطويرات التي لحقت بـ VB.Net من الكثرةِ بحيثُ لن نستطيع أن نحيطَ بها كلّها هنا.. ولكن يكفي أن نذكر منها ما يلي: - لم تعد لـ VB واجهة استخدام مستقلّة، فكلّ لغات VS.Net أي الـ Visual Studio تستخدم واجهة واحدة، مليئة بالأدواتِ التي تُسهّل بطريقة مدهشة عمليّةَ تصميم البرنامج.. إنّ هذه الميزة تسمح لك بإنشاء تطبيقات تدخل فيها أكثر من لغة برمجة، دون أن تحتاج لفتح أكثر من واجهة.. إنّها واجهة واحدة فقط لكلّ المبرمجين. - هناك إمكانيّات جديدةٌ في نافذة محرّر الكود، منها قيام اللغة بكتابة جملة نهاية المقطع تلقائيّا، بمجرّد كتابتك لبدايته وضغط زرّ Enter.. فمثلا: لو كتبت جملة : If X = 0 Then فإنّ محرّر الكود سيضيف الجملة التالية تلقائيّا: End If بل إنّك لو لم تكتب كلمة Then فسيكتبها لك محرّر الكود تلقائيّا! هذا بالإضافة إلى أنّه سيضع مؤشّر الكتابة داخل مقطع If، وسيقوم بتنسيق المسافات البادئة تلقائيّا، بحيث يبدو الكود منظّما وواضحا عند قراءته. كمّا أنّ هناك تحسيناتٍ كثيرةً في تلميحات الشاشةِ التي تعرضُ قيمَ المتغيّراتِ وأنواعَها ومعاملاتِ الإجراءاتِ والدوالِّ وقيمَها المعادة، مع نبذة عن وظيفة كلّ دالة وكلّ معامل.. باختصار: لقد أصبحت كتابة الكود متعة. - هناك تحسيناتٌ كثيرةٌ في مظهر النموذج والأدوات، وهناك العديدُ من الخصائص والوسائل الجديدة التي تمّت إضافتها لهذه العناصر، بحيث تمنحك تحكّما أكبر فيها.. فمثلا، أصبح بإمكانك تحديد درجة شفافية النموذج، كما صار بإمكانك تحديد المنطقة التي ستظهر منه على الشاشة، بحيث يمكنك تصميم نماذج بأيّ شكل.. ولم تعد مضطرّا لكتابة الكود الذي يحافظ على تناسب مقاييس الأدوات مع مقاييس النموذج كلّما تغيّر حجم النموذج، فقد صارت هناك خصائصُ جاهزةٌ مسئولةً عن هذا.. هذا بخلافِ العديد من الأدوات الجديدة، مثل الفاصل Splitter الذي يُمكّنك من تغييرِ حجمِ الأدوات المتجاورةِ أثناء تشغيل البرنامج. - صار بإمكانك إضافة الأزرار والأدوات للنماذج في وقت التنفيذ Run Time، مع قدرتك على ربطها بأيّ إجراء، ليتمّ استدعاؤه عند ضغطها. - لم يعد هناك أيّ قصور في مترجم الكود Compiler، فكلّ لغات VS.Net أي الـ Visual Studio تعمل على مترجم واحد، ممّا يعني أنّ VB قد صار بقوّة وسرعة وكفاءة VC++.. وكمثال، صار بإمكانك استخدام البرمجة الارتداديّة Recursive Programming دونّ أن تخشى من بطئها أو استهلاكها لحجم الذاكرة، فقد صارت في منتهى السرعة والكفاءة. - أصبح بإمكانك معالجة الأخطاء، عن طريق استخدام معالجات الاستثناءات Exception Handlers في جملة Try.. Catch.. End Try. - VB.Net مبنيّةٌ بالكاملِ على مفهومِ البرمجةِ بالكائنات Object Oriented Programming، لدرجة أنّ الأعدادَ الصحيحة Integers والنصوص Strings والمصفوفات Arrays قد صارت خلايا (فئات) Classes، وصارت لهذه العناصرِ خصائصُ ووسائلُ جاهزة.. فمثلا، أصبحت لديك وسائل جاهزة تنتمي للمتغيّر النصّيّ، تسمح لك بالبحث فيه أو تقطيعه أو استبدال أجزاء منه... إلخ... كما صارت لديك وسائلُ جاهزةٌ لعكسِ المصفوفةِ وترتيبِها والبحثِ فيها!. - صار بإمكانك استخدام كلّ مفاهيم الوراثة Inheritance وتعدّد الأشكال Polymorphism بلا أيّ مشاكل.. وإن كان مسموحا لك بوراثة خليّة واحدة فقط Single Inheritance للتسهيل. - يمنحك إطار العمل .Net Framework ثروة هائلة من الخلايا (الفئات) Classes ، تقدّر بـ 3500 خليّة، تفعل كلّ ما تحلم به وأكثر، بحيث تريحك بدرجة كبيرةٍ من الاحتياج لاستخدام دوال API الخاصّة بالويندوز، بما فيها من تعقيد ومشاكل.. وأحدث ما فعلته (ميكروسوفت)، هو إصدار نسخة جديدة من DirectX مبنيّة بالكامل بالخلايا (الفئات) بدلا من APIs. - هذا بخلاف أنّ معظم هذه الخلايا (الفئات) قابل للوراثة، بما فيها الأدوات Controls نفسها، ممّا يمنحك القدرة على تطوير أدائها بما يناسبك. - ومن الخلايا (الفئات) الجاهزة العديدة التي يمكنك استخدامها، الخلايا (الفئات) التالية: Stack ـ Queue ـ BitArray، و ArrayList وغيرها. - أصبح بإمكانك تعريف المتغيّرات داخل مقاطع الجمل الشرطيّة If Statements والجمل التكراريّة Loops، بحيث تكون معزولة عن المتغيّرات الموجودة خارج هذه المقاطع. - بل أصبح بإمكانك تعريف الخلايا (فئات) داخل الخلايا (فئات) Nested Classes، وأيّ نوعٍ Type داخل أيّ نوع آخر. - أصبح بإمكانك تعريف الواجهات Interfaces وكتابة الخلايا (فئات) التي تطبّقها وتنفّذها. - أصبح بإمكانك استخدام المندوب Delegate كمعامل للإجراءات والدوال، بحيث يمكنك تمرير اسم أيّ إجراء أو دالة كمعامل!. - أصبح بإمكانك استخدام السمات Attributes في تعريف الخلايا (الفئات) والوسائل والخصائص والأنواع المختلفة، ممّا يختصر لك الكثير من العمل، ويمنحك العديد من القدرات. - لديك إمكانيّات جديدة وعديدة تمنحها لك خلايا (فئات) جاهزة، للتعامل مع الملفّات والمجلّدات.. وعلى سبيل المثال، يمكنك أن تراقب أيّ تغيير يطرأ على ملفّات المجلّد الذي تريد، باستخدام الأداة FileSystemWatcher، كما يمكنك أن تخزّن كائنا أو مصفوفة أو مجموعة Collection من أيّ نوعٍ إلى ملفّ مرّة واحدة، وإعادة قراءتها حينما تريد، باستخدام خلايا (فئات) السلسلة Serialization. - هناك إمكانيّات هائلة في مجال الرسم والتلوين تمنحها لك مكتبة GDI+.. يكفي أن تعرف أنّ بإمكانك الآن رسم منحنيات معقّدة، وتكوين أشكال مركّبة من مجموعة خطوط ومضلّعات ومنحنيات، وتلوين السطوح بألوان متدرّجة، وتحديد شكل مساحة الرسم، وتحديد درجة الشفافية، وتدوير الرسوم وتغيير مقاييسها تكبيرا أو تصغيرا.... إلخ. - يمكنك استخدام المؤشّرات Pointers في بعض الأحيان، للقراءة والكتابة في الذاكرة، كما يمكنك أداء عمليّات معقّدة على النظام System لم تكن لتحلم بها! - أصبح بإمكانك تقسيم برنامجك لمجموعة من العمليّات المستقلّة Threads، ممّا يعني أنّ برنامجك يستطيع القيام بأكثر من عمليّة في نفس اللحظة Multithreading. - هناك إمكانيّات جديدة رائعة للتعامل مع قواعد البيانات، تمنحها لك تقنية ADO.Net، بالإضافة للعديد من الأدوات المرئيّة التي تساعدك في إنشاء تطبيقات قواعد البيانات بأقلّ قدر من الكود. - أمّا الجديد تماما، فهو قدرتك على تصميم صفحات الإنترنت بنفس الطريقة التي تصمّم بها النماذج العاديّة، مع كتابة كود VB بمعظم إمكانيّاته، لإنشاء تطبيقات ASP تعمل على الخوادم Servers بدون كتابة حرف واحد من لغة ASP!! وأنا مضطرّ للاكتفاء بذلك، قبل أن تصيبك الفرحة بالذهول!! ======================= أهلا بك في VB.NET : لو لم تكن تعرف أنك محظوظ فاعرف، فأنت الآن تتعلّم البرمجةَ في الوقت الذي صارت فيه متعةً، لما اكتسبته من سهولة ويسر وقوّة. فبخلاف أنّك تكتب بلغة VB، وهي تمتاز بسهولة أوامرها، وتركيبها الذي يجعلها قريبة من اللغة الإنجليزية العادية، فإنّك الآن تستخدم VS.NET، التي صمّمت لتحاول أن توفر لك ثروةً من الأدوات والدوال الجاهزة، التي تريحك من عناء البدء من الصفر، والتي تعلو بك كذلك عن تركيب الجهاز بل ونظام التشغيل، بحيث يستطيع برنامجك أن يعمل على أي نظامٍ، دونَ أن تخشى من مشاكل عدم التوافق Incompatibility بينهما. وحتّى تكونَ مطمئنًّا، فإنَّ هذا الموضوع لا يتطلّبُ سابقَ معرفةٍ بلغة VB6.. بل لا يتطلّبُ حتى سابق معرفة بالبرمجة! إنَّ VS.NET هي بيئةُ تطويرٍ متكاملةٌ Integrated Development Environment (IDE)، لبناءِ واختبارِ وتصحيحِ البرامجِ المتنوّعة : تطبيقات ويندوز Windows Applications، تطبيقات الإنترنت Web Applications، الخلايا (الفئات) Classes، وأدوات التحكم الخاصّة Custom Controls، وهي تمنحُك العديدَ من الأدواتِ المرئيّةِ Visual Tools لإنشاء واجهة التطبيق Application Interface بشكلٍ شبه آليّ، ولتسريع وتسهيل أداءِ العديدِ من المهامِّ في التصميمِ والبرمجةِ.
لهذا فقد خُصّص هذا الفصلُ ليجعلكَ تألفُ هذه البيئة، وتعرفُ كيفَ تُساعدُ أدواتُها على سرعةِ وسهولةِ تصميمِ واجهةِ البرنامج، وكتابةِ الكود. ونحنُ هنا بصددِ أن نتعرّفَ على المكوناتِ الرئيسيّةِ لبيئةِ التطويرِ المتكاملة IDE ، خاصّةً تلك التي سنحتاجُ إليها لبناءِ تطبيق ويندوز بسيط. أعتقدُ أنّك قد أنزلت هذه اللغةَ على جهازكَ بالفعل، وربما تكونُ قد استكشفتَ واجهتَها الجديدة. وإذا لم تكن قد فعلت فافعل، لأن قراءة هذا الموضوع بدون تطبيقه عمليا خطوة خطوة، لن تأتي بالفائدة المرجوّة ...