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Ü
© Copyright 2024 Paperzz