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

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

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

از آنجایی که زبان Rust در خیلی از مفاهیم با زبان‌های دیگر تفاوت‌های کلّی یا جزئی دارد, یادگیری آن کار بسیار جالب و چالش‌برانگیزی است.

تنها نکته‌ای که باقی می‌ماند این است که من تمام تلاشم‌را برای توضیح مباحث می‌کنم, امّا به صورت پیش‌فرض مطلب‌را برای افرادی توضیح می‌دهم که آشنایی اوّلیّه با برنامه‌نویسی دارند. بنابراین اگر تا به حال برنامه‌نویسی نکرده‌اید ممکن است کمی گیج شوید.

https://www.youtube.com/watch?v=oNJxb6Vfu_I&t=14s


تاریخچه

زبان برنامه‌نویسی 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=&quot$HOME/.cargo/bin:$PATH&quot

اگر می‌خواهید در ترمینال موجود به 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!(&quotسلام دنیا!&quot);
}

حالا برای اجرای برنامه با ترمینال یا cmd به مسیری که فایل قرار دارد بروید و دستور زیر را اجرا کنید:

rustc main.rs

با اجرای این دستور برنامه‌ی شما کامپایل می‌شود و فایل حاوی کد قابل اجرا در همان مکان ساخته می‌شود.

اگر از لینوکس یا macOs استفاده می‌کنید, برای اجرای برنامه دستور زیر را اجرا کنید:

./main

اگر هم از windows استفاده می‌کنید دستور زیر را اجرا کنید:

.\main.exe

و حالا از دیدن حاصل کارتان لذّت ببرید:

سلام دنیا

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

اگر سؤالی برایتان پیش آمده در بخش نظرات مطرح کنید. اگر در توانم بود کمکتان می‌کنم.


قسمت بعدی را از طریق لینک زیر بخوانید:

https://virgool.io/@alihoseiny/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%DB%8C-rust-%D9%82%D8%B3%D9%85%D8%AA-1-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%85%D8%AA%D8%BA%DB%8C%D9%91%D8%B1%D9%87%D8%A7-%D9%88-%D8%AB%D9%88%D8%A7%D8%A8%D8%AA-%D8%A8%D8%AF%D8%A7%D9%86%DB%8C%D8%AF-aehcwwhwjl5t