Programlama Dillerine Giriş

Bölüm1
İlk Bilgiler
ISBN 0-321-49362-1
Bölüm 1 Konuları
• Niye Programlama Dilleri prensiplerini
öğreniyoruz?
• Programlama alanları
• Dil değerlendirme kriterleri
• Dit tasarımına etkiler
• Dil kategorileri
• Dil tasarım al-verleri
• Implementasyon yöntemleri
• Programlama ortamları
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Niye Programlama Dilleri
prensiplerini öğreniyoruz?
• Doğru dil seçimi yapmaya yönelik genel
bilgi edinmek için
• Yeni dilleri daha kolay öürenmek için
• Dillerin implementasyonun önemini
anlamak için
• Halihazırda bildiğimiz dilleri daha iyi
kullanmak için.
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Programlama Alanları
• Bilimsel uygulamalar
– Çok sayıda kayan nokta işlemi; dizi kullanımı
– Fortran
• İş uygulamaları
– Rapor üretimi, ondalık sayılar
– COBOL
• Yapay zeka
– Semboller; listeler
– LISP, Prolog
•
•
•
•
Gömülü sistemler
System programcılığı
Gerçek zamanlı sistemler
Web Yazılımları
–
XHTML, PHP, Java
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Dil değerlendirme kriterleri
•
•
•
•
Okunabilirlik
Yazılabilirlik
Güvenirlik
Maliyet
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Değerlendirme Kriteri: Okunabilirlik
•
Sadelik
–
–
Az sayyıda özellik
Bir operatörün birden çok amaç için kullanılmaması
• Az-Öz olma durumu
–
–
•
•
•
Az sayıda basit operator
Birbirleri ile uyumlu
Kontrol yapıları (if-else, while vs.) yeterli olmalı
Veri tipleri ve yapıları yeterli olmalı
Sentaks:
–
Kullanılan anahtar sözcükler anlamlı olmalı
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Değerlendirme Kriteri : Yazılabilirlik
• Sadelik, az-öz durumu
– Az sayıda yapı, az sayıda basit operatör, az sayıda
operatörleri birleştirme yöntemi
• Soyutlama desteği
– Gereksiz detayları saklama
• Güçlü İfade yeteneği
– İşlemleri sıkıntısız bir biçimde belirtebilme
– Önceden tanımlı operatörlerin ve fonksiyonların güçlü ve
yeterli sayıda olması
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Değerlendirme Kriteri : Güvenirlik
• Tip Kontrolü
– Tip hatalarını denetlemeTesting for type errors
• İstisna mekanizması
– Program çalışırken meydana gelen hataları yakala ve gerekli
düzenlemeleri yap
• Çok isimlilik
– Ayni hafıza lokasyonuna birden çok yöntemle erişebilme durumu
• Okunabilirlik ve yazılabilirlik
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Değerlendirme Kriteri : Maliyet
•
•
•
•
•
•
Programcı eğitimi maliyeti
Program yazma maliyeti
Program derleme maliyeti
Program çalıştırma maliyeti
Geliştirme ortamları: Ücretli/ücretsiz
Güvenirlik durumu (kötü güvenirlik, çok
maliyet)
• Program bakımı ve güncellemesi maliyeti
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Diğer Değerlendirme Kriterleri
• Taşınabilirlik
– Bir ortamdan diğer ortama (örneğin işletim
sistemi) kolayca aktarılabilir mi?
• Genel amaçlılık
– Birden çok sahada kullanılabilir mi?
• Tanımlı olma durumu
– Dil formel olarak tanımlandımı? Tanım
eksiksizmidir? Yeterince detaylımıdır?
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Dil tasarımı üzerine etkiler
• Bilgisayar Mimarisi
– Ör: Von Neuman
• Programlama metodolojileri
– Nesne yönelimli, fonksiyonel, mantık, kısıt,
paralel
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Bisgisayar Mimarisi Etkisi
• Bilinen mımari: Von Neumann
• Emir-komuta dilleri en yaygın çünkü bu mimariye
en uyumlu Neumann computers
–
–
–
–
Veri ve programlar hafızada saklanır
Hafıza ve işlemci birbirinden ayrı
İşlemler ve veri hafızadan işlemciye taşınır
Emir-komuta dilleri için uygun yapı
• Değişken = hafıza hücresi
• Atama = Veri aktarılması
• Iterasyon kolay (jump)
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
von Neumann Mimarisi
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
von Neumann Mimarisi
• Getir-Çalıştır döngüsü
Program sayacını ilkle
Sonsuza kadar tekrar et
sayacın gösterdiği komutu getir
sayacı artır
komutu anla
komutu çalıştır
Tekrar sonu
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Programlama Metodolojıleri Etkileri
• 1950lar ve 1960ların ilk yılları: Basit uygulamalar,
makinelerin verimli kullanılması ön planda
• 1960ların son yıllalı: İnsan kaynaklarının verimli
kullanımı ön plana çıktı.
– yapısal programlama
– yukarıdan-aşağı tasarım, adım adım geliştirme
• 1970lerin son yılları: İşelm soyutlamadan veri
soyutlamaya geçiş
• 1980lerin ortaları: Nesne yönelimli programlama
– Veri soyutlama + kalıtım + çok şekillilik (polymorphism)
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Dil Kategorileri
• Emir-komuta
– Değişkenler, atama, iterasyon
– Kapsadıkları dil çeşitleri
• Nesne yönelimli
• scripting
• Görsel
– Örnekler: C, Java, Perl, JavaScript, Visual BASIC .NET, C++
• Fonksiyonel
– Hesaplama yöntemiŞ fonksiyonları parametrelere uygulama
– Örnekler: LISP, Haskell
• Mantık
– Kural tabanlı
– Örnek: Prolog
• İşaretleme/programlama karışımı
– Programlama yapmaya müsait hale getirilen işaretleme dilleri
– Örnekler: JSTL, XSLT
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Dil Tasarım Al-Verleri
• Güvenirlik - maliyet
– Örnek: Dizin endeksleri JAVA dilinde kontrol edilir, bu da
zaman açısından maliyeti artırır.
• Okunabilirlik - yazılabilirlik
- Örnek APL. Birçok operatör kullanarak az kod ile çok iş
yapılabilir, ama yazılan kodun okunması güçtür.
• Yazılabilirlik - güvenirlik
– Örnek C++ işaretçileri.
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Implementasyon Yöntemleri
• Derleme
– Programlar makine diline çevirilir
• Saf Tercüme
– Progamlar tercüman denilen başka bir program tarafından çalıştıtılır
• Karışık implementasyon sistemleri
– Derleyici ile tercüman arasında bir yerde.
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Bilgisayarın Katmanlı Görüntüsü
İşletim sistemi ve dil
implementasyonu
bilgisayarın makine
arayüzü üzerine inşa
edilmiştir.
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Derleme
• Üst seviyeli kaynak kodu makine koduna çevirme
• Çevirme işlemi yavaş, kodun çalışması hızlı
• Derleme aşamaları:
– Sözcük analizi: kaynak koddaki karakterlerin sözcük
birimlerine çevrilmesi
– Sentaks analizi: sözcük birimlerinden programın yapısını
ortaya çıkaran çözümleme ağacı elde edilmesi.
– Anlam analizi: ara kod üretimi
– Kod üretimi: makine kodu üretimi
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Derleme Süreci
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Diğer Derleme Termınolojisi
• Yükleme modülü (çalıştırılabilen görüntü):
kullanıcı ve sistem kodu birlikte
• Bağlama: sistem program ünitelerini
kullanıcı programına bağlama ve bir
yükleme modülü elde etme
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Von Neumann Darboğazı
• Bilgisayarın islemcisi ile hafızası arasındaki
bağlantının hızı bilgisayarın hızını belirler
• Program komutları hızlı, verinin taşınma
hızı yavaş. Taşınma hızı bir darboğaz
oluşturur.
• Bu olayın adı: von Neumann darboğazı.
Bilgisayarların hızını etkileyen en önemli
faktörlerden birisi.
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
SAF Tercume
• Çeviri yok
• Yazılımı kolay
• Yavaş çalışma (derlenmişe göre 100 defaya kadar
daha yavaş)
• Daha çok hafıza ister
• Yüksek seviyeli diller için oldukça pek kullanılmıyor
• Bazı Web yazım dilleri ile önemi arttı (ör:
JavaScript, PHP)
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
SAF Tercüme Süreci
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Hibrid (karma) sistemler
• Derleyici – tercüme edici arası
• Yüksek seviyeli dil ara dile çevrilir, ara
dildeki kod tercüme edilir
• Saf tercümeden daha hızlı
• Örnekler
– Perl
– JAVA (Java Sanal Makinesi - Java Virtual Machine)
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Hibrid İmplementasyonu Süreci
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Tam-zamanında (TZ) implementasyon
Sistemleri
• Önce programları bir ara dile çevir
• Ara dildeki alt programları (fonksiyon/prosedür) ilk
kez çağrıldıklarında makine koduna çevir, makine
kodunu çağır
• Daha sonraki çağırmalarda, tekrar çeviri yapma,
daha önceki çeviriyi kullan
• JAVA ve .NET dilleri için TZ kullanılır
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Ön işlemciler
• Başka bir dosyadan dahil edilme komutları
(makrolar)
• Ön işlemci program derleyiciye verilmeden
devreye girer. Kendine ait komutları
çalıştırır. Dosyayı komutların söylediği
şekilde değiştirir.
• Örnek: C önişlemcisi
– #include, #define
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Programlama Ortamları
• Yazılım geliştirmede kullalılan araçlar topluluğu
• UNIX
– Eski bir işletim sistemi ve araç topluluğu
– Şimdilerde UNIX üzerinde çalışan grafik arayüz ile
kullanııyor (ör : CDE, KDE, or GNOME)
• Netbeans
– JAVA ve diğer diller için entegre geliştirme ortamı
• Microsoft Visual Studio.NET
– Büyük, karmaşık bir görsel geliştirme ortamı
– C#, Visual BASIC.NET, Jscript, J#, C++ dilleri için
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
Özet
• Programlama dilleri prensiplerini öğrenme
sebepleri:
– Değişik yapıları kullanma yeteneğimizi artırmak için
– Kullanacağimiz dilleri daha bilinçli seçebilmek için
– Yeni dilleri daha kolay öğrenebilmek için
• Dil değerlendirme kriterleri:
– Okunabilirlik, yazılabilirlik, güvenirlik, maliyet
• Dil tasarımına etkiler: makine mimarisi ve yazılım
geliştirme metodolojileri
• Ana implementasyon yöntemleri: derleme, saf
tercüme, hibrid (karışım), Tam zamanında.
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ