(V'nin standart kütüphanelerinin dokümantasyonu için bu adresi ziyaret edin https://modules.vlang.io/)
V, sürdürülebilir yazılımlar için tasarlanmış, statik olarak yazılan, derlenmiş bir programlama dilidir.
Go dili ile benzerlikler içerir ve tasarım açısından Oberon, Rust, Swift, Kotlin ve Python'dan etkilenmiştir.
V çok basit bir programlama dilidir. Bu dokümantasyonu bitirmeniz 1 saat civarı sürecek ve dokümantasyonu bitirdiğinizde V programlama dilinin büyük bir kısmını öğrenmiş olacaksınız.
V programlama dili minimum soyutlama ile basit ve temiz kod yazmayı sağlar.
Basit olmasının yanında, V geliştiriciye çok fazla güç verir. Diğer dillerde yapabileceğiniz her şeyi V ile de yapabilirsiniz.
V'nin en son ve en iyi sürümünü indirmenin ana yolu kaynak kodunu indirmektir. Kaynak kodunu indirmek, kolay bir seçenektir ve genelde sadece bir kaç dakikanızı alır.
Kaynak kodunu indirmek için git
'e ve tcc
, gcc
, clang
veya msvc
gibi bir C compiler'a ihtiyacınız var.
git clone https://github.com/vlang/v
cd v
make
Geliştirme araçlarını nasıl indireceğinizi görmek için buraya bakabilirsiniz.
Kaynak kodunu indirmek için git
'e ve tcc
, gcc
, clang
veya msvc
gibi bir C compiler'a ihtiyacınız var.
git clone https://github.com/vlang/v
cd v
make.bat -tcc
Not: -tcc
yerine -gcc
, -msvc
, -clang
gibi başka bir C compiler'da kullanabilirsiniz.
Fakat -tcc
küçük, hızlı ve indirmesi kolaydır.
(V önceden oluşturulmuş binary'yi otomatik olarak indirecektir.)
C compiler'ı yüklemeyi ve daha fazla bilgiyi burada bulabilirsiniz.
Bu klasörü "Ortam Değişkenleri" yoluna eklemeniz önerilir.
Bu işlem v.exe symlink
komutuyla yapılabilir.
Not: Bazı antivirüs programları(Symantec gibi) tek karakterli(v.exe
gibi)
çalıştırılabilir dosyalara karşı paranoyaktır. Bu durumda geçici bir çözüm
v.exe
programını vlang.exe
ye kopyalamaktır (kopya daha yeni olsun diye)
ya da antivirüs programınızdan V dosyasını beyaz listeye alabilirsiniz.
Android cihazlarda V grafik uygulamalarını çalıştırmak vab sayesinde mümkündür.
V Android bağımlılıkları: V, Java JDK >= 8, Android SDK + NDK.
- Bağımlılıkları indirin (vab)
- Android cihazınızı bağlayın
- Run:
git clone https://github.com/vlang/vab && cd vab && v vab.v
./vab --device auto run /path/to/v/examples/sokol/particles
Daha fazla detay ve sorun giderme için, lütfen vab GitHub deposunu ziyaret edin.
fn main() {
println('merhaba dünya')
}
hello.v
adlı bir dosya oluşturun ve bu kod parçasını dosyaya yapıştırın. Sonra bunu yapın: v run hello.v
.
Burada V'yi burada anlatıldığını gibi
v symlink
ile symlinklediğini varsayıyorum. Eğer yapmadıysan manuel olarak V'nin konumunu yazman gerekiyor.
Tebrikler, az önce ilk V programını yazdın!
v hello.v
komutunu çalıştırmadan da programını derleyebilirsin.
v help
yazarak desteklenen tüm komutları görebilirsin.
Yukarıdaki örnekteki gibi, fonksiyonlar fn
kelimesi ile belirtiliyor.
Dönüş tipi fonksiyon isminden sonra belirtilir.
Bu durumda main
hiç bir şey döndürmüyor.
Diğer bir çok programlama dilleri(C, Go ve Rust vb.) main
programının giriş noktası.
Yani program çalıştığında ilk önce main
içindeki kodlar çalışmakta.
println
bir kaç yerleşik fonksiyondan bir tanesi.
Kendisine iletilen değeri çıktıya yazdırır.
Tek dosyalı programlarda fn main()
belirtmenize gerek yoktur.
fn main()
küçük programlar, "scriptler" ve öğrenme sırasında daha kullanışlıdır.
Kısa olması için bu tutorialda fn main()
geçeceğiz.
Bu demek oluyor ki V dilinde "merhaba dünya" yazdırmak şu kadar kolay:
println('merhaba dünya')
Birden fazla ".v" dosyalı bir klasörün olduğunu varsayalım, o dosyaların biri main()
fonksiyonunu içeriyor,
diğerleri ise yardımcı fonksiyonları. Konuya göre düzenlenmiş olabilirler
fakat hala yeniden kullanılabilir modüller olarak yapılandırılmamışlar ve
sen onları tek bir program olarak derlemek istiyorsun.
Diğer dillerde "include"lar veya tüm dosyaları numaralandırmak için bir derleme sistemi kullanmanız, bunları nesne dosyalarına ayrı ayrı derlemeniz ve ardından bunları son bir yürütülebilir dosyaya bağlamanız gerekir.
V'de ise, tüm ".v" dosyalarının tüm klasörünü sadece v run .
yazarak
derleyebilirsin. Geçiş parametrelerini de aynı zamanda çalıştırabilirsin.
Sadece şunu yapman gerekli: v run . --yourparam some_other_stuff
Yukardaki yöntem ilk önce tüm dosyaları tek program altında(senin dosya/klasörünün adıyla) derleyecek, sonra programı CLI parametreleri olarak
belirtilen --yourparam some_other_stuff
ile birlikte çalıştıracaktır.
Programın daha sonra aşağıdaki CLI parametrelerini kullanabilir:
import os
println(os.args)
Not: Başarılı bir çalıştırmadan sonra, V tüm çalıştırılabilir dosyaları silecektir. Eğer dosyaların silinmemesini istiyorsanız v -keepc run .
komutunu kullanın veya v .
komutu ile manuel olarak kopyalayın.
Not: Herhangi bir V derleyici etiketi, run
komutundan önce belirtilmelidir.
Kaynak dosyası/klasöründen sonra olan her şey, direkt olarak programa geçirilecektir.
V tarafından işlenmeyecektir.
// Tek satırlık yorum.
/*
Çok satırlı yorum.
/* İç içe geçmiş olabilir. */
*/
fn main() {
println(add(77, 33))
println(sub(100, 50))
}
fn add(x int, y int) int {
return x + y
}
fn sub(x int, y int) int {
return x - y
}
Yine, tür argümanın adından sonra gelir.
Go ve C dilindeki gibi fonksiyonlar aşırı yüklenemez. Böylece kod daha sade olur ve okunulabilirliği artırır.
Fonksiyonlar, oluşturuldukları yerden önce kullanılabilir:
Yani fonksiyonu satır 200'de oluşturduysanız, satır 100'de
bu fonksiyonu çağırabilirsiniz. Mesela yukardaki örnekte
add
ve sub
, main
'den sonra belirtilmiş ama yine de
add
ve sub
fonksiyonunu main
fonksiyonunda çağırabilirseniz.
Bu V'deki tüm fonksiyon bildirmelerinde geçerlidir ve "header" dosyalarına
olan ihtiyacı ortadan kaldırır.
fn foo() (int, int) {
return 2, 3
}
a, b := foo()
println(a) // 2
println(b) // 3
c, _ := foo() // `_` kullanan değerleri görmezden gelin
pub fn public_function() {
}
fn private_function() {
}
Fonksiyonlar varsayılan olarak "private"dır(dışarıdan erişelemez).
Diğer modüllerde fonksiyonu kullanmak için fonksiyonu belirtirken başına
pub
eklemeniz gerekmektedir. Aynı olay sabit değerler(constants) ve türler içinde
geçerlidir.
Not: pub
sadece adlandırılmış bir modülden kullananılabilir.
Modüller hakkında daha fazla bilgi için Modüller
bölümüne bakın.
name := 'Bob'
age := 20
large_number := i64(9999999999)
println(name)
println(age)
println(large_number)
Değişkenler :=
ile bildirilir. V'de sadece bu yolla değişkenleri belirtebilirsiniz.
Bu yüzden her değişkenin bir başlangıç değeri olur.
Değişkenin türü sağ taraftaki değerden çıkarılır, yani :=
sonrasına göre belirlenir.
Farklı bir tür seçmek için, tür dönüştürmeyi kullanın: T(v) ifadesi, v değerini
T tipine dönüştürür.
Çoğu diğer programlama dillerinin aksine, V sadece fonksiyonlar içinde değişken belirtmeye izin verir. Global değişkenlere izin verilmez. V'de global durum yoktur.
Diğer kod tabanları ile tutarlılık için tüm değişken ve fonksiyon adları
PascalCase
kullanması gereken tür adlarının aksine snake_case
tarzını kullanmalıdır.