Programlama Dilleri Haritası — Seviye 0
KAZANIM Bu dersin sonunda: bir dil adı duyduğunda ne olduğunu ve ne için kullanıldığını bilir, basit bir kod parçasına bakıp ne dediğini kabaca okuyabilir, "benim ürünüm hangi dilde, neden?" sorusuna cevap verebilirsin.
Önce beklentiyi doğru kuralım: bu modül sana dil öğretmeyecek — dil tanıtacak ve OKUTACAK. Kodu yapay zekâ yazıyor; senin işin hangi dili göreceğini bilmek, adı geçince tanımak, bir parçasına bakınca "ne yapmaya çalışıyor"u sezmek ve dil seçiminin mantığını denetleyebilmek. Şoför olmak için motor ustası olman gerekmiyor; ama kaputu açınca neye baktığını bilmen gerekiyor.
Programlama dili nedir? Bilgisayara talimat yazmanın grameri. Diller arasındaki fark, insan dilleri arasındaki fark gibi değildir — hepsi aynı bilgisayara emir verir; farkları hangi iş için tasarlandıkları ve çevrelerinde hangi hazır malzeme ekosisteminin biriktiğidir. Dil seçimi bu yüzden zevk değil, ekosistem kararıdır.
Bölüm 1 · Yakın plan: aynı işi dört dilde yaz, karakterlerini gör
Ortak görevimiz şu, bilerek basit: "Elimizde üç ürünün fiyatı var; toplamını bul, ekrana yaz." Aynı işi dört dilde yazıp her satırın Türkçesini vereceğiz — diller böyle karşılaştırınca kişilik kazanır.
JavaScript / TypeScript — web'in ana dili
Neden kullanılır: Tarayıcıda çalışan TEK dil JavaScript'tir — web'de görünen her etkileşim odur; Node.js sayesinde sunucu tarafını (mutfağı) da yazar. TypeScript = JavaScript + tip güvenliği: değişkenlerin ne taşıdığını önceden ilan edersin, build kapısı yanlışları yayından önce yakalar (örnek oturumdaki "Type error: 'baslik' yok" hatası TypeScript'in yakalayışıydı).
Nerelerde kullanırız: Web sitesi/uygulaması, PWA (tarayıcıdan kurulabilen, uygulama gibi davranan web sitesi), ürünlerinin neredeyse tamamı. Referans stack'imiz (Next.js) baştan sona bu dil. Diff'te göreceğin uzantılar: .ts, .tsx, .js.
Nasıl yazılır + yazılanın anlamı:
const fiyatlar: number[] = [120, 45, 80];
const toplam = fiyatlar.reduce((t, f) => t + f, 0);
console.log(`Sepet toplamı: ${toplam} TL`);
- Satır 1: "
fiyatlaradında bir kutu aç, içine bu üç sayıyı koy." (const= sabit kutu;: number[]= TypeScript'in tip ilanı: "bu kutuda yalnız sayı listesi olabilir" — başka şey koymaya kalkarsan build kırılır, işte tip güvenliği bu.) - Satır 2: "Listeyi baştan sona gez, elemanları biriktirerek topla (
reduce= indirgeyerek biriktir), sıfırdan başla, sonucutoplamkutusuna koy." - Satır 3: "Konsola (geliştirici ekranına) şu cümleyi yaz;
${toplam}yerine kutudaki değeri koy."
Python — AI ve otomasyonun dili
Neden kullanılır: Okunabilirlik kralı — kodu neredeyse İngilizce cümle gibidir, bu yüzden bilim insanlarından otomasyoncuya herkesin ortak dili oldu. Asıl gücü ekosisteminde: yapay zekâ/veri dünyasının kütüphaneleri (model eğitimi, veri analizi) önce Python'da yazılır.
Nerelerde kullanırız: AI-ağır işler (model çalıştırma, RAG boru hatları), veri işleme, tek seferlik otomasyon script'leri (bu programın PDF üreticisi ve e-posta okuyucusu birer Python script'i). Web ürününün gövdesinde görmeyebilirsin; ama makine dairesinde hep o var. Uzantı: .py.
Nasıl yazılır + yazılanın anlamı:
fiyatlar = [120, 45, 80]
toplam = sum(fiyatlar)
print(f"Sepet toplamı: {toplam} TL")
- Satır 1: "
fiyatlarkutusuna bu listeyi koy." (Tip ilanı yok — Python rahat kabullenir; hız kazandırır, ama tip hatası ancak çalışırken patlar. TypeScript'le felsefe farkı tam burada.) - Satır 2: "
sum= topla. Hazır fonksiyon; JavaScript'tekireducecambazlığına gerek kalmadı." Python'un karakteri bu: sık işin hazır, kısa bir yolu vardır. - Satır 3: "Ekrana yaz; süslü parantezdeki değeri cümleye göm."
Üç satır — dördü değil. Python'un "az törenli" mizacı: aynı iş, en az seremoniyle.
SQL — veritabanına soru sorma dili
Neden kullanılır: Diğerleri gibi "program akışı" yazmaz; veritabanına soru sorar ve emir verir. 50 yıldır tahtında, çünkü soruyu nasıl bulacağını değil ne istediğini söylersin — gerisini veritabanı çözer.
Nerelerde kullanırız: Verisi olan her ürünün altında. Bizim stack'te Prisma bu dili senin yerine üretir ama raporlama/denetim anlarında ("kaç kullanıcı kaydoldu?") çıplak SQL görürsün.
Nasıl yazılır + yazılanın anlamı:
SELECT SUM(fiyat) AS toplam
FROM siparisler
WHERE musteri_id = 42;
- Satır 1: "Bana
fiyatsütununun toplamını getir, sonucun adıtoplamolsun." - Satır 2: "
siparislertablosundan (arşiv dolabının o çekmecesinden)." - Satır 3: "Ama sadece 42 numaralı müşterinin satırlarını hesaba kat."
Neredeyse İngilizce bir rica cümlesi: select sum... from... where... — SQL'in tüm sırrı bu. Güvenlik notu: kırmızı bölge kelimeleri (ders 2.5) SQL kelimeleridir — DROP (tabloyu yok et), DELETE (satırları sil), TRUNCATE (içini boşalt). SELECT okur, zararsızdır; o üçlü yazar/yıkar.
Java — kurumsal dünyanın temsilcisi
Neden kullanılır: İki sebep: (1) "Bir kez yaz, her yerde çalışsın" — Java kendi taşınabilir motoru (JVM) üstünde koşar, banka sunucusundan karta kadar. (2) Katı disiplin: her şeyin tipi, sınıfı, töreni bellidir — 500 kişilik ekipte kimse kimsenin kutusuna yanlış şey koyamaz. Bu yüzden bankalar, sigortalar, devasa kurumsal sistemler ve (eski nesil) Android onunla yazıldı.
Nerelerde kullanırız: Senin yeni ürünlerinde muhtemelen hiç. Ama kurumsal müşteri entegrasyonlarında ("bizim sistem Java'dır" cümlesi), banka API'lerinin arkasında ve iş ilanlarında sürekli karşına çıkar — tanı diye buradayız.
Nasıl yazılır + yazılanın anlamı:
public class Sepet {
public static void main(String[] args) {
int[] fiyatlar = {120, 45, 80};
int toplam = 0;
for (int f : fiyatlar) { toplam += f; }
System.out.println("Sepet toplamı: " + toplam + " TL");
}
}
- Satır 1-2: Tören kısmı. Java'da kod boşlukta duramaz: önce bir sınıf (
class Sepet), içinde resmî giriş kapısı (main) açılır. Python 3 satırda bitirmişti; Java daha "merhaba" demeden 2 satır protokol ister. Bürokrasi değil, karakter: büyük ekiplerde bu zorunlu düzen kaosu önler. - Satır 3: "
fiyatlarkutusuna tam sayı (int) listesi koy" — tip ilanı zorunlu, TypeScript'teki gibi ama pazarlıksız. - Satır 4-5: "Toplamı sıfırdan başlat; listedeki her
fiçin toplama ekle." (Python'un hazırsum'ı yok; döngüyü elle kurdun — Java açık açık yazdırmayı sever.) - Satır 6: "Ekrana yaz."
Dört dilden çıkan ders
Aynı iş: Python 3 satır, TypeScript 3 satır (tip sigortalı), SQL tek soru cümlesi, Java 7 satır tören. Hiçbiri "daha iyi" değil — mizaçları farklı: Python hız/rahatlık, TypeScript web+sigorta, SQL veri sorgusu, Java kurumsal disiplin. Kod okurken artık şunu seziyorsun: dilin gevezeliği çoğu zaman bilinçli bir güvenlik/ölçek tercihidir.
Bölüm 2 · Tanıman yeten diller (kategori kategori)
Bunları öğrenmeyeceksin; "adı geçince ne olduğunu bilme" düzeyi hedef. Karşılaşma olasılığı senin (web ürünü kuran, AI yöneten) perspektifinden.
Mobil dünya
| Dil | Nedir / ne için | Karşılaşma |
|---|---|---|
| Swift | Apple'ın modern dili — iPhone/iPad/Mac uygulamaları | Orta: native iOS yaptırırsan |
| Objective-C | Swift'ten önceki Apple dili; eski iOS projelerinde yaşar | Düşük: miras kodda |
| Kotlin (listelerde yeni ama bil) | Android'in modern dili — Java'nın o alandaki tahtını devraldı | Orta: native Android'de |
Not: PWA-öncelikli üründe mobil bile çoğunlukla JavaScript'le çözülür; native'e geçince bu ikili devreye girer.
Kurumsal ve web'in diğer emektarları
| Dil | Nedir / ne için | Karşılaşma |
|---|---|---|
| C# | Microsoft'un Java'sı; kurumsal uygulamalar + oyun motoru Unity | Düşük-orta |
| PHP | Web'in emektarı; WordPress (internetin ~%40'ı) bununla yazıldı | Orta: hazır site/eklenti dünyasında |
| Ruby | Bir dönemin startup gözdesi (Shopify, GitHub onunla kuruldu); zarif ama yıldızı soldu | Düşük |
Sistem ve performans dünyası
| Dil | Nedir / ne için | Karşılaşma |
|---|---|---|
| C | Neredeyse her şeyin atası; işletim sistemleri, sürücüler — makineye en yakın okunabilir dil | Düşük: altyapının derinliklerinde |
| C++ | C'nin büyük kardeşi; oyun motorları, tarayıcılar, performans-kritik işler | Düşük |
| Go | Google'ın sade sunucu dili; bulut araçlarının (Docker, Kubernetes) dili | Düşük-orta: altyapı araçlarında |
| Rust (2026'da bil) | C++ gücünde ama bellek-güvenli; sistem yazılımının yükselen yıldızı | Düşük |
| Assembly | Makine diline en yakın katman; insan zor okur — "en dip kat" olduğunu bilmen yeter | Sıfıra yakın |
Veri ve bilim dünyası
| Dil | Nedir / ne için | Karşılaşma |
|---|---|---|
| R | İstatistikçilerin dili; akademik veri analizi | Düşük (Python devraldı) |
| MATLAB | Mühendislik/simülasyon platformu; laboratuvar demirbaşı | Düşük |
| PL/SQL | SQL'in Oracle'a özel, programlanabilir uzantısı | Sıfıra yakın: banka/kurum içi |
Miras (legacy) kanadı
| Dil | Nedir / ne için | Karşılaşma |
|---|---|---|
| Visual Basic / VB.NET | Microsoft'un "herkes yazsın" dilleri; ofis makroları, eski kurum içi uygulamalar | Düşük |
| Delphi / Object Pascal | 90'ların hızlı masaüstü efsanesi; hâlâ dönen eski sistemlerde | Sıfıra yakın |
| Perl | Web'in ilk dönem script dili; yerini Python aldı | Sıfıra yakın |
"Miras" küçümseme değildir — bu dillerdeki sistemler dünyayı hâlâ döndürüyor. Ama YENİ ürün bunlarla başlamaz: bir teklifte yeni işin bu dillerle yapılması öneriliyorsa "neden?" diye sormak için kırmızı bayraktır.
Bölüm 3 · "Peki benim ürünüm hangi dilde yazılmalı?"
Kod bilmeyen ürün sahibinin en rahatlatıcı gerçeği: bu kararı dil düzeyinde vermezsin — çatı düzeyinde verirsin (arac-envanteri Bölüm 1). Next.js'i seçtiğin an dilin TypeScript olmuştur; karar zinciri "iş → çatı → dil" yönünde akar.
Vibe coding'e özel ikinci ilke: AI hangi dilde en az hata yapıyorsa o. JavaScript/TypeScript ve Python, AI'ın eğitim verisinde en bol dillerdir — AI bu ikisinde en isabetli kodu yazar. Nadir bir dil seçmek, en iyi ustanın bilmediği malzemeyle bina yaptırmaktır.
Denetim penceresi. Üç soruya cevap verebiliyorsan mezunsun:
- "Ürünüm hangi dil(ler)de yazılı?" — bilmiyorsan iste: "Bu projede kullanılan dilleri ve her birinin rolünü listele."
- "Bu seçim neden yapılmış; bugün yapılsa yine aynı mı olurdu?"
- Kırmızı bayrak: teklif/projede miras kanadından bir dil YENİ iş için mi öneriliyor?
Mini egzersiz (SANDBOX). Üret: Claude Code'a de ki: "Bölüm 1'deki sepet toplamı işini bir de Go ve PHP ile yaz; her satırın Türkçesini altına ekle." Denetle: iki yeni örneği bu moduldeki dörtlüyle karşılaştır — hangi mizaca benziyorlar?
Kontrol soruları. (1) Dil seçimi neden aslında çatı seçimidir? (2) TypeScript'in JavaScript'e eklediği sigorta nedir? (3) SQL'de hangi kelimeler kırmızı bölgedir? (4) Java'nın "töreni" neyin bedeli/karşılığıdır?
Mentor istemi.
AI Maestro "Programlama Dilleri Haritası" modülünün hocası ol. Önce bana 5 satırlık basit
bir kod göster (dilini söyleme) ve hangi dil olduğunu mizacından tahmin ettir. Sonra
rastgele 8 dil adı say; her biri için "nedir + ne için + karşıma çıkar mı" cevabı
vereyim, değerlendir. Son olarak kendi projemdeki dilleri birlikte çıkaralım. Jargon yok.
Bu konu nerede derinleşiyor? (sarmal harita)
Dil haritası tanıma katmanıydı; diller programda şu noktalarda tekrar karşına çıkacak:
- TypeScript'in tip sigortası → build kapısında iş başında görürsün (2.3); örnek oturumdaki "Type error" vakası birebir budur
- SQL'in kırmızı kelimeleri (DROP/DELETE/TRUNCATE) → veritabanı kırmızı bölge protokolü (2.5) ve terminal renk sistemi
- Python → yerel AI/otomasyon dünyasında fiilen kullanacaksın (4.7 Ollama, AI ürün haritası otomasyon kategorisi)
- "Dil kararı = çatı kararı" ilkesi → araç envanteri Bölüm 1'de gerekçesi, capstone 3. adımda kendi kararın olarak
- "Projemin dili ne?" denetimi → mimari okuma dersinin (2.7) harita çıkarma istemine dahildir
Sıradaki Seviye 0 dosyası: arac-envanteri.md · Sözlüğe dön: kavramlar-seviye-0.md