مقدمة

 

بسم الله الرحمن الرحيم:

في يوم الاثنين 19 نوفمبر 2007، أطلقت شركة ميكروسوفت الإصدار العاشر من لغة البرمجة الشهيرة فيجيوال بيزيك Visual Basic باسم Visual Basic.NET 2008، لتتوج بذلك 8 سنوات من تاريخ فيجيوال بيزيك على منظومة دوت نت، ومسيرة 17 عاما من تاريخ لغة فيجوال بيزيك بوجه عام، ومسيرة 33 عاما منذ أنتجت ميكروسوفت أول نسخة من لغة البيزيك، ومسيرة 44 عاما منذ ظهرت لغة البيزيك إلى الوجود في عام 1964 في جامعة دارتموث Dartmouth College، على يد جورج كيمينيJ. Kemeny  وتوم كارتز T. Kurtz.

نحن هنا إذن لنتعلم لغة لها تاريخ عريق، مرّت بمراحل تطور مختلفة، حتى وصلت إلينا في شكلها الحالي، لتذهلنا بقدراتها المدهشة، التي تجمع بين البساطة وسهولة التعلم، وصياغتها التي تجعلها قريبة من اللغة الإنجليزية المبسّطة العادية، وقوة وكفاءة البرامج المكتوبة بها، مع ثروةٍ من الأدوات والدوال الجاهزة التي توفرها فئات إطار العمل Framework Classes في بيئة دوت نت .NET، والتي تريحك من عناء البدء من الصفر، والتي تعلو بك كذلك عن تركيب الجهاز بل ونظام التشغيل Operating System، بحيث يستطيع برنامجك أن يعمل على أي نظامٍ، دونَ أن تخشى من مشاكل عدم التوافق Incompatibility بينهما.

فمرحبا بك في عالم البرمجة.. ومرحبا بك في فيجوال بيزيك.. ومرحبا بك في دوت نت 2008.

 

منهج الكتاب:

ها الكتاب مصمم لتعليمك أساسيات البرمجة، في الوقت الذي يعلمك فيه لغة فيجيوال بيزيك دوت نت 2008.. يجب أن نتفق إذن على أن أمامنا ثلاث مهام كبيرة:

1-    تعلم البرمجة.

2-    تعلم لغة فيجيوال بيزيك.

3-    أخذ خلفية عن بيئة دوت نت.

أعلم أن هذا التقسيم قد يدهشك، فمن وجهك نظرك أن تعلم (البرمجة بفيجيوال بيزيك دوت نت) يعني إمكانية تعلم كل تلك المراحل الثلاث معا.

يجب أن أخبرك هنا بحقيقة هامة:

البرمجة علم واسع، ولا يمكن تبسيطها إلى مجرد استخدام لغة برمجة أيا كانت.. فلنقل مثلا إننا نريد تعلم اللغة العربية.. يمكنك أن تتعلم بعض الكلمات والإملاء والنحو والصرف لتقرأ وتكتب اللغة العربية، لكن هذا لا يجعلك متخصصا في أي علم مكتوب باللغة العربية، كالتاريخ والجغرافيا والأحياء والفيزياء.. إلخ.. لهذا فإن مجرد تعليمك كيف تستخدم لغة فيجيوال بيزيك لتُعرّف متغيرا Declare a variable أو تكتب جملة تكرارية Loop statement أو تنشئ ملفا Create a file، لا يعني أنك صرت مبرمجا.. يعني فقط أنك (تتحدث البيزيك)، لكنك لا زلت مجرد تلميذ في مدرسة البرمجة.

لقد قمتُ بنشر مرجع باسم "احتراف فيجيوال بيزيك دوت نت" على الشبكة الدولية Internet منذ بضع سنوات.. هذا المرجع ـ رغم ضخامته ـ صرت أراه مختصرا جدا، ومفتقرا إلى الأمثلة التي تجعل القارئ يُتقن ما يتعلمه من الأوامر.. لهذا عندما قررت أن أكتب كتابا عن فيجيوال بيزيك دوت نت 2008 قررت أن أبدأ من الصفر.. أن آخذ بيد مبرمج مبتدئ يخطو أولى خطواته على هذا الدرب، ولديه الهمة والحماس للإكمال إلى آخره.. لمثل هذا قررت ألا أسير على نفس منهج الكتاب القديم، وأن أغير هذا المنهج من جذوره، وبدلا من أن أكتب كل شيء عن لغة فيجيوال بيزيك في كتاب واحد، قررت أن أخطو مع المبرمج المتحمس خطوة بخطوة، لنتعلم معا طرق التفكير البرمجية ونطبّقها عمليا بفيجيوال بيزيك دوت نت، لنتقن طرق البرمجة ونتقن ما تعلمناه من أوامر اللغة.

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

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

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

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

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

بعد هذا يقدّم الكتاب قارئه إلى عالم البرمجة الموجهة بالكائنات Object Oriented Programming (OOP).. وحتى لا تكون المفاهيم التي يشرحها الكتاب نظرية، قرّرت في هذا الكتاب تجاهل إطار عمل دوت نت .NET Framework الذي يقدم آلاف الكائنات الجاهزة التي تفعل كل شيء لمستخدمها تقريبا دون عناء منه.. قررت تجاهل ذلك، تماما كما يقرر المدرس تعليم التلميذ جدول الضرب وتجاهل الآلة الحاسبة!.. لكننا في هذا الكتاب لن نكتفي بتعلم جدول الضرب، بل سننشئ الآلة الحاسبة بأنفسنا أيضا!.. أجل: كتدريب على كل مفهوم نتعلمه في البرمجة الموجهة بالكائنات OOP والوراثة  Inheritance واستخدام الواجهات Interfaces سنتعلم كيف ننشئ كائناتنا الخاصة التي تحاكي كائنات إطار العمل.. لهذا بعد أن تنتهي من هذا الكتاب ستكون قد تعلمت إنشاء كائنات للتعامل مع المجلدات والملفات وقوائم البيانات وغيرها الكثير.. هذا سيجعل استخدامك لإطار العمل بعد ذلك مجرد "لعب عيال" لو جاز لي استخدام هذا التعبير، لأنك قد أنشأت جزءا منه بنفسك وتفهم سر الصنعة.. تعرف طبعا أن استخدام الشيء أسهل من صناعته.

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

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

في الحقيقة هذا الكتاب جمع بين دفتيه عدة كتب معا في إيجاز وافٍ:

1-    مقدمة في تاريخ الحاسب والبرمجة والجبر الثنائي Boolean Algebra.

2-    أساسيات فيجيوال بيزيك دوت نت، بما في ذلك أحدث التطويرات في إصدار 2008.

3-    البرمجة الموجهة بالكائنات OOP بلغة فيجيوال بيزيك دوت نت.

4- تراكيب البيانات Data Structures بلغة فيجيوال بيزيك دوت نت.. لا أظن أن كتابا قبل هذا أنشأ قائمة مترابطة Linked List بفيجيوال بيزيك واستخدمها لإنشاء فئات الرصة Stack والطابور Queue والشجرة Tree، واستخدم هذه الفئات في إنشاء محلل نصي Parser لحل أي عملية حسابية يكتبها المستخدم، أو التعويض عن متغير في أية معادلة يكتبها المستخدم!

5-    التعامل مع الملفات ومقدمة في ضغط وتشفير الملفات.

6- مقدمة في معالجة الصور Image Processing بشرح تنسيق صور BMP وكتابتها وقراءتها وعكس ألوانها.

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

 

لا غروَ إن قلنا إن هذا الكتاب غير مسبوق في منهجه، وهو يقدم لك ثروة هائلة من الأفكار بدون أي ثرثرة.

لاحظ أن تحقيق كل الأهداف السابقة تطّلب إهمال أي نوع خاص من أنواع البرمجة يحتاج إلى استخدام إطار العمل.. لهذا لم يتعمق الكتاب في برمجة نماذج الويندوز Windows Forms أو قواعد البيانات Databases أو الشبكات Networks أو صفحات المواقع Web Pages أو غير ذلك، فكل مجال من هذه يحتاج إلى كتاب مستقل بذاته يعطيه حقه.. لهذا سنتعرف في الكتاب التالي بإذن الله على برمجة تطبيقات الويندوز Windows Application بدوت نت 2008، حيث سندرس كل التفاصيل بتعمق وشمول مع أمثلة عملية وافية وشيقة.

خذ نفسا عميقا وسمِّ الله، وتعال نبدأ معا رحلتنا الممتعة على طريق البرمجة.