ما هي لغة Motoko موتوكو
موتوكو هي لغة برمجة لبناء البرمجيات بشكل مباشرة على الإنترنت، هدفها هو تقديم بيئة عمل جديدة سوف تقدم تجربة للمبرمج مرنة و غاية في السهولة ، يمكن القول ان Motoko هي لغة برمجة متخصصة ، مصممة لدعم نموذج البرمجة عبر الإنترنت بشكل مباشر من خلال الكمبيوتر، مما يسهل إنشاء التطبيقات بكفاءة عالية الأداء وذالك بالاستفادة من بعض المميزات عالية المستوى (الحديثة ) التي توفرها هذه المنصة عبر الأنترنت .
الهدف الرئيسي من إنشاء لغة Motoko . هو ان الشركة ارادة انشاء لغة آمنة وسهلة الاستخدام وتستطيع بكل سلاسة التعامل مع النظام الأساسي و المكونات المادية ، بحيث تكون هذه اللغة سهلة ، ويمكن الوصول إليها من قبل المبرمجين من اي مكان عبر الأنترنت. حيث انه في الوقت الراهن ، لا توجد لغة برمجة متخصصة في هذا المجال. لذالك كان لا بد من انشاء لغة برمحة متخصصة بهذا المجال ، و رغم كل الصعوبات فقد قامت شركة Dfinity من بداية 2020 حتى شهر اغسطس عبر فريق بقيادة الخبير أندرياس روسبيرج بانشاء وتطوير لغة موتوكو Motoko .
من هو أندرياس روسبيرج
أندرياس روسبيرج هو باحث ومهندس في DFINITY يقود تطوير Motoko ، وهي لغة برمجة جديدة لحاسوب الإنترنت الخاص بـ DFINITY. قبل انضمامه إلى DFINITY ، كان مهندسًا في Google يعمل على محرك V8 JavaScript الذي يعمل في Chrome ، وعمل أيضًا كباحث أكاديمي في نظرية لغة البرمجة وتصميمها وتنفيذها في معهد Max Planck لأنظمة البرمجيات. وهو أحد المصممين المشاركين في تطوير ال WebAssembly وساهم في العديد الخدمات الأخرى.
يناقش روسبيرج في احد المؤتمرات استخدام شركة DFINITY للويب اسمبلي WebAssembly في حاسوب الإنترنت و وبعض تفاصيل تجربة تصميم لغة Motoko.
أندرياس روسبيرج في Dfinity ، نقوم ببناء كمبيوتر الإنترنت ، وهو نظام أساسي لامركزي للحوسبة السحابية نتصور أنه عالم برمجي سلس يمكن للمطورين فيه نشر التطبيقات والخدمات مباشرة على الإنترنت. لتحقيق هذه الرؤية ، قررنا استخدام WebAssembly باعتباره لغة مشتركة لبيئة تنفيذ النظام الأساسي ، بحيث يمكن للمطورين برمجته بأي لغة يتم تجميعها في WebAssembly.
كل ما يهمنا هو تقديم بيئة عمل للمبرمج والمطور تكون سلسة ، لذالك ادركنا أيضًا أنه من المهم إنشاء لغة برمجة متخصصة في البرمجة المباشرة عبر الإنترنت ، تسمى Motoko ، وهي لغة مصممة لدعم نموذج برمجة كمبيوتر الإنترنت بشكل مباشر ، مما يسهل عملية إنشاء التطبيقات والأنظمة بكفاءة عالية ، بالأضافة لذالك يمكن للمبرمج الاستفادة من بعض الميزات الأكثر تطوراً لهذا النظام الأساسي.
يمكنك الاطلاع على:
تعلم البرمجة دليلك نحو اختيار أفضل واسهل لغات البرمجة
يمكنك الاطلاع على:
تعلم البرمجة دليلك نحو اختيار أفضل واسهل لغات البرمجة
مميزات لغة Motoko
سوف نذكر لك اهم مميزات هذه اللغة:
سهلة الاستخدام والتعلم
هو احد اهم اسباب انشاء لغة موتوكو سهولة الأستخدام، ولكن هذا لا يعني التصميم داخلي ليس بمستوى عالي ، التصميم الداخلي ل motoko هو تصميم لغة حديثة. على سبيل المثال ، كل حملة هي بناء لأمر برمجي ، وله عمليات إغلاق ، وله أنواع متغيرة ومطابقة نمطية محددة بشكل ثابت ، ولديه مجموعة بيانات غير صحيحة ، وبالطبع لديه نظام كتابة مرن سليم بالفعل.
الدعم الكامل من كمبيوتر الإنترنت
بما ان لغة موتوكو تستخدم كمبيوتر الإنترنت، وهذا يعطيها كل مميزات هذه التقنية . بالأضافه للويب اسمبلي و مميزاته.تستطيع الوصول اليها عبر الإنترنت ، وهذا يعني انك بستخدام اي جهاز كمبيوتر تستطيع الوصول لبيئة العمل وتطوير البرمجيات.
نظام الكتابة الحديث
تم تصميم Motoko ليكون بديهيًا، لكل من لدية خلفية بسيطة بـ Javascript ولغات البرمجة الأخرى ، حيث يقدم مميزات متفدمة مثل أنواع بنية الصوت وأنواع المتغيرات ، ومطابقة الأنماط المحددة.أي ان نظام الكتابة في موتوكو يضمن حقًا عدم وجود أخطاء معينة مثل الأعطال أو السلوك غير المحدد أو إساءة تفسير البيانات أو ببساطة فقدان حالة في التبديل.
ادارة الذاكرة
يحتفظ كمبيوتر الإنترنت بصفحات الذاكرة التي يتم تشغيل العلبة فيها. وبالتالي فإن حالة الممثل وجميع هياكل بيانات الذاكرة الخاصة به تبقى إلى أجل غير مسمى ، ولا تحتاج إلى "حفظ" بشكل صريح. يوفر Motoko العديد من الميزات لمساعدتك في الاستفادة من هذه البيئة ، بما في ذلك ميزات اللغة التي تسمح بالانتقال الذاتي عند ترقية برنامج العلبة.
الواجهات التفاعلية
لغة تعريف واجهة عامة ( IDL ) تسمى Candid مستقلة عن Motoko. يصف مجموعة الرسائل التي تفهمها العلبة ونوع البيانات التي يتم إرسالها معها. يتم وصف البيانات في Candid من خلال مجموعة من أنواع البيانات المتعارف عليها (الأرقام والنصوص والمصفوفات والسجلات والمتغيرات والوظائف والمراجع إلى العلب الأخرى) المستقلة عن نظام نوع Motoko أو أي لغة برمجة أخرى. ملفات IDL التي تم إنشاؤها تلقائيًا يقوم SDK بتصدير تعريف الواجهة الخاصة بك ، بحيث يمكن للعلب الأخرى ، و المتصفح وتطبيقات الهواتف الذكية التي لديها إذن الاتصال بوظائفك. يمكنها مترجم موتوكو من قراءة وكتابة ملفات تعريف الواجهة ، مما يسمح لـ Motoko بالتفاعل بسلاسة مع العلب المبرمجة بلغات أخرى.
يوفر Motoko العديد من الميزات الرائعة الأخرى ، بما في ذلك الدعم العميق لـ WebAssembly الذي يسمح للوحدات المكتوبة بلغات أخرى بربطها بمشروعك في موتوكو.
يمكنك الاطلاع على:
ترتيب لأفضل 20 لغة برمجة و اكثرها طلبا في سوق البرمجيات
طريقة عمل لغة موتوكو و Wasm الويب اسمبلي
باختصار ، التطبيق في موتوكو هو ممثل (أو عدة ممثلين) ، والذي بدوره عبارة عن كائن كبير غير متزامن تم تجميعه في وحدة الويب اسمبلي Wasm. من خلال مفهوم Wasm للذاكرة ، يمكن لمثل هذا الممثل أن يدير فورًا ما يصل إلى 4 جيجا بايت من الحالة الداخلية ، على الرغم من أنه يمكن توسيع هذا بشكل أكبر عن طريق ربط وحدات الويب اسمبلي Wasm المتعددة التي لكل منها ذاكرتها الخاصة. يسعدنا معرفة مدى سرعة وصول المستخدمين المتصلين إلى الذاكرة.
لجعل البرمجة غير المتزامنة أكثر ملاءمة والسماح بالتعبير عنها "بأسلوب مباشر" متسلسل ، تتبنى Motoko فكرة أخرى عمرها 40 عامًا من سجلات أبحاث لغة البرمجة ، على الرغم من أن الفكرة التي أصبحت لحسن الحظ أكثر شيوعًا مؤخرًا: العقود الآجلة (تسمى أيضًا قائمة الأوامر ).
في Motoko ، تتجسد في شكل اوامر غير متزامنة، قيم من النوع غير متزامن <T> يتم إنتاجها بواسطة اوامر مسبوقة بالكلمة الأساسية لنوع غير المتزامن. على وجه الخصوص ، يمكن أن يكون الجسم الوظيفي تعبيرًا غير متزامن ، وبالتالي يستبدل بشكل طبيعي المفهوم الأكثر تجانسًا للوظيفة غير المتزامنة الموجودة في بعض اللغات الأخرى.
مع ذلك ، يُسمح لأساليب الممثل أن يكون لها نتائج بعد كل شيء طالما أن تلك الأوامر هي مستقبلية. يمكن انتظار العقود الآجلة للحصول على قيمتها ، ولكن فقط داخل تعبير آخر غير متزامن ، يشبه غير متزامن / ينتظر monads كما هو معروف من اللغات الحديثة الأخرى.
يقوم برنامج التحويل البرمجي Motoko بتنفيذ ذلك عبر تحويل CPS التقليدي (أسلوب المرور المستمر) ، مما يحول كل نقطة انتظار إلى وظيفة Wasm منفصلة (بالإضافة إلى بعض بيئة الإغلاق) التي تمثل استمرار الانتظار. في الواقع ، إنها CPS مزدوجة في خط المرور ، لأن كل رسالة يمكن أن تحتوي أيضًا على رد فشل مع استمرار الفشل.
طريقة ذات النتيجة غير المتزامنة هي الطريقة التي ترسل رسالة رد تحمل قيم النتيجة كوسائط. يتم تلقي هذه الرسالة من خلال وظيفة المتابعة التي تم إنشاؤها ، والتي يمكنها بعد ذلك استئناف التنفيذ الذي تم التقاطه. انتظار الرد لا يحظر الممثل - يمكنه تلقي رسائل أخرى بحرية في هذه الأثناء.
من المميزات الرئيسية ل موتوكو السماح للمطورين باستخدام تقنية blockchain دون الحاجة إلى تعلم نوع جديد تمامًا من الحوسبة. لذلك أخذنا كل المعارف الخاصة التي قد تحتاجها في الجيل الحالي من لغات برمجة blockchain. على سبيل المثال ، لا توجد تركيبات صريحة لتحديث الحالة على blockchain ، ولا توجد واجهة برمجة تطبيقات أخرى لكتابة البيانات إلى التخزين الدائم ، مثل الملفات أو قواعد البيانات (على الرغم من أنه يمكن محاكاتها كمكتبة) .
بدلاً من ذلك ، يقوم كمبيوتر الإنترنت بستخدام فكرة قديمة أخرى حيث يبدوا البرنامج بأنه يعمل "إلى الأبد" وتبقى ذاكرته حية (حتى يتم حذفها ). في Motoko ، هذا يعني أن المبرمجين ليسوا مضطرين للقلق بشأن حفظ بياناتهم بشكل صريح أو القلق بشأن الملفات أو قاعدة بيانات خارجية: مهما كانت القيم أو هياكل البيانات المخزنة في متغيرات البرنامج ، فستظل موجودة عند وصول الرسالة التالية ، حتى لو كانت كذلك بعد عدة شهور.
تهتم المنصة بحفظ واستعادة الحالة الخاصة للعلبة بين استدعاءات الطريقة بوضوح. بحيث قام مطوري motoko بتعديل تحديثي على محرك الويب اسمبلي Wasm ، لأن حالة وحدة Wasm معزولة بشكل كامل في ذاكرة الوحدة.
يكفي مشاهدة ذكريات Wasm باستخدام تقنيات الذاكرة الافتراضية التي تعرضها أنظمة التشغيل. بهذه الطريقة ، تعرف المنصة متى تم تعديل الصفحات الموجودة في هذه الذاكرة ويمكنها اتخاذ أي إجراءات ضرورية لاستمرار الصفحات التي تحتوي اخطاء ، بالإضافة إلى تجزئتها من أجل بروتوكول الموزع.
يمكنك الاطلاع على:
لغة دارت dart ومنصة فلاتر برمجة تطبيقات المستقبل
لماذا انتشرت لغة بايثون وماهي مميزات Python
وفي الختام كان هذا كل مايهمك عن لغة موتوكو motoko ، ومن هو مؤسس هذه اللغة وما علاقتها بالويب اسمبلي و نظره عامه عن طريقة عمل موتوكو. حيث انها لغة مرتبطة ارتباط وثيق بتقنية كمبيوتر الإنترنت.ومصممه بشكل خاص كلغة برمجة مباشرة عبر الإنترنت. اتمنى ان اكون وفقت بالشرح الى لقاء قريب دمتم بود ( ^_^ ).
المراجع
stackoverflow
https://webassembly.org/
DFINITY
مواقع اخرى