در سالهای اخیر با رشد و توسعه انواع زبانهای برنامه نویسی شرکتها و برنامه نویسان بهدنبال پیداکردن راهحلهای بهتری برای مشکلات خود هستند از این رو، زبان برنامه نویسی «دارت» (Dart) توسط گوگل توسعه داده شد. به راستی هدف از توسعه و تکامل Dart چیست؟ به بیان ساده هدف از توسعه دارت برطرف کردن مشکلات موجود در جاوا اسکریپت است و به نوعی گوگل تلاش دارد دارت را به عنوان جایگزینی برای جاوا اسکریپت ارائه کند که کارایی و قابلیتهای بیشتری را برای پروژههای بزرگ و کوچک فراهم میکند. در این نوشته به این موضوع پرداخته شده است که Dart چیست و چگونه کار میکند. همچنین گفته شده است که تفاوت سایر زبانهای برنامه نویسی با Dart چیست؟ در ادامه نیز به بررسی ساختار زبان برنامه نویسی دارت پرداختهایم.
Dart چیست؟
زبان برنامه نویسی Dart متنباز، همهمنظوره و شیگرا با ساختاری مشابه زبان برنامه نویسی C است که توسط گوگل در سال 2011 میلادی (1390 شمسی) توسعه یافت. هدف اصلی از توسعه زبان برنامه نویسی دارت ایجاد رابط کاربری در سمت کاربر برای برنامههای تلفن همراه و تحت وب است.
Dart درحال توسعه فعال است و برای ساخت برنامههای تلفن همراه با الهام گرفتن از سایر زبانهای برنامه نویسی همچون جاوا، جاوا اسکریپ و سایر موارد به کد بومی ماشین کامپایل شده و محدودیتهای شدیدی را برای درهم آمیختن انواع دادهای مختلف اعمال میکند. از آنجایی که دارت زبانی کامپایل شده است، امکان اینکه کدها را بهطور مستقیم اجرا کنید وجود ندارد. در عوض، کامپایلر آن را تجزیه و به کد ماشین تبدیل میکند. Dart برخلاف سایر زبانهای برنامه نویسی از بیشتر مفاهیم رایج در برنامه نویسی مانند کلاسها، رابطها و توابع پشتیبانی میکند.
دارت چگونه کار می کند؟
در زمان استفاده از Dart برای توسعه برنامههای کاربردی تحت وب (وباپلیکیشنها)، کدهای آن به جاوا اسکریپت تبدیل (Convert) میشوند، بنابراین در تمام مرورگرهای وب قابل اجرا است. نصب Dart با «ماشین مجازی» (Virtual Machine | VM) نیز همراه است تا فایلهای dart. را از رابط خط فرمان اجرا کند. فایلهای Dart مورداستفاده در برنامههای فلاتر در فایل باینری (apk یا ipa) کامپایل و بستهبندی و در «فروشگاههای برنامه» (App Stores) قرار داده میشوند.
کاربردهای Dart چیست ؟
زبان برنامه نویسی دارت برای برنامه نویسی دستگاههای دارای اینترنت (مانند تلفنهای هوشمند، تبلتها و لپتاپها) و سرورها استفاده میشود. تا همین چند وقت پیش برای برنامهنویسان مبتدی امکان اینکه خودشان برنامههای موبایلی یا تحت وب را توسعه دهند واقعبینانه و دردسترس نبود. رویکرد زبان برنامه نویسی دارت به این صورت است که برنامه نویسی ساخت چنین برنامههایی را آسانتر کند.
«کیت توسعه نرمافزار» (Software Development Kit | SDK) به نام فلاتر و همچنین ابزار تبلیغاتی معروف Google Ads هردو با زبان برنامه نویسی دارت برنامهریزی شدهاند. نمونههای معروف دیگری همچون وبسایتهای نیویورکتایمز و Groupon نیز از دارت استفاده میکنند.
زبان برنامه نویسی دارت و فلاتر
فلاتر فریمورک متنبازی هست که توسط گوگل برای ساخت برنامههای زیبا، بومی و چندمنظوره معرفی شد در این فریمورک از زبان برنامه نویسی دارت استفاده میشود.
فلاتر داری کتابخانههای بیشتری به طور اختصاصی در زمینه عناصر رابط کاربری است که از جمله برخی از آنها میتوان به موارد زیر اشاره کرد
- Widget: عناصر رایج در برنامه مانند Text و ListView
- Material: عناصری مرتبط با سبک طراحی «طراحی متریال» (material design) مانند FloatingActionButton و AppBar
- Cupertino: عناصری که از طرحهای فعلی «سیستم عامل آیفون» (ios) پیروی میکنند مانند CupertinoButton.
فلاتر (Flutter) چیست؟ | به زبان ساده + نمونه پروژه
تفاوت سایر زبانها با Dart چیست ؟
یکی از مواردی که باعث متمایز شدن زبان برنامه نویسی دارت از سایر زبانهای برنامه نویسی میشود، خواندن آسانتر با سینتکس (قواعد نحوی) شبیه به زبان انسانی است. Dart از دستورات کمتر اما امکانات بیشتری استفاده میکند. در زبان برنامه نویسی دارت امکان انتخاب آزادنه نام متغیرها وجود دارد و کدهای Dart روان و شیوا هستند و به راحتی میتوان آنها را درک کرد. زبان برنامه نویسی دارت کامنتهای اضافی را در کدها برطرف میکند. میتوانید از فاصلهها، «تبها» (Tabs) و شکستگی خطوط به دلخواه استفاده کنید.
این مورد به برنامهنویس اجازه میدهد تا به صورت شفاف کد را به گونهای ساختار دهد که در نهایت توسط کامپایلر نادیده گرفته شود. در اینجا استثناهایی مانند کلمات کلیدی، نام متغیرها و نام توابع (یعنی اصطلاحات تعریف شده در زبان دارت) وجود دارد.
در تجزیه و تحلیل محبوبترین زبانهای برنامه نویسی در سال 2019 میلادی (1398 شمسی) که توسط جامعه توسعهدهندگان سایت معروف StackOverflow انجام شد به این نتیجه ختم شد که زبان برنامه نویسی Dart با 66.3٪ محبوبیت دقیقا بعد از زبان جاوا اسکریپت با 66.8٪ قرار دارد.
مزایا و معایب Dart چیست؟
در ابتدا به مزایا و نقاط مثبت زبان برنامه نویسی دارت میپردازیم:
- Dart زبان برنامه نویسی متنباز است و هرکسی میتواند بهصورت رایگان از آن استفاده کند.
- Dart توسط گوگل توسعهیافته است و داشتن حمایت چنین شرکت بزرگی به این معنی است که این زبان برنامه نویسی چشماندازهای بلندمدتی برای توسعه بیشتر دارد.
- زبان برنامه نویسی دارت به دلیل ساختاری که دارد یادگیری را برای برنامهنویسان آسان میکند.
- توسعهدهندگان زبان برنامه نویسی دارت بسیاری از مفاهیم موجود در زبان های دیگر را ساده و هوشمندانه متراکم کردهاند.
- هرکسی که قبلاً با زبان برنامه نویسی «سی شارپ» (#C) کار کرده باشد، خیلی سریع میتواند متوجه شود که Dart چیست و چگونه عمل میکند.
- زبان برنامه نویسی دارت برای وب توسعه داده شده است
- با توجه به قابلیت تبدیل مستقیم و سریع به جاوا اسکریپت، Dart میتواند در تمام مرورگرهای مدرن تلفنهای همراه و دسکتاپ کار کند.
- برای برنامه نویسی با زبان دارت تنها چیزی که نیاز دارید ویرایشگر متن ساده است.
در کنار تمام نقاط مثبت زبان دارت، نکات منفی و ایرادهایی نیز در این زبان وجود دارند قصد داریم در ادامه به آنها بپردازیم:
- Dart زبان برنامه نویسی نسبتاً جدیدی است و درنتیجه جامعه پشتیبانی آن هنوز خیلی بزرگ نیست و بهاندازه جاوا اسکریپت و سایر زبانهای معروف، منابع یادگیری در دسترس ندارد. با این حال، میتوان انتظار داشت که این مورد بهزودی تغییر خواهد کرد.
- نصب اولیه ویرایشگر و منابع فنی آن بر روی رایانه به خوبی مستند شده است، اما هنوز مشکلات زیادی در این زمینه وجود دارد.
- منتقدان زبان برنامه نویسی دارت عنوان میکنند که بهجای تلاش برای تکمیل زبانهای موجود، زبان جدیدی به بازار معرفی شده است.
معرفی فیلم های آموزش برنامه نویسی موبایل
در پلتفرم تم آف دورههای آموزشی براساس موضوع دستهبندی شدهاند و در صفحاتی به عنوان مجموعههای آموزشی در دسترس هستند. یکی از این مجموعهها هم به توسعه و برنامه نویسی موبایل اختصاص دارد. در این مجموعه آموزشی همانطور که در تصویر فوق آمده، برای زبان دارت و فریمورک فلاتر نیز دورههایی وجود دارد که آموزشهای پروژهمحور را نیز شامل میشوند. علاوهبر این، دورههایی برای سایر روشهای برنامه نویسی موبایل چندپلتفرمی نیز در دسترس هستند. همچنین برای برنامه نویسی اندروید و iOS هم دورههای متعددی در این مجموعه ارائه شدهاند. در تصویر فوق تنها تعداد اندکی از این دورهها آمده است.
- برای شروع یادگیری برنامه نویسی دارت و دسترسی به همه دورههای آموزش توسعه اپلیکیشن موبایل + اینجا کلیک کنید.
ساختار زبان برنامه نویسی دارت چگونه است؟
زبان برنامه نویسی دارت متشکل از متغیرها، عملگرها، عبارات شرطی، حلقهها، توابع، کلاسها، اشیا و شمارش است. Dart از مفاهیم مهم شیگرایی نظیر وراثت و تجرید نیز پشتیبانی میکند که برنامهنویسان باتجربه با بسیاری از این موارد بهطور کامل آشنا هستند.
مفاهیم مقدماتی زبان برنامه نویسی دارت (Dart) – بخش اول
اگر برای اولین بار قصد امتحان کردن زبان برنامه نویسی دارت را دارید، پلتفرم متنبازی با نام «دارت پد» (DartPad.io) در دسترس است که میتوانید از آن برای درک زبان Dart و بررسی چند نمونه کد ساده استفاده کنید تا در نهایت به پاسخ این سوال برسید که Dart چیست که البته تمام برنامههای نوشته شده به زبان برنامه نویسی دارت با فراخوانی «تابع اصلی» (main function) شروع میشوند:
void main() {
// write your code here
}
مثال زیر، کد سادهای را در زبان برنامه نویسی دارت نشان میدهد:
void main() {
print("Hello World!");
}
میتوانید کد بالا را در محیط «دارت پد» (DartPad.io) که در بالا عنوان کردیم بررسی کنید و با تغییر دادن عبارت درون گیومه نتایج مختلف را مشاهده کنید.
مبانی برنامه نویسی دارت
دارت در خصوص نوع داده محدودیتهای سفت و سختی دارد. به این معنی که هر مقداری که در برنامه استفاده میکنید خواه از نوع رشته یا عدد باشد، باید هنگام کامپایلشدن کد نوع آن شناسایی شود. در اینجا قصد داریم رایجترین نوعداده های پایه مورداستفاده در زبان برنامه نویسی دارت را بررسی کنیم.
نوع داده String یا رشتهای در زبان برنامه نویسی دارت
نوع داده String در زبان برنامه نویسی دارت برای نگهداشتن متن استفاده میشود، مقدار این نوع داده باید بین تک گیومه یا دوگیومه (Double Quote) قرار بگیرد.
String name = 'faradars';
String name = "faradars";
num ،int ،double
برای نگهداری اعداد استفاده میشود. اعداد در دارت دو نوع هستند :
- اعداد صحیح (int)
- اعداد اعشاری (double)
int year = 2022;
double average = 19.63;
نوع داده Boolean یا بولی در Dart چیست ؟
این نوعدادهای توانایی نگهداری دو مقدار True (درست) و False (غلط) را دارد.
bool checked = true;
bool unRead = false;
object
به طور کلی هر چیزی در دارت شی است؛ مانند رشته و عدد صحیح اما مفهوم شیگرایی پیچیدهتر نیز میتواند باشد. با تعریف کلاس میتوان اشیا مختلفی را در دارت ساخت و در برنامه استفاده کرد.
var myuser = User();
var student = Student();
متغیرها و توابع در زبان برنامه نویسی دارت
متغیرها فضای نامی در حافظه هستند که مقادیر را ذخیره میکنند. نام متغیر، شناسه یا معرف آن به حساب میآید. آنها محفظههای دادهای هستند که میتوانند مقدار هر نوع را ذخیره کنند. در ادامه مثالی در این خصوص ارائه شده است:
var age = 26;
در اینجا، متغیر age
عدد صحیح 26 را درون خودش ذخیره میکند. همچنین میتوانیم نوع متغیر age
را «عدد صحیح» (int) یا «عدد اعشاری» (double) قرار دهیم. با این حال زبان دارت دارای ویژگی «استنتاج نوع» (Type Inference) است که میتواند نوع مقادیر مختلف را استنباط کند. بنابراین، اگر متغیر با کلمه کلیدی var
ایجاد کنید، Dart میتواند بدون اینکه شما نوع متغیر را مشخص کنید آن را از نوع عدد صحیح استنباط کند، همانطور که در مثال بالا دیدیم.
علاوه بر متغیر، مفهوم «تابع» (Function) یکی دیگر از ویژگیهای اصلی هر زبان برنامه نویسی به حساب میآید. توابع مجموعهای از عبارتها هستند که وظیفه مشخصی را انجام میدهند. آنها در بلوکهای منطقی کد سازماندهی شدهاند که قابلخواندن، نگهداری و استفاده مجدد هستند.
تابع در برنامه نویسی چیست؟ — به زبان ساده
اعلان تابع شامل نام تابع، نوع بازگشتی و پارامترها است. در مثال زیر نحوه استفاده از تابع را در زبان برنامه نویسی دارت توضیح میدهیم:
//Function declaration
num addNumbers(num a, num b) {
// Here, we use num as a type because it should work with int and double both.
return a + b;
}
var price1 = 29.99;
var price2 = 20.81;
var total = addNumbers(price1, price2);
var num1 = 10;
var num2 = 45;
var total2 = addNumbers(num1, num2);
عمگلرها در زبان برنامه نویسی Dart
زبان برنامه نویسی دارت از تمامی عملگرها پشتیبانی میکند، اگر با زبانهای برنامه نویسی دیگر همچون C، Kotlin و Swift آشنا باشید احتمالاً نام عملگرهایی که در ادامه فهرست شدهاند برای شما کاملاًً آشناست.
- حسابی
- نسبت دادن یا درج مقدار
- افزایش و کاهش
- منطقی
- مقایسهای
تصمیمگیری و حلقهها در Dart چیست ؟
تصمیمگیری ویژگی است که به شما این امکان را میدهد قبل از اجرای دستورالعملها شرایط را ارزیابی کنید. زبان برنامه نویسی دارت از انواع عبارتهای تصمیمگیری زیر پشتیبانی میکند:
- دستور if
- دستور if – else
- دستور Switch
نمودار زیر این مفهوم را شفافتر بیان میکند:
مثالی را در ادامه مشاهده میکنید.
void main() {
var num = 8;
if (num % 2 == 0) {
print("Number is Even.");
} else {
print("Number is Odd.");
}
}
در مثال بالا به کمک ساختار if در زبان برنامه نویسی دارت، برنامهای نوشتیم که زوج یا فرد بودن عددی را مشخص میکند.
حلقهها در زبان برنامه نویسی دارت برای اجرای مکرر بلوک کد تا زمانی که شرط تعیین شده برقرار باشد استفاده میشوند. زبان برنامه نویسی دارت از دستورات حلقه زیر پشتیبانی میکند:
- دستور for
- دستور for … in
- دستور while
- دستور do … while
نمودار زیر این مفهوم را شفافتر بیان میکند:
در ادامه مثالی در این خصوص ارائه شده است:
void main() {
var names = ["Reza", "Hossein", "Babak"];
for (var item in names) {
print(item);
}
}
در مثال بالا به کمک ساختار حلقه در زبان برنامه نویسی دارت اعضای موجود در لیست names
را در خروجی چاپ کردیم.
کامنت گذاری در زبان برنامه نویسی دارت
کامنتها در لابهلای کدها فقط برای ارائه توضیحات لازم راجع به کدها مورد استفاده قرار میگیرند و قابل اجرا شدن نیستند. آنها یکی از جنبههای اصلی زبانهای برنامه نویسی مختلف هستند. هدف از بهکار بردن کامنت در برنامه ارائه اطلاعاتی در مورد پروژه، متغیر یا عملیات است. 3 نوع کامنت در زبان برنامه نویسی دارت وجود دارد:
- کامنتهای تک خطی: با کمک ساختار (//) میتوان توضیح یک خطی ایجاد کرد.
- کامنتهای بلوکی: با کمک ساختار (/*….*/) میتوان توضیح چندخطی ایجاد کرد.
- کامنتهای سندوار: با کمک ساختار (///) میتوان توضیح سند ساخت که برای اعضا و انواع استفاده میشود.
ساختار Continue و Break در زبان برنامه نویسی دارت
زبان برنامه نویسی دارت همچنین از کلمات کلیدی continue و break در حلقهها و ساختارهای دیگر موردنیاز استفاده کرده است. دستور continue به شما این امکان را میدهد که از کدهای باقیمانده در داخل حلقه صرفنظر کنید و بلافاصله به تکرار بعدی حلقه بروید در ادامه مثالی برای این مورد ارائه شده است.
void main() {
for(int i=1;i
دستور break به شما این امکان را میدهد که جریان فعلی برنامه را خاتمه داده یا متوقف کنید و بعد از بدنه حلقه به اجرا ادامه دهید. در ادامه مثالی برای این مورد ارائه شده است.
void main() {
for(int i=1;i
کلمات کلیدی Final و Const
در زبان برنامه نویسی دارت ما از کلمه کلیدی (Final) برای محدود کردن کاربر استفاده میکنیم و امکان اینکه آن را در بخشهای مختلفی مانند متغیرها، کلاسها و متدها اعمال کنیم نیز وجود دارد. کلمه کلیدی (Const) برای تعیین مقدار ثابت بهکار میرود. پس از تخصیص کلمه کلیدی Const به متغیر دیگر نمیتوانیم مقدار آن را تغییر دهیم. در ادامه مثالی برای این مورد ارائه شده است.
void main() {
final a = 100;
const pi = 3.14;
print(a);
print(pi);
}
برنامه نویسی شیگرا در زبان Dart چیست؟
شاید برای شما نیز این سؤال پیش آمده باشد که مفهوم شیگرایی در Dart چیست؟ اگر بخواهیم خیلی سریع پاسخ این سؤال را بدهیم باید بگوییم که هر چیزی در زبان برنامه نویسی دارت شی است. عدد نیز در زبان برنامه نویسی دارت شی است. زبان برنامه نویسی دارت از ویژگیهای «برنامه نویسی شیگرا» (Object Oriented Programming | OOP) مانند اشیا، کلاسها، رابطها و سایر موارد پشتیبانی میکند.
شی: شی موجودی دارای حالت و رفتار است که میتواند فیزیکی یا منطقی باشد. در زبان برنامه نویسی Dart حتی مقادیر اولیه مانند متن و عدد نیز شی هستند. دارت همچنین این امکان را به شما میدهد که برای بیان روابط پیچیدهتر بین دادهها شی سفارشی خود را بسازید.
کلاس: کلاس درواقع طرح اولیه از ایجاد شی در Dart است. این بدان معنا است که اشیاء به کمک کلاسها ایجاد میشوند زیرا هر شی به طرح اولیه نیاز دارد که بر اساس آن میتوانید شی جداگانهای ایجاد کنید. تعریف کلاس شامل موارد زیر است:
- فیلدها
- متدها
- تابع سازنده
- Getter و Setter
اجازه دهید مثالی مطرح کنیم که به پاسخ روشنتری برای سؤال شیگرایی در Dart چیست برسیم.
class Mobile {
// Property Declaration
String color, brandName, modelName;
// Method Creation
String calling() {
return "Mobile can do call to everyone.";
}
String musicPlay() {
return "Mobile can play all types of Music.";
}
String clickPicture() {
return "Mobile can take pictures.";
}
}
void main() {
// Object Creation
var myMob = new Mobile();
// Accessing Class's Property
myMob.color = "Black";
myMob.brandName = "Apple Inc.";
myMob.modelName = "iPhone 11 Pro";
//Display Output
print(myMob.color);
print(myMob.modelName);
print(myMob.brandName);
print(myMob.calling());
print(myMob.musicPlay());
print(myMob.clickPicture());
}
در مثال بالا کلاسی با نام Mobile
تعریف میکنیم که دارای 3 متغیر از نوع رشته و 3 تابع یا متد است. سپس، تابع اصلی را ایجاد میکنیم که در تمام مرورگرهای وب قابل اجرا است. در داخل بدنه تابع اصلی شی برای دسترسی به ویژگیهای کلاس ایجاد میکنیم و در نهایت خروجی را چاپ میکنیم.
جمعبندی
با اینکه سالهای زیادی از معرفی زبان برنامه نویسی دارت توسط گوگل نمیگذرد اما در این مدت کوتاه توانسته محبوبیت بالایی به دلیل حجم کم و سرعت بالایی که دارد را در بین جامعه برنامه نویسان به دست آورد. اما هنوز منتقدان زیادی دارد که رقبای این زبان را برای توسعه موارد مشابه مناسبتر میدانند. با همه این تفاسیر از آنجایی که شرکت بزرگی چون گوگل درحال توسعه و پشتیبانی از این زبان است میتوان به آینده این زبان برنامه نویسی نوظهور امیدوار بود.