"Karat ialah masa depan pengaturcaraan sistem, C ialah pemasang baharu" - ucapan salah seorang jurutera terkemuka Intel

Pada Summi Teknologi Sumber Terbuka (OSTS) baru-baru ini Josh Triplett, seorang jurutera utama Intel, berkata bahawa syarikatnya berminat untuk Rust mencapai "pariti" dengan C, yang masih dominan dalam bidang sistem dan pembangunan peringkat rendah, dalam masa terdekat. Dalam ucapannya di bawah tajuk "Intel dan Rust: Masa Depan Pengaturcaraan Sistem" dia juga bercakap tentang sejarah pengaturcaraan sistem, bagaimana C menjadi bahasa pengaturcaraan sistem "lalai", apakah ciri Rust memberikannya kelebihan berbanding C, dan bagaimana dalam masa terdekat. masa depan ia boleh menggantikan sepenuhnya C dalam bidang pengaturcaraan tertentu.

"Karat ialah masa depan pengaturcaraan sistem, C ialah pemasang baharu" - ucapan salah seorang jurutera terkemuka Intel

Pengaturcaraan sistem ialah pembangunan dan pengurusan perisian yang berfungsi sebagai platform untuk mencipta aplikasi aplikasi, memastikan yang kedua berinteraksi dengan pemproses, RAM, peranti I/O dan peralatan rangkaian. Perisian sistem mencipta abstraksi khas dalam bentuk antara muka yang membantu anda mencipta perisian aplikasi tanpa pergi ke butiran tentang cara perkakasan itu sendiri berfungsi.

Triplett sendiri mentakrifkan pengaturcaraan sistem sebagai "apa-apa sahaja yang bukan aplikasi". Ia termasuk perkara seperti BIOS, perisian tegar, pemuat but dan kernel sistem pengendalian, pelbagai jenis kod peringkat rendah terbina dalam dan pelaksanaan mesin maya. Menariknya, Triplett percaya bahawa penyemak imbas web juga merupakan perisian sistem, memandangkan penyemak imbas telah lama melampaui "sekadar program" ke dalam "platform untuk tapak web dan aplikasi web" sendiri.

Pada masa lalu, kebanyakan program sistem, termasuk BIOS, pemuat but dan perisian tegar, ditulis dalam bahasa pemasangan. Percubaan bermula pada tahun 1960-an untuk menyediakan sokongan perkakasan untuk bahasa peringkat tinggi, yang membawa kepada bahasa seperti PL/S, BLISS, BCPL dan ALGOL 68.

Kemudian, pada tahun 1970-an, Dennis Ritchie mencipta bahasa pengaturcaraan C untuk sistem pengendalian Unix. Dicipta dalam bahasa pengaturcaraan B, yang tidak mempunyai sokongan menaip, C dipenuhi dengan fungsi peringkat tinggi yang berkuasa yang paling sesuai untuk menulis sistem pengendalian dan pemacu. Beberapa komponen UNIX, termasuk kernelnya, akhirnya ditulis semula dalam C. Selepas itu, banyak program sistem lain, termasuk pangkalan data Oracle, kebanyakan kod sumber Windows, dan sistem pengendalian Linux, juga ditulis dalam C.

C mendapat sokongan besar ke arah ini. Tetapi apa sebenarnya yang membuatkan pemaju beralih kepadanya? Triplett percaya bahawa untuk memotivasikan pembangun beralih daripada satu bahasa pengaturcaraan ke bahasa pengaturcaraan yang lain, yang kedua mesti menyediakan ciri baharu terlebih dahulu tanpa kehilangan ciri lama.

Pertama, bahasa mesti menawarkan ciri baharu yang "cukup mengagumkan". β€œDia tidak boleh menjadi lebih baik. Ia harus menjadi lebih baik untuk mewajarkan usaha dan masa yang diperlukan untuk jurutera membuat peralihan, "jelasnya. Berbanding dengan bahasa himpunan, C mempunyai banyak perkara untuk ditawarkan. Ia menyokong agak keselamatan jenis, memberikan kemudahalihan dan prestasi yang lebih baik dengan binaan peringkat tinggi, dan menjana kod yang lebih mudah dibaca secara keseluruhan.

Kedua, bahasa mesti menyediakan sokongan untuk ciri lama, yang bermaksud bahawa dalam sejarah peralihan kepada C, pembangun perlu memastikan bahawa ia tidak kurang berfungsi daripada bahasa himpunan. Triplett menjelaskan: "Bahasa baharu tidak boleh menjadi lebih baik, ia juga mesti sama baiknya." Selain lebih pantas dan menyokong sebarang jenis data yang boleh digunakan oleh bahasa himpunan, C juga mempunyai apa yang disebut Triplett sebagai "escape hatch", iaitu sokongan untuk memasukkan kod bahasa himpunan di dalamnya.

"Karat ialah masa depan pengaturcaraan sistem, C ialah pemasang baharu" - ucapan salah seorang jurutera terkemuka Intel

Triplett percaya bahawa C kini menjadi bahasa perhimpunan bertahun-tahun yang lalu. "C ialah pemasang baharu," katanya. Pembangun kini sedang mencari bahasa peringkat tinggi baharu yang bukan sahaja akan menyelesaikan masalah berlarutan C yang tidak lagi boleh diperbaiki, tetapi juga menawarkan ciri baharu yang menarik. Bahasa sedemikian mestilah cukup menarik untuk memaksa pembangun beralih kepadanya, mesti selamat, menyediakan pengurusan memori automatik dan banyak lagi.

β€œMana-mana bahasa yang mahu menjadi lebih baik daripada C perlu menawarkan lebih daripada perlindungan limpahan penimbal jika ia benar-benar mahu menjadi alternatif yang menarik. Pembangun berminat dengan kebolehgunaan dan prestasi, dalam menulis kod yang jelas dan melakukan lebih banyak kerja dalam baris yang lebih sedikit. Isu keselamatan juga perlu ditangani. Kemudahan penggunaan dan prestasi seiring dengannya. Semakin sedikit kod yang anda perlu tulis untuk mencapai sesuatu, semakin kurang peluang anda untuk membuat sebarang ralat berkaitan keselamatan atau bukan berkaitan keselamatan, "jelas Triplett.

Membandingkan Rust dan C

Kembali pada tahun 2006, Graydon Hoare dari Mozilla mula menulis Rust sebagai projek peribadi. Dan pada tahun 2009, Mozilla mula menaja pembangunan Rust untuk keperluannya sendiri, dan juga mengembangkan pasukan untuk mengembangkan lagi bahasa tersebut.

Salah satu sebab Mozilla berminat dengan bahasa baharu itu ialah Firefox ditulis dalam lebih 4 juta baris kod C++ dan mempunyai beberapa kelemahan kritikal. Rust dibina dengan mengambil kira keselamatan dan keselarasan, menjadikannya pilihan yang tepat untuk menulis semula banyak komponen Firefox sebagai sebahagian daripada projek Quantum untuk membaik pulih sepenuhnya seni bina penyemak imbas. Mozilla juga menggunakan Rust untuk membangunkan Servo, enjin pemaparan HTML yang akan menggantikan enjin pemaparan semasa Firefox pada masa hadapan. Banyak syarikat lain telah mula menggunakan Rust untuk projek mereka, termasuk Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu dan banyak lagi.

Rust menyelesaikan salah satu masalah terpenting bahasa C. Ia menawarkan pengurusan memori automatik supaya pembangun tidak perlu memperuntukkan secara manual dan kemudian mengagihkannya untuk setiap objek dalam aplikasi. Apa yang membezakan Rust daripada bahasa moden yang lain ialah ia tidak mempunyai pengumpul sampah yang secara automatik mengeluarkan objek yang tidak digunakan daripada ingatan, dan juga tidak mempunyai persekitaran runtime yang diperlukan untuknya berfungsi, seperti Java Runtime Environment untuk Java. Sebaliknya, Rust mempunyai konsep pemilikan, peminjaman, rujukan dan jangka hayat. β€œRust mempunyai sistem untuk mengisytiharkan panggilan objek, membolehkan anda menentukan sama ada pemilik menggunakannya atau jika ia hanya meminjam. Jika anda hanya meminjam objek, pengkompil akan memerhatikannya dan memastikan bahawa objek asal kekal di tempat semasa anda merujuk kepadanya. Dan Rust juga akan memastikan bahawa objek dialih keluar daripada ingatan sebaik sahaja ia selesai menggunakannya, memasukkan panggilan yang sesuai ke dalam kod pada masa penyusunan tanpa masa tambahan, "kata Triplett.

Kekurangan masa jalan asli juga boleh dianggap sebagai ciri positif Rust. Triplett percaya bahawa bahasa yang dijalankan dengannya sukar digunakan sebagai alat untuk pengaturcaraan sistem. Semasa dia menerangkan, "Anda mesti memulakan masa jalan ini sebelum anda boleh memanggil sebarang kod, anda mesti menggunakan masa jalan ini untuk memanggil fungsi dan masa jalan itu sendiri boleh menjalankan kod tambahan di belakang anda pada masa yang tidak dijangka."

Rust juga berusaha untuk menyediakan pengaturcaraan selari yang selamat. Ciri yang sama yang menjadikannya selamat memori menjejaki perkara seperti benang yang memiliki objek yang mana dan objek yang boleh dihantar antara benang dan yang memerlukan kunci.

Semua ciri ini menjadikan Rust cukup menarik untuk pembangun memilih sebagai alat pengaturcaraan sistem baharu mereka. Walau bagaimanapun, dari segi pengkomputeran selari, Rust masih sedikit di belakang C.

Triplett akan mewujudkan kumpulan kerja khas yang akan melaksanakan ciri-ciri yang diperlukan dalam Rust supaya ia dapat menyamai sepenuhnya, mengatasi dan menggantikan C dalam bidang pengaturcaraan sistem. DALAM topik mengenai reddit, berdedikasi untuk ucapannya, beliau berkata bahawa "kumpulan FFI / C Parity sedang dalam proses untuk diwujudkan dan belum mula bekerja", sambil dia bersedia untuk menjawab sebarang soalan, dan pada masa akan datang dia pasti akan menerbitkan yang terdekat. rancangan untuk pembangunan Rust sebagai sebahagian daripada inisiatifnya untuk semua pihak yang berminat.

Boleh diandaikan bahawa, pertama sekali, kumpulan FFI / C Parity akan terlibat dalam meningkatkan sokongan multithreading Rust, memperkenalkan sokongan untuk BFLOAT16, format titik terapung yang muncul dalam pemproses Intel Xeon Scalable baharu, serta menstabilkan kod pemasangan sisipan.



Sumber: 3dnews.ru

Tambah komen