SMPL: إحدى أبسط لغات البرمجة لتصميم المواقع ومن مطور عربي

SMPL هي لغة برمجة مفتوحة المصدر لتصميم مواقع الويب، اللغه في بداياتها وتعد لغة جديدة، من مزايا هذه اللغة البساطة وسهولة وسرعة تعلمها ودعم كامل لجميع اللغات، وإمكانية كتابة أكواد الـHTML خارج أكواد اللغة، منشئ اللغة “عمر خطاب” عرف اللغة كالتالي:

لغة برمجة منشئ المواقع (لغة SMPL)، هي لغة مجانية و مفتوحة المصدر موجهة نحو برمجيات الويب. تقدم الإمكانيات التفاعلية لتطوير و برمجة مواقع الويب من خلال إجراء العمليات الحسابية و التعامل مع النصوص و الملفات و قواعد البيانات بأبسط الطرق المباشرة الممكنة.

أنشئت اللغة خصيصًا لتقدم بديلًا أبسط و إمكانية أسرع و أكثر نظامًا و وضوحًا لبرمجة و تطوير مواقع و برمجيات الويب، و هي حاليًا في المرحلة التجريبية. من يشاهد الدوال الموجودة في اللغة، يلاحظ النظام الثابت المتبع في التسمية، و النظام الثابت كذلك في ترتيب المدخلات الخاصة بالدوال، و من يتعامل مع اللغة يلاحظ كذلك دعم ترميز  Unicode – UTF-8 الشهير، مما يمكن التعامل مع مختلف لغات البشر (و منها بالتأكيد اللغة العربية) بالشكل السليم. و يلاحظ أيضًا، كيف يمكن للغة فهم مقصد المبرمج، و إمكانية التعامل مع النصوص و المصفوفات في العمليات الحسابية، فعند الجمع بين مصفوتين (بعلامة الجمع + التقليدية!) –على سبيل المثال – تنتج مصفوفة جديدة تحوي العناصر الموجودة في المصفوفتين! و يمكن طرح مصفوفة من أخرى (بعلامة الطرح – التقليدية!)، أو نص من آخر، و يمكن تكرار نص عدد من المرات باستخدام الضرب في عدد المرات المطلوب تكرار النص بها!

تعتمد لغة منشئ المواقع على PHP في عملية التفسير، مما يوفر إمكانية التعديل على اللغة بالنسبة لأي مبرمج PHP! و حجمها صغير للغاية. واحدة من ميزات كون اللغة مكتوبة بـPHP، هي أن بإمكانها العمل على أي خادم ويب يحتوي PHP5، أي أغلب خوادم الويب! و كذلك من الميزات عدم اختراع العجلة من جديد. و رغم أن اللغة تعتمد على PHP، إلا أن لغة منشئ المواقع اهتمت بحل العديد من المشاكل الموجودة في PHP و من ذلك عدم دعم ترميزUnicode و عدم وجود أي نظام متبع في تسميات الدوال (في PHP و ليس في منشئ المواقع) أو نظام في ترتيب المدخلات المسماة  parameters (من أراد مثالًا أو اثنين فليضع تعليقًا رجاءً).

و قد أطلق أمس الخميس، الإصدار 0.2.3 من اللغة، الذي وفر نظام نسخ مخبأة (Caching)، الذي يرفع سرعة اللغة بشكل كبير للغاية. فبدلًا من إعادة تفسير كل ملف – مكتوب بلغة منشئ المواقع – كل مرة عن طلب الملف في المتصفح، يتم تفسير كل ملف مرة واحدة، و حفظ نتيجة التفسير في مكان “آمن” لإعادة استخدام النتيجة! هكذا تكون لغة منشئ المواقع – تقريبًا – بنفس سرعة PHP! و يتم إعادة تفسير الملف إذا تم تعديله، و يتم حذف جميع النسخ المخبأة مرة كل 24 ساعة آليًا، لضمان عدم وجود نسخ مخبأة من ملفات تم حذفها مثلًا!

موقع اللغة http://smpl-lang.com يحتوي على شروحات للغة وأمثلة لها، يمكن تحميل اللغة عن طريق الرابط: http://smpl-lang.com/download.smpl مع شرح طرق التحميل والتثبيت من الرابط: http://smpl-lang.com/manual/download.smpl

  • السلام عليكم.
    أشكر عالم التقنية لقبول نشر التدوينة عن اللغة..

    أريد فقط أن أقول، اللغة كما ذكر في أوائل المراحل التجريبية و أنا لم أقل اطلاقًا أن المفترض حاليًا أن تكون اللغة بنفس قوة اللغات الأخرى، فمن أراد القوة حقًا فليستخدم C أو لغة الآلة!

    كل ما أردته هو تقديم بديل أبسط داعم لترميز Unicode، منظم و مرتب في أسماء الدوال و ترتيب المدخلات، يقدم طرق واضحة في البرمجة بعيدًا عن المفاهيم الكثيرة، و يستطيع أي أحد أن يطوره بسهولة!

    أتمنى من إخواني قبل الرد و الهجوم على اللغة، أولًا أن يتصفحوا الموقع جيدًا و أن ينظروا إلى الكود الداخلي في اللغة جيدًا. قبل أن تنظر إلى الدوال، انظر إلى المفسر (Parser) مثلًا حتى تفهم “كيف” تعمل اللغة!
    و أتمنى منهم أيضًا أن يفكروا لو كانت اللغة من مصدر غير عربي، أكان ردهم سيكون بنفس الشكل؟

    و أرجو ممن يريد النقد، أن يوضح السبب جيدًا حتى أستفيد من كلامه، فلا يكفيني قول “هذه ليست لغة” لمجرد أنها مبنية على PHP، و هل كان هناك من يتخيل أن يتم كتابة لغات برمجة باستخدام لغة مثل Java مثلًا؟
    كل ما في الأمر أن PHP مناسبة للويب خصوصًا لذا لم نسمع عن لغات كثيرة مبنية عليها و إن كان هناك لغتين أعرفهما حاليًا مبنيان عليها – غير لغة منشئ المواقع.

    و شكرًا.

  • Turki

    يعجبني الشخص اللي يجد ويجد ويجد .. اخوي عمر خطاب .. لاتيأس وثابر وثابر وباذن الله لكل مجتهد نصيب .. واذا كنت شاطر راح تتغلب على الشوك اللي تواجهه في مسيرتك .. ولاتيأس من اي شخص يحبطك .. حط في بالك انك انت زرعت واهتم بسقي زرعك وشيل الشوك اللي حواليه عشان يثمر صح صح وعسى الله يوفقك في مشروعك ويصير عندنا مبدعين امثالك ونكسر حاجز الاجنبي .. احييك وارفع لك القبعه تقدير واحترام لعملك المتقن وولاده جديده للغة جديده بيد عربي

  • اشكر الاخ مبرمج هذه اللغة عمر خطاب محاولة ممتازة جدا ً اطلعت على الامثلة في الموقع وكذلك قمت بتحميل الملف فعلا ً اللغة تبسط عمل مطوري الويب
    لكن لو جينا لها من الناحية العلمية هي لا تعتبر لغة برمجة بمعنى لغة البرمجة الحقيقية , ممكن نقول عنها منصة عمل اعتقد هذه التسمية انسب لها من ان نقول عنها لغة برمجة
    لان لغة البرمجة تعتمد على عدة اشياء اعتقد لغة SMPL غير موجود فيها هذا الشي
    من اهم هذه الامور هي التحويل الى لغة منخفضة المستوى
    ايضا ً لغة البرمجة لها علاقة بالذاكرة وهيكلة البيانات
    ايضا ً هل تدعم ال OOP ام لا
    اعتقد ان SMPL هي لغة PHP لكن بأسلوب اخر دمجت فيه بعض الامور للتسهيل على المبرمج وليست لغة برمجة بمعنى الكلمة
    اتمنى لك التوفيق اخي الكريم

  • جهاد

    @عمر خطاب
    انصحك بالعودة لتعلم php
    من جديد ومحاولة التعمق في MVC
    وستعرف انك كنت تحاول اكتشافه منذ زمن,
    وتتيقن ان ماتقوم به الآن اضاعة لوقتك…

    مع احترامي

    • kacem

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

  • انا فهمى على قدى شويتين بس حتى لو لم تكن لغة برمجة ولا اطار عمل زى ما بيقول البعض
    يكفى حاولتك لتقديم بديل افضل من الموجود
    ان شاء الله تكمل تطويرها وتكون ليها دعم جيد

  • السلام عليكم. راسلني أحد الاخوة يسأل لماذا لا نسميها إطار عمل و قد رددت عليه، و كان ضمن ردي:

    فلنأخذ أمثلة من أُطر عمل PHP الشهيرة، جميعها تقدم كود PHP العادي مع توفير دوال اضافية لاختصار القيام بالعديد من المهام، و هذا جميل و لا مشكلة فيه و بما أننا نتناقش سأحاول ألا أقول لغة كلما تذكرت. الفرق هنا أن “منشئ المواقع” تقدم كود مختلف عن كود PHP. قبل عرض صفحة مكتوبة بمنشئ المواقع تمر الصفحة آليًا على مفسر اللغة الذي يحول الكود إلى PHP ثم ينفذه، لكن أُطر العمل لا تحول الكود، فقط توفر الدوال. نقطة أخرى، إطار العمل يحتاج منك تعلم للغة الأم المكتوب بها الإطار، بينما “منشئ المواقع” لا تحتاج إطلاقًا!

    لغة البرمجة، لا تقاس بأي لغة كتبت بها، و إنما تقاس من نواح أخرى، فاللغة هي مجموعة القواعد النحوية و هذا ينطبق على “منشئ المواقع”، و لغة البرمجة هي ما يتم تفسيره أو ترجمته عبر Compiler أو Interpreter حتى يفهمه الحاسب الآلي، و هذا ينطبق على لغة منشئ المواقع، فتتم ترجمتها إلى PHP حتى يترجمها مفسر PHP و محرك ZEND إلى Byte-code حتى تتم ترجمته إلى لغة الآلة حتى يفهمه السيرفر، ثم يرد على الطلبات في المتصفح بكود HTML يفهمه المتصفح و يحوله كذلك إلى صيغة يفهمها الحاسب و يظهرها على الشاشة!

    و بهذا كل لغة تعتمد على أخرى حتى تصل في النهاية إلى لغة الحاسب، فحتى لغة C تعتمد على Assembly، و PHP تعتمد على C، و منشئ المواقع تعتمد على PHP!

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

    • تساؤل عزيزي عمر، أنت ذكرت أن المفسّر للغة SMPL يقوم بتحويل الكود إلى PHP !

      إذاً، أرجوك أخبرني:

      لماذا علي استخدام لغة SMPL الذي يقوم بتحويل الكود إلى PHP في نفس الوقت الذي أستطيع أنا البرمجة بلغة PHP مباشرةً وبالتالي توفير وقت عمل المفسّر الخاص بك والذي لا أحتاجه أبداً؟

      في الحقيقة عندما سمعت بالخبر سررت جداً، لأني -وبكل خيبة أمل- ظننت أن مفسّر لغة SMPL يتعامل مع لغة C++ مباشرة، لكني صدمت بالواقع المؤلم.

      عموماً، شكراً على مجهودك، يسّر الله لك لما فيه الخير والصلاح

      • كلام في محله المئة في المئة. على العموم نشجعه عمل جبار

      • أشكرك على الرد أخي الكريم، محمد.
        أولًا بخصوص السرعة، كما ذكرتُ يتم حفظ نسخة مخبأة من الملف بحيث يعمل بنفس سرعة PHP، و بالتالي تحصل على المميزات دون أن تتأثر السرعة إلا بفرق غير ملحوظ اطلاقًا.

        سألتني لماذا تستخدم منشئ المواقع و لا تستخدم PHP، طالما هذه تتحول إلى هذه.
        ببساطة: عليك استخدام منشئ المواقع، لنفس السبب الذي يجعلك تستخدم PHP و عدم استخدام لغة الآلة التي تتحول لها PHP، و عدم استخدام C المبنية عليها PHP. (مع الفرق بين هذه اللغات بالطبع)

        بالنسبة لكتابة اللغة بـC++، في رأيك كم شخصًا يمتلك خادم ويب بصلاحيات كاملة و يستطيع تنصيب لغة مكتوبة بـC++ عليه؟
        هؤلاء موجودون بالفعل، لكنهم قلة، و هؤلاء بالتأكيد لا يبحثون عن السهولة و سرعة التطوير بقدر ما يبحثون على القوة الكبيرة و ما اعتادوا عليه. و بالتالي كتابة اللغة بـC++ أو C، ما هي إلا شيء يفقد اللغة كل فائدتها في رأيي.

        شكرًا لك.

      • كلا يا عزيزي، من المستحيل تماماً أن تكون نفس سرعة PHP طالما أنك تستخدمها لتفسير لغة SMPL
        حتى ولو قمت باستخدام نظام التخزين، فأنت بكل الأحوال تستخدم لغة PHP ومن ثم استخدام دالة eval لتطبيق الشفرة المخزّنة والتي أتت بعد التفسير (لم أقرأ الشيفرة المصدرية ولا أعرف طريقة عملها، لكن ذلك ما أعتقده)

        عموماً أليس من الأسرع والمنطقي والأولى استخدام لغة PHP مباشرة دون أية حاجة للتخزين ودون الحاجة لدالة eval؟

        أحببت التعليق أيضاً على نقطة ذكرتها أنت وهي أن لغة C++ غير موجودة لدى أغلب الخوادم، لذا أعتذر عن خطأي حيث أني كنت أقصد لغة C وهي التي تقوم عليها لغة PHP لتفسيرها وتطبيقها، فلماذا لا تستطيع منافسة لغة PHP وتجعلها أسرع وأقوى وأسهل :)؟ ألست بتلك تكون قد حملت لنا معنى المنافسة الحقيقية للغرب؟

        ختاماً أحييك على مجهودك وما عملته حقاً، لكنّي كنت فقط وبالمختصر تمنيت أنك اتبعت إحدى طريقين:
        1- برمجة لغة SMPL بمصطلحات عربية كما فعلت لغة ج والخاصة بتطبيقات سطح المكتب (http://www.jeemlang.com).
        2- أو برمجة لغة SMPL باستخدام إحدى لغات البرمجة المتوسطة المستوى كلغة C مثلما فعلت PHP.

        شكراً لسعة صدرك (:

    • بالمناسبة أخي عمر، لدي تساؤل آخر:

      بما أنك استطعت عمل لغة خاصة ومفسّر لتلك اللغة أيضاً
      وذكرت أنك أردت أن تدعم إخوانك العرب منهم والمسلمين بتقديم شيء جيّد وتسهيل تقنيات الويب عليهم وبالأخص للذين لايعرفون الإنجليزية جيداً
      أليس من الأولى والأجدر، عمل تلك اللغة بأكواد ودوال عربية وأقصد هنا الـ (Syntax) الخاص بتلك اللغة بدلاً من محاكاة شيء مكرّر؟

      • اللغة ليست مقدمة للعرب فقط و لم أقل ذلك!
        فكرة كتابة اللغة بالعربية هي فكرة في رأسي بالطبع، لكني بعد التفكير وجدت أنها ستحتاج إلى ترجمة العديد من الخصائص و المكونات ترجمة قصيرة واضحة فعالة، و تحتاج مفاهيم جديدة كثيرة!
        و هذه النقطة لن تزيد المهمة إلا صعوبةً، لو لاحظت هناك قاموس صغير في مرجع اللغة، للكلمات القليلة المستخدمة!

  • أخي عمر أول أتشرف بمعرفتك كوني مبرمج كدلك قرأت بعض الردود و لم تعجبني على الاطلاق سبحان الله أنا أشجعك و الله قد نقول أنها لغة برمجة ممكن.
    هنا نتكلم عن hight level language و يتم ترجمتها الى low level language هنا أنت اعتمدت على مفسر PHP …

  • احمد عبد العزيز

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

    بارك الله فيك يا استاذ عمر استمر فى التطوير واحييك على مجهودك الرائع

  • اخي العزيز اني مو مبرمج و ما اعرف بلغات البرمجه بس كان عندي استاذ كان يقول “شخص الوحيد الذي يعيق تقدمك هو انت اذ قتلت ذلك الشخص سوف تتقدم ”
    استمر يا رجل و لا تهتم باراء الاشخاص الاخرين مهما قالوا
    و اهم شي هو ان نؤمن بان ما كو شي مستحيل في الحياة . اهم شيء الاراده

  • عادل

    ليست لغة برمجة
    اقرب الى نظام قواب اوفريم ورك

    المبرمج حاول تبسيط الاكواد كما يزعم فعاد بالـphp الى العصر الحجري

  • سعد

    بالتوفيق للجميع

  • هو ليس اطار عمل وفي نفس الوقت ليس بلغة برمجة
    بل هو محاولة لتسهيل عمل لغة php لتوفير الوقت
    واعتقد انه يشبه الى حد ما الهدف من قوالب سمارتي تسهل عمل المطور فقط
    مجهود رائع صراحة وتشكر عليه لانك تعبت وقدمت شئ مثل هذا

    ولكن مشكلة php عزيزي انها يتم معالجتها وترجمتها للغة C ثم لغة الحاسب
    فانت هنا اضفت مرحلة جديدة قد يكون فارق غير ملحوظ مع خاصية الكاش لكنه بكل تأكيد سيكون كارثة في كود برمجي كبير كالفيسبوك مثلا!!

  • عاصم السفاريني

    عمر خطاب , أتذكر أستاذي لمادة الحاسوب عمر خطاب , هو من حببني بالحاسوب و البرمجة , أنت مبدع و فنان , كل من يحاول أن ( يتفلسف ) فهو لا يفقه شيئ بالبرمجة لأن كل لغات البرمجة أصلها تعود للغة معينة , فمثلاً الجافا كتبت بالسي بلس بلس و لكن لا تعتبر قالب للسي بلس بلس أو إطار عمل لها , أحييك و أتمنى لك التوفيق , أنا حالياً أعمل على برمجة سكريبت بلغة PHP و سأعمل على دمج بعض من أكواد لغتك و تجربتها , و الله ولي التوفيق

    • لدي تعليق بسيط فقط عليك اخي عاصم
      ليست كل اللغات البرمجية تم بناءها اعتمادا على لغات اخري وان كان قطاعا كبيرا منها فى السابق كان كذلك وكذلك معظم اللغات الحالية الا ان هناك العديد من اللغات تتم تحويلها الى 0/1 مباشرة

  • اخي الكريم هذي مش اكثر من مجرد دوال PHP مركبه فوق بعض. حتى يا ريت انها Class
    صعب نطلق تسمية لغة على مجموعة الملفات الي انا شاهدتها وكمان صعب نطلق عليها اطار. حنا ممكن نقول فكرة برمجية مش اكثر.
    ولكن ومع هذا مشكور للاخ عمر على المجهود لانه بكل احترام قدمها مفتوح المصدر ، وبالتالي لا نقعد نحش في الرجال.
    take it or leave it
    ما جبر حدا على استخدامها.
    ولا ننسى ان ال PHP اصلا يوم بداها ذاك اليهودي كان هدفه اصلا مشابه. فليش طبلوا لليهودي ذاك اليوم واليوم نيجي نحش فلي منا وفينا

    بالتوفيق والى الامام اخ عمر واتمنى لك التوفيق

  • the geek

    أحييك أخي عمر خطاب على عملك المتقن
    يجب أن تعرف انه كلما كثر الحُسَّاد و المنتقدون فأنت في الطريق الصحيح،لا تيأس
    اطلب منهم أن يأتو بأحسن مما قمت به..
    أُحييييييييييك

  • كاكا

    والله بعض المعلقين هنا قليل ادب
    يا اخي الرجال ما قصر تعب واشتغل واتى بفكرة ممتازة
    وانتم متسدحين في بيوتكم
    ولا سويتو ربع اللي سواه
    والله عالم ماتستحي

  • ناصر

    كيف تسمونها لغة برمجة؟
    فضحتونا يا عرب بجهلكم

  • السلام عليكم

    من الواضح أن المبرمج مبتدأ
    ولم يتعمق في أساسيات php
    لذلك لا يمكن اعتبار ما قام به سوى “شخابيط”…

    (مثل الذي اشترى سيارة من ماركة معروفة وغير لونه ثم زوّر العلامة التجارية وخرج للشارع يصيح “صنعت سيارة بنفسي”)

    اذا المبرمج يصرّ على ان ما قام به لغة برمجة
    ماذا سيسمي php……..؟

    كيف يمكن لهذه اللغة (كما يعتقد مبرمجها) فرض نفسها بعيدا عن php؟

    بعض التعليقات بالغت كثيرا في اعتبار ما قام به هذا المبرمج اطار عمل او نظام قوالب……

    • عمر خطاب

      السلام عليكم، أخي الكريم coder.
      أُسَمي PHP لغة برمجة، كما أسمي منشئ المواقع لغة برمجة، كما أسمي C لغة برمجة!
      لا أفهم ما تتحدث عنه بخصوص فرض اللغة لنفسها دون PHP. إذن كيف تفرض PHP نفسها دون مترجم للغة C؟

    • مجرد شخص

      لعاد أنت يا شاطر ، فرجينا شطارتك و إعمل “شخابيط” كما عمل الأخ و من يدري ممكن نستفيد من “شخابيطك” !

      هذا حال لسان العرب للأسف ، إنا لله و إنا إليه راجعون

      الله يهدينا

  • M.B.O

    اخوي مش عارف انت ليش مصر على اسم لغة البرمجة
    المشكلة ليست في عملك المشكلة في التسمية ليست منطقية
    اعتقد هذا الشي الي جعل الاغلبية ضد الفكرة
    اعتقد انت اتقنت جانب الترجمة لهذا تسميها لغة برمجة
    لكن في امور كثيرة اغفلتها من اهمها هيكلة البيانات
    اتمنى قراءة هذا الموضوع البسيط
    http://bit.ly/nU5rfS

  • السلام عليكم ورحمه الله وبركاته أولا انا احب اعرفكم بنفسي
    انا اخوكم محمد ابراهيم باحث فى مجال الانظمة وتصميم لغات البرمجة حيث انني اهتم بهذا المجال من العديد من السنوات وانا محرر مدونة النظام العربي والتي وضع احدي المقالات التي كتبتها فى مدونتي وتم نقلها الى مبادرة لغات البرمجة العربية الاخ الكريم M.B.O وطبعا انا حبيت ارد بشفافية وموضوعية ودون التحيز لامر ان اللغة من تطوير عربي ام افرنجي ورد الفعل وهل العرب يجيدون هذا ام لا
    العلم ليس احتكاريا وليس حكرا على أحد
    نلاحظ شيئا مهما هناك بعض القواعد التي يجب اولا ان تتوفر فى الشخص الذي ينتقد او يطلق حكما فى مجال تصميم لغات البرمجة وهذا الامر على مستوي العالم وهو كالاتي

    لكي تستطيع الحكم على تصميم لغة برمجة عليك مراعاة التالي

    1- ان تكون ملما بنظرية التشغيل الذاتية
    2- ان تكون ملما بخوارزميات تصميم وعمل عمل لغات وادوات لغات البرمجة وتصميمها
    3- ان تكون ملما بقواعد ومبادئ بناء المترجمات وما يتعلق بها من ملحقات
    4- ان يكون لديك خبرة عامة حول العديد من انواع لغات البرمجة
    هذه الامور باختصار يجب توافرها حتي على الغير باحث او الغير عامل فى هذا المجال وهذا طبعا اعتقد عدم توافره فى دراستنا الاكاديمية ورغم ذلك فان هذا الامر يجب الالمام باساسياته على الاقل لكل مبرمج يسعي نحو الاتقان

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

    ما هى خصائص وعمل المفسر ؟
    1- يقوم بتفسير وتنفيذ الكود المصدري مباشرة
    2- يقوم بترجمة الكود المصدري الى intermediate representation عديدة ومن ثم يقوم بتنفيذ أى منها
    3- احيانا يقوم بتخزين الاكواد المترجمة باستخدام مترجم ما وبعدها بيقوم بتنفيذها ووقتها يكون المترجم (Compiler) جزء من interpreter system واكبر مثال على ذلك (OS) و (JAVA)

    مما يتكون المفسر ؟
    هناك عدة انواع وسنذكر منها ما نريده وهو
    Bytecode interpreters وهو ما يستخدمه فى النهاية مفسر PHP
    اولا نأتي الى كيفية تفسير وتنفيذ كود PHP

    1- يقوم المستخدم بكتابة عنوان صفحة php المطلوبة .
    2- بعد التحقق من وجود الصفحة يتم تحديدها
    3- يتم أخذ الملف المطلوب وتمريره إلى مفسر أو مترجم بي اتش بي (سمه ماتريد)
    4- تتم معالجة الملف
    – أثناء المعالجة تتم عدة خطوات منها تفسير الكود و توزيعه في شجرة ثم إنتاج مايسمى بـ OP-Code وأشياء كثيرة ..
    5- يتم إرسال النتائج إلى المستعرض
    6- يقوم المستعرض بعرضها لك .
    موضوع الـ Accelerator مثل
    PHP-Accelerator
    Zend-Accelerator
    ما هو Accelerator ?

    تعمل مسرعات ال php بنظام التخزين أو ال cache حيث أنها توفر عملية النقل والتفريغ للذاكرة بشكل دائما لتحفظ البيانات التي يحدث عليها ضغط أو طلب كثير overhead والتي يتم بشكل دائم شحنها وتفريغها مع كل طلب request
    توفر لك تلك المسرعات دائما بعد تركيبها كإضافة لل php extension إمكانية تحديد حجم من الذاكرة لها فقط لتقوم بإستخدام ذلك الحجم المخصص لها بحفظ تلك البيانات لديه وقذفها حينما يتم علم request للمتصفح ومنع العمليات السابقة لها

    يؤدي ذلك بالطبع للمميزات التالية

    1-تقليل الحمل الزائد علي المعالج server load
    2- يقلل أيضا الجانب المستهلك من الذاكرة
    3- يزيد سرعة ال php في التنفيذ والعمل بما نسبته من 2 إلي 10 أضعاف طبقاً للتطبيق script المبرمج ومدي حاجته للكاش

    فهو يقوم بحفظ الصفحة بعد نتيجة الترجمة ولكن في صورة أدنى أي في حالة Optimized Code وبذلك يتم تقليص الخطوات الستة إلى خطوات أقل

    فهو سيقوم بالتالي :

    1- يقوم المستخدم بكتابة عنوان صفحة php المطلوبة .
    2- بعد التحقق من وجود الصفحة يتم تحديدها
    5- يتم إرسال النتائج إلى المستعرض
    6- يقوم المستعرض بعرضها لك .
    اذا فيمكننا هنا التشكيك فى أن لغة PHP هى لغة برمجة اذا كنا نعني بذلك الامر ان كل من كذلك ليست لغة
    لغتي PHP ولغة منشئ المواقع هما تنتميان الى Scripting Languages
    واذا بحثت على فقط هذا المصطلخ فى محرك البحث جوجل ستجد فى تعريفه على الموسوعة الحرة ويكيبديا
    Scripting languages (commonly called scripting programming languages or script languages) are computer programming languages created to shorten the traditional edit-compile-link-run process.
    (التعليق هنا ان لغات السكربت هدفها الاساسي هو تسهيل وتسريع خطوات الترجمة والربط والتنفيذ قد يكون الاخ عمر خطاب قام بكتابة اللغة اعتمادا على لغة PHP وهذه نقطة سلبية فى اللغة اذا نظرنا اليها من هذا العامل بسبب انه زاد Layer فى الترجمة والربط الا انها ما زالت لغة برمجة من عوامل اخري عديدة )
    لكن السبب الاكبر الذي اعتقد بان الاخ عمر خطاب قام بكتابة اللغة على PHP هو بسبب انتشارها ووجود بيئة عمل للPHP فى معظم سيرفرات الويب وبذلك يكون قد وفي اساسا من اساسيات بناء لغات البرمجة من ناحية هندسة البرمجيات وهو النظر الى عوامل انتشار اللغة
    وبذلك فقد يكون فضل هنا عامل الانتشار والسهولة على السرعة وان كنت اؤيد القول بان السرعة ليست ملحوظة حاليا على الاقل ويمكن تحسينها عبر العديد من الخوارزميات فى بناء الاصدارات الجديدة
    فان نفس امور Cache وغيرها تستخدمها لغة PHP ولكن ميزتها الكبري والتي اتمني ان تصبح ميزة فى منشئ المواقع فى السنين القادمة هى ان هناك بيئة عمل كاملة تم تطويرها وادوات عديدة غيرت من الشكل الكلي للغة
    وقد شرحت ان نفس الامر المتعلق بالكاش وحفظ الملفات متواجد فى PHP والحل كان فى استخدام وتصميم Accelerator
    اذا فلماذا لا نقبل كونها لغة
    اولا جرت العادة ان تكون كل اللغات المفتوحة المصدر وعموما معظم برمجيات المصدر المفتوح مهملة اللهم الا اذا كانت من شركة او مؤسسة او مجموعة لها سيط وباع كبير فى مجتمع المصادر المفتوحة مثل مجتمع لينكس ومطوري نواة لينكس وشركة جوجل وغيرها
    أحب ان احيي الاخ عمر خطاب على هذا المجهود الرائع الذي قام به واقترح عليه بعض الاقتراحات التي اراها تفيد المشروع من وجهة رايي الشخصية المتواضعة
    1- وضع خطة عمل مستقبلية ونظرة عامة للمشروع وتحديد خطة للعمل جاهزة ومستوفية للشروط الاساسية ومتطلبات المشروع والاختلافات الجوهرية والفرعية
    2- التفكير فى تغيير نمط المشروع مستقبلا ولغة PHP تحديدا والبدء فى التفكير فى الاستقلالية

    هناك بعض التحديات التي ستواجها مثل

    التحدى الاول : نوعية المستخدم الذى نخاطبه

    قبل ان تدخل مجال وتطرح شىء فيه … عليك ان تبحث اولا عما تريد ان تطرحه فقد يكون موجود

    كما انه من خلال دراستنا لبعض لغات البرمجة الشهيرة مثل Java و C و ++C و VBو Python و Ruby و php و #C على سبيل المثال لا الحصر
    نكتشف شىء خطير

    1 – هذه اللغات ليست صغيرة فى السن … وانما اخذت وقت طويل حتى تصبح مشهورة
    2 – لغة Java ظهرت عام 1995 بينما البايثون ظهرت عام 1991 ولكن الغالبية منا استعملت جافا اولا
    3 – نمط البرمجة الشهير الان الذى هو OOP هناك لغات سبقت و قدمته فى الماضى ولم تنتشر رغم انتشار النمط بعد ذلك
    4 – هناك من يعشق ال Java كلغة برمجة لكن يكون مطرا لاستخدام ال ++C ليجد الاداء Performance الضرورى فى بعض الحالات مثل 3D Games
    5 – هناك من يستعمل ال ++C لعمل تطبيقات فى شهور بينما ينجزها مطور ال VB فى وقت قصير ويحصل على نتيجة ترضى المستخدم ايضا
    6 – هناك من يستعمل Python ويفضلها عن VB لان البايثون Free-Open Source وكذلك Multiplatform و ذات سهولة وانتاجية عالية ايضا
    7 – هناك من لا يزال يستعمل VB لانه تعلمها وتؤدى الغرض بالنسبة له وهناك الكثير من المصادر المتوفرة لها
    ملاحظة : اقصد ب VB هنا ال Visual Basic 6
    8 – هناك الكثير من لغات البرمجة التى لم تحقق الانتشار رغم انها ذات انتاجية وملامح قوية

    فى الواقع هناك الكثير من الملاحظات التى لا يتسع الوقت لذكرها لان فلنضع فى الذاكرة التالى

    1 – لغات البرمجة تحتاج الى وقت حتى تنتشر … ويقل هذا الوقت كلما كان خلف اللغة شركة رائدة
    2 – نمط البرمجة رغم اهميته الا انه بمثابة الموضة التى تحتاج وقت حتى تتغير وهو عامل مهم لنجاح اللغة ولكن ليس كافيا\
    3 – متطلبات التطبيق وخصوصا الاداء Performance قد تكون مانع من استخدام اللغة فى الكثير من التطبيقات\
    ملاحظة هناك عوامل اخرى غير الاداء مثل الاستقرار والمرونة وغيرها من العوامل فهذا مجرد مثال
    4 – هناك اخطاء شائعة فى اختيار لغة البرمجة المناسبة للتطبيق المناسب وعليك ان تضع خطة لنوعية التطبيقات والمطورين المستهدفين
    5 – من اهم نقاط انتشار واستعمال اللغة توفر المصادر المناسبة لتعلمها وسهولة هذه المصادر لاستقطاب المطورين الجدد

    الان اعتقد ان اتضع لنا التحدى الثانى

    التحدى الثانى : لغتك ليست الوحيدة على الساحة هناك الكثير من النافسين ولهم نقاط قوة وضعف وعليك ان تدرسها جيدا قبل المنافسة

    طبعا هناك الكثير من التحديات الاخرى … مثل
    1 – الدعم المالى …. هل هناك شركة تدعم اللغة …. ام مطورين متبرعين بوقتهم !!!
    2 – التسويق الالكترونى … هل هناك فريق يسوق اللغة بشكل يومى عبر الانترنت
    3 – الدعم الفنى …. هل هناك من يقدم حل سريع لمن يتعرض لمشكلة اثناء الاستخدام
    والقائمة الطويلة

    لكن مثل هذه التحديات يمكن ان تلخصها مها فى (بيئة النجاح)
    حيث انها عوامل ضرورية لتحقيق الهدف ان يتوفر
    الوقت – المال – التسويق – الدعم

    لذلك نلخص هذه النقاط فى

    التحديث الثالث : توفير بيئة مثالثية لتحقيق الهدف (بناء اللغة) ثم الحافظ عليه (تطويرها وتسويقها)

    والان

    تحديات ثم تحديات ثم ماذا ؟؟

    علينا ان نفهم التحديات علينا ان نستعد لها

    ويكون الاستعداد كالتالى

    1 – تنمية المواهب
    2 – العلم والدراسة
    3 – التطبيق والخبرة
    4 – روح فريق العمل (لا يهم ان تكون قائد فذلك تكليف ومسئولية كبيرة … المهم ان تكون فعال ومفيد للفريق )
    5 – التضحية ( هناك من يجب ان يضحى بوقته …. هناك من يجب ان يدعم بالمال ايضا )
    6 – المكافاة المنتظرة ( اجعل هدفك رضا الله اولا لتستعيد الامة امجادها …. ايضا عليك ان تثبت ذاتك وتطور نفسك ومؤكد ستستفيد )

    والملاحظة الاخيرة

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

    لذلك ليس من الضرورى ان نضع الاهداف الضخمة فقط نصب عيننا فى هذه الفترة

    يمكن ان نسعى بقدر استطاعتنا ومع الوقت ستجد المواهب تنمو وروح فريق العمل نكتسبها وبالتالى يتطور مجتمعنا ككل
    لان التاخر والتقدم ليس مسئولية شخص واحد …. بس مسئوليتنا جميعا

    والله ولي التوفيق

    تقبل تحياتي وجميع الاخوة

    اخوكم محمد ابراهيم
    ملاحظة : تستطيع تتنفيذ تعليمات بلغة السي فى PHP باستخدام الدالة exec()

    • البدوي

      MohamedIBrahim
      من الآخير و دون مقالات ترويجية
      هل تنصح بتعلم (لغة SMPL)؟
      ولماذا؟

      • السلام عليكم ورحمه الله وبركاته
        لدي ملاحظة بسيطة لك لماذا تصر على الخروج بالحوار الى نقاشات جانبية لن تفيد ولن تسمن ولن تغني
        نريد النقاش علميا فاذا كان لديك نقدا فليكن علميا ايضا هل لديك تعليقا على اللغة او على كلامي تفضل بوضعته اما اسلوب الترويج وهذه الامور لا اعلم ما الذي جاء بها فى الحوار لكن سأرد عليك من الجانب التقني العلمي
        لماذا نتعلم لغة منشئ المواقع ؟
        لكي اكون واضحا وصريحا حتي الان اللغة تنقصها الكثير والى الان على الاخ عمر خطاب تحديد الوجهة الثابتة وطريقة التطوير والشكل العام الثابت للغة حتي يكون هناك ثباتا فى اللغة فمثلا تحديد طريقة ثابتة فى التطوير لحجز المتغيرات والثوابت والشلكل الثابت للقواعد بشكل عام
        اما التطوير يكون فى بيئة العمل والتشغيل ومثلا اضافة نظام للادارة وغيرها كثير من الاقتراحات سأرسلها الى الاخ عمر خطاب ان شاء الله
        تعلم لغة منشئ المواقع شئ جميل حيث ان افضل ما تقدمه على الاقل حتي الان وهذا يعتبر نجاحا كبيرا هو توفير بيئة تعليمية فى هذا النوع الجديد من الابحاث العلمية فى مجال لغات Based On
        وكذلك بيئة تعليمية لمن يريد البدء فى مجال تطوير الويب وفهم اساسياته
        قد يكون ذلك الامر ليس مهما فى معظم وسط مطوري الويب العرب لوجود الكثير من العوائق واهمها ان معظم البرمجيات العربية من هذا النوع تتشابه الى حد كبير فى نوعية البرمجة حتي ثقافة التطوير شبه موحدة
        والدي الله يكرمه دائما ما كان يقول لي
        |الروتين يقتل الابداع فحاول دائما التغلب على الروتين |
        اظن المثل واضح والمقصد منه ايضا واضح جدا
        لذلك فانا اتوقع بعض الوقت وبعض الجهد والانتشار للغة وسيصبح لها انتشارا وكذلك على الاخ عمر خطاب البدء فى التفكير الجدي فى استقطاب مبرمجين (عرب او اجانب) للعمل معه حتي فى غير تطوير اللغة فتطوير دوال اللغة ونظام تشغيلها على السيرفر ليس فقط هو كل مهمات تطوير المشروع فمع كل اضافة لفريق العمل من الاعضاء اصحاب الخبرات والمهارات بغض النظر عن الجنسية سيكفي ان يكتسب شباب عرب ومسلمين خبرة فى هذا المجال ويقال ان من بدأ الفكرة هو نحن ان كنا نسير على درب اننا نريد ان يكون لنا كيان مستقل والكثير يفهم هذا الامر اننا يجب ان ننعزل
        لذا فالنصيحة التي انصحك بالتركيز عليها فى هذه الفترة هي ان تعيد التفكير الكلي فى المشروع لا اقصد اعادته من الصفر بل اعادة التفكير فى هيكلة التطوير وخطة العمل وتحسينها وجعلها قابلة للتغير فى بعض النقاط حسب الحاجة وكذلك اهم شئ استقطاب الجديد
        والى هذا الحد ان شاء الله اعتقد على اخر العام اذا وفقك الله ستجد اللغة جاهزة لان يتم التطوير بها
        لان اللغة حتي الان يعتبر نوعها Reasearch واتمنى من الله وصولها الى Technology قريبا

        تحياتي لك

        والله ولي التوفيق

    • البدوي

      لم تجب على السؤال بطريقة مباشرة….
      اذا اعتبرنا انها لغة برمجة

      هل يجب ان يتعلم “مبرمج SMPL ” البرمجة بالـphp
      او يبقى حبيس SMPL؟
      وبموضوعية هذه العيوب هل يمكن تجاوزها؟

      العيب الأول : لتشغيل “صفحة واحدة” باللغة المزعومة SMPL تحتاج لارفاق كل الملفات والمجلدات التابعة لها مع الصفحة….

      العيب الثاني : اللغة المزعومة SMPL مثل اي سكريبت مبرمج بـ php ممكن ان يحوي ثغرات.. يعني المبرمج اللي يفكر بالبرمجة بـ SMPL عليه ان يعلم انه فتح باب جديد للثغرات لاي اسكريبت يقوم ببرمجته..

      العيب الثالث: اي سكريبت مبرمج بلغة SMPL في كل الاحوال سيحتاج لوقت اكثر وسا يستهلك موارد اضافية على السيرفر..

      العيب الرابع: ما حاجتي لتعلم لغة وليدة من رحم php وهي اللغة المدعومة والعالية المستوى؟

      العيب………………..

      • عمر خطاب

        السلام عليكم. أرجو أن تسمح لي يا أخي أن أرد على هذه الأسئلة.

        بالتأكيد يا أخي ما تحاول منشئ المواقع تقديمه هو أن تغني عن الأشياء المتكررة في عالم تطوير الويب. لكن لا أعلم لمَ تم تجاهل عبارة أن “منشئ المواقع في أول المراحل التجريبية” و عن قصد تجاهلت الكثير من الخصائص حتى أستطيع أن أهتم بالكيف قبل الكم، و لكن إن شاء الله بعد أشهر قليلة سأعتبر اللغة جاهزة للاستخدام واسع النطاق، و هذا لا يعني أنها حاليًا سيئة مثلًا بل فقط جديدة.

        أنت تتحدث يا أخي عن ملفات اللغة على أنها ملايين الأسطر البرمجية! اللغة صغيرة للغاية من ناحية الحجم (الملف المضغوط لا يتجاوز 20 كيلو بايت)، و أهتم للغاية بتقليل سرعة تنفيذ الأشياء، اعتبر يا أخي الكود القصير الذي ستتيحه لك اللغة يغطي على هذه النقطة!

        بالنسبة للعيب الثاني، أنت تقول أن “اللغة المزعومة SMPL مثل اي سكريبت مبرمج بـ php ممكن ان يحوي ثغرات”. لاحظ أن لغة PHP ليست اللغة الوحيدة التي يخطئ المطور بها و يكتب ثغرات، فالـPHP نفسها فيها ثغرات، لكن المطور يستطيع تفادي الكثير من تلك الثغرات.

        بالنسبة للعيب الثالث، ألاحظ أنه تكرار للعيب الأول! يا أخي كما قلت سابقًا من أراد السرعة بهذه الطريقة و كان فرق الميلي ثانية عنده بالملايين فليستخدم C أو C++ مثلًا!
        هناك لغة ASP القديمة (ليست ASP.Net) هي أبطأ من PHP حسب الكثير من الاحصائيات التي شاهدتها و كان فرق السرعة كبيرًا! باستعمال نظام النسخ المخبأة أنت تحصل على سرعة أكبر منها باستخدام لغة منشئ المواقع!!

        و أما بالنسبة للعيب الرابع، فأين هو العيب؟ هذا سؤال، و أنت من تحدد حاجتك أخي الكريم، استخدم اللغة التي تناسبك لا أكثر.

        لكني سأسرد أسبابًا تجعلني – شخصيًا – كمطور أفضل منشئ المواقع، أولًا دعم ترميز Unicode (جرب أثناء استخدام هذا الترميز قياس طول نص عربي في PHP)، و كذلك النظام المتبع في مختلف الأشياء (في PHP هناك عشوائية في التسمية مثلًا فتارة نكتب str_replace و تارة explode و تارة strlen رغم أن الثلاثة دوال نصوص! في منشئ المواقع النظام “ثابت”) و لدي أمثلة كثيرة إن أردتها و أردت مصادر لعيوب PHP أرسل لي رجاءً رسالة على الموقع و سأرد عليك بالكثير مما أملك. (لاحظ أني لم أستخدم كلمات عامة مثل “السهولة” أو “البساطة” أو “وضوح الكود” أو “فهم مقصد المبرمج” الآن، لأنك تريد النقاش لا سبب إنشاء اللغة.

        شكرًا لك.

      • البدوي

        تتحدث عن دعم Unicode
        وكانك ابتكرت شيئ جديد……..

        لعلمك الـ php تدعم Unicode بشكل كامل…

        على كل حال هذا دليل آخر على انك مبرمج مبتدأ..
        تعرف على دالة
        mb_ strlen
        http://php.net/manual/en/function.mb-strlen.php

        اضعت وقتي وداعاااااااااااا

    • ياهلا با الاستاذ محمد ابراهيم
      اعجبني ردك كثيرا ً وانا من متابعيك ومن المعجبين فيك وبدروسك المتميزة في عالم البرمجة وخصوصا ً بناء انظمة التشغيل
      اولا ً اخي الكريم يجب ان تفهم انا لست ضد الفكرة عموما ً الفكرة ممتازة وصاحبها له جيزل الشكر واحسن من غيره بكثير
      لكن انا برئيي وبحسب خبرتي في هذا المجال ارئ ان ان نقول على SMPL لغة برمجة مبالغة وتحسب ضد المبرمج وليست له وراح يواجه مشاكل في الترويج لمنتجه
      وانا راح ابين اسبابي بطريقة علمية .
      اهم جزء في لغة البرمجة هو المترجم او المفسر ,
      واهم نقطة في المترجم هي معالجة الاخطاء , الاخطاء تنقسم الى نوعين ما يحدث اثناء تنقيح الملف وما يحدث اثناء التشغيل
      المترجم لازم يعرف وين الخطأ وكيف يتعامل معه , ولغة PHP الجميل فيها انها تعطيك رسالة بالخطأ ونوعة وين موقعه في اي سطر
      اما SMPL فهي غير قادرة حتى على معرفة نوع الخطأ واين موقعه
      وسأعطيك مثال على ذلك :
      قمت بتغيير في دالة string_random الى stri7ng_random
      طبعا ً الدالة هذه غير معرفة على SMPL فشي طبيعي يظهر لي خطأ
      لكن انظر كيف ظهرت رسالة الخطأ

      Call to undefined function smpl_str7ing_random() in /home/eeee/public_html/smpl/smpl_translator.php(119) : eval()’d code on line 2

      نفس نمط رسائل اخطاء لغة PHP
      طبعا ً انا اعمل على ملف اسمه page.smpl لكن ظهر لي الخطأ على ملف smpl_translator.php
      اول مره اشوف لغة برمجة تظهر لي خطأ على المترجم , مارأيك بذلك
      وانظر الى دالة eval الي اعرفه ان لغة البرمجة تحول الى لغة منخفضه بدون ما تقول لك ترى انا استخدم الدالة الفلانية للتحويل

      طيب اذا كانت SMPL لغة برمجة حقيقية لماذا نمطها نفس نمط لغة PHP في الاخطاء وليش اظهرت لي الملف smpl_translator.php
      ايش لي علاقة فيه

      النقطة الثانية التي احب اوضحها ,
      وين دور هيكلة البيانات في SMPL , كيف تتعامل اللغة مع البيانات , المصفوفات المتغيرات التكرار كل هذا كيف تتعامل معه
      المتغيرات كيف تتعامل معها هل لازم نعرف نوع المتغير ام لا
      المصفوفات كيف تتعامل معها هل لازم نضع مدى معين عند انشاء مصفوفة معينة ام لا
      لو حاب اعمل struct هل ممكن اسويه ام لا
      لما اسوي متغير ثم اغير قيمته اثناء التشغيل هل تتغير القيمة الاصلية ام لا ام يتم الاحتفاظ بالقيمة الاصلية مثل لغة السي شارب
      موضوع معالجة النصوص كيف تتم

      لو قارنت بين PHP و SMPL في الكلام الي قلته فوق ستجد ان نفس الاشياء الموجوده في PHP موجوده على SMPL
      طيب وين الجديد , يعني الان لما اسوي مجموعة دوال واحطها في ملف هل هذا يعني اني بنيت لغة برمجة حقيقية ؟؟

      • عمر خطاب

        السلام عليكم.

        تستطيع يا أخي لغة منشئ المواقع أن تصدر أخطاء برقم السطر و اسم الملف، حتى الخطأ الذي وضحته لكن بسبب مشاكل تصدر منه عند استعمال include تم حذف التأكد من وجود الدوال، و ترك هذه النقطة للـPHP.
        الاصدار القادم على سبيل المثال (و الذي أستطيع أن أعطيه لك لتجربه إن أردت) يصدر خطأً عن جميع الأخطاء إلا عند استخدام دوال غير موجودة أو تعريف دوال موجودة بالفعل.

        بالنسبة لمَ تسميه هيكلة البيانات، أمامك مرجع اللغة فاقرأه، و اللغة Weak Typed مثل PHP.
        أخي الفرق بين PHP و منشئ المواقع كبير، هل تستطيع طرح نص من آخر في PHP على سبيل المثال؟ أو الجمع بين مصفوفتين؟
        هل يوجد ما يمنع الـInfinte Loop في PHP غير الوقت الأقصى لتنفيذ الملف؟

        جرب يا أخي أن تكتب كود خاطئ، و سترى أن اللغة تخرج خطأً فيه رقم السطر و اسم الملف! لاحظ أن المهم هو تنفيذ الكود و أن تجد الخطأ. الاصدار القادم (الذي أستطيع أن أعطيه لك لتجربه) فيه جميع الأخطاء حتى الآن إلا خطأ واحد و هو الخاص بالدوال (حله سهل، لكن عند تضمين ملف داخل آخر، يصبح الأمر صعبًا للغاية، لأنك قد تعرف دالة في ملف و تستخدمها في ملف آخر، عمومًا في رأسي طريقة قد تفلح و سأجربها إن شاء الله). هل أستطيع أن أفهم منك أنه إذا تم ظهرت جميع الأخطاء بما فيها خطأ الدوال ستقتنع بأن منشئ المواقع لغة؟

        بالطبع لا! هناك العديد من الـCompilers التي لا تظهر أخطاء، و ليس من ضمنها منشئ المواقع.

        شكرًا لك.

      • السلام عليكم ورحمه الله وبركاته
        اهلا اخي الكريم وانا سعيد ان هناك من يتابعني وان شاء الله الدروس تكون عند حسن ظن الجميع
        نرجع الان الى موضوعنا الاساسي
        انت ذكرت نقطة خطيرة وهى انك ذكرت فى البداية انك سترد رد علمي واذا بك تذكر ملحوظة ليس لها اساس علمي وهو انك ذكرت اقتباسا
        “واهم نقطة في المترجم هي معالجة الاخطاء , الاخطاء تنقسم الى نوعين ما يحدث اثناء تنقيح الملف وما يحدث اثناء التشغيل”0دعنا من باقي الكلمة
        من ذكر ان اهم شئ فى المفسر دعنا نكون واضحين فى حديثنا لماذا اساسا البعض يخلط ما بين المترجم والمفسر والمحول
        Compiler / Interpreter/Translator
        سأذكر وظيفة كل منهم
        1- المترجم :

        الCompiler هو اسم الmodule الذي يقبل input من لغة High Level مثل الC و يعطي output من الObject Code المناظر له..
        يتميز المترجم عن المجمّع بحقيقة وحيدة، وهي أن كل تعليمة من تعليمات الدخل لا تكافئ تعليمة واحدة من تعليمات لغة الآلة، أو سلسلة متكاملة من التعليمات. هذا، ويمكن للمترجم دعم عدة ميزات، كالتحديد التلقائي لمواضع المتحولات، والتعابير الحسابية، وبنى التحكم، كحلقات FOR و WHILE، ومجالات رؤية المتحولات، وعمليات الدخل والخرج، والتوابع ذات الترتيب الأعلى ومحمولية التشفير المصدري
        ويتم الإعلان عن الخطأ إذا تم اكتشافه أثناء الترجمة، أما إذا كانت الأخطاء خطيرة، فقد يتوقف المترجم عن تتمة عملية الترجمة كلياً. إضافة، ينبغي على المترجم أن يتمكن من الدخول إلى مكتبة الإجرائيات أو البرامج الجزئية، حيث تتضمن هذه المكتبة العديد من البرامج والإجرائيات اللازمة لتنفيذ العمليات الحسابية، وعمليات الدخل والخرج، والتخزين الوقائي لنقاط تحويل المعطيات. وحيثما أشار البرنامج المصدري لإحدى هذه الإجرائيات، أو احتاج لتنفيذ عملية محددة، يقوم المترجم بالتأكد من إضافة الإجرائية المكتوبة بلغة الآلة إلى التشفير العنصر
        وفي حالة تم تعديل البرنامج المصدري لاحقاً، فينبغي إعادة كامل عملية الترجمة وهذا الامر مرهق

        2- المفسر (كما عرفته سابقا )

        الinterpreter هو اسم الmodule الذي يقوم بعملية الترجمة للسطر ثم ينتظر تنفيذه ثم ينتقل للسطر الأخر و هكذا و هو يشبه الى حد ما الCompiler و لكنه في أغلب الأحيان لا يمكن ان تُنتج منه Executable File أي أنه يجب أن يقوم الinterpreter بعمل الترجمة كل مرة لتشغيل البرنامج كما أن مهمته تزداد تعقيداً في وجود الLoops و الConditions و لأنه يجب عليه أن يترجم الloop كلها ثم يحتفظ بالكود الخاص بها في الذاكرة حتى يكررها ثم ينتقل بعد هذا الى مابعدها…

        1- المحول (Translator)
        يمكن ان يبنى مثل ال Compiler ولكن فى مرحلة ال Code Generation سيكون العمل اسهل لانك تحول الى لغة مشابهة الى اللغة الاساسية
        ويمكن ان يبنى بشكل مختلف يعتمد على مبادىء Text Processing واستعمال Find & Replace ولكن سيكون الناتج محول ضعيف يمكن ان يحول
        كود خاطىء الى كود خاطىء بدون ان يدرى لانه لن يحتوى على Syntax Analysis فى هذه الحالة
        الفرق بين المترجم والمحول

        الفرق بين ال Compiler و ال Translator يكمن فى ان ال Translator
        1 – يحول من لغة الى لغة اخرى فى نفس المستوى تقريبا (يعنى لغات متشابهة الى حد كبير)
        بينما المترجم يحول من لغة فى مستوى ما (مثل السى) الى لغة فى مستوى اخر (مثل الاسمبلى)
        2 -غالبا لا يتدخل ال Translator فى اضافة اشياء الى الناتج Object وقت التنفيذ Runtime الا فى نطاق ضيق جدا
        حيث ان اللغات سواء المحول منها او المحول اليها متقاربة فى الامكانيات والمفاهيم
        3 – الكود الناتج من ال Translator عندما تقراه ترى كانه كود عادى مكتوب باللغة المستهدفة الى حد كبير وليس كود خاص يعمل مع Interpreter خاص مثلا

        نرجع الان الى النقطة الاساسية وهو اننا سنتحدث عن مفسر
        دعني اقول انك اخطئت فى ذكرك ان اهم شئ فى المفسر هو تحديد الاخطاء
        فهناك خطوات وعمليات كثيرة للمفسر يقوم بها لا يقدر احد على تحديد ما هى الاهم منها لان هناك بعض الامور لا يمكن الاستغناء عنها مثل
        محلل المفردات Lexical Analyzer
        محلل الصيغ النحوية Syntax Analyzer
        محلل الدلالات Semantic Analyzer
        محسن شفرة المصدر Source Code Optimizer
        مولد الشفرة Code Generator
        محسّن شفرة الهدف Object Code Optimizer
        وهناك العديد من الادوات المتداخلة مثل
        برامج التحميل Loaders
        برامج الربط Linkers
        المجمعات Assemblers

        لذا فلا يمكن الحكم من هذا المنطلق على ان معالجة الاخطاء هى شئ مهم اكثر من الباقي (اى الاهم)
        كان هذا تعليقي على فقط ما ذكرته اما باقي ما ذكرته انت والاخوة سأرد على ما اراه مناسبا والاخ عمر خطاب له الاحقية فى الرد على النقاط الخاصة بلغته مباشرة

        تحياتي

        والله ولي التوفيق

  • وأرجو ان يكون النقاشا علميا وليس فقط ذكر بعض التعليقات التي لا شأن لها بالعلم مثل
    اذا كان هناك من العرب مثلك فانا لله وانا اليه راجعون

    استخدام جملة رائعة فى موضع غير مناسب

    خيرا يراد به غيره

  • عبدالله

    طريقك مسدود واتحداك تقدر تسوقها
    ملاحظة: هذا التعليق صالح لـ120 عام

    هذه ليست لغة برمجة
    ومهما حاولت إقناع المبرمجين (الفاهمين)
    لن يقتنعوا بها….

    حتى وان تعلمها احد المبتدئين سيتخلى عليها
    ويتجه للـphp خلال 48 ساعة….

    ++اتحداك اذا تستطيع نشر اللغة في احد المواقع المختصة في البرمجة ولا تجد الاستهجان…

  • يا اخ عمر خطاب , لازم تفرق بين اني اقوم بعمل دالة تنفذ وظيفة وبين عمل المترجم
    ما تقول عنه ان PHP لايمكن فيها طرح نص من نص هذه امر خاطئ
    استطيع ان اعمل دالة بلغة PHP تقوم بهذه الوظيفة وين المشكلة
    انا مش ضدك يا اخي الكريم بالعكس هذا شي نفتخر فيه نحن كعرب انو نقوم ببناء لغات برمجة , لكن ان يأتي شخص ويصنع كم دالة ويطلق عليها لغة برمجة هذا ترى منقصه في حقك الناس راح يضحكون عليك لانها منطقيا ً غلط فيه اخطاء كثيرة وغلطات كثيرة في SMPL ومو محتاج اذكرها لك كلها عشان تقتنع انها ليست لغة برمجة , راح اعطيك بعض الاخطاء الفادحة
    اولا ً اللغة لم تعمل عندي لانها تعتمد بشكل اساسي على ملف htaccess

    ثانيا ً راح اعطيك غلطه فادحة في الشرط
    لو سئلتك سؤال ايش الفرق بين ( = ) وبين ( == )
    جرب تكتب (=) فقط راح تجد انه يمررها لك ولا يحسبها لك خطأ
    حسب علمي ان ( = ) تعني المساواة
    و ( == ) تستخدم للمقارنة , لكن باين في SMPL انو مافي فرق بينهم فسر لي اياها هذه كيف جت اختراع جديد هذا ولا ايش

    طيب يا سيدي خذ عندك هذا الخطأ الثالث
    في SMPL تعمدت اضع هذا الرمز ( _ ) قبل الشرط if
    يعني الكود صار كذا

    _if random == “مرحبًا”:

    طبعا ً هذا خطأ في الـ syntax
    شوف رسالة الخطأ كيف ظهرت

    SMPL Fatal Error: Non expected “random” (VARIABLE) in the file ss.smpl on line 4.

    ايش علاقة المتغير random با الموضوع
    بينما في لغة PHP سويت نفس الخطأ بهذا الكود

    _if($m == 10)

    شوف كيف الخطأ ظهر

    Parse error: syntax error, unexpected ‘{‘ in C:\AppServ\www\loop.php on line 4

    فسر لي اياها منطقيا ً هذه كيف جت
    اعطيك خطأ رابع ولا ماله داعي اعتقد الثلاثة الاخطاء التي با الاعلى اخطاء فادحة تحتسب ضد المبرمج

    لاحظ اخي الكريم مافي برنامج ما يخلوا من العيوب لكن في عيوب منطقية وعاديه جدا ً ان المبرمج يقع فيها لكن اخطاء مثل هذه وفي مترجم لغة برمجة تعتبر اخطاء فادحة بمعنى الكلمة
    اذا انت تبغى تسمي SMPL لغة برمجة هذا شي راجع لك مافي احد راح يجبرك على شي , لكن منطقيا ً وعلميا ً هذه ليست لغة برمجة
    انا عن نفسي متى راح اقتنع انها لغة برمجة , لما يكون لها كيان مستقل مش نفس الي في PHP موجود على SMPL وتكون اكثر منطقية
    او تجيب اثبات علمي من شركة برمجية عريقة على ان هذه لغة برمجة حقيقة هنا راح اقتنع والكل راح يقتنع ان هذه لغة برمجة
    لازم تفرق ما بين ان الواحد يسوي دالة او يسوي كلاس معين وبين ان الشخص يسوي مترجم لغة , لا تخلي الناس تضحك عليك اعتقد الردود الي في هذا الخبر كافية كلهم يستهزئون
    لا تسوي مثل نيوتن وبعض العلماء الناس كان تستهزء بهم بعدين اعترفوا بهم , في فرق بين ان الواحد يكتشف وفي فرق بين ان الواحد يجمع كومة حديد ويقول عنها سيارة

    • عمر خطاب

      السلام عليكم.
      أخي الكريم، الآن أنت المخطئ و بشكل واضح و لست أنا، الخطأ الظاهر عبر منشئ المواقع صحيح 100%، لماذا؟ لأنه في لغة منشئ المواقع المتغير لا يوضع قبله علامة “$”، و بالتالي عندما كتبت _if قبلها “_”، أنت كتبت متغير الآن!! و بما أنك كتبت متغير بعده متغير (_if بعده random) ظهر لك خطأ منطقي يقول لك ليس من الممكن وضع متغير بعد متغير آخر!

      بينما في PHP، تضع قوس “(” بعد _if و بالتالي تصبح “دالة” و عندما تصبح دالة يكون من غير الممكن وضع “{” بعد نداء دالة!

      بالنسبة لعلامة “=” و “==”، ليس فيهم أخطاء، نفس ما يحدث في PHP يحدث هنا في لغة منشئ المواقع، يمكنك كتابة “=” في منشئ المواقع و كل ما سيحدث (كما في PHP) سيتم إسناد قيمة للمتغير و إعادة true و بالتالي يتم تنفيذ نتيجة الشرط.

      تقول “دالة”، الدوال التي تبدأ بـsmplcore هي دوال تستخدم في ترجمة اللغة و يمكن لأي مبرمج أن ينقل نفس الكود بنفس الترتيب إلى لغة C و بتعديلات بسيطة، و سيعمل الكود. عبدالله عيد (أعتقد أن أكثر مطوري الويب العرب يعرفونه) قال في مرة من المرات أنه ليس من الصعب كثيرًا برمجة Compiler للغة C في PHP، فما بالك بلغة بسيطة مثل منشئ المواقع!

      أخي أنا لم أجمع كتل حديد و أقول عنها سيارة. أنا لم أقل على منشئ المواقع أقوى لغة في التاريخ، بل اللغة البسيطة السهلة الصغيرة. لا أعلم لمَ العرب يكرهون ما لم يعتادوا من قبل! أخي الكريم، تصميم لغات البرمجة الغير معقدة بشكل كبير هي – في الزمن الحالي – ليست مهمة المبرمجين الخبراء فقط، بل و بسبب السهولة التي تقدمها لنا اللغات الحالية تستطيع أن تنشئ لغتك بمفسر بسيط للغاية، و بالتالي تحصل على سهولة أكبر من اللغة التي كانت قبلك، و عندما تتطور لغتك قد يأتي و من ينشئ بها لغة!

      PHP بدأت مكتوبة بـPerl، و كانت حينها Perl في مقام PHP حاليًا، و لكن انظر كيف تفوقت PHP على Perl في الويب الآن؟

      شكرًا لك.

    • راجع تاريخ العديد من اللغات وستجد ان معظم لغات الويب بدأت بنفس الاسلوب ليس بنسبة 100 % لكن بالشكل العام

  • جميل جدًا أخي الحبيب عمر ^__^
    فقط أهنؤك على الإطلاق الرسمي ولن أعلق تقنيًا بالطبع لأننا تحدثنا كثيرًا 😉
    تحياتي .

  • الاخ الكريم

    عمر خطاب

    اتمنى لك دوام التوفيق والنجاح ومزيداٌ من التقدم والريادة

    وارجو ان لا تعير البعض الاهتمام فهم لا يستحقون مجرد الرد عليهم وخاصة الغوغائيون فهم عبارة عن مثيري الشغب والفوضى والجدل العقيم وبعضهم مراهق لا يفقة شيئ في ادب الحديث والحوار فليس العيب ان تبدي رأيك وتناقش بموضوعية وتطرح الاسئلة وتستفسر عن بعض النقاط وقد تختلف مع الاخر في بعضها ولكن بحدود الادب والحوار الهادئ والحفاظ على اللباقة وعدم رمي الكلام الجارح ( من العصر الحجري و…الخ) فهذا اسلوب وقح يجب ان يترافع عنه الانسان السوي الذي يفكر قبل ان يتكلم .

    اخي الكريم عمر

    ارجو ان لا تلتفت الى الغوغائين وبارك الله لك طريقك ومسعاك وادام عليك التوفيق والنجاح وتابع مسيرك الذي بدات به ولقد اسعدنا ان يكون هناك من يقدم الكثير بلا مقابل وجزاك الف خير

    وشكراً للاخ سعود على حرصة ومتابعتة لادب الحوار والحديث الطيب

    الاستاذ / احمد سالم

  • اخي الكريم عمر خطاب , الكلام سيطول والتعليقات ستطول حول SMPL
    هل هي لغة برمجة ام لا ؟؟
    حتى لا يتجه النقاش الى مشاجرة كل واحد يريد ان يفرض رئيه ارتئيت ان استشير من هم اخبر مني في البرمجة عشان لو كنت انا مخطئ استفيد معلومة جديده ولو كنت انت على صواب تكون استفدت برضو في تطوير SMPL
    تواصلت مع بعض المبرمجين ومن ضمنهم عبدالله عيد , بعد قراءة تعليقاتهم حول الموضوع لا اخفيك ان نظرتي تغيرت قليلا ً حول النظر الى لغات البرمجة وتوضحت لي بعض الامور لكن معظم من جاوبني لم يحسم الامر 100% اغلبهم كان يجيب اجابة عامة ولم يحسم الامر
    عموما ً انا برئيي افضل لو يتم النقاش حول الموضوع على مجموعة عبدالله عيد على الفيسبوك بيكون افضل لان هناك مجموعة من خيرة المبرمجين وراح يكون النقاش افضل للجميع والكل راح يستفيد

    اما التعليقات الاخيرة للاخ محمد ابراهيم , اقول له ماشاء الله عليك شرحت لنا درس كافي ووافي عن المترجمات والمفسرات والمحولات جزاك الله خير وما قصرت

    • ارجو من الاخوة اعطائي بعض التفاصيل حول مكان النقاش الجديد حتي اطلع عليه

  • الحربي

    لاتهتم لهم يا إستاذ ,
    أستمر والقلب داعي لك
    شكراً عالم التقنية ..

  • مغترب في بلاد العجائب

    ابدعت يا استاذ عمر في لغتك وفي طرح ونقاشك انت واستاذنا محمد ابراهيم ..
    استفدنا كثيرا من شرحكم الراقي و الوافي والمتخصص ..
    ونحن معكم قلبنا وقالبا واي خدمة نحن موجودون .. 

  • I’m extremely impressed along with your writing skills as well as with the layout to your weblog. Is this a paid subject matter or did you customize it yourself? Anyway keep up the excellent high quality writing, it’s rare to see a nice weblog like this one today..

تعليقات عبر الفيسبوك