خالقینِ زبانِ برنامه نویسی دارت

خالقین زبان دارت

خالقین زبان برنامه نویسی دارت DART

تا حالا از خودت پرسیدی پشت یه زبان برنامه‌نویسی خفن چه کسایی وایسادن؟ منظورم اینه که یه روز صبح یکی از خواب بیدار نشده بگه «آها! بذار یه زبان جدید بسازم!». پشت هر زبانی، یه دلیل، یه مشکل و یه تیم از مغزهای متفکر خوابیده. حالا وقتی می‌رسیم به زبان برنامه نویسی دارت، قضیه خیلی جذاب‌تر هم می‌شه.

خیلی از بچه‌هایی که می‌خوان تازه آموزش زبان برنامه نویسی دارت رو شروع کنن، کنجکاو می‌شن که بدونن اصلاً این «دارت» (Dart) از کجا پیداش شد؟ کی ساختش؟ مگه گوگل بیکار بود که یه زبان جدید به دنیا اضافه کنه؟

اگه بخوایم زبان برنامه نویسی دارت رو به یه گروه موسیقی راک تشبیه کنیم، این مقاله می‌خواد اعضای اون گروه، از خواننده اصلی و گیتاریست گرفته تا درامر و بیسیست، رو بهت معرفی کنه. چون وقتی بفهمی چه کسایی این زبون رو ساختن، تازه می‌فهمی چرا انقدر خفن، سریع و آینده‌داره.

Whiplash Jk Simmons GIF

ما قراره داستان خالقین زبان برنامه نویسی دارت رو برات کالبدشکافی کنیم. ولی نه مثل یه ویکی‌پدیای حوصله‌سربر. می‌خوایم بفهمیم این آدما قبلش چیکاره بودن و چه نیازی تو گوگل دیدن که تصمیم گرفتن دست به همچین کار بزرگی بزنن. پس اگه آماده‌ای، بزن بریم ته و توی این زبان محبوب رو در بیاریم. راستی، بعد از این مقاله، حتماً یه سری هم به مقاله برنامه های نوشته با فلاتر بزن تا ببینی با این زبون چه غول‌هایی ساختن.

زبان دارت dart programming language چیست؟

قبل از اینکه بریم سراغ خالقین، بذار یه خطی بهت بگم زبان برنامه نویسی دارت اصلاً چیه. دارت یه زبان برنامه‌نویسی شیءگرا، مدرن و خوش‌ساخته که گوگل در سال ۲۰۱۱ ازش رونمایی کرد. سینتکس یا همون مدل کدنویسیش خیلی شبیه C، جاوا و جاوااسکریپته. یعنی اگه یکی از اینا رو بلد باشی، یادگیری دارت برات مثل آب خوردنه.

اولش گوگل دارت رو ساخت که جایگزین جاوااسکریپت توی مرورگرها بشه (که جلوتر می‌گیم چرا)، اما الان تبدیل به آچار فرانسه گوگل شده. ازش برای ساخت اپ‌های موبایل (همون فلاتر flutter معروف)، اپ‌های دسکتاپ (ویندوز، مک، لینوکس)، وب و حتی بک‌اند و سرور استفاده می‌شه.

multi platform.ed2e069ee37807f5975a

یادگیری زبان برنامه نویسی دارت اصلاً سخت نیست، ولی این سادگی نباید گولتون بزنه. این زبان یک‌شبه به وجود نیومده. یه ارکستر کامل از مهندس‌های نابغه پشتش بودن. دو نفرشون نقش کلیدی‌تری داشتن: لارس باک (Lars Bak) و کاسپر لوند (Kasper Lund). اما اینا تنها نبودن و یه تیم از خفن‌ترین‌های گوگل دور هم جمع شدن. بریم با تک‌تک این اسطوره‌ها آشنا بشیم.

آموزش کامل فریم ورک فلاتر

آموزش فریم‌ورک فِلاتر

آموزش فلاتر !! می‌دونم چرا اینجایی. احتمالاً سرت از دست اطلاعات ضد و نقیض در مورد برنامه‌نویسی موبای...

مشاهده دوره

لارس باک (Lars Bak): گادفادرِ سرعت!

لارس باک (Lars Bak) - خالقین زبان دارت

اگه بخوایم یه نفر رو به عنوان «پدرخوانده» یا مغز متفکر اصلی زبان برنامه نویسی دارت معرفی کنیم، اون اسم کسی نیست جز لارس باک. این آدم یه اسطوره زنده‌اس، یه برنامه‌نویس دانمارکی که انگار تمام زندگیش رو وقف ساختن «ماشین‌های مجازی» (Virtual Machines یا VM) سریع کرده.

بذار یه کم از رزومه‌اش برات بگم تا مخت سوت بکشه: لارس تو سال ۱۹۸۸ فوق لیسانس علوم کامپیوترش رو گرفت. تو دهه ۹۰ میلادی، رفت تو دل آتیش و تو آزمایشگاه Sun Microsystems روی زبان Self کار کرد. بعدش رفت و یکی از خفن‌ترین VMها رو برای زبان Smalltalk به اسم Strongtalk ساخت.

اما شاهکارش چی بود؟ تو سال ۱۹۹۷، لارس مدیر فنی تیم HotSpot تو شرکت Sun شد. اسمش آشنا نیست؟ HotSpot همون «ماشین مجازی جاوا» (JVM) هست که همین الانشم قلب تپنده جاواست و دلیل اصلی سرعت و قدرت جاوا محسوب می‌شه. آره، لارس باک اون هیولا رو ساخته!

اما صبر کن، هنوز تموم نشده. لارس باک بعد از یه مدت از Sun جدا شد و یه شرکت برای خودش زد، ولی گوگل تو سال ۲۰۰۶ قاپیدش. می‌دونی گوگل لارس رو برای چی می‌خواست؟ برای پروژه‌ای که قرار بود دنیا رو عوض کنه: موتور V8!

موتور V8 همون چیزیه که توی مرورگر کروم (Chrome) داره جاوااسکریپت رو اجرا می‌کنه. قبل از V8، جاوااسکریپت یه زبان کند و اسباب‌بازی محسوب می‌شد. لارس باک و تیمش با ساخت V8، جاوااسکریپت رو به یه موشک تبدیل کردن و تازه اونجا بود که اپ‌های خفنی مثل Gmail و Google Maps تونستن نفس بکشن.

پس داستان چی شد؟ لارس باک، خدای ساخت VMهای سریع، اول جاوا رو با HotSpot نجات داد، بعد جاوااسکریپت رو با V8 زنده کرد. حالا همین آدم، تو سال ۲۰۱۱ اومد و گفت: «بچه‌ها، جاوااسکریپت با تمام این تفاسیر، بازم یه سری مشکلات ذاتی داره که نمی‌شه درستش کرد. بذارین یه چیز جدید بسازم.»

و اون چیز جدید، زبان برنامه نویسی دارت بود. لارس باک تمام تجربیاتش از ساخت HotSpot و V8 رو برداشت و ریخت تو دل یه VM جدید به اسم Dart VM. هدفش ساختن زبانی بود که همون‌قدر که برای آدم‌ها ساده‌اس، برای ماشین‌ها هم فوق‌العاده سریع باشه.

کاسپر لوند (Kasper Lund): پارتنر جرم!

کاسپر لوند (Kasper Lund) - خالقین زبان دارت

هیچ گیتاریست خفنی بدون یه بیسیست خفن گروهش کامل نمی‌شه. کاسپر لوند دقیقاً همین نقش رو برای لارس باک داشت. کاسپر هم یه مهندس نرم‌افزار دانمارکی دیگه و متخصص ماشین‌های مجازیه.

جالبی ماجرا اینه که کاسپر و لارس رفاقتشون قدیمی بود. کاسپر هم تو شرکت Sun Microsystems روی همون پروژه CLDC Hotspot (ورژن موبایلی ماشین مجازی جاوا) کار می‌کرد. یعنی این دو نفر قشنگ می‌دونستن چطور باید یه VM سریع و بهینه برای دستگاه‌های مختلف ساخت.

این دوتا (لارس و کاسپر) تو سال ۲۰۰۲ با هم یه شرکت به اسم OOVM تأسیس کردن که کارش ساختن VM برای زبان‌های شیءگرا بود. اینا رسماً «Dynamic Duo» یا زوج رویایی دنیای VMها بودن.

وقتی گوگل لارس رو آورد، کاسپر هم چند وقت بعدش به گوگل پیوست. این دو نفر با هم روی موتور V8 کار کردن و بعدش هم با هم تیم اصلی زبان برنامه نویسی دارت رو تشکیل دادن. اگه لارس «معمار» پروژه بود، کاسپر «مهندس اجرایی» ارشدش بود. این دو نفر با هم موتور اولیه دارت رو بنا کردن، موتوری که هم می‌تونست کدها رو مستقیماً اجرا کنه (JIT) و هم به جاوااسکریپت ترجمه (Compile) کنه. این پایه و اساس انعطاف‌پذیری بود که دارت امروز داره.

گیلاد براها (Gilad Bracha): فیلسوف زبان!

گیلاد براها (Gilad Bracha) - خالق زبان دارت Dart

خب، لارس و کاسپر موتور یه ماشین فراری رو ساختن. اما یه ماشین سریع، به یه بدنه خوش‌ساخت، فرمون دقیق و یه طراحی داخلی اصولی هم نیاز داره. اینجاست که گیلاد براها وارد می‌شه.

گیلاد یه مهندس نرم‌افزار افسانه‌ای و یه «فیلسوف» واقعی تو دنیای زبان‌های برنامه‌نویسیه. رزومه‌اش رو ببین: این آدم کسی بوده که تو نوشتن «مشخصات فنی زبان جاوا» (Java Language Specification) نسخه‌های ۲ و ۳ دست داشته. یعنی دقیقاً می‌دونست تو دل جاوا چی می‌گذره، چه نقاط قوت و چه نقاط ضعفی داره.

گیلاد قبل از گوگل، تو شرکت Sun (باز هم سان!) مهندس ممتاز بود. بعدش رفت یه زبان برنامه‌نویسی به اسم Newspeak رو خلق کرد. گیلاد همیشه روی «سادگی»، «خوانایی» و «قدرت» زبان تأکید داشت.

وقتی گیلاد تو سال ۲۰۰۹ به کمبود بودجه خورد و پروژه‌اش تعطیل شد، گوگل مثل یه شکارچی ماهر، سریع جذبش کرد. گیلاد به تیم لارس و کاسپر اضافه شد تا روی پروژه زبان برنامه نویسی دارت کار کنه.

نقش گیلاد چی بود؟ اون مسئول «طراحی زبان» (Language Design) بود. لارس و کاسپر سرعت رو تضمین می‌کردن، گیلاد «اصالت» و «درست بودن» زبان رو. اون بود که مطمئن می‌شد دارت یه زبان شیءگرای واقعی، تمیز و قدرتمند باشه. خیلی از ویژگی‌های خفن دارت که امروز باعث شده کدها انقدر خوانا باشن، مدیون وسواس‌های فیلسوفانه گیلاد براها هستیم.

باب نیستروم (Bob Nystrom): هنرمندِ کدنویسی!

باب نیستروم (Bob Nystrom) - خالق زبان برنامه نویسی دارت

تیم داشت کامل می‌شد. موتور (لارس و کاسپر) آماده بود، طراحی زبان (گیلاد) هم داشت انجام می‌شد. اما یه چیزی کم بود. کی قرار بود به مردم یاد بده چطور با این زبان قشنگ کد بزنن؟ کی قرار بود «فرهنگ» کدنویسی با دارت رو تعریف کنه؟

اینجا باب نیستروم (Bob Nystrom) وارد صحنه می‌شه. باب یه آدم فوق‌العاده جالبه. اون یه توسعه‌دهنده بازی‌های ویدیویی بود و قبل از گوگل، تو شرکت Electronic Arts (EA) کار می‌کرد. اگه بازی‌ساز باشی، می‌دونی که تو بازی‌سازی دو چیز حرف اول رو می‌زنه: پرفورمنس وحشتناک و مدیریت پیچیدگی کد.

باب یه کتاب فوق‌العاده معروف به اسم “Game Programming Patterns” (الگوهای برنامه‌نویسی بازی) نوشته که یکی از کتاب‌های مرجع تو این حوزه است. این آدم استاد «تمیز کد زدن» و «معماری نرم‌افزار» بود.

وقتی باب به تیم زبان برنامه نویسی دارت پیوست، یکی از مهم‌ترین کارهای زندگیش رو انجام داد: اون کتاب «راهنمای سبک دارت» (Dart Style Guide) رو نوشت.

شاید بگی «استایل گاید» که چیز مهمی نیست! اما هست. یکی از دلایلی که جاوااسکریپت انقدر کثیف و شلخته است، اینه که هر کی هر جور دلش می‌خواد کد می‌زنه. باب نیستروم از همون روز اول گفت: «اگه قراره یه زبان بسازیم که تیم‌های بزرگ بتونن روش کار کنن، باید یه فرهنگ واحد داشته باشیم.» اون بود که تعریف کرد کجا ویرگول بذاریم، کجا نذاریم، اسم‌ها چطوری باشن و… .

اگه امروز کدهای دارت (و فلاتر flutter) انقدر تمیز، یکدست و خوانا هستن، بخش بزرگیش رو مدیون باب نیستروم هستیم. اون «روح هنری» و «نظم» رو به این زبان تزریق کرد.

cover dart 344x408 1

آموزش برنامه نویسی دارت

آموزش زبان برنامه نویسی دارت؛ از صفر تا حرفه‌ای وقتی میای تو این صفحه، می‌دونم دنبال یه چیزی بیشتر ا...

مشاهده دوره

تیم مکانیک‌ها: مهندس‌های VM و کامپایلر

خب، ستاره‌های اصلی رو معرفی کردیم. اما یه گروه موسیقی خفن، یه تیم صدابردار و مهندس فنی درجه یک هم پشت صحنه داره. تیم زبان برنامه نویسی دارت هم چندتا مهندس VM و کامپایلر داشت که کارشون این بود که مطمئن بشن همه‌چیز با سرعت نور کار می‌کنه.

ویاچسلاو اگوروف (Vyacheslav Egorov)

ویاچسلاو اگوروف (Vyacheslav Egorov) - برنامه نویس دارت

این آدم هم یکی دیگه از کهنه‌کارهای تیم V8 (موتور جاوااسکریپت کروم) بود. ویاچسلاو تخصصش درآوردن آخرین ذره پرفورمنس از دل VM بود. اون به تیم دارت پیوست تا روی Dart VM کار کنه و مطمئن بشه که این VM جدید، از رقیبش V8 هم سریع‌تره. مقاله‌ها و صحبت‌های این آدم در مورد نحوه کارکرد VMها فوق‌العاده عمیق و فنیه.

جان مک‌کاچن (John McCutchan)

جان مک‌کاچن (John McCutchan) - خالق زبان Dart

یکی دیگه از مهندس‌های خفن که از یه جای جالب اومده بود: سونی! جان قبل از گوگل، روی بهینه‌سازی پرفورمنس بازی‌ها برای پلی‌استیشن کار می‌کرد. می‌بینی گوگل چه تیمی جمع کرده بود؟ وقتی تو بخوای یه زبان بسازی که بتونه انیمیشن‌ها رو با رفرش ریت بالا و بدون لگ اجرا کنه (که بعداً تو فلاتر flutter حیاتی شد)، باید یه مهندس بازی‌ساز بیاری. جان مک‌کاچن روی اضافه کردن پشتیبانی SIMD (دستورات پردازشی موازی) به دارت کار کرد تا محاسبات سنگین گرافیکی رو بترکونه.

پیتر فون در آهه (Peter von der Ahé)

پیتر فون در آهه (Peter von der Ahé)

و در نهایت، مهندس کامپایلر! پیتر هم از شرکت Sun اومده بود و مدیر تیم کامپایلر جاوا (javac) بود. این آدم استاد تبدیل کردن کد به زبان ماشین بود. اون به تیم دارت اومد تا روی کامپایلرهای دارت کار کنه، مخصوصاً روی fletch (که یه زمان اجرای آزمایشی بود) و پشتیبانی از «کامپایل افزایشی» (Incremental Compilation) که باعث می‌شه زمان بیلد گرفتن پروژه‌ها به شدت کاهش پیدا کنه.

دارت چطور از «شکست» به «پیروزی» رسید؟

حالا که خالقین زبان برنامه نویسی دارت رو شناختی، بذار یه داستان واقعی برات بگم. اون تیمی که معرفی کردیم، دارت رو ساختن (Dart 1.0) تا جایگزین جاوااسکریپت تو مرورگر بشه. گوگل حتی یه مرورگر اختصاصی به اسم «Dartium» ساخت که دارت رو مستقیم اجرا می‌کرد.

Screen Shot 2013 01 14 at 12.57.59 AM

اما یه مشکل بزرگ وجود داشت: بقیه غول‌های تکنولوژی (مایکروسافت، اپل و موزیلا) گفتن: «عمراً!». اونا حاضر نشدن یه زبان جدید که مال گوگل بود رو توی مرورگرهاشون (Edge, Safari, Firefox) پشتیبانی کنن. این یعنی پروژه دارت تقریباً شکست خورد. زبان برنامه نویسی دارت یه زبان فوق‌العاده سریع و خوش‌ساخت بود که هیچ‌کس ازش استفاده نمی‌کرد!

و اینجا بود که اون «پیوت» (Pivot) یا چرخش تاریخی اتفاق افتاد. همون موقع‌ها، دنیای موبایل داشت منفجر می‌شد. توسعه‌دهنده‌ها داشتن خودشون رو می‌کشتن تا بتونن هم برای اندروید (با جاوا) و هم برای iOS (با Objective-C) کد بزنن. این وسط فریمورک‌هایی مثل React Native اومدن که با جاوااسکریپت این کار رو می‌کردن، ولی فلاتر یا ری اکت نیتیو همیشه یه بحث داغ بود، چون ری‌اکت نیتیو از یه «پل» (Bridge) برای ارتباط با کدهای نیتیو استفاده می‌کرد که باعث افت پرفورمنس می‌شد.

122988002 40fbb380 d36f 11eb 9240 0b6e4b968dfe

تیم دارت یه نگاهی به این وضعیت انداخت و گفت: «صبر کن ببینم! ما یه زبانی داریم که توسط لارس باک (خدای V8) ساخته شده و سریع‌تر از جاوااسکریپته. ما می‌تونیم کدمون رو مستقیماً به کد نیتیو ARM کامپایل کنیم (AOT Compilation) و اون «پل» لعنتی رو حذف کنیم!». این شد که Dart 2.0 متولد شد. یه نسخه کاملاً بازنگری‌شده از دارت که دیگه هدفش وب نبود، بلکه هدفش تبدیل شدن به بهترین زبان دنیا برای ساخت UI روی هر پلتفرمی بود. و فریمورکی که با این زبان ساختن، اسمش شد: فلاتر (Flutter).

راز موفقیت فلاتر flutter دقیقاً در زبان برنامه نویسی دارت بود:

کامپایل AOT: دارت می‌تونست کد رو مستقیماً به زبان ماشین کامپایل کنه. این یعنی پرفورمنس در حد نیتیو و حذف پل، که بزرگترین نقطه ضعف فلاتر یا ری اکت نیتیو بود.

کامپایل JIT: دارت تو حالت توسعه (Debug) می‌تونست از کامپایل درجا (JIT) استفاده کنه. این قابلیت، اون ویژگی جادویی به اسم «Hot Reload» رو به فلاتر داد که توسعه‌دهنده‌ها عاشقش شدن.

دارت ۳ و فراتر از اون

داستان اینجا تموم نشد. زبان برنامه نویسی دارت در سال ۲۰۲۳ با عرضه Dart 3 یه انقلاب دیگه به پا کرد. این نسخه با معرفی «Sound Null Safety» (که رسماً ارورهای ناشی از null رو کشت)، و ویژگی‌های مدرنی مثل Patterns و Records، کدنویسی رو به مراتب تمیزتر، امن‌تر و لذت‌بخش‌تر کرد.

امروز در سال ۲۰۲۵، دارت دیگه فقط زبان فلاتر نیست. داره با قدرت به بک‌اند نفوذ می‌کنه و جالبه بدونی، با پیشرفت‌های WebAssembly (WASM)، دارت داره به رؤیای اولیه‌اش یعنی اجرای نیتیو در وب هم برمی‌گرده! این بار نه با زور، بلکه با استاندارد جهانی.

0 N6ZSt1McXO opQU7

چرا باید به این خالقین و زبان‌شون اعتماد کنیم؟

خب، حالا که کل داستان رو می‌دونی، بذار به اون سوال اول برگردیم. چرا فریم ورک فلاتر و زبان برنامه نویسی دارت انقدر مهمن؟ چون این زبان توسط یه سری آدم معمولی ساخته نشده. این زبان توسط تیمی ساخته شده که : لارس باک، خدای ماشین‌های مجازی که V8 و HotSpot رو ساخته، رهبرشون بوده. گیلاد براها، از نویسنده‌های اصلی مشخصات جاوا، طراح زبانش بوده. باب نیستروم، یه بازی‌ساز خفن از EA، فرهنگ کدنویسیش رو تعریف کرده. تیمی از مهندس‌های پلی‌استیشن و V8، موتور و کامپایلرش رو ساختن.

اینا 5 دلیل مهم برای یادگیری فلاتر و دارت نیستن؛ اینا خودِ دلایل هستن! این تیم جمع نشدن که یه زبان «خوب» بسازن. اونا جمع شدن که مشکلات اساسی جاوااسکریپت (سرعت پایین، شلختگی کد) و مشکلات نیتیو (توسعه دوگانه) رو یکجا حل کنن.

flutter io

یادگیری زبان برنامه نویسی دارت فقط یادگیری یه سینتکس جدید نیست. اینه که تو داری وارد اکوسیستمی می‌شی که توسط بهترین‌های این صنعت، برای حل بزرگترین مشکلات دنیای نرم‌افزار طراحی شده. این یعنی آینده شغلی تو تضمینه.

cover penetration specialis

متخصص تست نفوذ

از کنجکاوی هک تا کسب درآمد به عنوان یک متخصص دوره تست نفوذ نابغه‌ها، نقطه شروع قطعی شما برای ورود به...

مشاهده دوره

اگه تو هم می‌خوای وارد این دنیای خفن بشی و از این همه قدرت استفاده کنی، اولین قدم اینه که زبان برنامه نویسی دارت رو مثل آب خوردن یاد بگیری. این زبان دروازه ورود به دنیای فلاتر flutter و آینده برنامه‌نویسیه. ما تو «نابغه‌ها» این مسیر رو برات هموار کردیم. [لینک به دوره آموزش دارت نابغه‌ها] رو چک کن تا ببینی چطور می‌تونی در کمترین زمان به این ارتش خفن ملحق بشی.

امتیاز شما به مقاله

4.9 / 5. 55

55 رای 4.9
4.9
(55)
قوانین ارسال دیدگاه متوجه شدم
  • برای ثبت نظر، حتما اسم و فامیل خود را به فارسی وارد کنید.
  • حتما ایمیل صحیح را وارد کنید تا در صورت بررسی کارشناسان، پاسخ برای شما ایمیل شود.
  • داخل متن کامنت کدهای برنامه نویسی قرار ندهید.
1 نقد و بررسی‌ها
  • حسن
    حسن 28 اسفند 1402

    عالی بود این مقاله

    ( 3 )
+ ارسال دیدگاه به عنوان مهمان دیدگاه ارسال نمایید
سوالات متداول

نابغه‌ها را در   دنبال کنید