ISBN 0-321-49362-1 Bölüm1 İlk Bilgiler
ISBN 0-321-49362-1
Bölüm1
İlk Bilgiler
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ
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, aradildeki 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, saftercüme, hibrid (karışım), Tam zamanında.