V, Alexander Medvednikov tarafından oluşturulan yeni, açık kaynaklı, statik olarak yazılmış bir programlama dilidir. V, bakımı kolay yazılımlar oluşturmak için basit, hızlı ve güvenli olmayı vaat ediyor. Oberon, Swift, Kotlin ve Python dahil olmak üzere birçok dil V’nin tasarımını etkilemiştir.
V, özellikleri ve diğer dillerle karşılaştırması hakkında bilgi edinin.
V İle Yapabileceğiniz Şeyler
V’nin çok fazla gücü var ve onu sistem programlama, web geliştirme ve oyun geliştirme dahil olmak üzere hemen hemen her sektörde kullanabilirsiniz. Dil basit, hızlı ve güvenlidir.
V, oyun geliştirme için çok çeşitli güçlü grafik kitaplıkları sunar. Bunlar, daha gelişmiş 2B/3B uygulamalar için GDI+/Cocoa Drawing ve OpenGL üzerine kuruludur.
V, mobil uygulamalar için yerel GUI araç takımları, Windows için WinAPI/GDI+, macOS için Cocoa ve Linux için özel çizim kullanan bir UI modülüne sahiptir.
V’yi Denemek İçin Nedenler
V yeni bir dil olmasına rağmen, bu avantajlar onu meşru bir seçenek haline getiriyor.
Basitlik
Projenizi oluşturmak için aşağıdakileri çalıştırmanız yeterlidir:
v .
Bir yapı ortamı kurmanız, bir makefile oluşturmanız, başlıkları içe aktarmanız veya bir sanal ortam kurmanız gerekmez. vpm (V paket yöneticisi) aracılığıyla yeni kitaplıklar kurmak istiyorsanız , sadece çalıştırın
v install <package_name>
Emniyet
Varsayılan olarak, V şunları içerir:
değişmez değişkenler
değişmez yapılar
seçenek/sonuç ve zorunlu hata kontrolleri
toplam türleri
jenerikler
değişmez fonksiyon argümanları
ve hayır:
hükümsüz
değişken gölgeleme
tanımsız davranış
global değişkenler (çekirdekler gibi düşük seviyeli uygulamalar için bayrak aracılığıyla etkinleştirilebilir)
Derleme Hızı
Bazı programlama dilleri, yürütme veya derleme açısından diğerlerinden daha hızlıdır. V, C kadar performanslıdır. Bir C arka ucu ile yaklaşık 110 bin loc/s ve yerel ve tcc arka uçları ile yaklaşık 1 milyon loc/s derleme süresine sahiptir. V ayrıca, basit soyutlama içermeyen bir kodlama yaklaşımı sağlamak için gereksiz ayırmalardan da kaçınır.
Hafıza yönetimi
V, Go ve Java gibi dillerden farklı kılan bir çöp toplayıcı kullanmaz. Bunun yerine V, derleme zamanında belleği yönetir, ancak yalnızca temel durumlar için çalışır. Daha karmaşık durumlar için manuel olarak yönetmeniz gerekir.
Kod Stili Tutarlılığı için Biçimlendirme
Aşağıdakileri çalıştırarak V kodunuzu biçimlendirmek ve okunabilirliğini artırmak için vfmt biçimlendiriciyi kullanabilirsiniz :
v fmt -w <your_filename>.v
Dostu Hata Mesajları
V’nin hata mesajları ayrıntılı, bilgilendirici ve yardımcıdır. Bu örneğe bir göz atın:
user.v:8:14: error: `update_user` parameter `user` is mutable, you need to provide `mut`: `update_user(mut user)`
7 | mut user := User{}
8 | update_user(user)
| ~~~~
9 | }
Hata mesajının yardımıyla bu kodu düzeltebilirsiniz:
mut user := User{}
update_user(mut user)
C++ – Go – V: Üç Dilin Karşılaştırılması
Bu örneklerde, belirli programlama kullanım durumlarında C++, Go ve V kodunun nasıl farklılaştığını görebilirsiniz.
Selam Dünya
C++’da:
#include <iostream>
int main() {
std::cout << “Hello World!” << std::endl;
}
Go’da:
package main
import “fmt”
func main() {
fmt.Println(“Hello World!”)
}
V’de:
println(‘Hello World!’)
Bu çok basit programda — “Merhaba Dünya!” metninin yazdırılması — V’nin C++ veya Go’dan çok daha basit olduğunu görebilirsiniz. Bu kadar basit bir program için herhangi bir kitaplığı içe aktarmanıza veya eklemenize gerek yoktur.
Vektör Başlatma
C++’da:
std::vector<int> numbers = {1, 2, 3, 4};
Go’da:
numbers := []int{1, 2, 3, 4}
V’de:
numbers := [1, 2, 3, 4]
Bu kullanım durumunda, V’nin hala diğer ikisinden daha temiz kod ürettiğini görebilirsiniz. Go ve C++ vektörlerinden farklı olarak V, vektörlerinin sabit türde değerler tutmasını gerektirmez.
Vektör Yazdırma
C++’da:
std::copy(numbers.begin(), numbers.end(),
std::ostream_iterator<int>(std::cout, ” “));
std::cout << std::endl;
Go’da:
fmt.Println(numbers)
V’de:
println(numbers)
V’nin println işlevi, tıpkı Go’nun yapabildiği gibi, vektör değişkenini yerel olarak yazdırabilir, ancak ikincisi fmt paketini kullanır. C++ iostream başlık dosyaları benzer işlevsellik sağlar. Yine de, vektörün ayrı ayrı öğelerini yazdırmakla yine de ilgilenmeniz gerekecek.
Dosya Okuma
C++’da:
#include <iostream>
#include <fstream>
int main() {
std::string path = “/etc/hosts”;
std::ifstream f(path);
std::string text;
text.assign(std::istreambuf_iterator<char>(f), {});
if (!f)
std::cerr << “error reading from file” << std::endl;
}
Go’da:
package main
import (
“io/ioutil”
“log”
)
func main() {
path := “/etc/hosts”
b, err := ioutil.ReadFile(path)
if err != nil {
log.Println(err)
return
}
text := string(b)
}
V’de:
import os
path := “/etc/hosts”
text := os.read_file(path) or {
eprintln(err)
return
}
Dosya okuma için V, ortak işletim sistemi/platformdan bağımsız işlevler sağlamak için os modülünü kullanır. Bunlar, komut satırı bağımsız değişkenlerine erişme, dosyaları okuma ve süreçleri işleme gibi görevleri yerine getirir. Bu durumda, yoldaki bir dosyayı okumak ve içeriğini döndürmek istiyoruz, böylece read_file(path) işlevini kullanacaksınız. read_file, verilen yolda mevcut içerik yoksa bir hata döndürür . V’nin diğer modülleri hakkında daha fazla bilgi edinmek istiyorsanız, belgelerine göz atmak isteyebilirsiniz.
V’yi Denemeye Hazır mısınız?
V, henüz gelişiminin ilk aşamalarında olan yeni bir programlama dilidir. Buna rağmen çok fazla güce sahiptir ve hızlı, güvenli, kolay ve bakımı yapılabilir.
V, C++ ve Go’dan daha temiz bir koda sahiptir. Bu, V’nin programcılara temel programlama ilkelerinden birine bağlı kalmalarında yardımcı olabileceğini düşündürmektedir. Peki, V’yi denemeye hazır mısın?