"Rust adalah masa depan pemrograman sistem, C adalah assembler baru" - pidato dari salah satu insinyur terkemuka Intel

Pada Open Source Technology Summi (OSTS) baru-baru ini Josh Triplet, seorang insinyur senior di Intel, mengatakan perusahaannya tertarik agar Rust mencapai “kesetaraan” dengan bahasa C yang masih mendominasi sistem dan pengembangan tingkat rendah dalam waktu dekat. Dalam pidatonya Dengan judul "Intel dan Rust: Masa Depan Pemrograman Sistem," ia juga berbicara tentang sejarah pemrograman sistem, bagaimana C menjadi bahasa pemrograman sistem default, fitur apa yang memberikan keunggulan Rust dibandingkan C, dan bagaimana ia bisa sepenuhnya ganti C di bidang pemrograman ini.

"Rust adalah masa depan pemrograman sistem, C adalah assembler baru" - pidato dari salah satu insinyur terkemuka Intel

Pemrograman sistem adalah pengembangan dan pengelolaan perangkat lunak yang berfungsi sebagai platform untuk membuat aplikasi aplikasi, memastikan aplikasi tersebut berinteraksi dengan prosesor, RAM, perangkat input/output, dan peralatan jaringan. Perangkat lunak sistem menciptakan abstraksi khusus dalam bentuk antarmuka yang membantu pembuatan perangkat lunak aplikasi tanpa mendalami detail cara kerja perangkat keras itu sendiri.

Triplett sendiri mendefinisikan pemrograman sistem sebagai “segala sesuatu yang bukan sebuah aplikasi.” Ini mencakup hal-hal seperti BIOS, firmware, bootloader dan kernel sistem operasi, berbagai jenis kode tingkat rendah yang tertanam, dan implementasi mesin virtual. Menariknya, Triplett percaya bahwa browser web juga merupakan perangkat lunak sistem, karena browser telah lama menjadi lebih dari “sekadar program”, menjadi “platform untuk situs web dan aplikasi web” yang berdiri sendiri.

Di masa lalu, sebagian besar program sistem, termasuk BIOS, bootloader, dan firmware, ditulis dalam bahasa assembly. Pada tahun 1960-an, eksperimen mulai memberikan dukungan perangkat keras untuk bahasa tingkat tinggi, yang mengarah pada penciptaan bahasa seperti PL/S, BLISS, BCPL, dan ALGOL 68.

Kemudian pada tahun 1970-an, Dennis Ritchie menciptakan bahasa pemrograman C untuk sistem operasi Unix. Dibuat dalam bahasa pemrograman B, yang bahkan tidak memiliki dukungan pengetikan, C dipenuhi dengan fungsi tingkat tinggi yang kuat yang paling cocok untuk menulis sistem operasi dan driver. Beberapa komponen UNIX, termasuk kernelnya, akhirnya ditulis ulang dalam C. Selanjutnya, banyak program sistem lainnya, termasuk database Oracle, sebagian besar kode sumber Windows, dan sistem operasi Linux, juga ditulis dalam C.

C telah menerima dukungan luar biasa dalam arah ini. Tapi apa sebenarnya yang membuat pengembang beralih ke sana? Triplett percaya bahwa untuk memotivasi pengembang untuk beralih dari satu bahasa pemrograman ke bahasa lain, bahasa pemrograman tersebut harus terlebih dahulu menyediakan fitur-fitur baru tanpa kehilangan fitur-fitur lama.

Pertama, bahasa tersebut harus menawarkan fitur-fitur baru yang "cukup mengesankan". “Dia tidak bisa menjadi lebih baik lagi. Upaya dan waktu rekayasa yang diperlukan untuk melakukan transisi harus jauh lebih baik,” jelasnya. Dibandingkan dengan bahasa assembly, C memiliki banyak hal untuk ditawarkan. Ini mendukung perilaku yang agak aman untuk tipe, memberikan portabilitas dan kinerja yang lebih baik dengan konstruksi tingkat tinggi, dan menghasilkan kode yang jauh lebih mudah dibaca secara keseluruhan.

Kedua, bahasa tersebut harus memberikan dukungan untuk fitur-fitur lama, yang berarti bahwa dalam sejarah transisi ke C, pengembang harus yakin bahwa fungsinya tidak kalah dengan bahasa assembly. Triplett menjelaskan: “Bahasa baru tidak hanya harus lebih baik, tapi juga harus sama baiknya.” Selain lebih cepat dan mendukung tipe data apa pun yang dapat digunakan oleh bahasa rakitan, C juga memiliki apa yang disebut Triplett sebagai "escape hatch"—yakni, ia mendukung penyisipan kode bahasa rakitan ke dalam dirinya sendiri.

"Rust adalah masa depan pemrograman sistem, C adalah assembler baru" - pidato dari salah satu insinyur terkemuka Intel

Triplett percaya bahwa C sekarang menjadi bahasa assembly beberapa tahun yang lalu. “C adalah assembler baru,” jelasnya. Sekarang para pengembang sedang mencari bahasa tingkat tinggi baru yang tidak hanya akan menyelesaikan masalah yang terakumulasi di C yang tidak lagi dapat diperbaiki, tetapi juga menawarkan fitur-fitur baru yang menarik. Bahasa tersebut harus cukup menarik untuk membuat pengembang beralih ke bahasa tersebut, harus aman, menyediakan manajemen memori otomatis, dan banyak lagi.

“Bahasa apa pun yang ingin menjadi lebih baik dari C harus menawarkan lebih dari sekedar perlindungan buffer overflow jika ia benar-benar ingin menjadi alternatif yang menarik. Pengembang tertarik pada kegunaan dan kinerja, menulis kode yang cukup jelas dan melakukan lebih banyak pekerjaan dalam lebih sedikit baris. Masalah keamanan juga perlu diatasi. Kemudahan penggunaan dan kinerja berjalan beriringan. Semakin sedikit kode yang harus Anda tulis untuk mencapai sesuatu, semakin kecil peluang Anda untuk membuat kesalahan, terkait keamanan atau tidak,” jelas Triplett.

Perbandingan Rust dan C

Pada tahun 2006, Graydon Hoare, seorang karyawan Mozilla, mulai menulis Rust sebagai proyek pribadi. Dan pada tahun 2009, Mozilla mulai mensponsori pengembangan Rust untuk kebutuhannya sendiri, dan juga memperluas tim untuk mengembangkan bahasa tersebut lebih lanjut.

Salah satu alasan Mozilla tertarik dengan bahasa baru ini adalah karena Firefox ditulis dalam lebih dari 4 juta baris kode C++ dan memiliki beberapa kerentanan kritis. Rust dibangun dengan mempertimbangkan keamanan dan konkurensi, menjadikannya pilihan ideal untuk menulis ulang banyak komponen Firefox sebagai bagian dari proyek Quantum untuk mendesain ulang arsitektur browser sepenuhnya. Mozilla juga menggunakan Rust untuk mengembangkan Servo, mesin rendering HTML yang pada akhirnya akan menggantikan mesin rendering Firefox saat ini. Banyak perusahaan lain sudah mulai menggunakan Rust untuk proyek mereka, termasuk Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu dan banyak lagi.

Rust memecahkan salah satu masalah terpenting bahasa C. Ia menawarkan manajemen memori otomatis sehingga pengembang tidak perlu mengalokasikan secara manual dan kemudian membebaskannya untuk setiap objek dalam aplikasi. Apa yang membuat Rust berbeda dari bahasa modern lainnya adalah ia tidak memiliki pengumpul sampah yang secara otomatis menghapus objek yang tidak terpakai dari memori, juga tidak memiliki lingkungan runtime yang diperlukan untuk membuatnya berfungsi, seperti Java Runtime Environment for Java. Sebaliknya, Rust memiliki konsep kepemilikan, peminjaman, referensi, dan seumur hidup. “Rust memiliki sistem untuk mendeklarasikan panggilan ke suatu objek untuk menunjukkan apakah pemiliknya menggunakannya atau hanya meminjamnya. Jika Anda hanya meminjam suatu objek, kompiler akan melacaknya dan memastikan bahwa objek asli tetap ada selama Anda mereferensikannya. Rust juga akan memastikan bahwa objek tersebut dihapus dari memori segera setelah penggunaannya selesai, memasukkan panggilan yang sesuai ke dalam kode pada waktu kompilasi tanpa waktu tambahan,” kata Triplett.

Kurangnya runtime asli juga dapat dianggap sebagai fitur positif dari Rust. Triplett percaya bahwa bahasa yang dijalankannya sulit digunakan sebagai alat pemrograman sistem. Saat dia menjelaskan: "Anda harus menginisialisasi runtime ini sebelum Anda dapat memanggil kode apa pun, Anda harus menggunakan runtime ini untuk memanggil fungsi, dan runtime itu sendiri dapat menjalankan kode tambahan di belakang Anda pada waktu yang tidak terduga."

Rust juga berupaya menyediakan pemrograman paralel yang aman. Fitur yang sama yang membuat memori aman melacak hal-hal seperti thread mana yang memiliki objek mana dan objek mana yang dapat dilewati antar thread dan mana yang memerlukan kunci.

Semua fitur ini membuat Rust cukup menarik bagi pengembang untuk memilihnya sebagai alat baru untuk pemrograman sistem. Namun dalam hal komputasi paralel, Rust masih tertinggal sedikit dari C.

Triplett bermaksud untuk membuat kelompok kerja khusus yang akan fokus pada pengenalan fitur-fitur yang diperlukan ke dalam Rust sehingga dapat sepenuhnya menyamai, melampaui, dan menggantikan C di bidang pemrograman sistem. DI DALAM utas di Reddit, yang didedikasikan untuk pidatonya, beliau mengatakan bahwa “kelompok Paritas FFI/C sedang dalam proses pembentukan dan belum mulai bekerja,” untuk saat ini beliau siap menjawab pertanyaan apapun, dan kedepannya beliau pasti akan mempublikasikan rencana segera. untuk pengembangan Rust sebagai bagian dari inisiatifnya untuk semua pihak yang berkepentingan.

Dapat diasumsikan bahwa grup Paritas FFI/C pertama-tama akan fokus pada peningkatan dukungan multi-threading di Rust, memperkenalkan dukungan untuk BFLOAT16, format floating point yang telah muncul di prosesor Intel Xeon Scalable baru, serta menstabilkan perakitan penyisipan kode.



Sumber: 3dnews.ru

Tambah komentar