İki Dilli Syntax (Türkçe/İngilizce)
BERK, dünyanın ilk gerçek çift dilli programlama dilidir. Aynı kodu hem Türkçe hem de İngilizce yazabilir, hatta aynı dosyada iki dili karıştırabilirsiniz!
Neden Çift Dilli?
Öğrenme Kolaylığı
Türkçe konuşan yeni başlayanlar, anadillerinde programlama öğrenebilir:
fonksiyon merhaba() yap
yazdır("Merhaba Dünya!")
son
Uluslararası İşbirliği
İngilizce bilen geliştiricilerle kolayca işbirliği yapabilirsiniz:
function hello() do
print("Hello World!")
end
Dil Eşleştirmeleri
Kontrol Yapıları
| Türkçe | English | Açıklama |
|---|---|---|
eğer | if | Koşul kontrolü |
yoksa | else | Alternatif durum |
iken | while | Döngü |
için | for | For döngüsü |
içinde | in | İçinde operatörü |
yap | do | Blok başlangıcı |
son | end | Blok sonu |
dön | return | Değer döndürme |
kır | break | Döngüden çık |
devam | continue | Sonraki iterasyon |
Veri Tipleri
| Türkçe | English | Açıklama |
|---|---|---|
sayı | int | Tam sayı |
kesir | float | Kesirli sayı |
mantık | bool | Boolean |
metin | string | String |
doğru | true | Doğru değeri |
yanlış | false | Yanlış değeri |
boş | null | Null değer |
Değişken ve Fonksiyon Tanımlamaları
| Türkçe | English | Açıklama |
|---|---|---|
değişken | let | Değişken tanımlama |
sabit | const | Sabit tanımlama |
fonksiyon | function | Fonksiyon tanımlama |
yapı | struct | Yapı tanımlama |
Modül Sistemi
| Türkçe | English | Açıklama |
|---|---|---|
kullan | use | Modül kullanımı |
içe_aktar | import | Paket içe aktarma |
dışa_aktar | export | Dışa aktarma |
olarak | as | Takma ad |
Tam Eşdeğerlik
Her iki dil de aynı AST'yi (Abstract Syntax Tree) oluşturur. Yani:
- ✅ Aynı performans
- ✅ Aynı davranış
- ✅ Aynı bytecode
- ✅ Aynı hata mesajları
Karşılaştırmalı Örnekler
Örnek 1: Fibonacci
Türkçe:
fonksiyon fibonacci(n: sayı) -> sayı
yap
eğer n <= 1 yap
dön n
son
dön fibonacci(n-1) + fibonacci(n-2)
son
English:
function fibonacci(n: int) -> int
do
if n <= 1 do
return n
end
return fibonacci(n-1) + fibonacci(n-2)
end
Örnek 2: Sınıf Tanımı
Türkçe:
yapı Kişi yap
isim: metin,
yaş: sayı
son
fonksiyon yeni_kişi(isim: metin, yaş: sayı) -> Kişi
yap
dön Kişi { isim: isim, yaş: yaş }
son
English:
struct Person do
name: string,
age: int
end
function new_person(name: string, age: int) -> Person
do
return Person { name: name, age: age }
end
Örnek 3: Hata Yönetimi
Türkçe:
fonksiyon dosya_oku(yol: metin) -> Sonuç<metin>
yap
eğer yol == "" yap
dön Hata("Boş yol")
son
// Dosyayı oku
dön Tamam(içerik)
son
English:
function read_file(path: string) -> Result<string>
do
if path == "" do
return Error("Empty path")
end
// Read file
return Ok(content)
end
Karışık Kullanım
En güçlü özellik: Aynı dosyada iki dili karıştırabilirsiniz!
// Türkçe fonksiyon
fonksiyon hesapla(x: sayı) -> sayı yap
değişken sonuç = x * 2
dön sonuç
son
// English function
function calculate_advanced(x: int) -> int do
let result = hesapla(x) + 10 // Türkçe fonksiyonu çağırıyoruz
return result
end
// Türkçe ana fonksiyon
fonksiyon ana() yap
değişken değer = calculate_advanced(5) // İngilizce fonksiyonu çağırıyoruz
yazdır(değer)
son
Stil Önerileri
Proje İçinde Tutarlılık
- ✅ Bir proje içinde tek bir dil kullanmak genellikle daha iyidir
- ✅ Takım üyeleriyle anlaşın: Türkçe mi İngilizce mi?
- ⚠️ Karışık kullanım mümkün ama okunabilirlik azalabilir
Kütüphaneler İçin
- ✅ Açık kaynak kütüphaneler genellikle İngilizce yazılmalı
- ✅ Yerel/özel projeler Türkçe yazılabilir
- ✅ API dokümantasyonu her iki dilde sunulabilir
Geriye Uyumluluk
BERK'in gelecek sürümlerinde:
- ✅ Her iki dil de tam olarak desteklenecek
- ✅ Yeni özellikler her iki dilde eklenecek
- ✅ Kod tabanınızı değiştirmeniz gerekmeyecek
IDE Desteği
VS Code eklentisi her iki dili de destekler:
- ✅ Syntax highlighting
- ✅ Otomatik tamamlama
- ✅ Hata kontrolü
- ✅ Kod snippet'leri
- ✅ Hover bilgileri
Derleyici Davranışı
Derleyici aşamaları:
- Lexer: Hem Türkçe hem İngilizce anahtar kelimeleri tanır
- Parser: Her iki dil için aynı AST node'larını oluşturur
- Semantic Analyzer: Dil farkı gözetmez
- Code Generator: Aynı LLVM IR'ı üretir
Türkçe Kod → Lexer → Parser → AST
İngilizce Kod → Lexer → Parser → AST (Aynı!)
↓
Semantic Analysis
↓
Code Gen
↓
LLVM IR
Performans
Sıfır maliyet!
- Hangi dili kullanırsanız kullanın, performans aynıdır
- Derlenmiş kod identiktir
- Runtime'da hiçbir ek yük yoktur
Dil Çevirisi Aracı
BERK CLI ile kod çevirisi yapabilirsiniz:
# Türkçe'den İngilizce'ye
berk-lang convert --to=english dosya.berk -o file.berk
# İngilizce'den Türkçe'ye
berk-lang convert --to=turkish file.berk -o dosya.berk
Gelecek Planları
- 🔮 Otomatik dil algılama
- 🔮 Kod analizi ve dil önerileri
- 🔮 Hata mesajlarında dil tercihi
- 🔮 Dokümantasyon otomatik çevirisi
Topluluk Standartları
Açık Kaynak Projeler
- README hem Türkçe hem İngilizce olmalı
- Kod genellikle İngilizce (uluslararası katkıcılar için)
- Yorum satırları her iki dilde olabilir
Özel/Kurumsal Projeler
- Takımın tercihine göre
- Türkiye'deki şirketler genellikle Türkçe tercih eder
- Uluslararası ekipler İngilizce kullanabilir
Özet
- ✅ Dünyanın ilk gerçek çift dilli programlama dili
- ✅ Tam eşdeğerlik: Aynı AST, aynı performans
- ✅ Aynı dosyada karışık kullanım mümkün
- ✅ IDE tam destek
- ✅ Sıfır performans maliyeti
- ✅ Öğrenme kolaylığı + Uluslararası işbirliği