بفضل الله، استمتعت طوال شهر ونصف بمراجعة مرجع من الصفر إلى الاحتراف سي شارب لإضافة الجديد في إصدارات سي شارب 8 و 9 و 10، وتسهيل الأمثلة بالاستفادة من ميزة كود المستوى الأعلى Top-level Code، وتنقيح أسلوب الكتاب وتطوير أكواده وإضافة الكثير من الملاحظات والخبرات والأفكار التي اكتسبتها منذ كتبت هذا الكتاب أول مرة عام 2008.. وتعتبر هذه أول مراجعة شاملة للكتاب منذ 14 عاما، فقد كنت أضيف فقط المستجدات التي تظهر في إصدارات سي شارب المتوالية، وأعدل الملاحظات التي تأتيني عبر رسائل القراء، أو التي أكتشفها أثناء كتابتي لبعض مشاريعي.
وحقا، لا يمكن أن تقل متعتي أثناء كتابة
هذه النسخة من الكتاب، عن متعتي أثناء كتابة نسخته الأولى منذ 14 عاما.. وأظن أن
هذه المتعة انتقلت إلى من قرأوا هذا الكتاب، وعبر بعضهم عنها في رسائله إليّ أو في
تعليقات عبر المنتديات، لعل أبلغها هو ما كتبه أحد القراء عن أنه كان يأخذ الكتاب
معه للوحدة العسكرية ليستمتع بقراءة ما فيه من أفكار مدهشة في أوقات فراغه، وأنه
هون عليه جيشه!
يمكن تقسيم الكتاب عمليا إلى مرجعين،
فنصفه الأولى يركز على تاريخ البرمجة وأساسيات سي شارب وقواعد كتابة الكود بها،
وبعض الخوارزميات البرمجية البسيطة.
أما نصفه الثاني فهو كتاب البرمجة
الموجهة بالكائنات Object Oriented Programming، وهو في نظري الجزء الأعمق والأكثر إمتاعا في الكتاب.
والكتاب ككل يهدف لتأسيس مبرمج حقيقي
على أساس متين وراسخ، فيختصر له عدة مناهج دراسية تقدم في كليات الهندسة والحاسبات
في أربع سنوات، وتختصر ربع قرن من خبرتي في البرمجة، وهذا يعني أن هذا الكتاب 5×1:
1- مقدمة
في تاريخ الحاسب والبرمجة والجبر الثنائي Boolean Algebra.
2- أساسيات
سي شارب، بما في ذلك أحدث التطويرات في إصدار C# 10.
3- البرمجة
الموجهة بالكائنات OOP بلغة سي شارب.
4- تراكيب
البيانات Data Structures بلغة سي شارب، حيث سنتعلم كيف ننشئ قائمة مترابطة Linked List
ونستخدمها لإنشاء فئات الرصة Stack والطابور Queue والشجرة Tree، لنستخدم هذه الفئات في عدة تطبيقات شيقة مثل إنشاء فئة لأداء عمليات التراجع والإعادة.
5- مقدمة إلى مترجمات الكود Compilers بكتابة مترجم بسيط لحل أي عملية حسابية
يكتبها المستخدم، والتعويض عن متغير في أي معادلة يكتبها.
وقد سمحت لي هذه المراجعة الشاملة بتحديث
الأكواد نفسها للاستفادة من الإضافات الجديدة في إصدارات سي شارب، وإضافات الكثير
من الملاحظات والحيل الطريفة.
كما أضفت مشروع اختبار يحتوي على أكثر
من 140 من اختبارات الوحدات Unit Tests شرحت في الكتاب أهم ما فيها عمليا
أثناء إنشاء مكتبة كود dll تضم إطار العمل المصغر الذي أنشأناه في الكتاب في
فصل تراكيب البيانات Data Structures كتدريب على إنشاء الفئات والبرمجة الكائنية OOP، وقد سمحت لي اختبارات الوحدات
باكتشاف بعض الأخطاء الخفية في الكود، كما أعطتني الجرأة لإدخال تحسين جوهري في فئة
القائمة المترابطة LinkedList Class
خشيت إدخاله في الماضي لأني كنت أتوقع أن يدمر الكثير من وظائف هذه
الفئة، لكن وجود الاختبارات كشف لي كل توابع هذا التعديل، واستطعت معالجتها بسهولة،
وقد شرحت كل هذا عمليا في الكتاب.. لا غنى عن كتابة الاختبارات في البرمجة
الحديثة، ولهذا عدلت الكتاب تعديلات جوهرية لتكون الاختبارات جزءا أساسيا منه.
وقد أوليت عناية خاصة بمثال كتابة
العملية الحسابية نصيا وحساب ناتجها، واتخذته كمدخل مبسط إلى مترجمات الكود Compilers.. في الكتاب السابق هناك نسختان
من هذا المثال، أحدهما مبني بالرصة Stack والثاني مبني بالشجرة Tree، وقد أضفت نسخة ثالثة مبنية بفئات مخصصة لتمثيل أجزاء
الصيغ الرياضية وهذا أقرب للطريقة المستخدمة في مترجمات الكود الحديثة.
ومبدأ استخدام أكثر من طريقة لمعالجة
نفس المشكلة، هو مبدأ ثابت عبر الكتاب كله، فهو كتاب يهدف لتقطير الخبرة للمبرمج،
وتدريبه على تجريب طرق التفكير المختلفة والمفاضلة بها.
الخبر غير السعيد أنني سأضطر لتأجيل
نسخة فيجوال بيزيك من هذا الكتاب، فنقل كل هذه التعديلات من كتاب سي شارب إلى كتاب
فيجوال بيزيك يحتاج إلى مطابقة الكتابين صفحة صفحة، وللأسف لم أكن أتوقع أن كل هذه
التغييرات ستحدث حينما بدأ العمل.. كنت أظن أنني سأعدل بعض الأمور التي تخص
إصدارات سي شارب وهذا لا علاقة له بفيجيوال بيزيك، لكن الأفكار توالدت، وخرجت
الأمور عن السيطرة :D
هناك لمسات نهائية سأضعها على الكتاب،
قبل أن يكون متاحا بإذن الله، وسأعلن عنه حينها.
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.