Programlama Dilleri ile İmtihanım: BASIC’ten Python’a 15 Yıllık Serüven

İlk kodumu 2010 civarında yazdım. Lise dönemi, bilgisayar dersi, QBasic. Ekranda “Merhaba Dünya” yazdırdığımda hissettiğim o tatmin duygusunu hâlâ hatırlıyorum. O günden bugüne, bir dolu programlama dili denedim. Bazılarıyla ilk günden anlaştım, bazılarıyla aylarca uğraştım, bir kısmıysa hayatıma hiç girmedi bile. Bugün size bu dillerle yaşadığım komik, sinir bozucu ve bazen de gurur verici anılarımı anlatacağım. Belki siz de kendi hikayenizi bulursunuz bu satırlarda.

Konu İçeriği
BASIC: Her Şeyin Başlangıcı
QBasic benim için bir dönüm noktasıydı. Ama o dönem internet hızlı değildi, YouTube yoktu, Stack Overflow yoktu. Öğrenmenin tek yolu okul kitabı ve deneme-yanılma. Bir gün basit bir hesap makinesi yazmaya çalışıyordum. Her şey güzel gidiyordu, toplama çalışıyordu, çıkarma çalışıyordu. Ama çarpma işleminde bir sorun vardı: 5 çarpı 3’ün sonucu 53 çıkıyordu.
Saatlerce kodu inceledim. Sonunda anladım: Değişkenleri sayı olarak değil, metin olarak tanımlamışım. BASIC bana kızmıyordu, sadece istediğini yapıyordu. 5 ve 3’ü yan yana yazmıştım, o da sadık sadık birleştirmişti. Bu hata bana programlamanın en önemli dersini öğretti: Bilgisayar aptal değildir, sizin talimatınızı harfiyen uygular. Yanlış talimat verirseniz, yanlış sonuç alırsınız. Suçlu hep sizsiniz.
C: Pointer Cehennemi
Üniversitede C dersi aldığımda kendimi hazır hissediyordum. BASIC biliyordum, biraz HTML biliyordum, ne kadar zor olabilir ki? İlk hafta: printf, scanf, if-else. Güzel gidiyorum. Üçüncü hafta: pointer’lar.
Pointer kavramını anlamaya çalışırken gerçekten zor anlar yaşadım. “Bir değişkenin adresini tutan bir değişken” ne demek? Neden bir değişkenin adresine ihtiyacım olsun ki? Değeri direkt kullanamaz mıyım? Hocamız “düşünün ki ev var, evin adresi var” diyordu. Ben “ama ben eve gitmek istiyorum, adrese değil” diyordum. Pointer’ları tam olarak anlamam aylarımı aldı. Ama bir kez anladığınızda, başka bir gözle bakmaya başlıyorsunuz kodlara. C’yi sevmeyebilirsiniz ama C sizi bir düşünme biçimine sokar. Bu düşünce biçimi, diğer tüm dillerde işinize yarar.
Java: Her Şey Bir Nesne (Gerçekten Her Şey)
Java ile tanışmam “nesne yönelimli programlama” dersiyle oldu. İlk izlenimim: Neden sadece “Merhaba Dünya” yazdırmak için bir sınıf oluşturmak zorundayım? C’de bir satırdı, burada on satır. public static void main String args… Bu ne demek? Her kelimeyi tek tek öğrendim ama ilk başta hepsi anlamsız bir mantra gibi geliyordu.
Java’nın en sinir bozucu yanı NullPointerException’dır. Her şey çalışıyordur, program derlenir, çalışır ve bam ekranda “NullPointerException” yazar. Hangi değişken null? Nerede? Java size söylemez. “Bir yerlerde null bir şeyi çağırdınız” der ve sizi kendi başınıza bırakır. Stack Overflow‘da en çok sorulan sorulardan biri budur hâlâ. Yıllar sonra bile bazen NullPointerException ile karşılaşıyorum ve hâlâ sinirleniyorum.

Python: İlk Günden Aşk
Python ile tanıştığımda bir şeyler değişmişti. “Bu kadar kolay olmamalı” dedim kendi kendime. Girintiler mi? Süslü parantez yok mu? Satır sonunda noktalı virgül yok mu? İlk Python kodumu yazdığımda, C ve Java’da on satıra yazdığım bir işlemi Python’da üç satıra yazabildiğimi görünce gerçekten şaşırdım.
Ama Python’un da cilveleri var. Bir gün bir script yazıyordum, düzgün çalışıyordu. Sonra bir arkadaşımın bilgisayarında çalıştırdım hata verdi. Neden? Python 2 ile Python 3 arasında fark varmış. print “merhaba” Python 2’de çalışıyor, Python 3’te print(“merhaba”) yazmanız gerekiyor. Bu geçiş dönemi, 2015-2018 arası, Linux dünyasının en büyük baş ağrılarından biriydi. Hangi Python sürümü yüklü? python mı python3 mü? pip mi pip3 mü? Bu sorular beni yıllarca takip etti.
JavaScript: Web’in Kaotik Kalbi
JavaScript’i web geliştirme için öğrenmeye başladığımda, bu dilin ne kadar tuhaf olduğunu kısa sürede fark ettim. İlk şok: 0.1 + 0.2 işleminin sonucu 0.30000000000000004. Evet, yanlış okumadınız. JavaScript’te ondalıklı sayılarla işlem yaparken bu tür sürprizlerle karşılaşıyorsunuz. Kayan nokta hassasiyeti sorunu bu, sadece JavaScript’e değil ama JavaScript’te en çok göze batan bu.
Bir diğer klasik JavaScript sürprizi: typeof null “object” döndürür. Null bir object mi? Değil. Bu, JavaScript’in ilk sürümünden kalan bilinen bir bug’dır ve düzeltilmemiştir çünkü çok fazla kod buna dayanarak yazılmıştır. Düzeltirlerse her şey kırılır. Yani bug bir özellik haline gelmiştir. GitHub‘da “wtfjs” adlı bir repo var, JavaScript’in bu tür tuhaflıklarını toplayan. 35.000’den fazla yıldız almış. Ben her okuduğumda hem gülüyor hem üzülüyorum.
PHP: İnternetin Gizli Kahramanı
PHP’ye ilk web sitemi kurarken başladım. Eskiden Joomla ile uğraşırken, bu cms yeterli diyip uzun süre WordPress e geçmemek için mücadele ettim ama bir arkadaş WP ile site kurmuş bir bakar mısın şöyle böyle sorunlar var dedikten sonra artık WordPress en gözde CMS olarak hayatımda yerini almıştı. WordPress kurulumu, tema düzenlemesi, biraz eklenti yazmak… PHP’ye “ciddi” bir programlama dili olarak bakmıyordum açıkçası. “Sadece web için bir şey” diyordum. Ama ne kadar yanıldığımı sonradan anladım.
PHP’nin en büyük sorunu PR’dır. Herkes PHP’ye güler. “PHP ölü” derler. Ama W3Techs‘in 2025 verilerine göre web sitelerinin %77’si sunucu tarafında PHP kullanmaktadır. WordPress, Facebook’un ilk sürümü, Slack’in ilk API’si hepsi PHP ile yazılmıştır. PHP 8 ile gelen JIT derleyicisi ve tip sistemi iyileştirmeleri, dili ciddi bir şekilde modernleştirmiştir. Ama insanlar hâlâ 2010’daki PHP’yi hatırlayıp gülüyor. Eski alışkanlıklar zor ölür.
Go: Sadelik Güzel Şey
Go dilini öğrenmeye başladığımda “bu da ne” dedim. Basit görünüyor, çok basit. Sınıf yok, kalıtım yok, try-catch yok. Ama bir backend API yazmaya başladığımda anladım ki sadelik aslında bir güç. Go’da yazdığım bir servis, Java’da yazdığım aynı servise göre üç kat daha az satır ve beş kat daha hızlı çalışıyordu.
Go’nun en tuhaf yanı error handling. Go’da exception yoktur. Her fonksiyon bir error döndürür ve siz bunu kontrol edersiniz. İlk başta sinir bozucu: Her satırda “if err != nil” yazıyorsunuz. Ama bir süre sonra anlıyorsunuz ki bu yaklaşım, hataları gizlemiyor, onları görünür kılıyor. Stack Overflow‘un 2025 anketine göre Go, geliştiricilerin en çok öğrenmek istediği diller arasında üçüncü sırada.
Sonuç: Dil Değil, Zihniyet Önemli
On beş yılda öğrendiğim en önemli şey şu: Programlama dili bir araçtır, amaç değil. BASIC’ten Python’a, C’den Go’ya uzanan yolculukta asıl öğrenen benim zihnim oldu. Her dil bambaşka bir düşünme biçimi dayatıyor. C belleği yönetmeyi öğretiyor, Java nesneleri, Python sadeliği, JavaScript asenkronluğu, Go eşzamanlılığı.
Hâlâ yeni diller deniyorum. Rust’a şöyle bir baktım, harika görünüyor ama öğrenme eğrisi dik. TypeScript’i projelere eklemeye başladım, JavaScript’in disiplinli hali gibi. Ama hiçbir dil bana Python’la ilk tanıştığımdaki o heyecanı vermedi. Belki de o heyecan dilde değil, benim o günkü çaylaklığımdaydı. Her neyse, kod yazmaya devam ediyorum. Hâlâ hata yapıyorum, hâlâ Stack Overflow’a bakıyorum, hâlâ gece yarısı “son bir bug’ı düzelteyim” deyip sabaha kadar oturuyorum. Ve hâlâ seviyorum.
Sıkça Sorulan Sorular
İlk programlama dili olarak ne önerirsiniz?
Kişisel deneyimimden: Python. Öğrenme eğrisi yumuşak, topluluk devasa, kaynak bol. Ama amaç önemli: Web istiyorsanız JavaScript, oyun istiyorsanız C#, mobil istiyorsanız Swift veya Kotlin de mantıklı. Önemli olan dille değil, problem çözmekle meşgul olmak.
Kaç dil bilmek gerekiyor?
En az iki: Bir yüksek seviyeli (Python, JavaScript) bir de sistem seviyeli (C, Go, Rust). Bu ikili sizi hem hızlı prototipleme hem de performans odaklı geliştirme yapabilir. Ama üç-dört dili aynı anda aktif kullanmaya çalışmayın, her birinde yüzeysel kalırsınız. Birine derinleşin, diğerlerini ihtiyaca göre öğrenin.
Stack Overflow olmadan kod yazabilir miyim?
Teorik olarak evet, pratikte hayır. Her geliştirici Stack Overflow’a bakar, bu utanılacak bir şey değil. Önemli olan kopyala-yapıştır yapmak değil, anlayarak adapte etmek. GitHub’ın 2025 verilerine göre geliştiricilerin %90’ı haftada en az bir kez Stack Overflow veya benzeri bir platforma başvurmaktadır. Dokümantasyon okumak, kaynak koda bakmak ve denemek de önemlidir ama tek başınıza her şeyi keşfetmek zorunda değilsiniz.
Yapay zekâ kod yazacak, dil öğrenmeye gerek var mı?
Short cevap: Evet, gerekiyor. AI kod yazabilir ama ne yazdığını anlamak, hataları bulmak, mimari kararlar almak ve güvenlik açıklarını tespit etmek için dil bilgisine ihtiyacınız var. AI bir midye, siz bir istiridye. Midye sonucu üretir ama hangi sonucun değerli olduğuna siz karar verirsiniz. GitHub Copilot kullanıyorum ama onsuz yazdığım kodu anlayamıyorsam, onunla yazdığım kodu da kontrol edemem.


