JAVASCRIPT NEDİR?
1995 yılının Mayıs ayında, Netscape Communications'ın ofislerinde Brendan Eich adında bir mühendise olağanüstü bir görev verildi: tarayıcı içinde çalışacak, HTML'i canlandıracak bir betik dili yaz — hem de on gün içinde. Eich bu süreyi "uykusuz on gün" olarak hatırlar. Ortaya çıkan ilk prototipin adı Mocha'ydı; aynı yıl içinde önce LiveScript'e, ardından pazarlama anlaşmaları sonucu JavaScript'e dönüştü. O on günlük sprintten doğan dil, bugün dünyadaki neredeyse her web sayfasının arkasında çalışıyor. Bu hikâye sadece bir nostalji değil — JavaScript'in tuhaflıklarını, gücünü ve neden bu kadar her yere yayıldığını anlamak için başlangıç noktası.
On Günde Doğan Bir Dil: Mocha'dan JavaScript'e
Netscape Navigator, 1990'ların ortasında web tarayıcılarının kralıydı ve şirket, HTML'in statik doğasını kıracak bir çözüm arıyordu. Yönetim, Java dilini Sun Microsystems ile ortaklık çerçevesinde tarayıcıya gömmeyi planlıyordu; ancak sayfa içine kısa kod parçaları yazmak isteyen tasarımcılar ve amatör geliştiriciler için daha hafif, daha esnek bir dile ihtiyaç vardı. Brendan Eich, Scheme benzeri fonksiyonel bir dil tasarlamak üzere işe alındığında karşısına çıkan kısıtlama netti: dil Java'ya benzemeli, kolay öğrenilmeli ve hemen teslim edilmeliydi.
İsim değişiklikleri dilin kimliğini de şekillendirdi:
- Mocha (Mayıs 1995): İlk prototip, Eich'in 10 günlük sprinti sonunda hayata geçti.
- LiveScript (Eylül 1995): Netscape Navigator 2.0 beta sürümünde bu adla tanıtıldı.
- JavaScript (Aralık 1995): Sun Microsystems ile yapılan pazarlama anlaşmasıyla son adını aldı — bu isim, Java'nın popülerliğinden faydalanma kararıydı.
İronik olan şuydu: Java ile JavaScript arasında, isim benzerliği dışında neredeyse hiçbir teknik akrabalık yoktu. Bu karışıklık, yıllarca süren bir yanlış anlama dalgasının kaynağı oldu.

JavaScript Aslında Ne Yapar?
JavaScript, başlangıçta sadece tarayıcı içinde çalışan bir dildi: bir formun boş bırakılıp bırakılmadığını kontrol etmek, bir butona tıklandığında metin değiştirmek, açılır menüler oluşturmak gibi küçük etkileşimler için yazılırdı. Bugün ise dilin çalışma alanı çok daha geniş:
- İstemci tarafı (client-side): Tarayıcıda DOM manipülasyonu, animasyonlar, form doğrulama, tek sayfa uygulamalar (SPA).
- Sunucu tarafı (server-side): Node.js sayesinde API'ler, web sunucuları, gerçek zamanlı uygulamalar.
- Mobil uygulama geliştirme: React Native, Ionic gibi araçlarla iOS ve Android uygulamaları.
- Masaüstü uygulamaları: Electron framework'ü ile VS Code, Slack, Discord gibi uygulamalar.
- Gömülü sistemler ve IoT: Espruino, Johnny-Five gibi platformlarla donanım kontrolü.
Tek bir dilin bu kadar geniş alana yayılması, modern yazılım tarihinde nadir rastlanan bir durum. Dilin temellerini öğrenmek isteyenler için hazırlanmış JavaScript eğitimi içeriklerinden yararlanabilirsiniz.
Dilin Teknik Karakteri: Neden Bu Kadar Esnek?
JavaScript, dinamik tip sistemine sahip, yorumlanan (interpreted) bir dildir. Bu, bir değişkenin türünün çalışma zamanında belirlendiği anlamına gelir; bir değişken önce sayı tutarken sonra bir metin saklayabilir. Eich'in 10 günde Scheme ve Self dillerinden esinlenerek tasarladığı dil, prototip tabanlı nesne yönelimi gibi alışılmadık özellikler de getirdi.
Dilin temel özellikleri:
- First-class functions: Fonksiyonlar değişkenlere atanabilir, başka fonksiyonlara parametre olarak verilebilir.
- Prototip tabanlı miras: Sınıf yerine prototip zinciri üzerinden nesne yapılandırması.
- Olay tabanlı (event-driven) yapı: Asenkron operasyonlar için doğal destek — callback, Promise, async/await.
- Otomatik bellek yönetimi: Çöp toplayıcı (garbage collector) sayesinde manuel bellek yönetimine gerek yok.
- Loose typing: Tip dönüşümleri otomatik yapılır — bu hem güç hem de hata kaynağıdır.
ECMAScript Standardı ve Modern JavaScript
1996 yılında Netscape, dili Ecma International'a teslim ederek standartlaştırma sürecini başlattı. 1997'de ECMA-262 standardı yayımlandı ve dilin resmi adı "ECMAScript" oldu. JavaScript, bu standardın en yaygın uygulamasıdır. Yıllar içinde yayımlanan başlıca sürümler:
- ES3 (1999): Düzenli ifadeler, try/catch, daha iyi string yönetimi.
- ES5 (2009): JSON desteği, strict mode, dizi metodları (map, filter, reduce).
- ES6 / ES2015: let/const, arrow fonksiyonlar, sınıflar, modüller, Promise — dilin modern dönemi.
- ES2017+: async/await, opsiyonel zincirleme, nullish coalescing gibi yıllık eklemeler.
JavaScript'in Yaygınlık Sırrı
JavaScript'in başarısı, bir tasarım üstünlüğünden değil, doğru zamanda doğru yerde olmasından geliyordu. Tarayıcıda çalışan tek dil olması, ona zorunlu bir tekel pozisyonu kazandırdı. Node.js'in 2009'da çıkışıyla aynı dil sunucuda da çalışmaya başladı ve "full-stack JavaScript" kavramı doğdu. Bugün npm üzerinde 2 milyondan fazla paket bulunuyor — bu, herhangi bir dil ekosistemindeki en büyük paket arşivi. Dilin sözdizimini, yerleşik API'leri ve tarayıcı davranışlarını derinlemesine inceleyen ayrıntılı referans dokümantasyonu üzerinden her sürümün getirdiği yeniliklere de ulaşmak mümkün.

Eich'in Mirası: Mükemmel Olmayan Ama Vazgeçilemeyen
Brendan Eich, yıllar sonra yaptığı söyleşilerde dile dair pişmanlıklarını da paylaştı: tip karşılaştırmalarındaki tutarsızlıklar (`==` vs `===`), `null` ve `undefined` ikiliği, `this` anahtar kelimesinin bağlam değiştirmesi gibi konular eleştiri konusu oldu. Ancak Eich'in savunması netti: "On gün vardı. On günde mükemmel dil tasarlanmaz, sadece çalışan bir dil tasarlanır." JavaScript'in tuhaflıkları, dilin oluşum koşullarının doğrudan yansımasıdır.
TypeScript, Babel, Webpack gibi araçlar yıllar içinde dilin eksiklerini tamamladı; ancak temel dil hâlâ Eich'in 10 günlük emeğinin DNA'sını taşıyor. JavaScript hakkında daha derin bilgi edinmek için JavaScript eğitim içeriklerini inceleyebilirsiniz.
1995'te bir tarayıcıya animasyon eklemek için yazılmış bu dil, bugün uçaktaki eğlence sistemlerinden uzay aracı kontrol panellerine kadar her yerde çalışıyor. Eich'in on günlük sprinti, modern web'in temelini attı — ve muhtemelen daha onlarca yıl bu temelin üzerine inşa etmeye devam edeceğiz.



