31
ISBN 0-321-49362-1 Bölüm1 İlk Bilgiler

Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

ISBN 0-321-49362-1

Bölüm1

İlk Bilgiler

Page 2: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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ı

Page 3: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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.

Page 4: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 5: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Dil değerlendirme kriterleri

• Okunabilirlik

• Yazılabilirlik

• Güvenirlik

• Maliyet

Page 6: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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ı

Page 7: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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ı

Page 8: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 9: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 10: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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?

Page 11: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 12: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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)

Page 13: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

von Neumann Mimarisi

Page 14: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 15: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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)

Page 16: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 17: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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.

Page 18: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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.

Page 19: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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.

Page 20: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 21: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Derleme Süreci

Page 22: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 23: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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.

Page 24: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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)

Page 25: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

SAF Tercüme Süreci

Page 26: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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)

Page 27: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Hibrid İmplementasyonu Süreci

Page 28: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 29: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 30: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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

Page 31: Bölüm1 - staff.emu.edu.tr file• Yapay zeka – Semboller; listeler – LISP, Prolog • Gömülü sistemler • System programcılığı • Gerçek zamanlı sistemler • Web

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.