Sıkça Kullanılan Bazı Yabancı Kelimelerin Türkçe Karşılıkları (Geliştiren İlhan GÜL)
Bölüm 2 - staff.emu.edu.tr · Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-5 Dillerin...
Transcript of Bölüm 2 - staff.emu.edu.tr · Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-5 Dillerin...
ISBN 0-321-49362-1
Bölüm 2
Ana programlama dilerinin evrimi
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-2
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-3
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-4
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-5
Dillerin soy ağacı
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-6
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 noktayok
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-7
Kodumsular: Kısa Kod
– İfadeler soldan sağa kodlanırdı
– Örnekler:
01 – 06 abs value 1n (n+2)nd power
02 ) 07 + 2n (n+2)nd root
03 = 08 pause 4n if <= n
04 / 09 ( 58 print and tab
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-8
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-9
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-10
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-11
İ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-12
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, veHaskell
Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-13
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-14
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-15
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-16
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-17
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-18
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-19
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-20
İ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-21
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-22
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-23
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-24
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-25
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-26
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ı olaraktanı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-27
Mantığa Dayalı Programlama: Prolog
• Comerauer ve Roussel (University of Aix-Marseille) 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-28
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-29
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-30
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-31
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-32
Komut ve nesne yönelimli programlama birleşimi C++
• 1980’de Stroustrup tarafından Bell Labs’dageliş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-33
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-34
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-35
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-36
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-37
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-38
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-39
İş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-40
Özet
• Bazı önemli programlama dillerinin gelişimi ve özellikleri
• Dil tasarımında dikkat edilmesi gereken konular