Apa itu Rust? Pengembangan perangkat lunak yang aman, cepat, dan mudah

Cepat, aman, mudah ditulis — pilih salah satu. Itu sudah menjadi keadaan pengembangan perangkat lunak untuk waktu yang lama sekarang. Bahasa yang menekankan kenyamanan dan keamanan cenderung lambat (seperti Python). Bahasa yang menekankan kinerja cenderung sulit digunakan dan mudah membuat Anda marah (seperti C dan C ++).

Bisakah ketiga atribut tersebut dikirimkan dalam satu bahasa? Lebih penting lagi, dapatkah Anda membuat dunia bekerja dengannya? Bahasa Rust, aslinya dibuat oleh Graydon Hoare dan saat ini disponsori oleh Mozilla Research, adalah upaya untuk melakukan hal itu. (Bahasa Google Go memiliki ambisi yang serupa, tetapi Rust bertujuan untuk membuat sesedikit mungkin konsesi terhadap kinerja.)

Video terkait: Mengembangkan perangkat lunak yang lebih aman dengan Rust

Dapatkan informasi terbaru dengan cepat untuk Rust pendatang baru, yang dirancang untuk membuat perangkat lunak tingkat sistem yang cepat. Penjelasan animasi dua menit ini menunjukkan bagaimana Rust melewati masalah pemrograman yang menjengkelkan dari memori dan manajemen.

Rust dimaksudkan agar cepat, aman, dan cukup mudah untuk diprogram. Ini juga dimaksudkan untuk digunakan secara luas, dan tidak hanya berakhir sebagai keingintahuan atau undian bahasa. Ada banyak alasan bagus untuk menciptakan bahasa di mana keselamatan berada sejajar dengan kecepatan dan kekuatan pengembangan. Lagi pula, ada banyak sekali perangkat lunak — beberapa di antaranya menggerakkan infrastruktur penting — dibangun dengan bahasa yang tidak mengutamakan keselamatan.

Keunggulan bahasa pemrograman Rust

Rust dimulai sebagai proyek penelitian Mozilla yang sebagian dimaksudkan untuk mengimplementasikan kembali komponen kunci dari browser Firefox. Beberapa alasan utama mendorong keputusan itu: Firefox layak untuk memanfaatkan prosesor multi-inti yang modern dengan lebih baik; dan keberadaan browser web yang ada di mana-mana berarti browser tersebut harus aman digunakan.

Tetapi manfaat tersebut dibutuhkan oleh semua perangkat lunak, bukan hanya browser, itulah sebabnya Rust berkembang menjadi proyek bahasa dari proyek browser. Karat mencapai keamanan, kecepatan, dan kemudahan penggunaannya melalui karakteristik berikut.

Karat itu cepat

Kode Rust dikompilasi ke kode mesin asli di berbagai platform. Biner berdiri sendiri, tanpa runtime, dan kode yang dihasilkan dimaksudkan untuk berfungsi sebaik kode yang sebanding yang ditulis dalam C atau C ++.

Karat aman untuk memori

Rust tidak akan mengkompilasi program yang mencoba menggunakan memori yang tidak aman. Kebanyakan kesalahan memori ditemukan saat program sedang berjalan. Sintaksis dan metafora bahasa Rust memastikan bahwa masalah umum terkait memori dalam bahasa lain — pointer null atau menggantung, balapan data, dan sebagainya — tidak pernah berhasil diproduksi. Kompilator menandai masalah tersebut dan memaksanya untuk diperbaiki sebelum program dijalankan.

Karat adalah overhead rendah

Rust mengontrol manajemen memori melalui aturan yang ketat. Sistem manajemen memori Rust diekspresikan dalam sintaks bahasa melalui metafora yang disebut kepemilikan . Nilai apa pun dalam bahasa dapat "dimiliki", atau disimpan dan dimanipulasi, hanya oleh satu variabel dalam satu waktu.

Cara kepemilikan ditransfer antar objek diatur secara ketat oleh kompiler, jadi tidak ada kejutan pada waktu proses dalam bentuk kesalahan alokasi memori. Pendekatan kepemilikan juga berarti tidak ada manajemen memori yang dikumpulkan sampah, seperti dalam bahasa seperti Go atau C #. (Itu juga memberi Rust peningkatan kinerja lainnya.) Setiap bit memori dalam program Rust dilacak dan dilepaskan secara otomatis melalui metafora kepemilikan.

Karat itu fleksibel

Karat membuat Anda hidup berbahaya jika perlu, sampai titik tertentu. Keamanan Rust dapat ditangguhkan sebagian jika Anda perlu memanipulasi memori secara langsung, seperti mendereferensi penunjuk mentah à la C / C ++. Kata kuncinya adalah sebagian , karena operasi keamanan memori Rust ini tidak pernah bisa benar-benar dinonaktifkan. Meski begitu, Anda hampir tidak perlu melepas sabuk pengaman untuk kasus penggunaan umum, jadi hasil akhirnya adalah perangkat lunak yang secara default lebih aman.

Karat mudah digunakan

Tidak ada fitur keamanan dan integritas Rust yang bertambah banyak jika tidak digunakan. Itulah mengapa pengembang dan komunitas Rust mencoba membuat bahasa ini berguna dan ramah bagi pendatang baru.

Semua yang dibutuhkan untuk menghasilkan binari Rust hadir dalam paket yang sama. Kompiler eksternal, seperti GCC, diperlukan hanya jika Anda mengompilasi komponen lain di luar ekosistem Rust (seperti pustaka C yang Anda kompilasi dari sumber). Pengguna Microsoft Windows juga bukan warga negara kelas dua; rantai alat Rust memiliki kemampuan yang sama seperti di Linux dan MacOS.

Karat bersifat lintas platform

Rust bekerja di ketiga platform utama: Linux, Windows, dan MacOS. Yang lainnya didukung di luar ketiganya. Jika Anda ingin mengkompilasi silang , atau menghasilkan binari untuk arsitektur atau platform yang berbeda dari yang Anda jalankan saat ini, sedikit lebih banyak pekerjaan yang terlibat, tetapi salah satu misi umum Rust adalah meminimalkan jumlah pengangkatan berat yang diperlukan untuk itu. kerja. Selain itu, meskipun Rust berfungsi di sebagian besar platform saat ini, bukanlah tujuan pembuatnya untuk membuat Rust benar-benar dikompilasi di mana-mana — hanya di platform apa pun yang populer, dan di mana pun mereka tidak perlu membuat kompromi yang tidak perlu untuk melakukannya.

Rust memiliki fitur bahasa yang kuat

Beberapa pengembang ingin mulai bekerja dalam bahasa baru jika mereka merasa bahasa tersebut memiliki lebih sedikit, atau lebih lemah, fitur daripada yang biasa mereka gunakan. Fitur bahasa asli Rust lebih baik dibandingkan dengan apa yang dimiliki bahasa seperti C ++: Makro, generik, pencocokan pola, dan komposisi (melalui "ciri") semuanya adalah warga negara kelas satu di Rust.

Rust memiliki pustaka standar yang berguna

Salah satu bagian dari misi Rust yang lebih besar adalah mendorong pengembang C dan C ++ untuk menggunakan Rust daripada bahasa tersebut jika memungkinkan. Tetapi pengguna C dan C ++ berharap memiliki pustaka standar yang layak — mereka ingin dapat menggunakan container, koleksi, dan iterator, melakukan manipulasi string, mengelola proses dan threading, melakukan jaringan dan file I / O, dan seterusnya. Rust melakukan semua itu, dan banyak lagi, di pustaka standarnya. Karena Rust dirancang untuk lintas platform, pustaka standarnya hanya dapat berisi hal-hal yang dapat di-porting secara andal di seluruh platform. Fungsi khusus platform seperti epoll Linux harus didukung melalui fungsi di pustaka pihak ketiga seperti libc, mio, atau tokio. 

Rust juga dapat digunakan tanpa pustaka standarnya. Salah satu alasan umum untuk melakukannya adalah untuk membangun binari yang tidak memiliki ketergantungan platform - misalnya, sistem tertanam atau kernel OS.

Rust memiliki banyak pustaka pihak ketiga, atau "peti"

Salah satu ukuran kegunaan suatu bahasa adalah seberapa banyak yang dapat dilakukan dengannya berkat pihak ketiga. Cargo, gudang resmi untuk perpustakaan Rust (disebut "peti kayu") mendaftar sekitar sepuluh ribu peti. Beberapa di antaranya adalah pengikatan API ke pustaka atau kerangka kerja umum, sehingga Rust dapat digunakan sebagai opsi bahasa yang layak dengan kerangka kerja tersebut. Namun, komunitas Rust belum menyediakan kurasi atau peringkat peti yang mendetail berdasarkan kualitas dan kegunaannya secara keseluruhan, jadi Anda tidak dapat mengetahui mana yang bekerja dengan baik tanpa mencoba sendiri atau mengumpulkan komunitas.

Rust memiliki dukungan IDE yang baik 

Sekali lagi, beberapa pengembang ingin menggunakan bahasa dengan sedikit atau tanpa dukungan dalam IDE pilihan mereka. Itulah mengapa Rust baru-baru ini memperkenalkan Rust Language Server, yang memberikan umpan balik langsung dari kompiler Rust ke IDE seperti Microsoft Visual Studio Code.

Kekurangan bahasa pemrograman Rust

Seiring dengan semua kemampuannya yang menarik, bertenaga, dan berguna, Rust memiliki kelemahan. Beberapa dari rintangan ini menimbulkan “rustacea” baru (sebutan fans Rust) dan tangan-tangan lama. 

Karat itu baru

Rust masih merupakan bahasa yang masih muda, karena hanya mengirimkan versi 1.0 pada tahun 2015. Jadi, sementara sebagian besar sintaks dan fungsionalitas bahasa inti telah dipalsukan, banyak hal lain di sekitarnya yang masih cair.

Operasi asinkron, misalnya, masih belum terwakili dengan baik dalam sintaks bahasa. Pekerjaan sedang dilakukan untuk mengimplementasikan operasi asinkron melalui asyncdan awaitkata kunci.

Rust sulit untuk dipelajari

Jika ada satu hal tentang Rust yang paling bermasalah, betapa sulitnya untuk menggunakan metafora Rust. Kepemilikan, peminjaman, dan kesombongan manajemen memori Rust lainnya membuat semua orang tersandung untuk pertama kalinya. Banyak programmer pemula Rust memiliki ritual yang sama, "melawan pemeriksa peminjam," di mana mereka menemukan secara langsung betapa teliti kompiler tentang menjaga hal-hal yang bisa berubah dan tetap terpisah.

Karat itu rumit

Beberapa kesulitan berasal dari bagaimana metafora Rust membuat kode yang lebih verbose, dibandingkan dengan bahasa lain. Misalnya, penggabungan string di Rust tidak selalu semudah string1+string2. Satu objek mungkin bisa berubah dan objek lainnya tidak berubah. Rust cenderung bersikeras bahwa programmer menjelaskan bagaimana menangani hal-hal seperti itu, daripada membiarkan kompiler menebaknya.

Contoh lain: bagaimana Rust dan C / C ++ bekerja sama. Sebagian besar waktu, Rust digunakan untuk menyambungkan ke perpustakaan yang sudah ada yang ditulis dalam C atau C ++; beberapa proyek di C dan C ++ ditulis ulang dari awal di Rust. (Dan jika demikian, mereka cenderung ditulis ulang secara bertahap.)

Peta jalan bahasa Rust

Tim Rust menyadari banyak masalah ini dan sedang bekerja untuk memperbaikinya. Misalnya, untuk membuat Rust lebih mudah bekerja dengan C dan C ++, tim Rust sedang menyelidiki apakah akan memperluas proyek seperti bindgen, yang secara otomatis menghasilkan pengikatan Rust ke kode C. Tim juga memiliki rencana untuk membuat peminjaman dan masa pakai lebih fleksibel dan lebih mudah untuk dipahami. 

Namun, Rust berhasil mencapai tujuannya untuk menyediakan bahasa sistem yang aman, serentak, dan praktis, dengan cara yang tidak dimiliki bahasa lain dan melakukannya dengan cara yang melengkapi cara kerja developer.