این روزها زبان برنامهنویسی Rust حسابی محبوب شده و تقریباً همه برنامهنویسا، از فرانتاند و بکاند گرفته تا برنامههای سطح پایین سیستمی، باهاش کار میکنن. Rust یکی از معدود زبانهایی هست که بدون استفاده از جمعآوری زباله (Garbage Collector) حافظه رو خیلی امن مدیریت میکنه. احتمالاً کلی از خوبیهاش شنیدید، اما اینجا میخوام یه کم درباره مشکلاتش صحبت کنم؛ چیزایی که شاید کمتر بهشون توجه شده ولی برای خیلیها دردسر درست کرده.

اول بگم که سیستم بیلد «کارگو» و خود کامپایلر Rust یه جورایی پیچیدگیشون از خیلی از ابزارهای مشابه تو C و C++ بیشتره. یعنی این که وقت ساخت برنامه خیلی طولانی میشه، حتی بعضی وقتها این تفاوت سرعت به چند برابر میرسه و جاهایی هم دیدم که سرعت ساخت کلی صد برابر کمتر شده! این موضوع میتونه حسابی اعصاب برنامهنویس رو خورد کنه و روند کار رو کند کنه. تازه این فقط مشکل سرعت نیست، همین پیچیدگی باعث میشه خطاهای عجیب غریب هم زیاد بشه.
یه فرق دیگه Rust با C/C++ اینه که کتابخونههاش معمولاً یه عالمه وابستگی دارن. یعنی ممکنه تو فقط ده تا کتابخونه نصب کنی، اما سیستم تو کلی صدها کتابخونه دیگه هم نصب کنه! این یعنی هم حجم فایل اجراییت میره بالا هم ساخت برنامه خیلی طولانیتر میشه. تازه اگه یکی از کتابخونههای اصلی تغییر کنه، ممکنه همه کتابخونههای وابستهش هم به دردسر بیفتن و مجبور بشی کلی کد رو درست کنی که باعث بروز خطاهای بیشتر میشه.
Rust یه زبانیه که خیلی از ویژگیهای برنامهنویسی تابعی داره؛ یعنی اون سبک برنامهنویسی که خیلی مقاومتره و توی چندتا کار همزمان عالی کار میکنه. اما واقعیتش اینه که سینتکس این سبک برای خیلیها سخت و پیچیدهس. حتی اگه کدت صد خط باشه، ممکنه یه جورایی حس کنی هیچی نمیفهمی چی داره میگذره و دنبال کردنش سخته.
مشکل قبلیها شاید با تجربه حل بشه، اما یه مشکل بزرگ دیگه هست که راهحل آسونی نداره: ناپایداری Rust. نه فقط این که ABI پایداری نداره، بلکه حتی سینتکسهای پایه زبان هم تو هر نسخه آپدیت تغییر میکنن! یعنی وقتی یه برنامه نوشتی، باید همیشه حواست باشه که با هر نسخه جدید باید کلی تغییر تو کدت بدی که برنامه هنوز درست کار کنه.
Rust با همه خوبیها و امکاناتش، هنوز چالشهای خودش رو داره که بعضی وقتها میتونه توسعه سریع رو سخت کنه. پیچیدگی سیستم ساخت، وابستگیهای زیاد، سختی فهم سینتکس تابعی و همین ناپایداری زبان، چیزایی هستن که قبل از انتخاب Rust باید حسابی بهشون فکر کنی. البته Rust یه زبان جوان و رو به رشده و احتمالاً تو آینده خیلی از این مشکلات کمتر میشن و جایگاهش تو دنیای برنامهنویسی محکمتر میشه.