Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Programming Rust

Programming Rust

Fast, Safe Systems Development
توسط Jim Blandy 2021 735 صفحات
4.63
500+ امتیازها
گوش دادن

نکات کلیدی

1. سیستم مالکیت در Rust: ایمنی حافظه بدون جمع‌آوری زباله

شرط‌بندی جسورانه Rust این است که حتی با وجود این محدودیت‌ها، زبان را به اندازه کافی انعطاف‌پذیر برای تقریباً هر وظیفه‌ای خواهید یافت و مزایای آن—حذف دسته‌های گسترده‌ای از اشکالات مدیریت حافظه و همزمانی—توجیه‌کننده تطبیقاتی خواهد بود که باید در سبک خود ایجاد کنید.

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

ارجاعات و طول عمرها. Rust اجازه می‌دهد ارجاعاتی به مقادیر قرض گرفته شود که می‌توانند به صورت مشترک (&T) یا قابل تغییر (&mut T) باشند. بررسی‌کننده قرض قوانین سخت‌گیرانه‌ای را برای جلوگیری از رقابت داده و خطاهای استفاده پس از آزادسازی اعمال می‌کند:

  • تنها یک ارجاع قابل تغییر یا هر تعداد ارجاع مشترک به یک مقدار در یک زمان
  • ارجاعات نباید بیشتر از مرجع‌های خود زنده بمانند

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

2. ساختارها و شمارش‌ها: بلوک‌های سازنده برای انواع سفارشی

درست مانند هر جای دیگر در زبان، اگر یک بسته‌بندی بخواهد مقداری از نوع قابل کپی، مانند i32، را جابجا کند، مقدار را کپی می‌کند.

ساختارها برای گروه‌بندی داده‌ها. ساختارها در Rust به شما اجازه می‌دهند تا با گروه‌بندی داده‌های مرتبط، انواع سفارشی ایجاد کنید. آن‌ها در سه نوع ارائه می‌شوند:

  • ساختارهای با فیلد نام‌گذاری شده: رایج‌ترین، با فیلدهای نام‌گذاری شده
  • ساختارهای توده‌ای: فیلدهای بدون نام، مفید برای بسته‌بندی‌های ساده
  • ساختارهای شبیه واحد: بدون فیلد، مفید برای پیاده‌سازی صفات

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

قابلیت‌های تطبیق الگو در Rust، به‌ویژه با عبارت match، کار با شمارش‌ها را بسیار راحت و ایمن می‌کند.

3. صفات: تعریف رفتار مشترک

صفات برداشت Rust از رابط‌ها یا کلاس‌های پایه انتزاعی هستند.

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

اشیاء صفت و جنریک‌ها. Rust دو روش اصلی برای استفاده از صفات ارائه می‌دهد:

  1. اشیاء صفت: اجازه چندریختی زمان اجرا با کمی سربار عملکرد
  2. صفات جنریک: ارائه انتزاع‌های بدون هزینه از طریق تک‌ریخت‌سازی

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

4. مدیریت خطا: نتایج و وحشت‌ها

Rust استثنا ندارد. در عوض، توابعی که ممکن است شکست بخورند، نوع بازگشتی دارند که این موضوع را بیان می‌کند.

نتایج برای خطاهای مورد انتظار. Rust از نوع Result<T, E> برای مدیریت خطاهای مورد انتظار استفاده می‌کند. این شمارش دو واریانت دارد:

  • Ok(T): نتیجه موفقیت‌آمیز را نگه می‌دارد
  • Err(E): اطلاعات خطا را شامل می‌شود

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

وحشت‌ها برای خطاهای غیرمنتظره. برای خطاهای غیرمنتظره یا موقعیت‌هایی که بازیابی غیرممکن است، Rust از وحشت‌ها استفاده می‌کند. وحشت‌ها پشته را باز می‌کنند، مخرب‌ها را فراخوانی می‌کنند و منابع را آزاد می‌کنند. آن‌ها برای:

  • خطاهای برنامه‌نویسی (مثلاً دسترسی خارج از محدوده)
  • موقعیت‌هایی که ادامه دادن غیرممکن یا خطرناک است

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

5. ماژول‌ها و جعبه‌ها: سازماندهی و اشتراک‌گذاری کد

برنامه‌های Rust از جعبه‌ها ساخته شده‌اند.

ماژول‌ها برای سازماندهی کد. ماژول‌ها در Rust راهی برای سازماندهی کد درون یک جعبه فراهم می‌کنند. آن‌ها می‌توانند:

  • در یک فایل تعریف شوند
  • در چندین فایل پخش شوند
  • درون ماژول‌های دیگر تو در تو شوند

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

جعبه‌ها برای اشتراک‌گذاری کد. جعبه‌ها واحد کامپایل و توزیع در Rust هستند:

  • جعبه‌های کتابخانه: عملکردی برای استفاده توسط جعبه‌های دیگر فراهم می‌کنند
  • جعبه‌های باینری: اجرایی تولید می‌کنند

مدیر بسته Cargo مدیریت وابستگی‌ها، ساخت پروژه‌ها و انتشار جعبه‌ها به crates.io، رجیستری بسته جامعه Rust، را آسان می‌کند.

6. تکرارگرها: انتزاع‌های قدرتمند برای توالی‌ها

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

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

روش‌های قدرتمند. صفت Iterator مجموعه‌ای غنی از روش‌ها برای کار با توالی‌ها فراهم می‌کند:

  • آداپتورها: تکرارگرها را تغییر می‌دهند (مثلاً map، filter، zip)
  • مصرف‌کنندگان: نتایج نهایی تولید می‌کنند (مثلاً collect، fold، sum)

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

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

7. بسته‌بندی‌ها: انواع تابع‌مانند انعطاف‌پذیر و کارآمد

بسته‌بندی‌های Rust برای سریع بودن طراحی شده‌اند: سریع‌تر از اشاره‌گرهای تابع، به اندازه کافی سریع که می‌توانید حتی در کد حساس به عملکرد از آن‌ها استفاده کنید.

نحو و ضبط. بسته‌بندی‌ها در Rust توابع ناشناسی هستند که می‌توانند مقادیر را از محیط خود ضبط کنند. آن‌ها نحوی مختصر دارند و می‌توانند با:

  • ارجاع: مقادیر را قرض بگیرند
  • ارجاع قابل تغییر: مقادیر را به‌طور قابل تغییر قرض بگیرند
  • مقدار: مالکیت مقادیر را بگیرند (با استفاده از کلمه کلیدی move)

صفات بسته‌بندی. Rust سه صفت برای بسته‌بندی‌ها تعریف می‌کند:

  1. Fn: می‌تواند چندین بار بدون تغییر مقادیر ضبط شده فراخوانی شود
  2. FnMut: می‌تواند مقادیر ضبط شده را تغییر دهد
  3. FnOnce: مقادیر ضبط شده را مصرف می‌کند، تنها یک بار می‌تواند فراخوانی شود

این صفات کنترل دقیق بر رفتار بسته‌بندی‌ها را ممکن می‌سازند و پیاده‌سازی‌های کارآمد را امکان‌پذیر می‌کنند.

8. همزمانی: موازی‌سازی ایمن و کارآمد

یک برنامه همزمان Rust که از کد ناایمن اجتناب می‌کند، به‌طور ساختاری از رقابت داده‌ها آزاد است.

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

ابتدایی‌های رشته‌ای. Rust ابزارهای متعددی برای برنامه‌نویسی همزمان فراهم می‌کند:

  • std::thread: برای ایجاد رشته‌های سطح سیستم‌عامل
  • std::sync: ابتدایی‌های همگام‌سازی (مثلاً Mutex، Arc)
  • کانال‌ها: برای ارسال پیام بین رشته‌ها

غیرهمزمان/انتظار. Rust همچنین از برنامه‌نویسی غیرهمزمان با نحو async/await خود پشتیبانی می‌کند و اجازه می‌دهد تا بسیاری از وظایف همزمان را بدون سربار رشته‌های سیستم‌عامل به‌طور کارآمد مدیریت کنید.

9. اشاره‌گرهای هوشمند: مدیریت حافظه پیشرفته

Rc و Arc: مالکیت مشترک

فراتر از اشاره‌گرهای خام. Rust چندین نوع اشاره‌گر هوشمند فراهم می‌کند که فراتر از آنچه اشاره‌گرهای خام ارائه می‌دهند، عملکرد اضافه می‌کنند:

  • Box<T>: برای تخصیص در پشته
  • Rc<T>: مالکیت مشترک شمارش‌شده
  • Arc<T>: مالکیت مشترک شمارش‌شده اتمی (ایمن در برابر رشته)
  • RefCell<T>: برای تغییرپذیری داخلی

ایمنی و راحتی. این اشاره‌گرهای هوشمند انتزاع‌های ایمنی برای الگوهای رایج در برنامه‌نویسی سیستم‌ها فراهم می‌کنند، مانند:

  • اعزام پویا
  • مالکیت مشترک
  • تغییرپذیری داخلی

آن‌ها اجازه می‌دهند تا سناریوهای مدیریت حافظه پیچیده‌تری را در حالی که هنوز تضمین‌های ایمنی Rust را حفظ می‌کنند، مدیریت کنید.

آخرین به‌روزرسانی::

نقد و بررسی

4.63 از 5
میانگین از 500+ امتیازات از Goodreads و Amazon.

کتاب برنامه‌نویسی با راست با استقبال بسیار مثبت مواجه شده و به خاطر پوشش جامع ویژگی‌های منحصر به فرد زبان راست مورد تحسین قرار گرفته است. خوانندگان از توضیحات عمیق کتاب، به‌ویژه در زمینه مدیریت حافظه، همزمانی و مفاهیم برنامه‌نویسی سیستم‌ها قدردانی کرده‌اند. بسیاری این کتاب را هم برای یادگیری زبان راست و هم به عنوان مرجع مفید یافته‌اند. این کتاب به خاطر سبک نوشتاری واضح، مثال‌های کاربردی و مقایسه‌هایش با زبان‌های C و C++ شناخته شده است. در حالی که برخی بخش‌ها پیچیده هستند، بیشتر خوانندگان محتوای کتاب را جذاب و ارزشمند دانسته‌اند. این کتاب به شدت برای برنامه‌نویسان با تجربه‌ای که به دنبال تسلط بر زبان راست هستند، توصیه می‌شود.

درباره نویسنده

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

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Unlock Unlimited Listening
🎧 Listen while you drive, walk, run errands, or do other activities
2.8x more books Listening Reading
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Jan 25,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →