الإصدارة 1.2 من كتاب (رسالة البرمجة بإبداع)

نشره م. وائل حسن -أ… في

بحمد الله تعالي تم الانتهاء من الإصدارة 1.2 من كتاب (رسالة البرمجة بإبداع) و رُفِعَتْ علي مواقعها علي الشبكة، و الجديد في هذه الإصدارة من الكتاب هو مجموعةٌ كبيرةٌ من التعديلات و الإضافات تَجبر النقص في الإصدارات السابقة و تُضيف بعض الإضافات الهامة،
و تفصيل ذلك ما يلي:

- تغيير رقم الإصدارة في جملة (لم يتم بناؤها حتي الإصدارة 1.0 من مُفسِّر اللغة) و ما شابهها و اللاتي وُضِعن في الأجزاء الخاصة بالمُكوِّنات و القواعد التي لم يتم بناؤها في مُفسِّر أُبْدِع، بحيث يصير الرقم  1.6 الذي هو آخر رقم إصدارةٍ خرج حتي الآن.

- تغيير فقرة:

    واجهات أنظمة التشغيل المُختلفة API التي ربما يود المُبرمِج الوصول إليها في برامجه: و هذه لم يتم الإستقرار علي الموقف منها في إبداع (في هذه الإصدارة من المُفسِّر علي الأقل).


الموجودة في جزء (إستخدام الأكواد الخارجية في إبداع)، لتصير:

    واجهات أنظمة التشغيل المُختلفة API و المكتبات المكتوبة بغير لغة إبداع و التي ربما يود المُبرمِج الوصول إليها في برامجه: و هذه لم يتم الإستقرار علي الموقف منها في إبداع (في هذه الإصدارة من المُفسِّر علي الأقل).


- شرح قاعدةٍ تُوجد منذ الإصدارة 1.0 من أُبْدِع و سهوتُ عن شرحها، و هي الخاصة بتداخل التعليقات، و شرحها المُضاف هو:

    كما يُمكن عمل تعليقاتٍ مُتداخِلة (أي وجود تعليقاتٍ داخل تعليقاتٍ أخري)، مثل:

    \ هذا مثالٌ \ لتعليقاتٍ \متداخلة/ //

    و يُشترط بالطبع تساوي عدد العلامات \ مع عدد العلامات / لكي يتم غلق دائرة التعليقات.


- التنبيه علي مسألة القيم الافتراضية الخاصة بالمتغيرات و كائنات الأصناف و كائنات الألقاب و الجداول.

- شرح جداول الجداول الذي لم يكون قد وُضع في الإصدارات السابقة من الكتاب، و لن أضع ذلك الشرح هنا لطوله.

- شرح قابلية استخدام القيمة (لاشيء)  مع الجداول.

- شرح القاعدة التي تنص علي أنه "يمكن حجز أماكن جديدة لصفوف الجداول الثابتة، و لكن لا يمكن فعل هذا مع أبعادها الداخلية".

- شرح الشروط الواجب توافرها لكي تصح عملية تغطية overriding إجراءٍ في صنفٍ وارث لإجراءٍ في صنفٍ موروث، و لطولها فلن أذكرها هنا و لكنها موجودةٌ في الجزء الخاص بشرح الأصناف في إبداع.

- إضافة الشرح التالي لمسألة عدم ارتباط  صنع كائنٍ من صنفٍ من الأصناف بمٌعدل الوصول الخاص بمُشيِّداته:

    و ينبغي التنبه إلي أنه حتي لو كان الإجراء الذي سنستخدمه كمُشيِّدٍ له مُستوَي الوصول (خاص) فسيظل بالإمكان صنع كائنٍ من صِنفه ما دام ذلك الصنف له المُستوَي (عام)؛ و ذلك لأنه:

    - لو أردنا منع صُنع كائناتٍ من الصِنف فنستطيع جعله خاصاً و بالتالي لا يستطيع أحدٌ خارج باقته فعل ذلك، و هو ما يعني أن مُستوَي الوصول الخاص بالصنف يُحدِّد بمفرده قابلية التعامل مع الصنف بأي شكلٍ من الأشكال و يصب هذا في جانب بساطة القواعد.

    - كما أننا قد نرغب (لأي سببٍ من الأسباب) في جعل الإجراء المُشيِّد خاصاً حتي لا يستدعيه أحدٌ كما يستدعي الإجراء العادي، و في نفس الوقت نرغب في الحفاظ علي إمكانية استنساخ صنفه بشكلٍ عادي، و هو ما تحققه لنا هذه القاعدة.


و قد وُضِع هذا التنبيه في نهاية الجزء الخاص بشرح الأصناف في لغة إبداع.

- تغيير الجملة:

    لا يُسمح بوراثة أصنافٍ لها أسماءٌ متشابهة.


الموجودة في الجزء الخاص بشرح الأصناف في إبداع، لتصير:

    لا يُسمح بوراثة أصنافٍ لها أسماءٌ متشابهةٌ إلا إذا تم التفرقة بينها باستخدام أسماء باقاتها الحاوية لها.


-شرح قاعدةٍ سهوتُ عن شرحها في الإصدارات الأقدم من كتاب الرسالة رغم دعمها منذ الإصدارة 1.0 من مُفسِّر أُبْدِع !، و هي القاعدة الخاصة بالاستفسار عن الصنف الذي ينتمي إليه الكائن، و الشرح المُضاف للكتاب هو:

    قد نرغب في معرفة هل الكائن الفلاني هو نسخةٌ من الصنف العلاني أو من أحد الأصناف الوارثة له أم لا، و يُمكِننا فعل هذا عن طريق الصياغة التالية:


    <اسم.الكائن> كائن من <اسم.الصنف>

    و التي تُعيد إلينا قيمةً منطقيةً بالإجابة.

    مثال:


    لو  كائن1  كائن من صنف1 :
        أكتب.نص.سطر(“كائن1  كائن من صنف1”)


- إضافة التنويه التالي إلي بداية الباب الخاص بنقد لغات البرمجة العربية السابقة لإبداع في الظهور:

    و أود لفت الانتباه إلي أنه لن يتم تحديث هذا الباب بعد تاريخ البدء في عمل الإصدارة  1.2 (الإصدارة 1.2 تم البدء في تعديلها في تاريخ 14 صَفَر 1434 هـ (28 ديسمبر 2012 م)) من الكتاب إلا عند الضرورة القصوي؛ و ذلك للصعوبة العملية الشديدة في متابعةِ تطور كل هذا العدد من لغات البرمجة، و معرفةِ ما قد تكون قد نجحت في تلافيه من الانتقادات الموجودة هنا في إصداراتها الجديدة، و كذا العيوبِ الجديدة التي قد تظهر في تلك الإصدارات. فيجب علي من يقرأ هذا الباب في فترةٍ بعيدةٍ عن آخر فترةٍ تم تحديثه فيها أن يُراعِي أن الانتقادات التي هنا ربما لا تكون مُعبِّرةً مائة بالمائة عن الواقع الحالي لبعض لغات البرمجة العربية التي يُطوِّر أصحابها فيها (سواءٌ أكان تطويراً بسيطاً أم كبيراً).


- زيادة الفقرة التالية إلي آخر الجزء الخاص بنقد لغة البرمجة (سوبرنوفا):

    هذا النقد الشديد السابق للغة سوبرنوفا ناجمٌ عن كون م. محمود سمير قد قام بتقديمها علي أنها لغة برمجةٍ يُمكن استخدامها في العمل الفعلي العادي، و هو ما يُوازي القول بأنها لغة برمجةٍ عالية المستوي عامَّة الأغراض و لذا نقدتُها علي هذا الأساس. و لكن لو كان قد قدَّمها علي أنها إطار عملٍ لمعالجة النصوص و فهمها حاسوبياً فإن نقدي السابق كله يصير غير ذي معني، و علي الأرجح سيكون موقفي هو التأييد الكبير لكل الصفات التي انتقدتُها في السوبر نوفا !؛ فمن الواضح أنه يقول عنها أنها لغةٌ عامَّة الأغراض و لكنه يبنيها بالفعل كإطار عملٍ لفهم النصوص حاسوبياً و يتوسع في القواعد و الإمكانيات اللازمة لذلك.


- تعديل فقرةٍ في نقد لغة كلمات لتصبح كما يلي:

    لا يُمكِن كتابة أوامرٍ بلغة التجميع assembly في برنامج كلمات، و هذا يجعلها غير قادرةٍ علي:

    * إنتاج مكتبتها باستخدامها هي نفسها. و رغم وجود القدرة علي استخدام مكتبات الـC الخارجية (خاصية الـFFI) و التي تُعطي كلمات القدرة علي بناء مكتبةٍ خاصةٍ بها اعتماداً علي مكتباتٍ خارجيةٍ مكتوبةٍ بلغة الـC (و هو أمرٌ أؤمن أنه مطلوبٌ في كل لغات البرمجة الجيدة بشكلٍ أو بآخر): إلا أن ذلك يعني أنها غير قادرةٍ علي بناء مكتبتها من "الصفر"، و هو ما يتعارض مع مبدأ الشمولية الذي سيلي شرحه فيما بعد في القواعد التي ألتزمُ بها في تصميم لغات البرمجة.

    * كتابة البرمجيات الأخري التي نحتاج فيها إلي التعامل مع الذاكرة مباشرةً، مثل أنظمة التشغيل و البرامجٍ التي تعمل علي المتحكمات الميكروئية microcontrollers. و قد يُمكن الالتفاف علي هذا عن طريق مكتباتٍ خارجية، و لكن يظل هذا ضد مبدأ الشمولية سالف الذِكر.


- حذف فقراتٍ في نقد لغة كلمات كانت تنتقد أموراً مُعينةً في تصميمها أو تخصها؛ حيث قد تم تلافي هذا في الإصدارات الجديدة من اللغة.

- التنبيه إلي مشاركتي في برنامج (نجوم العلوم stars of science) في موسمه الرابع في الفصل الخاص بسيرتي الذاتية، عن طريق إضافة الفقرة:

    شاركتُ في الموسم الرابع من برنامج المُسابقات التليفزيوني العلمي (نجوم العلوم stars of science) و كنتُ من المتأهلين النهائيين الستة عشر، و يُمكنكم معرفة المزيد عن تلك المشاركة من خلال قراءة مقالاتي عنها علي مدونتي الشخصية:

    http://afkar-abo-eyas.blogspot.com/search/label/نجوم العلوم الموسم الرابع


كما وضعتُ صورتي مع العالم المصري الشهير د. فاروق الباز الذي كان من ضمن الحكام في  البرنامج  :)


بالإضافة إلي بعض التعديلات الخفيفة هنا أو هناك.


 يمكنكم تحميل الكتاب من خلال الروابط الموجودة في صفحة (رسالة البرمجة بإبداع) في الموقع الرسمي:
 http://ebda3lang.blogspot.com/p/blog-page.html