شفرة اللغة وكيمياء الشعر.. كيف يتلاعب الشعراء بمشاعر المتلقى
والتطبيق العملي بقصيدة يا للغزال إذا مشى
شفرة اللغة وكيمياء الشعر.. كيف يتلاعب الشعراء بمشاعر المتلقى
والتطبيق العملي بقصيدة يا للغزال إذا مشى
يمكننا أن نكتب حلقات التكرار Loops بأشكال مختلفة في C# باستخدام:
النطاق Range وصف القيم ValueTuple والوسائل الإضافية Extension methods والمكررات Iterators (الدوال التي تستخدم yield return)
كيف قتل الراهب مندل مكتشف علم الوراثة نظرية داروين منذ قرن مضى؟
وكيف تحايلت الداروينية الحديثة على هذا بالهروب إلى الصدفة
والعشوائية العمياء كحل أخير؟
ولماذا ترفض كل الرياضيات هذا الحل؟
في مراسلات لي مع د. أحمد خالد توفيق ذكر شيئا عن أن د. نبيل فاروق يؤكد في كتاباته أن هناك عالما روسيا اخترع آلة الزمن، فأثبت له أن آلة الزمن لا يمكن أن تخترع ولو بعد مليون سنة، وقد اقتنع بكلامي وظهر هذا في كتاباته التالية.. شاهدوا ماذا قلت له، وما الحوار الذي دار بيننا عن نظرية داروين حينما قابلته وجها لوجه.
كيف تحايل الداروينيون لحذف منشوراتي التي أنتقد فيها نظرية التطور من منتدى الديفيدي العربي؟
بعض المشاكل العملية التي تواجهني عند ترجمة المصطلحات البرمجية إلى اللغة العربية، وكيف أحاول تعريب المصطلحات بما يناسب الذوق العربي ويحفظ المعنى البرمجي.
كود المستوى الأعلى في سي شارب يجعلها تشبه لغة سمول بيزيك
سأكتب لكم مثالا بلغة سي شارب، وأكتب
نفس المثال في لغة Small Visual Basic، وستكتشفون أن سي شارب تطورت بعد 20 عاما لتشبه لغة
سمول بيزيك J
في فرنسا والغرب الزنا حلال بعد سن 13 والزواج حرام قبل سن 18!
تأملات عن الزواج المبكر وتعدد الزوجات والطلاق والتعليم وتربية الأطفال.
أنا
أُسميكِ ما أَهوَى = فأنتِ خيولُ أَخْيِلَتي
ولو
أُسميكِ مِصيدةً = غَرَرْتِ الغِرَّ مُغْرِيتي!
ولو
أُسْمِيكِ مِقصلةً = صدقتُ فأنتِ قاتلتي!
وبعضُ
غرامِنا غُرمٌ = كأنَّ المَقْتَ في المِقَةِ
وعَذبُ
الكأسِ في شَفَةٍ = عذابٌ يا مُلَوِّعتي
فكمْ
في العشقِ أضدادا = كفاني يا مُمَزِّعتي!
لماذا لا تتشابه بصمات الأصابع رغم وجود مليارات البشر؟
تأملات عميقة من منظور DNA حول قوله تعالى:
(ما خلقكم ولا بعثكم إلا كنفس واحدة)
وتأملات حول قوله تعالى:
(ولو أن ما في الأرض من شجرة أقلام
والبحر يمده من بعده سبعة أبحر ما نفدت كلمات الله)
ومحاولة لفهم لماذا لا تتشابه بصمات
الأصابع، والدقة العلمية في قوله تعالى:
(أيحسب الإنسان ألن نجمع عظامه؟.. بلى
قادرين على أن نسوي بنانه)
ومحاولة لفهم لماذا كل إنسان متفرد،
حتى جعل الله سبحانه قتل إنسان واحد بغير حق معادلا لقتل البشرية كلها:
(من قتل نفسا بغير نفس أو فساد في
الأرض فكأنما قتل الناس جميعا)
فكرة مبسطة عن الذكاء الصناعي 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.
ما قالَ لي الوردُ إلا ما هَمَسْتِ بهِ ، لم يَفتنِ الوردُ في خدّيكِ قتلاهُ!
ما قلتُ للوردِ إلا ما شعرتُ بهِ ، في
لهفةٍ لَوعَى فاحمرَّ خداهُ!
تعلم كيف يعمل مترجم لغة Small Visual Basic واكتب لغة برمجة بنفسك!
لغة سمول بيزيك مفتوحة المصدر ومكتوبة بلغة C#، ولغة
سمول فيجوال بيزيك مفتوحة
المصدر أيضا ومكتوبة بلغة VB .NET
والمفاهيم التي سنشرحها في الفيديو واحدة وتنطبق عليهما
معا، فلغة سمول فيجوال بيزيك مبنية على لغة سمول بيزيك.
وسيساعدك هذا الفيديو على أخذ فكرة
عامة عن المشاريع الخمسة التي تبني لغة سمول فيجوال بيزيك، مع التركيز
على مشروع المترجم SBCompiler، وفهم وظيفته وأجزائه الرئيسية، كتطبيق عملي على ما
شرحناه في الفيديو السابق "كيف يعمل
الـ Compiler" من مفاهيم أساسية عن
طريقة عمل مترجمات الكود.
وبهذا يمكنك استخدام نفس الآلية
لإنشاء لغة برمجة خاصة بك لو أردت.
في هذا الفيديو أبسط لكم الخطوات الأساسية التي يستخدمها المترجم Compiler لتحويل الكود المكتوب بلغة البرمجة إلى برنامج:
1- التحليل اللغوي Lexical Analysis.
2- تحليل الصياغة Syntax Analysis.
3- التحليل الدلالي Symantec Analysis.
4- إنتاج البرنامج Emit.
وسنطبق هذه المفاهيم بصورة مبسطة على
مترجم VB.NET ومترجم C#، وسنطبقها أيضا على برنامج الشاعر الذي كتبته لتحليل
أوزان قصائد الشعر العربي!
وفي الفيديو التالي سأريكم كل هذه المفاهيم مطبقة عمليا في المشروع مفتوح المصدر للغة Small Visual Basic وأعطيكم فكرة عامة عن أجزاء المشروع ووظائفها.
تعلم البرمجة بلغة Small Visual Basic
الدرس الخامس عشر: برنامج الآلة الحاسبة 2
بفضل الله، استمتعت طوال شهر ونصف بمراجعة مرجع من الصفر إلى الاحتراف سي شارب لإضافة الجديد في إصدارات سي شارب 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
هناك لمسات نهائية سأضعها على الكتاب،
قبل أن يكون متاحا بإذن الله، وسأعلن عنه حينها.