آموزش زبان برنامهنویسی Rust - قسمت 0: معرفی و شروع به کار

وقتی صحبت از برنامهنویسی سیستم میشود همه یاد زبان C میافتند. ولی الان چند سالی هست که یک زبان بسیار قدرتمند به نام Rust ساخته شده. زبانی که بسیاری از مشکلات زبان C را ندارد. مشکلاتی که برای نوشتن برنامههای مورد نیاز صنعت امروز دردسر شده اند و هزینههارا به شکل سرسامآوری افزایش داده اند.
از آنجایی که این زبان بسیار قوی و پرکاربر که برای دو سال در نظرسنجی سالیانه استکاورفلو به عنوان موردعلاقهترین زبان برنامهنویسی مشخص شده در ایران مهجور مانده، تصمیم گرفتم که یک آموزش فارسی و جامع برای این زبان تهیه کنم.
از آنجایی که زبان Rust در خیلی از مفاهیم با زبانهای دیگر تفاوتهای کلّی یا جزئی دارد، یادگیری آن کار بسیار جالب و چالشبرانگیزی است.
تنها نکتهای که باقی میماند این است که من تمام تلاشمرا برای توضیح مباحث میکنم، امّا به صورت پیشفرض مطلبرا برای افرادی توضیح میدهم که آشنایی اوّلیّه با برنامهنویسی دارند. بنابراین اگر تا به حال برنامهنویسی نکردهاید ممکن است کمی گیج شوید.
تاریخچه
زبان برنامهنویسی Rust توسط یکی از مهندسان موزیلا به نام Graydon Hoare معرفی شد. در حقیقت این زبان بخشی از یکی از پروژههای شخصی ایشان بود. بنیاد موزیلا از سال 2009 حامی مالی این زبان شد.
اوّلین نسخهی پایدار این زبان در سال 2015 منتشر شد.در tحال حاضر نسخهی 1.27.1 این زبان در دسترس عمومی قرار دارد.
این زبان متنباز است و تحت لایسنس MIT کد منبعش در اختیار همگان است.
ویژگیها
برنامههای نوشته شده به زبان Rust باید ترجمه(compile) شوند. به همین دلیل سرعت اجرای آنها از برنامههای مشابه مفسری(مثل پایتون) بیشتر است.
وبسایت رسمی این زبان ویژگیهای زیر را به عنوان موارد شاخص برای این زبان ذکر کرده است(از آنجایی که خیلی از موارد معادل فارسی خوبی نداشتند همان توضیح انگلیسیرا آوردم. اگر متوجّه نشدید در بخش نظرات بپرسید):
- سرعت بسیار بالا
- zero-cost abstractions
- move semantics
- guaranteed memory safety
- threads without data races
- trait-based generics
- pattern matching
- type inference
- minimal runtime
- efficient C bindings
بسیاری از تفاوتهای زبان Rust با دیگر زبانها به این خاطر است که سازندگان آن میخواستند تا جای ممکن ایمنی در هنگام کار با thread ها را تضمین کنند.
نصب Rust
برای شروع باید Rust را نصب کنیم. Rust بهوسیلهی rustup نصب میشود. ابزار command lineی که نسخههای مختلف Rust و ابزارهای مورد نیاز آنرا مدیریت میکند.
نصب Rust کار بسیار سادهای است. الان با هم تمامی مراحل مورد نیاز برای نصب آنرا میبینیم.
نصب Rust روی لینوکس یا macOs
برای نصب Rust اول از همه باید curl را داشته باشید. برای اینکه مطمئن شوید curl روی دستگاهتان نصب است، ترمینالرا باز کنید. بعد دستور زیر را تایپ کنید:
curl -V
اگر خروجیای مشابه متن زیر مشاهده کردید یعنی curl روی سیستمتان نصب شده است(خروجی با توجّه به نسخهی curl و سیستم عامل ممکن است متفاوت باشد):
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
در غیر این صورت با پیام خطای نصب نبودن نرمافزار روبهرو میشوید. اگر curl نصب نبود میتوانید به سرعت آنرا نصب کنید. برای مثال در سیستمعامل ابونتو میتوانید دستور زیر را برای نصب سریع این برنامه در ترمینال اجرا کنید:
apt-get install curl # If you have root permission
یا
sudo apt-get install curl # If you don't have root permission
حالا کافی است دستور زیر را اجرا کنید تا Rust به سادگی نصب شود:
curl https://sh.rustup.rs -sSf | sh
این دستور اسکریپت rustup را نصب میکند. اگر تنظیمات پیشفرضرا میخواهید، که پیشنهاد من هم این است، دیگر لازم نیست کار خاصی بکنید. بعد از دانلود اوّلیّه از شما نوع نصب پرسیده میشود(تصویر زیر).

با وارد کردن عدد 1 و زدن دکمهی Enter دیگر لازم نیست کاری بکنید. وقتی دانلود و نصب تمام شد، برای افزودن Rust به PATH دستور زیر را اجرا کنید:
export PATH="$HOME/.cargo/bin:$PATH"
اگر میخواهید در ترمینال موجود به Rust دسترسی داشته باشید دستور زیر را هم اجرا کنید:
source $HOME/.cargo/env
البته همچنان امکان دارد که با بستن ترمینال کنونی دیگر به Rust دسترسی نداشته باشد که با یکبار ریاستارت کردن همهچیز درست میشود.
به علاوه شما به یک لینکر هم نیاز دارید. اگر در حال حاضر توانایی کامپایل کردن برنامههای C را روی دستگاهتان دارید پس نیاز نیست کار دیگری بکنید. در غیر این صورت میتوانید یک کامپایلر C نصب کنید.
نصب Rust روی ویندوز
شما برای استفاده از Rust نیازمند ابزار ساخت زبان C هستید. پس بهتر است ابتدا Visual Studio 2017 یا برنامهای مشابه آنرا نصب کنید و C++ support را فعّال کنید.
حالا از این آدرس بستهی نصبی برنامهی rustup را دانلود کنید و طبق پیامهایی که ظاهر میشوند آنرا نصب کنید.
مراحل درست انجام شده اند؟
حالا که نصب انجام شده، زمان آن است که مطمئن شوید که همهچیز به درستی نصب شده اند. پس درون ترمینال یا cmd دستور زیر را اجرا کنید:
rustc --version
حالا اگر همهچیز روبهراه باشد، باید پیامی مشابه پیام زیر را ببینید:
rustc 1.27.1 (5f2b325f6 2018-07-07)
با توجّه به زمانی که این مطلبرا میخوانید ممکن است محتوای نمایشداده شده متفاوت باشد، امّا فرمت کلّی اینگونه خواهد بود.
و حالا سلام دنیا!
حالا میخواهیم با هم برنامهی معروف hello world را در زبان Rust بنویسیم. یکی از جذّابترین بخشهای زبان Rust این است که به صورت پیشفرض از فرمت UTF-8 استفاده میکند. به همین دلیل میتوانید بدون انجام هیچ کار اضافیای در آن فارسی بنویسید.
پس ما هم برنامهی hello world را به زبان فارسی خواهیم نوشت.
برای شروع یک فایل به نام main.rs
بسازید. حالا داخل آن کد زیر را بنوسید:
fn main(){ println!("سلام دنیا!"); }
حالا برای اجرای برنامه با ترمینال یا cmd به مسیری که فایل قرار دارد بروید و دستور زیر را اجرا کنید:
rustc main.rs
با اجرای این دستور برنامهی شما کامپایل میشود و فایل حاوی کد قابل اجرا در همان مکان ساخته میشود.
اگر از لینوکس یا macOs استفاده میکنید، برای اجرای برنامه دستور زیر را اجرا کنید:
./main
اگر هم از windows استفاده میکنید دستور زیر را اجرا کنید:
.\main.exe
و حالا از دیدن حاصل کارتان لذّت ببرید:
سلام دنیا
نحوهی اجرای برنامهرا بهخاطر بسپارید. در قسمت بعد در مورد بخشهای مختلف همین برنامهای که با هم نوشتیم صحبت میکنیم و نگاهی دقیقتر به syntax زبان Rust میاندازیم.
اگر سؤالی برایتان پیش آمده در بخش نظرات مطرح کنید. اگر در توانم بود کمکتان میکنم.
با سلام و ممنون از آموزش خوبتون، اگر میشه این مزایای راست را باز کنید، خیلی ممنون
واقعا ممنون از وقتی که برای این دوره آموزشی گذاشتی.
تابحال GUI با Rust نوشتید ؟ من خیلی سرچ کردم ولی غیر از GTK هنوز گزینهی مناسب کامل دیگهای پیدا نکردم. که برای پروژهای که من تو ذهنم دارم خیلی سنگین هستش، من فقط چندتا ویندوز و Textbox و Label و Popup Menu نیاز دارم که نمیخوام Performance ام کم بشه.
اگه تجربهای تو این زمینه دارید ممنون میشم به اشتراک بزارید.
http://www.areweguiyet.com
سلام.
خواهش میکنم.
به نظر بهترین گزینه تا امروز همان GTK است، ولی در موردی که گفتید، شاید fltk هم خوب باشد.
سلام خدمت استاد علی حسینی عزیز
تشکر بابت این همه زحمتی که کشیدید واقعا عالیه
باور نمی کردم چنین اموزش با این کیفبت مجود داشته باشه
ممنون استاد
کی بروز رسانی می کنید ؟؟؟؟
سلام استاد عزیز
بسیار از مطالب خوب و شیوای شما الستفاده کردیم
واقعا باورم نمیشد چنین سایتی با زبان فارسی برای rust وجود داره
استاد کی ادامه اموزش ها رو شروع می کنید؟؟؟
سلام. خیلی ممنون. به زودی ادامه خواهم داد.
سلام و ممنون برای اموزش خوبتون.
من rust نصب کردم ولی برنامه main ران نمیشه (on windows)
سلام. مشکلتان چیست؟
با درود و خسته نباشید به جناب مهندس بابت زحمت بی نهایتتون برای این موضوع مهم و عالی
ی سوال از چناب مهندس و دوستان : میخام دوره برنامه نویسی RUST رو مطابق آموزشهای عالی شما شروع کنم،سیستم عاملم ویندوزهست و رفتم Visual Studio 2017 نصب کنم ،زمان نصب چطور بفهمم در سربرگها و پنجره های *WorklodsO*Individual components*Installation Iocation* باید برای استفاده جامع و کامل فعال کنم.اگر بلاگ پست بزارید که عالیه .ضمنا چه خوب بشه آموزشهای ویدئوئی ادامه پیدا کنه دوباره .مرسی
سلام.
اگر بتوانم حتماً برای نصب روی ویندوز هم آموزش تهیّه میکنم.
سلام و وقت بخیر، برای دسترسی داشتن به راست توی ترمینال های بعدی، اجباری به ریبوت نیست، با یک بار لاگ اوت کردن و وارد شدن، env variables اپدیت میشن