Ulasan bahasa pemrograman V
- Ini adalah tulisan ulasan yang menguji langsung fitur-fitur yang dipromosikan oleh bahasa V pada tahun 2022, beberapa tahun setelah bahasa V dirilis.
- Fitur-fitur dinilai dengan membaginya ke dalam kategori tidak berfungsi, peringatan, dan berfungsi. Di bawah ini adalah hasil penilaian dari daftar evaluasi tersebut. Contoh kode untuk evaluasi dan dasar penilaiannya semuanya ada di isi utama.
- Daftar di bawah ini diterjemahkan sambil belajar bahasa Inggris, jadi mungkin ada kesalahan fakta. Harap gunakan hanya sebagai referensi.
- Bahasa yang sederhana dan mudah dipelihara.
Keamanan
- Tidak ada null.
- Bahasa V dapat membuat null pointer (referensi V) tanpa error atau peringatan dari kompilator.
- Tidak didukung.
- Tidak ada undefined value.
- Memori yang belum diinisialisasi dapat dibaca tanpa error atau peringatan dari kompilator.
- Tidak didukung.
- Tidak ada undefined behavior.
- Kompilator V tidak mencegah penulisan 3 bentuk UB yang berbeda. UB memang terjadi.
- Tidak didukung.
- Tidak ada variable shadowing (fenomena ketika nama tertutupi saat nama yang sama dibuat di namespace yang berbeda).
- Tidak bisa menutupi variabel lokal.
- Tidak didukung.
- Pemeriksaan batas.
- Ada beberapa pemeriksaan dasar, tetapi bisa dilewati dengan mudah lewat cara sepele.
- Peringatan.
- Variabel konstan secara default.
- Variabel bukan konstanta yang bermakna. Sangat mudah mengubahnya sehingga variabel konstan asli juga berubah dengan menetapkan referensi konstan ke variabel yang dideklarasikan
mut, lalu mengubah variabel tersebut.
- Tidak didukung.
- Fungsi murni secara default.
- Klaim ini tidak bermakna karena mendefinisikan ulang kemurnian menjadi apa yang dimaksud dengan ketidakmurnian.
- (Penulis menunjukkan bahwa dukungan fungsi I/O pada dasarnya tidak bisa tidak bersifat impure, dan dokumen mengatakan semua fungsi selain fungsi I/O adalah pure. Namun ia mengatakan bahwa sejak fungsi-fungsi itu dapat memanggil fungsi I/O, maka fungsi-fungsi tersebut tidak pure. Jadi tampaknya ia mengatakan maknanya menjadi tertutup. Di isi utama ditunjukkan contoh konyol fungsi pure yang mengeluarkan nilai impure.)
- Tidak didukung.
- Struct konstan secara default.
- Sudah dibuktikan di atas bahwa variabel konstan dapat diakali.
- Tidak didukung.
Option dan pemeriksaan error wajib pada nilai hasilnya.
- Sum types (sintaks seperti
type MyType = string | int.)
- Sum types pada umumnya tampak berfungsi, tetapi ada masalah implementasi internal. (Dengan membuat dua
type tambahan, tindakan menjadikan referensi yang dilarang oleh bahasa V sebagai sum types menjadi mungkin.)
- Peringatan.
- Generalisasi (generics)
- Implementasi dasarnya memang ada, tetapi sangat penuh bug dan tampak sepenuhnya jauh dari keamanan dan performa kompilator yang ditekankan sendiri olehnya.
- Tidak didukung.
- Tidak ada variabel global.
- V tidak mencegah pembuatan atau perubahan state yang dibagikan secara global dengan cara apa pun yang bermakna.
- Tidak didukung.
Performa
- Secepat C (kompilator backend utama V menghasilkan kode bahasa C yang dapat dibaca manusia)
- Klaim performa V tampaknya belum terverifikasi.
- Tidak didukung.
- Interoperabilitas C tanpa biaya tambahan
- Alokasi yang diminimalkan
- Klaim subjektif.
- N/A. (Penulis menunjukkan hasil ketika kode V yang mendeklarasikan
int diterjemahkan ke bahasa C, dan pada sisi C hasilnya int tersebut di-malloc.)
- Serialisasi bawaan tanpa runtime reflection
- Dikompilasi menjadi biner native tanpa dependensi apa pun.
- V tampaknya belum mencapai klaim itu, tetapi dalam gagasan umumnya ada sedikit kebenaran bahwa program V relatif mandiri dan kecil.
- Peringatan.
Kompilasi cepat
- V mengompilasi 1 juta baris per detik, dan per inti CPU.
- Kompilator V tidak mendekati tingkat performa yang diklaim. (Bahkan di situs benchmark kompilator V pun hanya sekitar mengompilasi 200 ribu baris V.)
- Tidak didukung.
- V ditulis dengan V, dan dapat mengompilasi dirinya sendiri dalam kurang dari 1 detik.
- Manajemen memori yang inovatif
- Klaim-klaim V tidak didukung dengan baik, dan implementasi yang ada saat ini tidak bisa dijelaskan sebagai inovatif.
- Tidak didukung
1 komentar
Memang sudah diketahui luas bahwa V masih jauh dari siap, dan tulisan ini menjelaskan dengan baik proses pembuktian mengapa demikian. Pilih saja hal yang Anda minati dari daftar, lalu periksa sekali bagaimana hal itu dibuktikan.