Sebuah bahasa pemrograman baru bernama Nature telah muncul, memposisikan dirinya sebagai alternatif yang terinspirasi Go yang bertujuan mengatasi beberapa keterbatasan Go sambil mempertahankan kekuatannya. Bahasa ini telah mencapai versi awal yang dapat digunakan dengan API sintaks yang stabil, namun klaim pemasarannya telah memicu diskusi signifikan di komunitas tentang apa yang benar-benar merupakan bahasa pemrograman sistem.
Nature diciptakan oleh seorang pengembang yang menggunakan Go setiap hari namun merasa frustrasi dengan sintaksnya yang terlalu sederhana, sistem tipe yang tidak memadai, dan penanganan error yang merepotkan. Bahasa ini menggabungkan banyak fitur sukses Go termasuk goroutines, garbage collection, channels, dan kemampuan cross-compilation, sambil menambahkan perbaikan seperti union types, generics, pattern matching, dan penanganan error try/catch.
Peningkatan Bahasa Dibanding Go:
- Tipe union dan sistem tipe yang komprehensif
- Dukungan generics sejak awal
- Penanganan error try/catch alih-alih pemeriksaan error eksplisit
- Pattern matching dengan kata kunci
match
- Keamanan nilai null dengan tipe nullable (
string?
) - Interoperabilitas C yang lebih baik
Kontroversi Bahasa Pemrograman Sistem
Diskusi paling hangat berpusat pada klasifikasi Nature sebagai bahasa pemrograman sistem meskipun menggunakan garbage collection. Anggota komunitas telah menyuarakan kekhawatiran bahwa terminologi ini digunakan terlalu longgar, berpotensi mengikis makna istilah tersebut. Kritikus berargumen bahwa bahasa apa pun dengan garbage collection tidak dapat benar-benar dianggap cocok untuk pemrograman sistem, terutama untuk kernel sistem operasi di mana jeda stop-the-world bisa menjadi masalah.
Siapa yang akan menggunakan sistem operasi yang tiba-tiba menghentikan seluruh dunia karena runtime bahasa acak ingin mengumpulkan sampah memorinya?
Penulis Nature telah mengakui kekhawatiran ini dan setuju untuk menyesuaikan materi pemasaran bahasa tersebut. Namun, mereka membela penggunaan praktis bahasa dengan garbage collection dalam konteks sistem tertentu, mengutip pengalaman mereka sendiri menggunakan Go untuk perangkat IoT seperti router dan TV box yang berjalan di berbagai arsitektur termasuk RISC-V, MIPS, dan varian ARM.
Arsitektur Teknis dan Klaim Performa
Nature membedakan dirinya dengan menghindari ketergantungan LLVM, alih-alih mengkompilasi langsung ke kode mesin platform target. Pilihan desain ini menjanjikan kecepatan kompilasi yang lebih cepat dan penanganan error yang lebih disesuaikan, mengikuti jalur yang mirip dengan Zig. Bahasa ini saat ini mendukung Linux dan macOS pada arsitektur AMD64 dan ARM64, dengan rencana menambahkan dukungan WebAssembly dan RISC-V.
Runtime menggabungkan beberapa fitur yang berfokus pada performa yang dipinjam dari arsitektur Go yang terbukti, termasuk garbage collector berkinerja tinggi dengan waktu stop-the-world yang singkat, memory allocator yang mirip dengan tcmalloc Google, dan dukungan untuk jutaan perpindahan coroutine per detik. Bahasa ini juga menyertakan libuv bawaan untuk menangani IO event loops dan mengikuti konvensi sistem ABI untuk integrasi langsung pustaka C.
Fitur Teknis Utama:
- Tidak bergantung pada LLVM - kompilasi langsung ke kode mesin
- Garbage collector berperforma tinggi dengan waktu STW yang singkat
- Memory allocator yang mirip dengan tcmalloc milik Google
- Built-in libuv untuk IO event loop
- Dukungan untuk jutaan coroutine switch per detik
- Dukungan cross-compilation dan static linking
Desain Bahasa dan Pengembangan Masa Depan
Sintaks Nature berbeda dari Go sambil mempertahankan konsep yang familiar. Bahasa ini mendukung nullable types dengan sintaks tanda tanya, tuple types, dan bertujuan memberikan interoperabilitas C yang lebih baik daripada Go. Yang patut dicatat, bahasa ini saat ini menggunakan encoding ASCII untuk string daripada UTF-8, yang telah menarik kritik dari pengembang yang menganggap dukungan Unicode penting untuk bahasa pemrograman modern.
Penulis mengakui relatif tidak berpengalaman dalam desain bahasa pemrograman dan telah menerima umpan balik komunitas. Rencana termasuk menambahkan dukungan enum, meningkatkan penanganan Unicode, dan berpotensi mengubah nama bahasa karena masalah optimisasi mesin pencari. Proyek ini juga menghadapi tantangan praktis, seperti mengimplementasikan linker cross-platform macOS untuk memungkinkan dukungan cross-compilation penuh.
Meskipun Nature menunjukkan janji sebagai alternatif Go dengan fitur yang ditingkatkan, tahap awalnya dan perdebatan yang sedang berlangsung tentang positioning menunjukkan bahwa bahasa ini akan membutuhkan waktu untuk matang sebelum mendapat adopsi yang lebih luas. Diskusi komunitas menyoroti evolusi berkelanjutan kategori bahasa pemrograman dan tantangan yang dihadapi bahasa baru yang mencoba mengukir ceruk mereka di bidang yang semakin ramai.
Referensi: Nature Programming Language