150 likes | 352 Views
PROGRAMLAMA DİLLERİNİN EVRİMİ. Yılmaz Kılıçaslan. Sunum Planı. Sınıf kavramının evrimine kısa bir bakış Birinci Kuşak Diller İkinci Kuşak Diller Üçüncü Kuşak Diller Kuşak Boşluğu Nesneye Yönelik Programlama. Yazılım Mühendisliğini Tarihsel Eğilimleri.
E N D
PROGRAMLAMA DİLLERİNİN EVRİMİ Yılmaz Kılıçaslan
Sunum Planı • Sınıf kavramının evrimine kısa bir bakış • Birinci Kuşak Diller • İkinci Kuşak Diller • Üçüncü Kuşak Diller • Kuşak Boşluğu • Nesneye Yönelik Programlama
Yazılım Mühendisliğini Tarihsel Eğilimleri • Yazılım mühendisliğinin tarihine iki eğilim damgasını vurmuştur: • Küçük programlardan büyük programlara geçiş • Yüksek düzeyli programlama dillerinin ortaya çıkışı
Makinelerden Problem Sahasına ... • Most new industrial-strength software systems are larger and more complex than their predecessors were even just a few years ago. This growth in complexity has prompted a significant amount of useful applied research in software engineering, particularly with regard to decomposition, abstraction, and hierarchy. The development of more expressive programming languages has complemented these advances. The trend has been a move away from languages that tell the computer what to do (imperative languages) toward languages that describe the key abstractions in the problem domain (declarative languages). (Booch, G. 1998)
Sınıflara Giden Soyutlama Süreci - 1 • Wegner (1976), yüksek-düzeyli programlama dillerini, ilk kez kullandıkları dil özelliklerine dayanarak, bir kuşak sınıflamasına tabi tutmuştur: • Birinci-Kuşak Diller (1954-1958) • FORTRAN I Matematiksel ifadeler • ALGOL 58 Matematiksel ifadeler • Flowmatic Matematiksel ifadeler • IPL V Matematiksel ifadeler
Sınıflara Giden Soyutlama Süreci - 2 • İkinci-Kuşak Diller (1959~1961) • FORTRAN II Alt rutinler, bağımsız derleme • ALGOL 60 Blok yapıları, veri tipleri • COBOL Veri tanımlama, dosya işlemleri • Lisp Liste işleme, işaretçiler, ‘garbage collection’
Sınıflara Giden Soyutlama Süreci - 3 • Üçüncü-Kuşak Diller (1962-1970) • PL/1 FORTRAN + ALGOL + COBOL • ALGOL 68 ALGOL 60’ın sıkı takipçisi • Pascal ALGOL 60’ın gevşek takipçisi • Simula Sınıflar, veri soyutlama
Sınıflara Giden Soyutlama Süreci - 4 • Kuşak Boşluğu (1970-1980) Birçok farklı programlama dili türedi ama çok azı varlığını sürdürebildi. Bu dönemde ortaya çıkan dillerin sayısı binlerle ifade edilebilecek miktardadır. Bugün neredeyse hiçbirimizin hatırlamadığı veya bilmediği birçok dil icat edilmiştir. Fred, Tranquil, Chaos bunlardan birkaçıdır. Bu sonuncusunun adı, dönemin kaotik niteliğiyle çok iyi örtüşmektedir.
Programcılıkta Kopernik Devrimi • Her kaos dönemi gibi, 1970 ile 1980 arası, bir kopuşun ya da sıçramanın habercisidir. • 1973’teki Turing derslerinde, Bachman işlem merkezli bakış açısından veri merkezli bakış açısına geçişi, Kopernik devrimi ile gerçekleşen dünya merkezli evren modelinden güneş merkezli evren modeline geçişe benzetir.
Programlama Dillerinin Topolojisi - 1 The Topology of First- and Early Second-Generation Programming Languages
Programlama Dillerinin Topolojisi - 2 The Topology of Late Second- and Early Third-Generation Programming Languages
Programlama Dillerinin Topolojisi - 3 The Topology of Late Third-Generation Programming Languages
Programlama Dillerinin Topolojisi - 4 "The nature of abstractions that may be achieved through the use of procedures is well suited tothe description of abstract operations, but is not particularly well suited to the description ofabstractobjects. This is a serious drawback, for in many applications, the complexity of thedata objects to be manipulated contributes substantially to the overall complexity of the problem.” (Shankar 1984) The Topology of Small- to Moderate-Sized Applications Using Object-Based and Object-Oriented Programming Languages
ÖZET • Programlama dillerinin evriminde itici güç makineden uzaklaşıp probleme yaklaşmak yönünde olmuştur. • Yüksek düzeyli dillerin evrimi, algoritmik soyutlama ile başlamış, veri soyutlaması ile devam etmiştir. • İki soyutlama süreci, sınıf yapısında birleşmiştir. PROGRAMLAMA İŞLEM SOYUTLAMA V ERİ SOYUTLAMA NESNEYE-DAYALI PROGRAMLAMA
Kaynaklar • Booch, G. 1998. Object-Oriented Analysis and Design. Addison-Wesley. • Shankar, K. 1984. Data Design: Types, Structures, and Abstractions. Handbook ofSoftware Engineering. New York, NY: Van Nostrand Reinhold, p. 253. • Wegner, P. 1976. IEEE Transactions on Computers, December, 1207-1225.