Bölüm 1 Konular
• Programlama Dilleri Kavramlarının
Çalışılma Nedenleri
• Programlama Alanları
• Dil Değelendirme Kriterleri
• Dil Tasarımındaki Etkileri
• Dil Kategorileri
• Dil Tasarımındaki Getiri-Götürü İlişkileri
• Gerçekleştirim Metotları
• Programlama Çevreleri
Programlama Dilleri Kavramlarının
Çalışılma Nedenleri
• Fikirleri ifade ederken yeteneğin artması
• Uygun dillerin seçimi için geliştirilmiş
arka plan
• Yeni dillerin tanınması için yeteneğin
artması
• Gerçekleştirimin anlaşılmasıyla
programlama dilini daha iyi anlama
• Hesaplamaların nasıl yapılacağı
konusunda gelişme
Programlama Alanları
• Bilimsel uygulamalar
– Büyük sayıda noktalı hesaplama yapma
– Fortran
• İş Uygulamaları
– Rapor oluşturma, ondalık sayı ve karakterlerin kullanımı
– COBOL
• Yapay Zeka
– Sayılar yerine semboller kullanılır
– LISP
• Sistem Programlama
– Sürekli kullanım nedeniyle hızlı ve verimli çalışma
gereksinimi
– C
• Web Yazılımı
– Çeşitli diller: markup (örn. XHTML), scripting (örn., PHP),
genel-amaçlı (örn. Java)
Dil Değerlendirme Kriterleri
• Okunabilirlik: Programlar kolay okunabilir
ve anlaşılır olmalı
• Yazılabilirlik: Program oluşturmak için
yazımının kolay olması
• Güvenilebilirlik: teknik şartnamelere
uygunluğu; tanımlara uyması
• Maliyet: son toplam maliyet
Değerlendirme Kriteri:
Okunabilirlik
• Bütünün basitliği
– Yönetilebilir özellikler ve yapılar
– Aynı işi yapan özelliklerin az olması
– Minumum operatör aşırıyüklenmesi
• Dikliği
– Ilkel yapıların küçük sayıdaki yollar ile bir araya getirilerek
birleştirilebilmesi
– Mümkün olan her kombinasyonun yasal olması
• Kontrol ifadeleri
– İyi bilinen kontrol ifadelerinin varlığı(örn., while ifadesi)
• Veri Tipleri ve yapıları
Veri yapılarının tanımlamak için yeterli sayıda kolaylığın olması
• Söz dizim tasarımı
– Tanımlayıcı Biçimleri: Esnek kompozisyon
– Bileşik ifadeleri oluşturmak için özel kelime ve metotların olması
– Biçim ve anlam: kendi-kendini tanıtan yapılar, anlamlı anahtar
kelimeler
Değerlendirme Kriteri: Yazılabilirlik
• Basitlik ve diklik
– Az yapıcının olması, küçük sayıda ilkellerin
olması, bunları birleştirecek kuralların az
olması
• Soyutlama desteği
– Detayları yok sayarak karmaşık yapı ve
işlemlerin tanımlanmasına ve kullanma
yeteneği
• Anlamlılık
– İşlemleri tanımlamak için uygun yolların
olması
– örneğin: for ifadesinin birçok modern dile
katılması
Değerlendirme Kriteri: Güvenilirlik
• Tip kontrolü
– Tip hataları için test etme
• İstisna(Exception) işleme
– Çalışma zamanı hatalarının kesilmesi ve düzeltici
önlemlerin alınması
• Örtüşme
– Aynı bellek bölgesini işaret eden iki Ya da daha fazla farklı
referansın olabilmesi iyi değildir.
• Okunabilirlik ve Yazılabilirlik
– Bir algoritmayı doğal bir şekilde ifade yolları bulunmayan
diller ister istemez doğal olmayan yaklaşımları
kullanacaktır, böylece de okunabilirlik azalacaktır.
Değerlendirme Kriteri: Maliyet
• Dili kullanmak için programcıların eğitimi
• Program yazma (özel uygulamalara
kapalılık)
• Programları derleme
• Programları yürütme
• Dil gerçekleştirme sistemi: özgür
derleyicilerin bulunması ve kullanılabilirliği
• Güvenilirlik: zayıf güvenilirlik yüksek
maliyetlere neden olur
• Programların bakımı
Değerlendirme Kriteri: Diğerleri
• Taşınabilirlik
– Bir programın bir gerçekleştirimden başka bir
gerçekleştirime kolaylıkla taşınabilir olması
• Genellik
– Geniş sahadaki uygulamalara uygulanabilirlik
• İyi tanımlanabilirlik
– Dilin resmi tanımının tam ve kesin olması
Dil Tasarımını Etkileyenler
• Bilgisayar Mimarisi
– Diller von Neumann mimarisi olarak bilinen bir
bilgisayar mimarisi temelinde geliştirilirler.
• Programlama Metodojileri
– Yeni yazılım geliştirme metedojileri(örn, nesneye
yönelik yazılım geliştirme) yeni programlama
paradigmaları ve eklentilerine yol açmıştır.
Bilgisayar Mimarisi Etkisi
• İyi bilinen bilgisayar mimarisi: Von Neumann
• Emirsel(Imperative) diller, von Neumann
bilgisayarlarının kullanılması nedeniyle yaygın
kullanılırlar.
– Veri ve programlar bellekte saklanır
– Bellek işlemciden ayrıdır.
– Talimatlar ve veri bellekten işlemciye gider.
– Emirsel diller için temeller
• Değişkenler bellek hücrelerini modeller.
• Atama ifadeleri veri getirme işini modeller
• İterasyon etkilidir.

Programlama Metodolojileri Etkisi
• 1950 ve 1960 ların başlarında : Basit uygulamalar
vardır ve verimli değildir.
• 1960 ların sonlarında: İnsanların verimlilik ve
etkinliği önemli oldu; okunabilirlik ve daha iyi
kontrol yapıları oluştu
– yapısal programlama
– yukarıdan-aşağı tasarım
• 1970 lerin sonlarında: Süreç yönelimliden veri
yönelimli hale gelmişlerdir
– veri soyutlama
• 1980 lerin ortalarında: Nesne yönelimli
programlama
– Veri soyutlama+ kalıtım+ polymorphism
Dil Kategorileri
• Emirsel(imperative)
– Merkezi özellikleri değişkenler, atama ifadeleri ve döngülerdir
– Örneğin: C, Pascal
• Fonksiyonal(Functional)
– Hesaplama yapmanın temelinde verilen parametrelere
fonksiyonları uygulamaktır
– Örnek: LISP, Scheme
• Mantık(Logic)
– Kural tabanlı (kurallar belirli sıralama olmadan verilir)
– Örnek: Prolog
• Nesneye yönelik (Object-oriented)
– Veri soyutlama, kalıtım,geç bağlama (late binding)
– Örnek: Java, C++
• İşaretleme (Markup )
– Yeni; tam bir programlama dili değillerdir fakat web
dökümanlarındaki bilginin yerleşimini belirtmede kullanılır.
– Örnek: XHTML, XML
Dil Tasarımının Getiri-Götürüsü
• Güvenilirliğe karşı çalıştırma maliyeti
– Örneğin: Java dizi içindeki elemanların tamamına
ulaşımda referansların ve indislerin kontrol edilmesini
talep eder, bu da çalıştırma maliyetini arttırır.
• Okunabilirliğe karşı yazılabilirlik
– Örneğin: APL birçok güçlü operatör yardımıyla oldukça
karmaşık hesaplamaların yapılabilmesine imkan verir
fakar okunabilirlik azalır.
• Yazılabilirliğe (esneklik)karşı güvenilirlik
– Örneğin: C++ işaretçileri güçlüdür ve oldukça esnektir
fakat kullanımı güvenilir değildir.
Gerçekleştirme Metotları
• Derleme(Compilation)
– Programlar makine diline çevrilir.
• Saf yorumlama(Pure Interpretation)
– Programlar yorumlayıcı adlanan başka bir
program tarafından yorumlanır
• Hibrit sistemler
– Derleyici ile yorumlayıcının ortak
kullanımı şeklindedir.
Bilgisayarın katmanlı görünümü
İşletim sistemi ve dil gerçekleştirimi, bir bilgisayarın makine ara yüzünün üstünde
katmanlanmıştır.

Derleme
• Yüksek seviye program(kaynak dil) makine koduna
(makine dili) çevrilir.
• Yavaş çeviri, hızlı çalıştırma
• Derleme süreci birkaç safhadır:
– Sözcüksel analiz(lexical analysis): kaynak programdaki
karakterler sözcüksel birimlere dönüştürülür.
– Sözdizim analizi(syntax analysis): sözcüksel birimler
ayrıştırma ağaçlarına(parse tree) dönüştürülür. Bu ağaçlar
programın söz dizim yapısını temsil eder.
– Anlamsal analiz(Semantics analysis): Ara kod oluşturulur
– Kod üretme: Makine kodu üretilir.

Ek derleme terminolojileri
• Modül yükleme (çalışabilir imaj{executable
image}): kullanıcı ve sistem kodlarının
birlikte kullanılması
• Bağlama ve yükleme(Linking and loading):
sistem programlarının toplanması ve
kullanıcı programına bağlanması süreci