رغم قراءاتي المركزة عن عالم البرمجة ، بالخصوص عالم الفيجوال بيسك التي أعرف برمجتها من سنين طويلة ؛ لفت نظري الكم الكبير من المقالات حول الـفيجوال بيسك دوت نت Visual Basic.Net
ولما كانت هذه اللغة المطورة أكثر مما كان متوقعا عنها لاقت الإعجاب والإنبهار من كبار وصغار المبرمجين والملايين من هواتها وعشاقها ؛ فإني في هذا الموضوع الواسع عن هذه اللغة ياقاري هذا الموضوع يسرني في البداية ان أقدم لك هذه المقدمة
الرائعة جدا عن هذه اللغة العصرية ، مقدمة أثارت مشاعري البرمجية ،
وبعدها
سنبدأ بالتوغل شيئا فشيئا في هذا العالم الواسع جدا ، عالم الـفيجوال بيسك دوت نت Visual Basic.Net :
لماذا الفيجول بيسك VB.Net
حينما أصدرت (ميكروسوفت) أوّل نسخة من لغة 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 من الكثرةِ بحيثُ لن نستطيع أن نحيطَ بها كلّها هنا.. ولكن يكفي أن نذكر منها ما يلي :
1 - لم تعد لـ VB واجهة استخدام مستقلّة، فكلّ لغات VS.Net أي الـ Visual Studio تستخدم واجهة واحدة، مليئة بالأدواتِ التي تُسهّل بطريقة مدهشة عمليّةَ تصميم البرنامج.. إنّ هذه الميزة تسمح لك بإنشاء تطبيقات تدخل فيها أكثر من لغة برمجة، دون أن تحتاج لفتح أكثر من واجهة.. إنّها واجهة واحدة فقط لكلّ المبرمجين .
2 - هناك إمكانيّات جديدةٌ في نافذة محرّر الكود، منها قيام اللغة بكتابة جملة نهاية المقطع تلقائيّا، بمجرّد كتابتك لبدايته وضغط زرّEnter.. فمثلا: لو كتبت جملة :
If X = 0 Then
فإنّ محرّر الكود سيضيف الجملة التالية تلقائيّا:
End If
بل إنّك لو لم تكتب كلمة Thenفسيكتبها لك محرّر الكود تلقائيّا!
هذا بالإضافة إلى أنّه سيضع مؤشّر الكتابة داخل مقطع If، وسيقوم بتنسيق المسافات البادئة تلقائيّا، بحيث يبدو الكود منظّما وواضحا عند قراءته.
كمّا أنّ هناك تحسيناتٍ كثيرةً في تلميحات الشاشةِ التي تعرضُ قيمَ المتغيّراتِ وأنواعَها ومعاملاتِ الإجراءاتِ والدوالِّ وقيمَها المعادة، مع نبذة عن وظيفة كلّ دالة وكلّ معامل.. باختصار: لقد أصبحت كتابة الكود متعة.
3- هناك تحسيناتٌ كثيرةٌ في مظهر النموذج والأدوات، وهناك العديدُ من الخصائص والوسائل الجديدة التي تمّت إضافتها لهذه العناصر، بحيث تمنحك تحكّما أكبر فيها.. فمثلا، أصبح بإمكانك تحديد درجة شفافية النموذج، كما صار بإمكانك
# تحدي
المنطقة التي ستظهر منه على الشاشة، بحيث يمكنك تصميم نماذج بأيّ شكل.. ولم تعد مضطرّا لكتابة الكود الذي يحافظ على تناسب مقاييس الأدوات مع مقاييس النموذج كلّما تغيّر حجم النموذج، فقد صارت هناك خصائصُ جاهزةٌ مسئولةً عن هذا.. هذا بخلافِ العديد من الأدوات الجديدة، مثل الفاصل Splitter الذي يُمكّنك من تغييرِ حجمِ الأدوات المتجاورةِ أثناء تشغيل البرنامج.
4- صار بإمكانك إضافة الأزرار والأدوات للنماذج في وقت التنفيذ Run Time، مع قدرتك على ربطها بأيّ إجراء، ليتمّ استدعاؤه عند ضغطها.
5- لم يعد هناك أيّ قصور في مترجم الكود Compiler، فكلّ لغات VS.Net أي الـ Visual Studio تعمل على مترجم واحد، ممّا يعني أنّ VB قد صار بقوّة وسرعة وكفاءة VC++.. وكمثال، صار بإمكانك استخدام البرمجة الارتداديّة Recursive
Programming دونّ أن تخشى من بطئها أو استهلاكها لحجم الذاكرة، فقد صارت في منتهى السرعة والكفاءة.
6- أصبح بإمكانك معالجة الأخطاء، عن طريق استخدام معالجات الاستثناءات Exception Handlers في جملة Try..
Catch.. End Try.
- VB.Net مبنيّةٌ بالكاملِ على مفهومِ البرمجةِ بالكائنات Object Oriented Programming، لدرجة أنّ الأعدادَ الصحيحة Integers والنصوص Stringsوالمصفوفات Arrays قد صارت خلايا (فئات) Classes، وصارت لهذه العناصرِ خصائصُ ووسائلُ جاهزة.. فمثلا، أصبحت لديك وسائل جاهزة تنتمي للمتغيّر النصّيّ، تسمح لك بالبحث فيه أو تقطيعه أو استبدال أجزاء منه... إلخ... كما صارت لديك وسائلُ جاهزةٌ لعكسِ المصفوفةِ وترتيبِها والبحثِ فيها!.
7- صار بإمكانك استخدام كلّ مفاهيم الوراثة Inheritance وتعدّد الأشكال Polymorphism بلا أيّ مشاكل.. وإن كان مسموحا لك بوراثة خليّة واحدة فقط Single Inheritance للتسهيل.
8- يمنحك إطار العمل .Net Framework ثروة هائلة من الخلايا (الفئات) Classes ، تقدّر بـ 3500 خليّة، تفعل كلّ ما تحلم به وأكثر، بحيث تريحك بدرجة كبيرةٍ من الاحتياج لاستخدام دوال API الخاصّة بالويندوز، بما فيها من تعقيد ومشاكل.. وأحدث ما فعلته (ميكروسوفت)، هو إصدار نسخة جديدة من DirectX مبنيّة بالكامل بالخلايا (الفئات) بدلا من APIs.
9- هذا بخلاف أنّ معظم هذه الخلايا (الفئات) قابل للوراثة، بما فيها الأدوات Controls نفسها، ممّا يمنحك القدرة على تطوير أدائها بما يناسبك.
10- ومن الخلايا (الفئات) الجاهزة العديدة التي يمكنك استخدامها، الخلايا (الفئات) التالية: Stack ـ Queue ـ BitArray، و ArrayList وغيرها.
11- أصبح بإمكانك تعريف المتغيّرات داخل مقاطع الجمل الشرطيّة IfStatements والجمل التكراريّة Loops، بحيث تكون معزولة عن المتغيّرات الموجودة خارج هذه المقاطع.
12- بل أصبح بإمكانك تعريف الخلايا (فئات) داخل الخلايا (فئات) Nested Classes، وأيّ نوعٍ Type داخل أيّ نوع آخر.
13- أصبح بإمكانك تعريف الواجهاتInterfaces وكتابة الخلايا (فئات) التي تطبّقها وتنفّذها.
14- أصبح بإمكانك استخدام المندوب Delegate كمعامل للإجراءات والدوال، بحيث يمكنك تمرير اسم أيّ إجراء أو دالة كمعامل!.
15- أصبح بإمكانك استخدام السماتAttributes في تعريف الخلايا (الفئات) والوسائل والخصائص والأنواع المختلفة، ممّا يختصر لك الكثير من العمل، ويمنحك العديد من القدرات.
16- لديك إمكانيّات جديدة وعديدة تمنحها لك خلايا (فئات) جاهزة، للتعامل مع الملفّات والمجلّدات.. وعلى سبيل المثال، يمكنك أن تراقب أيّ تغيير يطرأ على ملفّات المجلّد الذي تريد، باستخدام الأداة FileSystemWatcher، كما يمكنك أن تخزّن كائنا أو مصفوفة أو مجموعةCollection من أيّ نوعٍ إلى ملفّ مرّة واحدة، وإعادة قراءتها حينما تريد، باستخدام خلايا (فئات) السلسلة Serialization.
17- هناك إمكانيّات هائلة في مجال الرسم والتلوين تمنحها لك مكتبةGDI+.. يكفي أن تعرف أنّ بإمكانك الآن رسم منحنيات معقّدة، وتكوين أشكال مركّبة من مجموعة خطوط ومضلّعات ومنحنيات، وتلوين السطوح بألوان متدرّجة، وتحديد شكل مساحة الرسم، وتحديد درجة الشفافية، وتدوير الرسوم وتغيير مقاييسها تكبيرا أو تصغيرا.... إلخ.
18- يمكنك استخدام المؤشّراتPointers في بعض الأحيان، للقراءة والكتابة في الذاكرة، كما يمكنك أداء عمليّات معقّدة على النظام System لم تكن لتحلم بها!
19- أصبح بإمكانك تقسيم برنامجك لمجموعة من العمليّات المستقلّة Threads، ممّا يعني أنّ برنامجك يستطيع القيام بأكثر من عمليّة في نفس اللحظة Multithreading.
20- هناك إمكانيّات جديدة رائعة للتعامل مع قواعد البيانات، تمنحها لك تقنية ADO.Net، بالإضافة للعديد من الأدوات المرئيّة التي تساعدك في إنشاء تطبيقات قواعد البيانات بأقلّ قدر من الكود.
21- أمّا الجديد تماما، فهو قدرتك على تصميم صفحات الإنترنت بنفس الطريقة التي تصمّم بها النماذج العاديّة، مع كتابة كودVB بمعظم إمكانيّاته، لإنشاء تطبيقات 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 ، خاصّةً تلك التي سنحتاجُ إليها لبناءِ تطبيق ويندوز بسيط.
أعتقدُ أنّك قد أنزلت هذه اللغةَ على جهازكَ بالفعل، وربما تكونُ قد استكشفتَ واجهتَها الجديدة.
وإذا لم تكن قد فعلت فافعل، لأن قراءة هذا الموضوع بدون تطبيقه عمليا خطوة خطوة، لن تأتي بالفائدة المرجوّة ...
أوضح لك أيها القارئ بعض النقاط المهمة عن عالم البرمجة بأنواعها :
١- المبرمج يأخذ من اللغة البرمجية التي يعتمدها مايكفيه فقط لاأداء مهامه البرمجية ، ولايشترط عليه الاحاطة بكل جوانب تلك اللغة .
٢ - السبب الاساسي لزيادة المهارات البرمجية للمبرمج هو ( الحاجة البرمجية ) ، اقصد بها انه اذا اراد تطبيق شيء جديد عليه بلغته البرمجية فإنه سيضطر حتما لسد النقص المعلوماتي لديه في ذلك المجال بالبحث والدراسة والسؤال والتعلم ليحقق ذلك الشيء الجديد الذي يداعب مخيلته .
٣ - مسميات المفاهيم والمصطلحات البرمجية كثيرة ومتشعبة ، وبعضها يثير الرهبة والغموض في نفس المبرمج احيانا ، وهذا شيء طبيعي ، لان الشيء المجهول والغامض يثير الهواجس ، ولكن لاينبغي للمبرمج تجاهل فهم هذا الشيء ، بل ينبغي له فهمه حتى لو كان فهما اوليا سطحيا في البداية ، ليهيئ نفسه بالتدريج لخوض غماره يوما ما .
٤ - المبرمج دائما يقع بين عالمين : عالم النظرية ، وعالم التطبيق ، فلابد ان يرتكز بينهما ويعتمد عليهما ، فدراسة وفهم وشرح نظري هنا ، وعمل وتطبيق واختبار وتجريب تطبيقي هناك ، وهكذا يرتقي المبرمج ايا كانت اللغة البرمجية التي ينتمي اليها.
٥- الاخطاء البرمجية ضرورية لكل مبرمج !! ، لماذا ؟ ، الخطأ في عالم البرمجة يعلم المبرمج البحث عن الصواب قطعا ، لانه امام الة عنيدة صماء لاتعرف الخطأ ، وبالتالي تعلمه قسرا اتباع طرق التصحيح حتى لو اقتضي منه ذلك اياما طويلة .