Tarihçe
Transkript
Tarihçe
Bölüm 2 Ana programlama dilerinin evrimi ISBN 0-321-49362-1 Bölüm 2 Konuları • Minimal donanım programlaması: Kodumsular (Pseudocodes) • Bilim adamları ve mühendisler: Fortran • Fonksiyonel Programlama: LISP • Algoritma paylaşımı: ALGOL • İş dünyası: COBOL • Basit bir dil: BASIC Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-2 Bölüm 2 Konuları (devam) • • • • • İki dinamik dil: APL ve SNOBOL Veri soyutlamanın başlangıcı: SIMULA 67 ALGOL türevi bazı diller Mantık Programlaması: Prolog Güvenli bir dil: Ada Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-3 Bölüm 2 Konuları (devam) • Nesne yönelimli programlama: Smalltalk • Komutlu (Impertive) / nesne yönelimli birleşimi: C++ • Akıllı Cihazların dili: Java • Skript dilleri: JavaScript, PHP, Python, Ruby • JAVA kuzeni: C# • İşaretleme/Programlama Hibrid (Karma) Dilleri Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-4 Dillerin soy ağacı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-5 Donanım Programlaması: Kodumsular (Pseudocodes) • Makine kodu neden kötü? – – – – Okunabilirliği zayıf Değiştirilebilirliği zayıfPoor modifiability Ifade yazımı sıkıcı Makine eksiklikleri: endeksleme ve kayan nokta yok Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-6 Kodumsular: Kısa Kod – İfadeler soldan sağa kodlanırdı – Örnekler: 01 – 06 abs value 1n (n+2)nd power 02 ) 07 + 03 = 08 pause 04 / 09 ( Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 2n (n+2)nd root 4n if <= n 58 print and tab 1-7 Fortran 90 • Özellikler – – – – – – Modüller Dinamik diziler İşaretçiler Özyineleme CASE komutu Parametre tip kontrolü Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-8 Fortran Değerlendirmesi • Biliminsanların / mühendislerin kullandığı dil • Eniyileyen derleyiciler – Değişkenlerin tipi ve yeri çalışma öncesi belli • Bilişim dünyasının ortak dili Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-9 Fonksiyonel Programlama: LISP • LISt Processing (Liste İşleme) dili – MITde by McCarthy tarafından tasarlandı • Yapay zeka araştırmalarının aşağıdakileri yapabilen bir dile ihtiyacı vardı – Dizler yerine, listeler içinde veriyi işlemek – Sayısal yerine sembolik hesaplama • Sadece iki veri tipi var: atomlar ve and listeler • Sentaks lambda calculus tan esinlendi Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-10 İki tane LISP Listesi dahili temsili (A B C D) (A (B C) D (E (F G))) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-11 LISP Değerlendirmesi • Fonksiyonel programlamanın öncüsü – Değişken ve atama yok – Kontrol sadece özyineleme ve şartlı ifadelerle • Yapay zekanın önde gelen dillerinden (diğerleri: Prolog ve türevleri) • COMMON LISP ve Scheme are LISPin güncey versiyonları • Modern fonksiyonel diller: ML, Miranda, ve Haskell Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-12 Scheme • • • • • MITde 1970 lerde geliştirildi Küçük Statik kapsam (static scoping) Fonksiyonlar birinci sınıf varlık Basit sentaks, eğitim için ideal Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-13 ALGOL 60 • Başarılar – 20 yıl boyunca algoritma yayınlamanın yolu – Sonraki buyurucu (imperative) diller hep ondan esinlendi – İlk makine-bağımsız dil – BNF ile sentaksı resmen belirlenen ilk dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-14 ALGOL 60 (devam) • Başarısızlıklar – Yaygın bir şekilde kullanılmadı – Sebepler • Girdi/çıktı eksikliği programları taşınamaz yaptı • Çok esnek – implementasyonu zor • Fortranın yaygın kullanımı ve insanların değişmek istememesi • Resmi sentaks tanımı • IBM desteği olmaması Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-15 COBOL • Ticaret dili • Tasarım amaçları – – – – Basit İngilizceye benzemeli Kullanması kolay olmalı Bilgisayar kullanıcıları sayısını artırmaya yardımcı olmalı Derleyici teknolojisi ile sınırlu olmamamlı • Tasarım komitesindekiler: bilgisayar üreticileri ve Savunma bakanlığı temsilcileri Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-16 COBOL Değerlendirmesi • Katkıları – – – – – İlk kez üst seviyeli bir dilde makro özelliği Hiyerarşik veri yapıları İçiçe seçme komutları 30 karaktere kadar uzun isimler Ayrı veri bölümü Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-17 COBOL: Savunma bakanlığı etkisi • ABD Savunma bakanlığının zorunlu kıldığı ilk dil • Hala daha ticari uygulamalarda en yaygın olarak kullanılan dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-18 BASIC • Tasarlayıcılar: Kemeny & Kurtz (Dartmouth) • Tasarım amaçları: – – – – Bilim öğrencisi olmayanların öğrenmesi kolay Dostça olmalı Programlar hızlı yazılabilmeli Kullanıcı zamanı bilgisayar zamnından daha önemli • Şimdiki popüler verisyonu: Visual BASIC • Zaman paylaşımı ile yaygın olarak kullanılan ilk dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-19 İki dinamik dil: APL and SNOBOL • Özellikleri: dinamik tipleme, dinamik hafıza ayırımı • Değişkenler tipsiz – Değişkenlerin tipi içlerindeki değerden gelir • Değişkene değer atandığı vakit değişkene hafıza ayrılır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-20 APL: A programlama • Designed by Ken Iverson around 1960 – Ifade gücü yüksek (operatör sayısı çok) – Programlari okuması zor • • • • “Dizi yönelimli” programlama dili Tek satırlık programlar Hala daha kullanımda Örnek program: Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-21 SNOBOL • String işleme dili. Mucidi: Farber, Griswold, ve Polensky, Bell Labbs, 1964 • Güçlü string eşleme operatörleri • Diğer dillere göre daha yavaş • Hala daha bazı metin işleme gerektiren yerlerde kullanılıyor. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-22 Veri soyutlamanın başlangıcı: SIMULA 67 • Sistem benzetimi (simulasyonu) için Nygaard and Dahl tarafından Norveçte tasarlandı • ALGOL 60 ve SIMULA I den esinlendi • Ana katkıları – Korutinler – bir tür alt program – Sınıflar, nesneler, kalıtım Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-23 Pascal - 1971 • Wirth tarafından geliştirildi • Yapısal programlamayı öğretmek için tasarlandı • Küçük, basit, çok yenilik içermiyor • En büyük etkisi programlama öğretimine – 1975-2000 arasında programala öğretimi için kullanılan en yaygın dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-24 C - 1972 • Dennis Richie tarafında sistem programlaması için tasarlandı (Bell Labs) • BCLP, B, ve ALGOL 68 dillerinden evrimleşti • Güçlü operatör kümesi • Zayıf tip kontorlü • UNIXin yazılım dili • UNIX aracılığı ile yaygınlaştı • Birçok kullanım alanı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-25 Perl • Skript dili – İşletim sistemi komutlarını üst düzeyli olarak çalıştırır – Diğer örnekler: sh, awk, tcl/tk • Geliştirici: Larry Wall • Perl değişkenleri statik tipli, dolaylı olarak tanımlanır – Üç tane “isim uzayı”. Değişkenin ilk harfine göre bağlı olduğu isim uzayı anlaşılır. • Hem genel amaçlı, hem de Web programlaması için yaygın olarak kullanılır. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-26 Mantığa Dayalı Programlama: Prolog • Comerauer ve Roussel (University of AixMarseille) tarafından Kowalskinin yardımı ile geliştirildi Matematiksel mantığa dayalı • Prosedürel değil (ne yapılmasını söyleriz, nasıl yapılmasını değil) • Özet olarak çıkarsama (inferencing) kullanarak sorulara cevap veren akıllı bir veri tabanı diyebiliriz • Verimlilik problemleri var • Uygulama alanı: yapay zeka Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-27 Güvenli bir dil: Ada • Tasarımı için çok kaynak harcandı • Adını ilk programcı olan Augusta Ada Byron dan alır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-28 Ada’nın değerlendirilmesi • Katkıları – – – – Paketler – veri soyutlama desteği İstisna idaresi - gelişmiş Genel program birimleri Eşzamanlılık – görev (task) modeli aracılığı ile • Yorumlar – O zamanki yazılım mühendisliği ve dil tasarımı konusunda ne biliniyorsa ADA’da var – Dilin karmaşıklığından dolayı ilk derleyiciyi üretmek zor oldu ve uzun zaman aldı (5 yıl) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-29 Ada 2012 • • • • • Conditional expressions, Case expressions Iterators Preconditions and postconditions Vector/matrix libraries Task-safe queues Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-30 Nesne Yönelimli Programlama: Smalltalk • Alan Kay, ve Adele Goldberg tarafından Xerox PARC’ta geliştirildi • İlk gerçek nesne yönelimli programlama dili implementasyonu (veri soyutlama, kalıtım, dinamik bağlama) • Grafik arayüzlerin öncülüğünü yaptı • Nesne yönelimli programlamanın gelişmesine katkısı oldu Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-31 Komut ve nesne yönelimli programlama birleşimi C++ • 1980’de Stroustrup tarafından Bell Labs’da geliştirildi • C ve SIMULA 67’den evrimleşti • İstisna mekanizması var • Büyük ve karmaşık bir dil • Popülaritesi nesne yönelimli programlama ile birlikte arttı • 1997’de ANSI standardı onaylandı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-32 Benzer nesne yönelimli diller • Eiffel ( Bertrand Meyer - 1992) – Direkt oalrak başka bir dilden türemedi – C++ a göre daha basit ve küçük – C++ kadar popüler değil (C++ ya geçis daha kolaydı çünkü birçok programcı C dilini zaten biliyordu) • Delphi (Borland) – Pascal + nesne yönelimli programlama – C++’ya göre daha “şık” ve güvenli Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-33 JAVA: Komut tabanlı nesne-yönelimli bir dil • 1990’ların ilk yarısında Sun’da gömülü sistemler için geliştirildi • C++’ya dayalı – Sadeleştirilmiş ( struct, union, enum, işaretçi aritmetiği ve zorunlu tip değiştirmelerinin çoğu yok) – Sadece nesne yönelimliliği destekler – Referenslar var ama işaretçiler yok – Applet desteği var – Eşzamanlılık desteği var Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-34 Java Değerlendirmesi • C++’nın birçok güvensiz özeliği JAVA’da yok • Eşzamanlılık var • Veritabanı, Applet, görsel arayüz kütüphaneleri var • Taşınabilirdir: Java Sanal Makinesi, Tam zamanında derleyiciler • Web programlaması için yaygın kullanım • Önceki dillere göre yaygın kullanıma en hızlı erişen dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-35 Web için Skript dilleri • JavaScript – Istemci tarafı HTML-gömülü dinamik HTML dokumanı yaratmaya yarayan dil – Saf tercüme – Sentaksı JAVA’ya bir miktar benzer, ama ayrı bir dil • PHP – Rasmus Lerdorf tarafından tasarlandı – Sunuca tarafı HTML-gömülü skript dili – Saf tercüme • Python – Nesne yönelimli tercüme ile çalışan skipt dili – Tip kontrolü var ama dinamik tipli – CGI programlaması için kullanılabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-36 Web için Skript dilleri • Ruby – Japonyada Yukihiro Matsumoto tarafından tasarlandı – Perl ve Python yerini almayı amaçladı – Saf nesne yönelimli dil – Operatörler metod olarak gerçeklendiği için tekrar tanımlanabilir – Saf tercüme ile çalışır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-37 C-tabanlı başka bir dil: C# • • • • .NET geliştirme platformunun bir parçası Esinlendiği diller: C++ , Java, Delphi Parçalara dayalı yazılım geliştirme dili Tüm .NET dilleri (C#, Visual BASIC.NET, Managed C++, J#.NET, and Jscript.NET) tip sistemleri ortaktır, böylece tüm dillerden ayni sınıf kütüphanesi kullanılabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-38 İşaretleme/Programming Hybrid Languages • XSLT – eXtensible Markup Language (XML): Web işaretmeleme dili – eXtensible Stylesheet Language Transformation (XSTL) XML dokumanlarını görsel hale dönüştiren bir dil – Programlama yapıları var (eşleştirme, XML dokumanı elemanları üzerinde iterasyon) • JSP – Java Server Pages: dinamik Web dokümnaları için teknolojiler kolleksiyonu – servlet: sunucu üzerinde barınan ve istek üzerine çalıştırılan JAVA programı; servlet çıktısı tarayıcı üzerinde görünür Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-39 Özet • Bazı önemli programlama dillerinin gelişimi ve özellikleri • Dil tasarımında dikkat edilmesi gereken konular Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-40
Benzer belgeler
Programlama Dillerine Giriş
• Bilim adamları ve mühendisler: Fortran
• Fonksiyonel Programlama: LISP
• Algoritma paylaşımı: ALGOL
• İş dünyası: COBOL
• Basit bir dil: BASIC