Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

İ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çeEnglishAçıklama
eğerifKoşul kontrolü
yoksaelseAlternatif durum
ikenwhileDöngü
içinforFor döngüsü
içindeinİçinde operatörü
yapdoBlok başlangıcı
sonendBlok sonu
dönreturnDeğer döndürme
kırbreakDöngüden çık
devamcontinueSonraki iterasyon

Veri Tipleri

TürkçeEnglishAçıklama
sayıintTam sayı
kesirfloatKesirli sayı
mantıkboolBoolean
metinstringString
doğrutrueDoğru değeri
yanlışfalseYanlış değeri
boşnullNull değer

Değişken ve Fonksiyon Tanımlamaları

TürkçeEnglishAçıklama
değişkenletDeğişken tanımlama
sabitconstSabit tanımlama
fonksiyonfunctionFonksiyon tanımlama
yapıstructYapı tanımlama

Modül Sistemi

TürkçeEnglishAçıklama
kullanuseModül kullanımı
içe_aktarimportPaket içe aktarma
dışa_aktarexportDışa aktarma
olarakasTakma 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ı:

  1. Lexer: Hem Türkçe hem İngilizce anahtar kelimeleri tanır
  2. Parser: Her iki dil için aynı AST node'larını oluşturur
  3. Semantic Analyzer: Dil farkı gözetmez
  4. 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