
آموزش زبان برنامه نویسی DART – FLUTTER
دارت ( Dart ) یک زبان بهینه سازی شده برای کاربر به منظور توسعه برنامه های سریع در هر پلتفرمی است. هدف آن ارائه پربازده ترین زبان برنامه نویسی برای توسعه چند پلتفرمی، یا به عبارت بهتر یک پلتفرم انعطاف پذیر برای چارچوب ( Frameworks ) های برنامه است.
زبانها با پوشش فنی آنها تعریف میشوند - انتخابهایی که در طول برنامه نویسی انجام میشوند که قابلیتها و نقاط قوت یک زبان را شکل میدهند. زبان برنامه نویسی دارت برای گستره فنی طراحی شده است که مخصوصاً برای توسعه توسط کاربر مناسب است، و هم توسعه (دومین بارگذاری مجدد حالت حالت فرعی) و هم تجربه تولید با کیفیت بالا را در طیف گسترده ای از اهداف تلفیقی (وب، موبایل و دسکتاپ) در اولویت قرار می دهد.
دارت همچنین پایه فلاتر ( فلاتر چیست؟ ) را تشکیل می دهد. دارت زبان و زمانهای اجرا را فراهم میکند که برنامههای Flutter را تقویت میکند، همچنین دارت از بسیاری از وظایف توسعهدهنده اصلی مانند قالببندی، تجزیه و تحلیل و تست کد نیز پشتیبانی میکند.
دارت: یک زبان برنامه نویسی
زبان Dart از نوع امن است. از بررسی نوع استاتیک استفاده می کند تا اطمینان حاصل شود که مقدار متغیر همیشه با نوع استاتیک متغیر مطابقت دارد. گاهی اوقات به این تایپ صدا می گویند. اگرچه انواع اجباری هستند، اما به دلیل استنتاج نوع، حاشیه نویسی نوع اختیاری است. سیستم Typing دارت نیز انعطافپذیر است و امکان استفاده از نوع پویا همراه با بررسیهای زمان اجرا را میدهد، که میتواند در طول آزمایش یا برای کدهایی که به ویژه پویا هستند مفید باشد.
امنیت دارت null Safety نامیده میشود ، به این معنی که مقادیر نمی توانند تهی باشند مگر اینکه شما بگویید که می توانند باشند. با ایمنی null ، دارت می تواند از طریق تجزیه و تحلیل کد ایستا از شما در برابر استثناهای پوچ در زمان اجرا محافظت کند. بر خلاف بسیاری از زبانهای null، وقتی دارت تشخیص میدهد که متغیری غیر قابل تهی بودن است، آن متغیر همیشه غیر قابل تهی ثبت میشود. اگر کد در حال اجرا خود را در دیباگر بررسی کنید، خواهید دید که عدم پوچ بودن در زمان اجرا حفظ می شود (بنابراین ایمنی null ).
art : کتابخانه ها
Dart دارای مجموعه ای غنی از کتابخانه های اصلی است که برای بسیاری از کارهای برنامه نویسی روزمره ضروری است:
- انواع داخلی، مجموعه ها و سایر عملکردهای اصلی برای هر برنامه دارت (dart:core)
- انواع مجموعه غنیتر مانند صفها، لیستهای پیوندی، نقشهها و درختهای باینری (dart:collection)
- رمزگذارها و رمزگشاها برای تبدیل بین نمایش داده های مختلف، از جمله JSON و UTF-8 شامل میشود (dart:convert)
- ثابت ها و توابع ریاضی و تولید اعداد تصادفی (dart:math)
- فایل، سوکت، HTTP و سایر پشتیبانی های I/O برای برنامه های غیر وب (dart:io)
- پشتیبانی از برنامه نویسی ناهمزمان، با کلاس هایی مانند Future و Stream یاد میشوند (dart:async)
- لیست هایی که به طور موثر داده های با اندازه ثابت (به عنوان مثال، اعداد صحیح 8 بایتی بدون علامت) و انواع عددی SIMD (dart:typed_data) را مدیریت می کنند.
- رابط های تابع خارجی برای قابلیت همکاری با سایر کدهایی که یک رابط به سبک C ارائه می دهند (dart:ffi)
- برنامه نویسی همزمان با استفاده از ایزوله - کارگران مستقلی که شبیه رشته ها هستند اما حافظه مشترکی ندارند و فقط از طریق پیام ها ارتباط برقرار می کنند (dart:isolate)
- عناصر HTML و سایر منابع برای برنامه های کاربردی مبتنی بر وب که نیاز به تعامل با مرورگر و مدل شی سند (DOM) دارند (dart:html)
فراتر از کتابخانه های اصلی، بسیاری از API ها از طریق مجموعه ای جامع از بسته ها ارائه می شوند. تیم دارت بسته های مکمل مفید زیادی را منتشر می کند، مانند موارد زیر:
- شخصیت ها
- بین المللی
- http
- رمزنگاری
- نشانه گذاری
علاوه بر این، ناشران شخص ثالث و جامعه گسترده تر، هزاران بسته را با پشتیبانی از ویژگی هایی مانند موارد زیر منتشر می کنند:
- XML
- ادغام ویندوز
- SQLite
- فشرده سازی
دارت: The platforms
فن آوری کامپایلر دارت به شما امکان می دهد کد را به روش های مختلف اجرا کنید:
- پلتفرم بومی (Native platform): برای برنامههایی که دستگاههای موبایل و دسکتاپ را هدف قرار میدهند، Dart شامل یک ماشین مجازی دارت با کامپایلسازی بهموقع (JIT) و هم یک کامپایلر پیش از زمان (AOT) برای تولید کد ماشین است.
- پلت فرم وب (Web platform): برای برنامه هایی که وب را هدف قرار می دهند، دارت شامل یک کامپایلر زمان توسعه (dartdevc) و یک کامپایلر زمان تولید (dart2js) است. هر دو کامپایلر دارت را به جاوا اسکریپت ترجمه می کنند.
فریم ورک Flutter یک ابزار محبوب و چند پلتفرمی UI است که توسط پلتفرم Dart پشتیبانی میشود و ابزار و کتابخانههای رابط کاربری را برای ایجاد تجربههای UI که روی iOS، Android، macOS، Windows، Linux، و وب اجرا میشوند، فراهم میکند.
Dart Native (کد ماشین JIT و AOT)
در طول توسعه، چرخه توسعه سریع برای تکرار حیاتی است. Dart VM یک کامپایلر بهموقع (JIT) با کامپایل مجدد افزایشی (فعال کردن بارگذاری مجدد داغ)، مجموعههای معیارهای زنده (تقویت ابزار DevTools) و پشتیبانی از اشکالزدایی غنی ارائه میدهد.
هنگامی که برنامهها آماده استقرار برای تولید هستند - چه در حال انتشار در یک فروشگاه برنامه یا استقرار در یک باطن تولید هستید - کامپایلر Dart AOT کامپایلهای پیش از موعد را در کدهای ماشین اصلی ARM یا x64 فعال میکند. برنامه کامپایل شده توسط AOT شما با زمان راه اندازی ثابت و کوتاه راه اندازی می شود.
کد کامپایلشده توسط AOT در یک زمان اجرا دارت کارآمد اجرا میشود که سیستم صدای دارت را اجرا میکند و با استفاده از تخصیص سریع شیء و جمعآوری زباله نسلی، حافظه را مدیریت میکند.
دارت وب (برنامهنویس و تولیدکننده جاوا اسکریپت)
Dart Web اجرای کد دارت را بر روی پلتفرم های وب که توسط جاوا اسکریپت پشتیبانی می شوند را فعال می کند. با دارت وب، کد دارت را به کد جاوا اسکریپت کامپایل می کنید، که به نوبه خود در یک مرورگر اجرا می شود - به عنوان مثال، V8 در داخل کروم.
دارت وب هم شامل یک کامپایلر توسعه دهنده افزایشی است که چرخه توسعهدهنده سریع را امکانپذیر میکند و هم یک کامپایلر تولید بهینهکننده، dart2js، که کد دارت را با استفاده از تکنیکهایی مانند حذف کد مرده، به جاوا اسکریپت سریع، فشرده و قابل استقرار کامپایل میکند.
زمان اجرا Dart
صرف نظر از اینکه از کدام پلتفرم استفاده می کنید یا کد خود را چگونه کامپایل می کنید، اجرای کد نیاز به زمان اجرا Dart دارد. این زمان اجرا مسئول وظایف حیاتی زیر است:
- مدیریت حافظه: دارت از یک مدل حافظه مدیریت شده استفاده می کند، که در آن حافظه استفاده نشده توسط جمع کننده زباله (GC) بازیابی می شود.
- اجرای سیستم نوع دارت: اگرچه اکثر بررسیهای نوع در دارت ثابت هستند (زمان کامپایل)، اما برخی از بررسیهای نوع پویا (زمان اجرا) هستند. به عنوان مثال، Dart Runtime بررسی های پویا را بر اساس عملگرهای نوع check و Cast اعمال می کند.
- مدیریت ایزوله ها: زمان اجرا Dart ایزوله اصلی (جایی که کد معمولا اجرا می شود) و هر ایزوله دیگری که برنامه ایجاد می کند را کنترل می کند.
در پلتفرمهای بومی، زمان اجرا Dart بهطور خودکار در فایلهای اجرایی مستقل گنجانده میشود و بخشی از Dart VM است که توسط دستور dart run ارائه میشود.