Sebuah bahasa pengaturcaraan baru yang dipanggil Nature telah muncul, memposisikan dirinya sebagai alternatif yang diilhamkan oleh Go yang bertujuan untuk menangani beberapa batasan Go sambil mengekalkan kekuatannya. Bahasa ini telah mencapai versi awal yang boleh digunakan dengan API sintaks yang stabil, tetapi dakwaan pemasarannya telah mencetuskan perbincangan komuniti yang ketara mengenai apa yang benar-benar membentuk bahasa pengaturcaraan sistem.
Nature dicipta oleh seorang pembangun yang menggunakan Go setiap hari tetapi berasa kecewa dengan sintaksnya yang terlalu mudah, sistem jenis yang tidak mencukupi, dan pengendalian ralat yang rumit. Bahasa ini menggabungkan banyak ciri-ciri Go yang berjaya termasuk goroutines, garbage collection, channels, dan keupayaan cross-compilation, sambil menambah penambahbaikan seperti union types, generics, pattern matching, dan pengendalian ralat try/catch.
Penambahbaikan Bahasa Berbanding Go:
- Jenis union dan sistem jenis yang komprehensif
- Sokongan generics dari awal
- Pengendalian ralat try/catch berbanding pemeriksaan ralat eksplisit
- Padanan corak dengan kata kunci
match
- Keselamatan nilai null dengan jenis nullable (
string?
) - Interoperabiliti C yang lebih baik
Kontroversi Bahasa Pengaturcaraan Sistem
Perbincangan yang paling hangat berpusat di sekitar klasifikasi Nature sebagai bahasa pengaturcaraan sistem walaupun menggunakan garbage collection. Ahli komuniti telah membangkitkan kebimbangan bahawa terminologi ini digunakan terlalu longgar, berpotensi menghakis makna istilah tersebut. Pengkritik berhujah bahawa mana-mana bahasa dengan garbage collection tidak boleh benar-benar dianggap sesuai untuk pengaturcaraan sistem, terutamanya untuk kernel sistem pengendalian di mana jeda stop-the-world boleh menjadi masalah.
Siapa yang akan menggunakan sistem pengendalian yang tiba-tiba menghentikan seluruh dunia kerana runtime bahasa rawak mahukan mengumpul sampah memorinya?
Pengarang Nature telah mengakui kebimbangan ini dan bersetuju untuk menyesuaikan bahan pemasaran bahasa tersebut. Walau bagaimanapun, mereka mempertahankan penggunaan praktikal bahasa garbage-collected dalam konteks sistem tertentu, memetik pengalaman mereka sendiri menggunakan Go untuk peranti IoT seperti router dan kotak TV yang berjalan pada pelbagai seni bina termasuk RISC-V, MIPS, dan varian ARM.
Seni Bina Teknikal dan Dakwaan Prestasi
Nature membezakan dirinya dengan mengelakkan pergantungan LLVM, sebaliknya mengkompil terus kepada kod mesin platform sasaran. Pilihan reka bentuk ini menjanjikan kelajuan kompilasi yang lebih pantas dan pengendalian ralat yang lebih disesuaikan, mengikuti laluan yang serupa dengan Zig. Bahasa ini kini menyokong Linux dan macOS pada kedua-dua seni bina AMD64 dan ARM64, dengan rancangan untuk menambah sokongan WebAssembly dan RISC-V.
Runtime menggabungkan beberapa ciri yang berfokuskan prestasi yang dipinjam daripada seni bina Go yang terbukti, termasuk pengumpul sampah berprestasi tinggi dengan masa stop-the-world yang singkat, pengalokasi memori yang serupa dengan tcmalloc Google, dan sokongan untuk jutaan pertukaran coroutine sesaat. Bahasa ini juga termasuk libuv terbina dalam untuk mengendalikan gelung acara IO dan mengikuti konvensyen sistem ABI untuk integrasi perpustakaan C secara langsung.
Ciri-ciri Teknikal Utama:
- Tiada kebergantungan LLVM - mengkompil terus kepada kod mesin
- Pengumpul sampah berprestasi tinggi dengan masa STW yang singkat
- Pengalokasi memori yang serupa dengan tcmalloc Google
- Terbina dalam libuv untuk gelung acara IO
- Sokongan untuk berjuta-juta pertukaran coroutine sesaat
- Sokongan kompilasi silang dan pemautan statik
Reka Bentuk Bahasa dan Pembangunan Masa Depan
Sintaks Nature berbeza daripada Go sambil mengekalkan konsep yang biasa. Bahasa ini menyokong jenis nullable dengan sintaks tanda soal, jenis tuple, dan bertujuan untuk menyediakan interoperabiliti C yang lebih baik daripada Go. Terutamanya, bahasa ini kini menggunakan pengekodan ASCII untuk rentetan dan bukannya UTF-8, yang telah menarik kritikan daripada pembangun yang menganggap sokongan Unicode penting untuk bahasa pengaturcaraan moden.
Pengarang mengakui bahawa dia agak tidak berpengalaman dalam reka bentuk bahasa pengaturcaraan dan telah menerima maklum balas komuniti. Rancangan termasuk menambah sokongan enum, menambah baik pengendalian Unicode, dan berpotensi menukar nama bahasa kerana kebimbangan pengoptimuman enjin carian. Projek ini juga menghadapi cabaran praktikal, seperti melaksanakan pemaut platform silang macOS untuk membolehkan sokongan cross-compilation penuh.
Walaupun Nature menunjukkan potensi sebagai alternatif Go dengan ciri yang dipertingkatkan, peringkat awalnya dan perdebatan berterusan mengenai kedudukan menunjukkan ia memerlukan masa untuk matang sebelum mendapat penerimaan yang lebih luas. Perbincangan komuniti menyerlahkan evolusi berterusan kategori bahasa pengaturcaraan dan cabaran yang dihadapi oleh bahasa baru yang cuba mengukir niche mereka dalam bidang yang semakin sesak.
Rujukan: Nature Programming Language