دينو (بيئة تشغيل)- ما هي دينو (Deno)

بما أن هذه الأيام بدأت بمشروع تسجيل دورات تعليمية للبرمجة بأستخدام Node.js ،Deno ،Rust و غيره من التقنيات الحديثة باللغة العربية. احببت قبل نشر الدورات علی منصة کرسي (coursee.org) اتکلم عن کل من هذه التقنيات بسلسلة من المقالات حتی يتعرف القارئ علی اهمية و استخدامات هذه التقنيات.

من Node نحو Deno!

إذا تعرف Node.js من قبل أو عملت به، من المحتمل أنك تعرف ريان دال (Ryan Dahl)، مبدع Node.js. قدم دال ظاهرة Node.js إلى العالم في مؤتمر JSConf لعام 2009.

يتم تشغيل البرامج بمنصة Node.js يوميًا على أكثر من 12 مليار جهاز حول العالم.

إنشاء Node.js و تقدمها و تطورها الی هذا الحد من التطور و الأزدهار هو موضوع ذات اهمية بحد ذاته و سنناقشه في مقال آخر عن قريب. لکن في هذا المقال نريد نتحدث عن عودة ريان بعد سنوات عديدة من تطوير Node.js، لبناء حلم جديد.

ربما لم يتخيل رايان أن Node.js سيصل إلى هذا المستوى من الشعبية و الاستخدام، اليوم هو يرى جميع الأخطاء في Nodejs، لكنه لا يستطيع تصحيحها. بالإضافة إلى ذلك، لم تعد عملية تطوير Node.js تحت تصرفه و يتم التحكم فيها بواسطة مؤسسة و لم يكن من الممكن إجراء تغيير أساسي على الإطلاق. تستخدم الملايين من مواقع الويب و تطبيقات الويب Node.js ولا يمكن إجراء أي تغييرات أساسية. لذلك :

بدلاً من إجراء تغيير على منصة Node.js، أعاد ريان إنشاء نظام جديد يسمى Deno.

دنو أو دينو؟

في الحقيقة هو كان دنو، ثم أصبح دينو؛
بعد عام تقريبًا من أول تضمين ( Commit) في دينو جيتهاب (Github) قرر رايان دال، في نطق له، أن بدلا من دنو يلفظ دينو، بحيث يكون أشبه بنطق كلمة ديناصور ( Dinosaur ). لذلك من الآن فصاعدا سنستخدم مصطلح “دينو”.

دينو يحتوي علی فكرة جديدة و مثيرة، ربما يتشابه Deno في المظهر مع Node.js، لكنه يختلف معه في البنية و معمارية البرمجة من الأرض إلى السماء. ربما يكون التشابه الوحيد بين الاثنين هو أن كلاهما لديه “وقت التشغيل” (runtime) لتنفيذ كود جافا سكريبت.

على عكس Node.js، المكتوب بلغة c ++، يستخدم Deno لغة Rust و هي مكتوبة علی إطار منصة Tokio (ستکون دورة کاملة للغة Rust المثيرة جدا علی موقع کرسي عن قريب بإذن لله).

ميزات وأهداف دينو

يقدم موقع Deno الرسمي هذا النظام على النحو التالي:

A secure runtime for JavaScript and TypeScript

أهم الاختلافات مع نظام Node.js توضح من خلال هذا التعريف، الأمان و دعم ل TypeScript . بالإضافة إلى هاتين الميزتين، هناك ثلاث ميزات مهمة اخری یمکننا ذکرها “دينو” أسرع، متطورة أكثر ، و أقرب إلى المعايير. دعونا نشرح هذه الخمس ميزات أکثر:

  • دينو يکون آمن من خلال إنشاء sandbox و أذونات (permission) بشكل افتراضي على البرنامج.
    لكن عندما تشغل كود Node.js على جهازك، البرنامج يمكنه الوصول إلى الملفات و طبقة شبكة الجهاز، و يمكنه إجراء أي تغييرات عليه. اضافة لذلك عند تنزيل حزمة من npm، و استخدامها في البرنامج منحتها إذن للتغيير و حتی التخريب بمعنی لا يوجد هناك رصد على حزم npm.
  • تدعم منصة Deno كتابة تايب سكريبت (TypeScript) دون الحاجة إلى أي ناقل (transpoilers) أو مترجم (compilers). لذا يمكنك استخدام “تايپ سكريپت” في دينو بدلاً من جافا سكريبت. تايب سكريبت هي لغة برمجة مفتوحة المصدر تم تطويرها و صيانتها بواسطة مايكروسوفت.
  • السرعة: مبني دينو على Rust و Tokio، لذلك لا يجب أن يكون له ميزة خاصة على C و Libuv في السرعة. و لكن نظرًا لأن الهدف من العديد من وحدات دينو هو أن يکون نظام التشغيل محلي (Native)، سترى بالتأكيد اختلاف كبير في السرعة مقارنة بـ Node.
  • متطور ة: لا تزال Standard Library في Node.js مبنية علی نظام callback، و الطريقة الوحيدة لتحديثها هي استخدام promisify، لذا دينو يتفوق علی Node.js، لأنه من الأساس مبني علی promise.
  • أقرب إلى المعايير: دينو ما هو بحاجة إلى توافق مع إصدارات السابقة لأنه لا يحتوي على إصدار سابق اساسا و يستخدم معايير الويب مثل fetch ، top level await ، modules es و الخ. مما يجعل البرنامج في أقرب حالة التكيف مع الويب.

إختلافات Deno مع Node.js

هناک إختلافات أخرى مع Node.js يمکن أن نشير اليها:

دينو لا يستخدم ملف package.json و لا يستخدم NPM. في الواقع، إدارة الحزمة في Deno هي لامركزية (decentralized) (مثل نموذج golang)، يمكن لأي شخص وضع کود Deno في أي مكان (على سبيل المثال في گيتهاب ) و بإمكانك إضافة الحزم إلى برنامجك من خلال إضافة رابط الحزمة داخل برنامجك.

في Deno، كما هو الحال في Node.js، تقوم جميع دالات اللامتزامنة (Asynchronous) بإرجاع Promise، و لكن Api Promise في دينو مختلف.

الکود في دينو سيتوقف إذا يواجه خطأ غیر متعامل معها.

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

منشور ذات صلة
سلسلة دروس: دينو (Deno)

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة