10 poin oleh ffdd270 2022-06-23 | 1 komentar | Bagikan ke WhatsApp

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.
    • Klaim subjektif.
    • N/A

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.
    • Berfungsi sesuai iklan.
  • 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
    • Berfungsi sesuai iklan.
  • 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
    • Berfungsi sesuai iklan.
  • 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.
    • Berfungsi sesuai iklan.
  • 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

 
ffdd270 2022-06-23

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.