أهم أقسام المدونة

الصفحات

الخميس، 27 يناير 2022

سحر الكلمات

 شفرة اللغة وكيمياء الشعر.. كيف يتلاعب الشعراء بمشاعر المتلقى

والتطبيق العملي بقصيدة يا للغزال إذا مشى

حيلة طريفة في سي شارب

 يمكننا أن نكتب حلقات التكرار Loops بأشكال مختلفة في C# باستخدام:

النطاق Range وصف القيم ValueTuple والوسائل الإضافية Extension methods والمكررات Iterators (الدوال التي تستخدم yield return)

الأربعاء، 26 يناير 2022

التطور: من سببية العلم إلى عبثية الصدفة

 كيف قتل الراهب مندل مكتشف علم الوراثة نظرية داروين منذ قرن مضى؟

وكيف تحايلت الداروينية الحديثة على هذا بالهروب إلى الصدفة والعشوائية العمياء كحل أخير؟

ولماذا ترفض كل الرياضيات هذا الحل؟



سحر ابتسامتها

وأهواها فتَهواني فأعشقُها 

فتَسكنُني كهمسِ النبضِ في حِضني


 

الثلاثاء، 25 يناير 2022

الداروينية والسببية

 في مراسلات لي مع د. أحمد خالد توفيق ذكر شيئا عن أن د. نبيل فاروق يؤكد في كتاباته أن هناك عالما روسيا اخترع آلة الزمن، فأثبت له أن آلة الزمن لا يمكن أن تخترع ولو بعد مليون سنة، وقد اقتنع بكلامي وظهر هذا في كتاباته التالية.. شاهدوا ماذا قلت له، وما الحوار الذي دار بيننا عن نظرية داروين حينما قابلته وجها لوجه.


مقدمة حلقات خرافة داروين

 كيف تحايل الداروينيون لحذف منشوراتي التي أنتقد فيها نظرية التطور من منتدى الديفيدي العربي؟



الأحد، 23 يناير 2022

ترجمة وتعريب المصطلحات البرمجية

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

C# Top level code

 كود المستوى الأعلى في سي شارب يجعلها تشبه لغة سمول بيزيك

سأكتب لكم مثالا بلغة سي شارب، وأكتب نفس المثال في لغة Small Visual Basic، وستكتشفون أن سي شارب تطورت بعد 20 عاما لتشبه لغة سمول بيزيك J


السبت، 22 يناير 2022

شاديك أنا

 يا غايةَ كلِّ بداياتي

يا مسكَ ختامِ حبيباتي

يا أحلى أحلايْ

إفساد المرأة وتدمير الأسرة

 في فرنسا والغرب الزنا حلال بعد سن 13 والزواج حرام قبل سن 18!

تأملات عن الزواج المبكر وتعدد الزوجات والطلاق والتعليم وتربية الأطفال.

جاريتي

أنا أُسميكِ ما أَهوَى = فأنتِ خيولُ أَخْيِلَتي

ولو أُسميكِ مِصيدةً = غَرَرْتِ الغِرَّ مُغْرِيتي!

ولو أُسْمِيكِ مِقصلةً = صدقتُ فأنتِ قاتلتي!

وبعضُ غرامِنا غُرمٌ = كأنَّ المَقْتَ في المِقَةِ

وعَذبُ الكأسِ في شَفَةٍ = عذابٌ يا مُلَوِّعتي

فكمْ في العشقِ أضدادا = كفاني يا مُمَزِّعتي!

الثلاثاء، 18 يناير 2022

سر البصمة

لماذا لا تتشابه بصمات الأصابع رغم وجود مليارات البشر؟

تأملات عميقة من منظور DNA حول قوله تعالى:

(ما خلقكم ولا بعثكم إلا كنفس واحدة)

وتأملات حول قوله تعالى:

(ولو أن ما في الأرض من شجرة أقلام والبحر يمده من بعده سبعة أبحر ما نفدت كلمات الله)

ومحاولة لفهم لماذا لا تتشابه بصمات الأصابع، والدقة العلمية في قوله تعالى:

(أيحسب الإنسان ألن نجمع عظامه؟.. بلى قادرين على أن نسوي بنانه)

ومحاولة لفهم لماذا كل إنسان متفرد، حتى جعل الله سبحانه قتل إنسان واحد بغير حق معادلا لقتل البشرية كلها:

(من قتل نفسا بغير نفس أو فساد في الأرض فكأنما قتل الناس جميعا)

الأحد، 16 يناير 2022

الذكاء الصناعي

  

فكرة مبسطة عن الذكاء الصناعي AI

ومعالجة اللغات الطبيعية NLP والتشكيل الآلي للغة العربية

في نصف ساعة فقط، سأفتح لك الكثير من الأبواب إلى عالم الذكاء الصناعي Artificial Inelegance!

وسيكون منطلقنا لدخول هذا العالم الساحر هو إجابة هذا السؤال:

هل برنامج الشاعر الذي كتبته لوزن أبيات الشعر العربي يعتبر برنامج ذكاء صناعي؟

فمن خلال إجابة هذا السؤال سنأخذ فكرة مبسطة تصلح للمشاهد العادي حتى لو لم يكن مبرمجا، عن التعرف على الصور Image Recognition سواء باستخدام الشبكات العصبية Neural Networks أو باستخدام الطرق الإحصائية Statistical Methods مثل المتجهات التمييزية Feature Vectors.

كما سنأخذ فكرة عن معالجة اللغات الطبيعية Natural Language Processing وصعوبات التشكيل الآلي للغة العربية بسبب التباسات التحليل الصرفي ومشاكل التحليل النحوي (الدلالي لأن الإعراب فرع المعنى)، وسنأخذ فكرة مبسطة كيف يتعامل مع هذه المشكلة برنامج فصيح الذي أنتجته الشركية الهندسية للبحوث والتطوير RDI باستخدام خوارزمية n-gram لبناء نموذج إحصائي Statistical Model يستخدم في فك الالتباس الصرفي من خلال سياق الجملة.

وفي هذا السياق سنحاول أن نجيب على هذا السؤال الفلسفي: هل يستخدم المخ البشري مثل هذه الطرق الإحصائية للتعرف على الوجوه والأصوات وفهم المعاني؟

ثم سنمر مرور الكرام على إطار العمل ML.NET الذي أضافته ميكروسوفت إلى منصة Dot NET ليمنح مبرمجي فيجوال بيزيك وسي شارب القدرة على كتابة برامج الذكاء الصناعي وتعلم الآلة Machine Learning والتنقيب عن البيانات Data Mining.

يا واشي الورد

 ما قالَ لي الوردُ إلا ما هَمَسْتِ بهِ ، لم يَفتنِ الوردُ في خدّيكِ قتلاهُ!

ما قلتُ للوردِ إلا ما شعرتُ بهِ ، في لهفةٍ لَوعَى فاحمرَّ خداهُ!

الأربعاء، 12 يناير 2022

اكتب لغة برمجة بنفسك!

 تعلم كيف يعمل مترجم لغة Small Visual Basic واكتب لغة برمجة بنفسك!

لغة سمول بيزيك مفتوحة المصدر ومكتوبة بلغة C#، ولغة سمول فيجوال بيزيك مفتوحة المصدر أيضا ومكتوبة بلغة VB .NET والمفاهيم التي سنشرحها في الفيديو واحدة وتنطبق عليهما معا، فلغة سمول فيجوال بيزيك مبنية على لغة سمول بيزيك.

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

وبهذا يمكنك استخدام نفس الآلية لإنشاء لغة برمجة خاصة بك لو أردت.

 

الثلاثاء، 11 يناير 2022

فكرة عمل مترجم الكود Compiler

 في هذا الفيديو أبسط لكم الخطوات الأساسية التي يستخدمها المترجم Compiler لتحويل الكود المكتوب بلغة البرمجة إلى برنامج:

1- التحليل اللغوي Lexical Analysis.

2- تحليل الصياغة Syntax Analysis.

3- التحليل الدلالي Symantec Analysis.

4- إنتاج البرنامج Emit.

وسنطبق هذه المفاهيم بصورة مبسطة على مترجم VB.NET ومترجم C#، وسنطبقها أيضا على برنامج الشاعر الذي كتبته لتحليل أوزان قصائد الشعر العربي!

وفي الفيديو التالي سأريكم كل هذه المفاهيم مطبقة عمليا في المشروع مفتوح المصدر للغة Small Visual Basic وأعطيكم فكرة عامة عن أجزاء المشروع ووظائفها.

 

الخميس، 6 يناير 2022

برنامج الآلة الحاسبة 2

  

تعلم البرمجة بلغة  Small Visual Basic

الدرس الخامس عشر: برنامج الآلة الحاسبة 2

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

رقي بقى

 اضعف بقى

يا قلبها القاسي عليا

خليها تشتاق لي شوية

وتحن لي في يوم اللقا

السبت، 1 يناير 2022

قريبا: كتاب سي شارب 10



 بفضل الله، استمتعت طوال شهر ونصف بمراجعة مرجع من الصفر إلى الاحتراف سي شارب لإضافة الجديد في إصدارات سي شارب 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

هناك لمسات نهائية سأضعها على الكتاب، قبل أن يكون متاحا بإذن الله، وسأعلن عنه حينها.