دینو یه محیط Runtime برای اجرای کدهای جاوااسکریپت و تایپ اسکریپت روی موتور V8 گوگل (همون موتوری که nodejs رو اجرا میکنه) هست. Denojs بهشت برنامه نویسای تایپ اسکریپت هست چرا که اتوماتیک کدهای Typescript رو به Javascript تبدیل میکنه و بعد اجراش میکنه. Deno js با زبان برنامه نویسی Rust نوشته شده و با هدف رفع ۱۰ مشکل Nodejs ساخته شده و یه جورایی آپدیت جدید Nodejs محسوب میشه. Deno اومده تا مشکلاتی رایج در Node مثل Dependecyها، کتابخانه ها، ماژول ها، ابزار tooling و امنیت رو از بین ببره و یه جورایی رقبایی که بخاطر این مشکلات برای جاوااسکریپت شاخ شدن رو یه بار دیگه از میدون خارج کنه.
دینو یا دنو؟ خب اول از همه سر تلفظ اسمش باهم بحث کنیم، تلفظ درستش دِنو هست. اما خود آقای Rayan Dahl (رایان دال) تو کنفرانس آخرش گفت، تلفظ کنیم دینو که نزدیک به کلمه Dinosaur (دایناسور) هست. حالا اینکه چرا دایناسور نمیدونم، صاحبش عشقش کشیده بذاره دینو بر وزن دایناسور. همین آقای رایان دال خالق پلتفرم nodejs در سال ۲۰۰۹ بوده. نکته جالبش اینجاست که در هر دو اسم Deno و Node از حروف یکسان استفاده شده و فقط ترتیب حروف عوض شده. احتمالا علت نام گذاری Denojs همین نکته بوده که یه اسم با معنی و با حروف node پیشنهاد بدن. (یه تحلیل شخصی برای علت که بنده دارم) به نظرم همین که اسم Deno چیدمانی متفاوت از node هست و خالق هر دو پلتفرم یک نفر هست پس میشه این احتمال رو داد که قراره جایگزین nodejs بشه و بعد از ۱۰ سال تجربه ای که سر توسعه nodejs بدست آورده میخواد ضعف های nodejs را بهبود و نقطه قوت هاش رو تقویت کنه. البته این تحلیل شخصی هست و هیچ مستندی نداره. اما در ادامه مقاله با مستندات موجود در سایت رسمی Denojs به آدرس deno.land درباره این پلتفرم جنجالی صحبت کنیم.
خب بریم سراغ اصل داستان که Deno چیه؟ و کاربرد Deno چیه؟
در سال ۲۰۱۸ جناب رایان دال یه کنفرانس داشت که میتونید تو یوتیوب ببینید، درباره ۱۰ تا اشتباه از Nodejs گفت که قراره در پلتفرم جدیدی به اسم nodejs 2 این اشتباهات رو اصلاح کنه و دلیلش هم کاملا مشخصه. یکی از دلایل اصلیش اینه که سال ۲۰۰۹ هنوز اکمااسکریپت ۶ و ۷ معرفی نشده بودند و نود جی اس callback محور بود ولی الان مواردی مثل Promise وجود داره ولی خب امکان آپدیت ورژن nodejs نیست چراکه خیلی از پروژه ها به مشکل میخورن و نمیشه کل پروژه های nodejs رو دوباره تغییر بدهند و ۹ مورد دیگر که تصمیم گرفت در قالب پلتفرمی جدی معرفی کند که طبق آخرین استانداردهای جاوااسکریپت باشد. و این یه نکته جذاب محسوب میشه چون ورژن های اخیر جاوااسکریپت واقعا جذاب و عالی شده.
پس تا اینجای کار متوجه شدید که Deno مثل Node یک پلتفرم مبتنی بر Back-end هست اما هنوز خیلی جای کار داره تا بخواد جایگزین Nodejs بشه.
خب قراره در ادامه مقاله تخصصی تر بررسی کنیم که Deno برای چی اومده و آیا جایگزین مناسبی برای Node هست؟
آقا یعنی بجای node از Deno استفاده کنیم؟ خب طبق گفته های جناب رایان دال در کنفرانس باید این اتفاق بیوفته. خب چرا؟ چون زمانی که nodejs ساخته شد در سال ۲۰۰۹ هنوز چیزی به اسم اکما اسکریپت ۶ یا ۲۰۱۵ درست نشده بود. پس در nodejs خبری از Promise ها نبود و nodejs یک پلتفرم callback محور بود. البته الان میشه با promise ها و async و await هم در nodejs کار کرد بواسطه کتابخانه های موجود در NPM. اما دیگه نمیشه هسته node رو تغییر داد چون خیلی برنامه ها و پروژه ها دارن با callbackها کار میکنن و اگه بخواد همچین تغییری در هسته ایجاد بشه اون برنامه ها از کار میوفتن و کلا داستان بهم میریزه. پس یه پلتفرم جدید ساخته شد به اسم Deno js تا این پلتفرم مطابق آخرین استاندادرهای جاوااسکریپت تا سال ۲۰۱۸ باشد. و پلتفرم Deno JS یک پلتفرم Promise محور هست و مخصوص استفاده از Async و Await توسعه داده شده و این دقیقا همون هدف اصلی جاوااسکریپت در سمت بک اند هست. در هسته این پلتفرم از زبان بسیار قدرتمند و جذاب Rust استفاده شده که به نظرم نقطه قوت Deno js همینجاست. البته Denojs بر اساس جاوااسکریپت، Go و ++C و تایپ اسکریپت و Rust نوشته شده که خود پشتیبانی از تایپ اسکریپت هم تا حدودی به قدرت این پلتفرم کمک کرده. چرا که خیلی از فریمورک های جاوااسکریپت مثل انگولار از تایپ اسکریپت استفاده میکنن پس شما میتونید از تایپ اسکریپت به صورت Built-in در Deno js استفاده کنید. در Deno js نیازی به Node_modules و Package.json ندارید! فوق العاده اس. میتونید کتابخانه هارو به صورت مستفیم از سرور با URL بگیرید. که روی کامپیوترتون Cache میشه و سرعت کامپایل شدیدا افزایش پیدا میکنه. پس دیگه نیازی به استفاده NPM نیست! ویژگی جدید و خوب Deno امنیت اون هست. Deno به صورت پیش فرض اجازه دسترسی به هیچ چیزی ندارد و مثلا حتی موقع راه انداختن سرور از شما اجازه میخواد. دقیقا مثل اپلیکیشن هایی که شما در اندروید نصب میکنید و از شما اجازه میخواد تا به دوربین و مخاطبین دسترسی پیدا کنه.
خب طبق استدلال های پاراگراف بالا Deno js جایگزین بهتر، قوی تر و کامل تر برای Nodejs هست با امنیت بسیار بالاتر. اما چون Deno js تازه معرفی شده و نسخه رسمیش کمتر از ۱ ماه هست که اومده برای اثبات خودش نیاز به گذر زمان داره و این مواردی که گفته شد بر اساس مستندات و گفته های توسعه دهندگانش هست. نکته بعدی اینه که میلیون ها پکیج و کتابحونه برای Nodejs وجود داره اما هیچ کدوم برای استفاده از دینو استاندارد نشدن و شاید بیشتر از ۱ سال زمان نیاز داره تا این اتفاق بیوفته. و هیچ وقت از نسخه های اول هیچ پلتفرمی برای پروژه هاتون استفاده نکیند. چون ایرادات و باگ هایی داره که نیاز به رفع داره. پس اینکه بگیم Denojs جایگزین Node میشه شاید بیشتر از یکسال زمان ببره تا همه انتظارات node در deno براورده بشه. البته همه این ها حدس و احتمال بنده هست و سرعت تکنولوژی خیلی خیلی بیشتر از این حرفاست. شاید زودتر شایدم دیرتر.
یاد بگیر آقا. حتی اگه در آینده قرار باشه بجای node از deno استفاده کنی باز باید nodejs یاد بگیری. چرا که سینتکس تا حدودی همونه و شما از یادگیری نود جی اس ضرر نمیکنید. در ضمن تا دینو جا بیوفته و بشه اعتماد کرد شاید خیلی طول بکشه و تا اون موقع شما میمونی و دست های خالی. پس پیشنهاد میکنم حتما Nodejs یاد بگیر. مطمئن باش Denojs هم بهتر یاد میگری.
به نظرم الان نه! یعنی در تیرماه ۹۹ که دارم این مقاله رو مینویسم، میگم Deno یاد نگیرید. البته اگه یاد بگیری ضرر نمیکنی. اگه node بلدی و میخوای اضافه یاد بگیری، اوکیه. اما اگه تازه میخوای بک اند شروع کنی پیشنهاد میکنم Node یاد بگیر تا زمانی که دینو جا بیوفته و براش کتابخونه های مورد نیاز بیاد و باگ های احتمالی بر طرف بشه. الان تقریبا هر هفته یک آپدیت برای دینو میاد و برای شمایی که تازه میخوای back-end یاد بگیری منبع و آموزش مناسبی برای deno نیست و در ضمن تعداد برنامه نویس هاش خیلی کمه و اگه به مشکل بخوری ممکنه نتونی زود جوابتو پیدا کنی.
پس اول Node یاد بگیر اگه دوس داشتی آپدیت باشی و آینده نگر برو سراغ Deno Js
در ماه های آینده تخصصی تر Deno js و Node js رو بررسی میکنیم که در چه مواردی کدوم قوی تر عمل میکنه.
در دنیای برنامه نویسی که هر روز یک یا چند قدم از روز قبل جلوتر است یادگیری یک زبان برنامه نویسی که تمامی نیازهایمان را رفع کند بی شک بهترین انتخاب است. بی شک جاوااسکریپت قدرت نسل بعد این عرصه خواهد بود. وبسایت megajs اولین مرجع تخصصی جاوااسکریپت به زبان فارسی است. که از صفر تا فول استک جاوااسکریپت همراه شماست.