Programlama Dili JavaScript

Genel Bakış

JavaScript, etkileşimli ve dinamik web uygulamaları oluşturmak için öncelikle kullanılan yüksek seviyeli, yorumlanan bir programlama dilidir. HTML ve CSS ile birlikte web geliştirme için temel bir parçadır. Brendan Eich tarafından Netscape'te çalışırken geliştirilen JavaScript, olay odaklı, fonksiyonel ve imperatif programlama stillerini destekleyen çok yönlü bir dil haline gelmiştir. Artık geniş bir ekosisteme sahip web teknolojilerinin ayrılmaz bir parçasıdır; bu ekosistem, en dikkat çekici olanı Node.js olmak üzere birçok çerçeve, kütüphane ve çalışma zamanı ortamını kapsamaktadır.

Tarihsel Açıdan

Oluşum ve Erken Gelişim

JavaScript, 1995 yılında Mocha adıyla yaratılmış, daha sonra LiveScript olarak yeniden adlandırılmış ve sonunda Java'nın popülaritesinden yararlanmak için JavaScript olarak adlandırılmıştır. İlk versiyonu Netscape Navigator 2.0'da yayımlanmış ve geliştiricilerin web sayfalarına dinamik içerik eklemesine olanak tanımıştır. Dil, 1997 yılında Avrupa Bilgisayar Üreticileri Derneği (ECMA) tarafından ECMAScript olarak standartlaştırılmış ve sonraki versiyonlar, yeteneklerini genişleten önemli özellikler sunmuştur.

Evrim ve Standartlaştırma

JavaScript'in evrimi, nesne yönelimli programlama ve asenkron programlama (sözler ve geri çağırmalar) gibi özelliklerin tanıtımını içermektedir. Özellikle, ECMAScript 5 (2009) "katı mod"u, JSON desteği ve geliştirilmiş dizi yöntemlerini tanıtırken, ECMAScript 6 (2015), ES6 veya ECMAScript 2015 olarak da bilinir, ok fonksiyonları, sınıflar ve modüller gibi önemli değişiklikler getirmiştir. ES6'nın yayımlanması, JavaScript'i büyük ölçekli uygulama geliştirme için daha sağlam bir dil haline getiren bir paradigma değişikliğini işaret etmiştir.

Mevcut Durum ve Ekosistem

Bugün, JavaScript web geliştirmede her yerde bulunmaktadır; React, Angular ve Vue.js gibi ön uç çerçeveleri güçlendirirken, Node.js aracılığıyla arka uç geliştirmeyi de desteklemektedir. Dil, her yıl ECMAScript'in yeni sürümleri ile evrimini sürdürmekte ve yeni özellikler ve iyileştirmeler sunmaktadır. JavaScript'in mobil uygulama geliştirme, masaüstü uygulamaları (Electron kullanarak) ve hatta kurumsal düzeyde uygulamalardaki artan kullanımı ile yazılım geliştirme alanındaki önemi ve geçerliliği güçlü kalmaktadır.

Söz Dizimi Özellikleri

Dinamik Tip

JavaScript, değişkenlerin açık bir tip beyanı olmaksızın herhangi bir türde değer tutmasına olanak tanıyan dinamik bir tip dilidir.

let example = "Merhaba, Dünya!";
example = 42; // Hata yok, example tür değiştirebilir

Birinci Sınıf Fonksiyonlar

JavaScript'teki fonksiyonlar birinci sınıf vatandaşlardır; bu, onların değişkenlere atanabileceği, argüman olarak geçirilebileceği ve diğer fonksiyonlardan döndürülebileceği anlamına gelir.

const greet = function(name) {
    return `Merhaba, ${name}`;
};
console.log(greet("Alice")); // Çıktı: Merhaba, Alice

Ok Fonksiyonları

ES6'da tanıtılan ok fonksiyonları, fonksiyon yazmak için daha özlü bir sözdizimi sağlar ve kendi this bağlamlarını bağlamazlar.

const add = (a, b) => a + b;
console.log(add(2, 3)); // Çıktı: 5

Sözler

Sözler, gelecekte mevcut olabilecek bir değeri temsil ederek asenkron programlamayı basitleştirir.

const fetchData = () => {
    return new Promise((resolve, reject) => {
        // bir API çağrısını simüle et
        setTimeout(() => resolve("Veri alındı!"), 1000);
    });
};
fetchData().then(data => console.log(data)); // 1 saniye sonra çıktı: Veri alındı!

Şablon Literalleri

Şablon literalleri, kolay dize interpolasyonu ve çok satırlı dizeler için olanak tanır.

const name = "Alice";
const greeting = `Merhaba, ${name}!`;
console.log(greeting); // Çıktı: Merhaba, Alice!

Yapılandırma Ataması

Yapılandırma ataması, dizilerden veya nesnelerden değerlerin çıkarılmasını basitleştirir.

const person = { name: "Alice", age: 25 };
const { name, age } = person;
console.log(name, age); // Çıktı: Alice 25

Yayılma ve Dinleme Operatörleri

Yayılma operatörü (...), bir yinelemeli yapıdan elemanları genişletmeye olanak tanırken, dinleme operatörü kalan elemanları bir diziye toplar.

const numbers = [1, 2, 3];
const moreNumbers = [...numbers, 4, 5]; // Çıktı: [1, 2, 3, 4, 5]
const sum = (...args) => args.reduce((a, b) => a + b, 0);
console.log(sum(1, 2, 3)); // Çıktı: 6

Sınıflar

JavaScript, ES6'da tanıtılan class sözdizimi ile sınıf tabanlı nesne yönelimli programlamayı destekler.

class Animal {
    constructor(name) {
        this.name = name;
    }
    speak() {
        console.log(`${this.name} ses çıkarıyor.`);
    }
}
const dog = new Animal("Köpek");
dog.speak(); // Çıktı: Köpek ses çıkarıyor.

Modüller

JavaScript, import ve export anahtar kelimelerini kullanan ES6 modülleri aracılığıyla modüler programlamayı destekler.

// module.js
export const name = "Alice";
export function greet() {
    console.log("Merhaba!");
}

// main.js
import { name, greet } from './module.js';
console.log(name); // Çıktı: Alice
greet(); // Çıktı: Merhaba!

Asenkron/Await

Async/await sözdizimi, sözlerle çalışmayı basitleştirir ve asenkron kodun daha senkron görünmesini sağlar.

const fetchData = async () => {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    return data;
};
fetchData().then(data => console.log(data));

Geliştirici Araçları ve Çalışma Zamanları

Çalışma Zamanı Ortamları

JavaScript, V8 (Chrome) ve SpiderMonkey (Firefox) gibi tarayıcı motorlarıyla birlikte çeşitli ortamlarda çalışır. Node.js, JavaScript'in sunucu tarafında çalıştırılmasına olanak tanır ve geliştiricilerin hem istemci hem de sunucu tarafında birleşik bir dil ile tam teşekküllü web uygulamaları oluşturmasını sağlar.

Popüler IDE'ler

JavaScript için yaygın IDE'ler ve kod editörleri arasında Visual Studio Code, WebStorm, Atom ve Sublime Text bulunmaktadır. Bu araçlar, sözdizimi vurgulama, akıllı kod tamamlama ve hata ayıklama desteği gibi özellikler sunar.

Projeleri Oluşturma

JavaScript projesi kurmak için geliştiriciler genellikle bağımlılıkları yönetmek için npm veya yarn gibi paket yöneticileri kullanır. Tipik bir proje yapısı, web arayüzü için bir index.html dosyası, ana JavaScript dosyası (genellikle main.js) ve muhtemelen paketleri yönetmek için bir package.json dosyası içerir.

npm init -y  # Varsayılan ayarlarla yeni bir JavaScript projesi başlatır
npm install express  # Express çerçevesini yükler

JavaScript Uygulamaları

JavaScript, aşağıdakiler de dahil olmak üzere çok sayıda uygulamada kullanılmaktadır:

Diğer Dillerle Karşılaştırma

JavaScript'in ana rakipleri ve alternatifleri şunlardır:

Her dil, bir projenin veya uygulamanın belirli ihtiyaçlarına bağlı olarak kendi güçlü ve zayıf yönlerine sahiptir.

Kaynak-Kaynağa Çeviri İpuçları

JavaScript kodunu diğer dillere veya tersine çevirmek için Babel (modern JavaScript'i eski sürümlere dönüştürmek için) veya TypeScript (tip kontrolü ve JavaScript'e dönüştürme için) gibi araçlar kullanılabilir. jQuery gibi kütüphaneler de farklı ortamlarda DOM manipülasyonu için tutarlı bir API sağlayarak yardımcı olabilir.

Mevcut Kaynak-Kaynağa Kod Çeviri Araçları

Babel ve TypeScript'in yanı sıra, JavaScript kodunu çevirmeye veya dönüştürmeye yardımcı olabilecek diğer araçlar şunlardır: