مقدمة كتاب من الصفر إلى الاحتراف C# 10
أساسيات اللغة والتفكير البرمجي
بقلم م. محمد حمدي غانم
ألف صفحة من المتعة والإبداع البرمجي:
يصدر هذا الكتاب في فبراير 2022 في الذكرى الـعشرين لظهور الإصدار الأول من سي شارب في
فبراير 2002.. عشرون عاما أتحفتنا فيها ميكروسوفت بعشرة إصدارات من هذه اللغة
الفتية، التي تصعد بسرعة الصاروخ إلى قمة أكثر اللغات شهرة في عالم البرمجة.
ويجمع هذا الكتاب بين دفتيه عدة كتب
معا في إيجاز وافٍ:
1-
مقدمة في تاريخ الحاسب والبرمجة والجبر
الثنائي Boolean Algebra.
2-
أساسيات سي شارب، بما في ذلك أحدث
التطويرات في إصدار C# 10.
3-
البرمجة الموجهة بالكائنات OOP بلغة سي شارب.
4- تراكيب
البيانات Data Structures
بلغة سي شارب، حيث سنتعلم كيف ننشئ قائمة مترابطة Linked List ونستخدمها لإنشاء فئات الرصة Stack والطابور Queue
والشجرة Tree، لنستخدم هذه الفئات في عدة تطبيقات شيقة مثل إنشاء فئة
لأداء عمليات التراجع والإعادة.
5- مقدمة في مترجمات الكود Compilers
بكتابة مترجم كود بسيط لحل أي عملية حسابية يكتبها المستخدم، والتعويض عن
متغير في أي
معادلة يكتبها.
وكل موضوع من هذه المواضيع له كتاب مستقل يدرس لطلبة كليات الهندسة والحاسبات في فصل دراسي كامل، لكن هذا الكتاب
جمعها معا بطريقة فريدة متداخلة، ما جعل حجمه أقل من حجم كل هذه الكتب مجتمعة،
بسبب عدم احتياجه إلى تكرار شرح بعض الأجزاء هنا أو هناك، كما أنه تدرج في تقديمها للقارئ العادي الذي لم يدرس الهندسة ولا علوم
الحاسب، ليسد فجوة معرفية كبيرة لدى هواة البرمجة، ويؤسسهم تأسيسا برمجيا على
قواعد علمية متينة وراسخة.
لا
غروَ إن قلنا إن هذا الكتاب غير مسبوق في منهجه، وهو يقدم لك ثروة هائلة من
الأفكار بدون أية ثرثرة.
ويبدأ هذا الكتاب من الصفر، منذ أول إنسان اخترع خوارزمية للعد في التاريخ، ليبحر بقارئه في
الفصل الأول في رحلة سريعة في تاريخ اختراع
الحاسوب وابتكار لغات البرمجة وميلاد لغة سي شارب.
بعد
هذا يخطو الكتاب بقارئه إلى عالم البرمجة، فيعرّفه على أساسيات التعامل مع
البيانات، بتعريف المتغيرات والجمل الشرطية وحلقات التكرار وباقي عناصر اللغة..
ويعطي الكتاب قارئه فكرة مبسطة ووافية عن نظام العد الثنائي Binary System والعمليات المنطقية الأساسية التي بني بها الحاسوب.. بل ويعطيه
فكرة بسيطة في عجالة عن كيفية بناء وحدة الحساب والمنطق ALU في الحاسوب.
لقد
وضعت نصب عيني وأنا أكتب هذا الكتاب أن أروي فضول القارئ، وأجيب عن أي سؤال قد
يخطر على باله بأبسط طريقة تناسب معلوماته وباختصار غير مخلّ، بحيث لا نخرج عن
مضمون الكتاب.
ويقدم
الكتاب في كل فصل للقارئ أمثلة غزيرة ومتنوعة، مع شرح بعض الخوارزميات البرمجية الشهيرة
وتطبيقها بأوامر C#.. لهذا حينما ينتهي هذا الكتاب لن يكون القارئ قد تعلم أوامر سي شارب فحسب، بل سيكون قد تعلم معها العديد من الطرق البرمجية
المفيدة، مثل خوارزميات ترتيب المصفوفة والبحث فيها وإنشاء محلل نصي Parser لإجراء العمليات
الحسابية والتعويض في المعادلات، وإنشاء فئة للتراجع Undo والإعادة Redo وغير هذا الكثير.
ويستخدم
الكتاب منهج التجربة والخطأ في شرح الأمثلة، فهو لا يعطيك الكود الأمثل مباشرة، بل
يتدرج بشرح أبسط فكرة لتنفيذ المطلوب، ثم يوضح عيوبها وكيفية التغلب عليها، مع شرح
وافٍ لكل الخطوات.. بهذه الطريقة يقدّم الكتاب إلى قارئه منهجا للتفكير البرمجيّ
وليس مجرد بعض الأفكار البرمجية، فيختصر على المتعلم سنوات من الخبرة يحتاج فيها
إلى التجريب والخطأ والتعلم من أخطائه بنفسه.
بعد
هذا يقدّم الكتاب قارئه إلى عالم البرمجة الموجهة بالكائنات:
Object Oriented Programming (OOP)
وحتى
لا تكون المفاهيم التي يشرحها الكتاب نظرية، قرّرت في هذا الكتاب تجاهل فئات
منصة دوت نت.NET التي تقدم
آلاف الكائنات الجاهزة التي تفعل كل شيء لمستخدمها تقريبا دون عناء منه.. قررت
تجاهل ذلك إلا للضرورة القصوى، تماما كما يقرر
المدرس تعليم التلميذ جدول الضرب وتجاهل الآلة الحاسبة!.. لكننا في هذا الكتاب لن
نكتفي بتعلم جدول الضرب، بل سننشئ الآلة الحاسبة بأنفسنا أيضا، ورغم أنني أستخدم هذا التعبير ككناية، لكنه أيضا تعبير حقيقي، فالكتاب
يقدم لك ثلاث طرق مختلفة لإنشاء آلة حاسبة تحلل العملية الحاسبية المكتوبة وتحسب
ناتجها، لتكون قد أنشأت بنفسك أول مترجم كود بدائي Compiler!
وكتدريب على كل مفهوم
نتعلمه في البرمجة الموجهة بالكائنات OOP
والوراثة Inheritance
واستخدام الواجهات Interfaces
سنتعلم إنشاء فئات
خاصة بنا تحاكي فئات منصة
دوت نت التي تتعامل مع تراكيب البيانات Data
Structures وغيرها.. هذا
سيجعل استخدامك لمنصة دوت نت بعد ذلك مجرد
"لعب عيال" لو جاز لي استخدام هذا التعبير، لأنك قد أنشأت جزءا منه
بنفسك وتفهم سر الصنعة.. تعرف طبعا أن استخدام الشيء أسهل من صناعته.. وستجد إشارة
في كل موضع في الكتاب إلى فئة منصة دوت نت التي تؤدي الوظيفة
جاهزة، مع إشارة إلى الفصل الذي يحتوي على شرحها في كتابنا المستقل "من الصفر
إلى الاحتراف: منصة دوت نت" الذي يعد ملحقا لهذا الكتاب.
وسنتعلم أيضا
كيف نجمع كل الفئات الخاصة بنا في مكتبة كود مرنة
Dynamic Link Library (DLL) وكيف نستخدمها من المشاريع الأخرى، وسنضيف مشروع
اختبار للوحدات Unit Test Project لاختبار كل الفئات التي نكتبها في
المكتبة الخاصة بنا، لنتعلم من هذا فائدة الاختبارات وكيف نكتبها لتغطي كل الحالات
الحرجة للكود الذي نكتبه.. وستجد أكثر من 140 اختبارا لوحدات مكتبة الكود الخاصة
بنا.
لهذا يمكنك أن
تقول إننا أنشأنا إطار عمل Framework مصغر خاص بنا، لنتعلم من خلال
إنشائه عمليا مفاهيم البرمجة الموجهة بالكائنات OOP
والوراثة Inheritance والواجهات Interfaces وكتابة مشاريع الاختبار.
وقد تطّلب
تحقيق كل الأهداف السابقة إهمال أي نوع خاص من أنواع البرمجة يحتاج إلى استخدام مكتبة خاصة من فئات منصة دوت نت.. لهذا لم يتعمق الكتاب في برمجة نماذج
الويندوز Windows Forms
(رغم أننا نستخدم مشاريع نماذج الويندوز في النصف الثاني
من الكتاب لتطبيق ما نتعلمه من أفكار)، كما لم يتطرق الكتاب إلى قواعد البيانات Databases أو الشبكات Networks
أو صفحات المواقع Web Pages
أو غير ذلك، فكل مجال من هذه يحتاج إلى كتاب مستقل بذاته يعطيه حقه.. ويمكنك
التعرف على بعض هذه المجالات بتعمق وشمول مع أمثلة
عملية وافية وشيقة في كتبنا الأخرى، مثل:
-
من الصفر إلى الاحتراف: منصة دوت نت.
-
من الصفر إلى الاحتراف: برمجة نماذج
الويندوز.
-
أساسيات WPF لمبرمجي سي شارب.
-
من الصفر إلى الاحتراف: برمجة قواعد
البيانات (وهو منشور مجانا).
لاحظ
أيضا أن هذا الكتاب موجه لتأسيس مبرمج محترف، يفهم الخوارزميات وطرق التفكير البرمجية،
وليس مجرد مبرمج يجيد استخدام أدوات لغة البرمجة.. لهذا ربما أنصح
المبرمج المبتدئ المتعجل أن يقرأ كتابنا
"المدخل العملي السريع إلى سي شارب" فهو يشرح C#
من خلال مشروعين عمليين كاملين مشروحين خطوة بخطوة، أحدهما يتعامل مع قواعد بيانات
SQL Server باستخدام تقنية LinQ To SQL وهي نسخة مصغرة
من إطار عمل الكينونات Entity
Framework.. لكن في كل
الأحوال، لا بد أن يعود المبرمج إلى هنا، لأنه لن
يكون مبرمجا حقيقيا دون أن يفهم البرمجة بهذا العمق..
فالبرمجة مشاكل وحلول، قبل أن تكون تعريفا لفئات واستدعاء لوسائل.. فبدون الفكر لن
تعرف كيف تستخدم الأداة الاستخدام الأمثل!
خذ
نفسا عميقا وسمِّ الله، وتعال نبدأ معا رحلتنا الممتعة على طريق البرمجة.
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.