1 - Algoritma ve Programlamaya Giriş

Algoritma, belirli bir problemi çözmek veya belirli bir işi yapmak için atılması gereken adımları (yönlendirilmiş talimatlar) içeren bir reçetedir. Algoritmanın özellikleri:

  • Sonlu adımlardan oluşur (sonsuz döngü değil).
  • Belirli bir başlangıç ve bitişi vardır.
  • Her adım açık ve kesin olmalıdır.
  • Girdiye bağlı olarak çıktı üretir.

Günlük hayattan örnek: Ekmek kızartma algoritması — ekmeği makineye koy, süreyi ayarla, düğmeye bas, hazırsa çıkar.

Aynı problemi farklı algoritmalarla çözebilirsiniz; bazıları daha hızlı, bazıları daha az bellek kullanır. Karmaşık problemleri küçük, anlaşılır parçalara (adımlara) bölmeye yardımcı olur.

Programlama, bir algoritmayı bilgisayarın anlayacağı dile (programlama dili) çevirme işlemidir. Programlama dilleri: Python, C, Java, JavaScript, vb. Her dilin sözdizimi (syntax) farklı olsa da mantık çoğunlukla aynıdır. Bu aşamada derleyici ve yorumlayıcı kavramlarını da açıklamak da fayda var.

Derleyici, yazdığınız programın tamamını bir defada alıp, bilgisayarın anlayacağı dile (makine dili) çeviren yazılımdır.

  • Önce Kaynak kod yazılır.(ör. C, C++)
  • Derleyici tüm kodu baştan sona inceler
  • Hata varsa derleme aşamasında bildirir
  • Hata yoksa çalıştırılabilir bir dosya (.exe gibi) üretir
  • Bu dosya daha sonra defalarca çalıştırılabilir

Günlük hayattan benzetme: Önce kitabın tamamı basılır (derlenir), sonra isteyen herkes kitabı okuyabilir (çalıştırır).

Derleyici kullanan dillere örnek: C, C++, Rust, Go

Avantajları: Çok hızlı çalışır, Performansı yüksektir, Kod gizlidir (kaynak kod dağıtılmaz)

Dezavantajları: Derleme süresi gerekir, Küçük bir değişiklikte tekrar derleme gerekir

Yorumlayıcı, programı satır satır okur, çevirir ve anında çalıştırır.

  • Kaynak kod satırı okunur
  • O satır çevrilir
  • Hemen çalıştırılır
  • Sonraki satıra geçilir

Günlük hayattan benzetme: Canlı çeviri gibi, Konuşma devam ederken çevirmen anında çevirir ve söyler.

Yorumlayıcı kullanan dillere örnek: Python, JavaScript, PHP, Ruby

Avantajları: Öğrenmesi ve denemesi kolay, Anında sonuç görülür, Hızlı geliştirme

Dezavantajları: Derlenmiş dillere göre daha yavaş, Kaynak kod gizlenmez

Bazı diller hem derleyici hem yorumlayıcı özellik taşır. Java, Python gibi