V bahasa pengaturcaraan sumber terbuka

Diterjemah ke dalam kategori penyusun terbuka untuk bahasa V. V ialah bahasa yang disusun mesin ditaip secara statik yang memfokuskan untuk menjadikan pembangunan lebih mudah untuk diselenggara dan sangat cepat untuk disusun. Kod pengkompil, perpustakaan dan alatan yang berkaitan ia terbuka di bawah lesen MIT.

Sintaks V sangat serupa dengan Go, meminjam beberapa binaan daripada Oberon, Rust, dan Swift. Bahasa ini dipermudahkan sebanyak mungkin dan, menurut pembangun, 30 minit belajar sudah cukup untuk mempelajari asas-asas dokumentasi. Pada masa yang sama, bahasa itu kekal agak berkuasa dan boleh digunakan untuk melaksanakan tugas yang sama seperti semasa menggunakan bahasa pengaturcaraan lain (contohnya, perpustakaan tersedia untuk grafik 2D/3D, mencipta GUI dan aplikasi web).

Penciptaan bahasa baharu didorong oleh keinginan untuk mencapai gabungan kesederhanaan sintaks bahasa Go, kelajuan penyusunan, kemudahan penyelarasan operasi, mudah alih dan kebolehselenggaraan kod dengan prestasi C/C++, keselamatan Rust dan penjanaan kod mesin pada peringkat penyusunan Zig. Saya juga ingin mendapatkan pengkompil padat dan pantas yang boleh berfungsi tanpa kebergantungan luaran, menyingkirkan skop global (pembolehubah global) dan memberikan keupayaan untuk "panas" memuat semula kod.

Berbanding dengan C++, bahasa baharu ini jauh lebih mudah, menyediakan kelajuan kompilasi yang lebih pantas (sehingga 400 kali ganda), mengamalkan teknik pengaturcaraan yang selamat, bebas daripada masalah dengan tingkah laku yang tidak ditentukan dan menyediakan alatan terbina dalam untuk operasi selari. Berbanding dengan Python, V lebih pantas, lebih ringkas, lebih selamat dan lebih boleh diselenggara. Berbanding dengan Go, V tidak mempunyai pembolehubah global, tiada nol, semua nilai pembolehubah mesti sentiasa ditakrifkan, semua objek tidak boleh diubah secara lalai, hanya satu jenis tugasan disokong (β€œa := 0”), yang jauh lebih padat masa jalan dan saiz fail boleh laku yang terhasil, kehadiran mudah alih langsung daripada C, ketiadaan pemungut sampah, siri yang lebih pantas, keupayaan untuk menginterpolasi rentetan (β€œprintln('$foo: $bar.baz')”).

fn utama() {
kawasan := ['permainan', 'web', 'alat', 'sains', 'sistem', 'GUI', 'mudah alih'] a := 10
jika benar {
kepada := 20
}
untuk kawasan di kawasan {
println('Hello, $area developers!')
}
}

Ciri-ciri Projek:

  • Pengkompil padat dan pantas, yang bersama-sama dengan perpustakaan standard mengambil kira-kira 400 KB. Kelajuan kompilasi tinggi dicapai melalui penjanaan langsung kod mesin dan modulariti. Kelajuan penyusunan adalah kira-kira 1.2 juta baris kod sesaat pada satu teras CPU (diperhatikan bahawa semasa operasi V boleh menggunakan C, maka kelajuan menurun kepada 100 ribu baris sesaat). Pemasangan sendiri pengkompil, yang juga ditulis dalam bahasa V (terdapat juga versi rujukan dalam Go), mengambil masa kira-kira 0.4 saat. Menjelang akhir tahun, kerja pada pengoptimuman tambahan dijangka selesai, yang akan mengurangkan masa binaan pengkompil kepada 0.15 saat. Berdasarkan ujian yang dijalankan oleh pembangun, pemasangan sendiri Go memerlukan 512 MB ruang cakera dan berjalan dalam satu setengah minit, Rust memerlukan 30 GB dan 45 minit, GCC - 8 GB dan 50 minit, Clang - 90 GB dan 25 minit,
    Swift - 70 GB dan 90 minit;

  • Program disusun ke dalam fail boleh laku tanpa kebergantungan luaran. Saiz fail boleh laku pelayan http mudah selepas pemasangan hanya 65 KB;
  • Prestasi aplikasi yang disusun berada pada tahap pemasangan program C;
  • Keupayaan untuk berinteraksi dengan lancar dengan kod C, tanpa overhed tambahan. Fungsi dalam bahasa C boleh dipanggil dari kod dalam bahasa V, dan sebaliknya, kod dalam bahasa V boleh dipanggil dalam mana-mana bahasa yang serasi dengan C;
  • Sokongan untuk menterjemah projek C/C++ ke dalam perwakilan dalam bahasa V. Penghurai daripada Clang digunakan untuk terjemahan. Tidak semua ciri standard C disokong lagi, tetapi keupayaan semasa penterjemah sudah mencukupi untuk terjemahan dalam bahasa permainan V DOOM. Penterjemah C++ masih di peringkat awal pembangunan;
  • Sokongan bersiri terbina dalam, tanpa terikat dengan masa jalan;
  • Meminimumkan operasi peruntukan memori;
  • Memastikan keselamatan: tiada NULL, pembolehubah global, nilai yang tidak ditentukan dan definisi semula pembolehubah. Pemeriksaan larian penimbal terbina dalam. Sokongan untuk fungsi generik (Generik). Objek dan struktur yang tidak boleh diubah secara lalai;
  • Kemungkinan muat semula kod "panas" (mencerminkan perubahan dalam kod dengan cepat tanpa penyusunan semula);
  • Alat untuk memastikan multithreading. Sama seperti dalam bahasa Go, binaan seperti "run foo()" digunakan untuk memulakan urutan pelaksanaan baharu (serupa dengan "go foo()"). Pada masa hadapan, sokongan untuk goroutine dan penjadual benang dirancang;
  • Sokongan untuk Windows, macOS, Linux, *sistem pengendalian BSD. Ia dirancang untuk menambah sokongan untuk Android dan iOS menjelang akhir tahun ini;
  • Pengurusan memori pada masa penyusunan (seperti dalam Rust), tanpa menggunakan pemungut sampah;
  • Ketersediaan kit alat berbilang platform untuk output grafik, menggunakan GDI+/Cocoa dan OpenGL untuk pemaparan (sokongan untuk DirectX, Vulkan dan API Metal dirancang). Terdapat alat untuk bekerja dengan objek 3D, animasi rangka dan kawalan kamera;
  • Ketersediaan perpustakaan untuk menjana antara muka grafik dengan elemen reka bentuk asli untuk setiap OS. Windows menggunakan WinAPI/GDI+, macOS menggunakan Cocoa dan Linux menggunakan set widgetnya sendiri. Perpustakaan telah pun digunakan dalam pembangunan Volt β€” pelanggan untuk Slack, Skype, Gmail, Twitter dan Facebook;

    Rancangannya adalah untuk mencipta aplikasi reka bentuk antara muka seperti Delphi, menyediakan API pengisytiharan yang serupa dengan SwiftUI dan React Native, dan menyediakan sokongan untuk mencipta aplikasi mudah alih untuk iOS dan Android;

    V bahasa pengaturcaraan sumber terbuka

  • Ketersediaan rangka kerja web terbina dalam, yang digunakan untuk mencipta tapak web, forum dan blog untuk pembangun projek. Prapengumpulan templat HTML disokong, tanpa memprosesnya pada setiap permintaan;
  • Sokongan kompilasi silang. Untuk membina fail boleh laku untuk Windows, cuma jalankan "v -os windows", dan untuk Linux - "v -os linux" (sokongan kompilasi silang untuk macOS dijangka kemudian). Kompilasi silang juga berfungsi untuk aplikasi grafik;
  • Pengurus pergantungan terbina dalam, pengurus pakej dan alatan binaan. Untuk membina program, hanya jalankan "v.", tanpa menggunakan make atau utiliti luaran. Untuk memasang perpustakaan tambahan, jalankan sahaja, sebagai contoh, "v get sqlite";
  • Ketersediaan pemalam untuk pembangunan dalam bahasa V dalam editor Kod VS ΠΈ Vim.

Pembangunan dipersepsikan komuniti dengan kesangsian, memandangkan kod yang diterbitkan menunjukkan bahawa tidak semua keupayaan yang diisytiharkan masih belum dilaksanakan dan jumlah kerja yang sangat besar diperlukan untuk melaksanakan semua rancangan.
Di samping itu, pada mulanya repositori mempunyai ditempatkan kod rosak yang mempunyai masalah dengan pemasangan dan pelaksanaan. Diandaikan bahawa pengarang masih belum mencapai tahap di mana mereka mula perasan Undang-undang Pareto, mengikut mana 20% daripada usaha menghasilkan 80% daripada hasil, dan baki 80% daripada usaha menghasilkan hanya 20% daripada hasil.

Sementara itu, penjejak pepijat Project V mempunyai kira-kira 10 siaran dialih keluar demonstrasi kod kualiti rendah, sebagai contoh, menunjukkan penggunaan sisipan C dan penggunaan dalam perpustakaan fungsi untuk memadam direktori arahan rm melalui panggilan os.system("rm -rf $path"). Pengarang projek berkatabahawa dia hanya memadam mesej, diterbitkan troll (dengan perubahan yang mengesahkan kesahihan kritikan, tinggal Π² mengedit sejarah).

Sumber: opennet.ru

Tambah komen