Programlama Dillerinin Evrimi

Download Report

Transcript Programlama Dillerinin Evrimi

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
2
Yazılım Mühendisliğini Tarihsel Eğilimleri
 Yazılım
mühendisliğinin
damgasını vurmuştur:
tarihine
iki
eğilim
– Küçük programlardan büyük programlara geçiş
– Yüksek düzeyli programlama dillerinin ortaya çıkışı
3
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)
4
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
ALGOL 58
Flowmatic
IPL V
Matematiksel ifadeler
Matematiksel ifadeler
Matematiksel ifadeler
Matematiksel ifadeler
5
Sınıflara Giden Soyutlama Süreci - 2
 İkinci-Kuşak Diller (1959~1961)
–
–
–
–
FORTRAN II
ALGOL 60
COBOL
Lisp
Alt rutinler, bağımsız derleme
Blok yapıları, veri tipleri
Veri tanımlama, dosya işlemleri
Liste işleme, işaretçiler, ‘garbage
collection’
6
Sınıflara Giden Soyutlama Süreci - 3
 Üçüncü-Kuşak Diller (1962-1970)
–
–
–
–
PL/1
ALGOL 68
Pascal
Simula
FORTRAN + ALGOL + COBOL
ALGOL 60’ın sıkı takipçisi
ALGOL 60’ın gevşek takipçisi
Sınıflar, veri soyutlama
7
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.
8
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.
9
Programlama Dillerinin Topolojisi - 1
The Topology of First- and Early Second-Generation Programming Languages
10
Programlama Dillerinin Topolojisi - 2
The Topology of Late Second- and Early Third-Generation Programming Languages
11
Programlama Dillerinin Topolojisi - 3
The Topology of Late Third-Generation Programming Languages
12
Programlama Dillerinin Topolojisi - 4
"The nature of abstractions
that may be achieved through
the use of procedures is well
suited to the description of
abstract operations, but is not
particularly well suited to the
description of abstract objects.
This is a serious drawback, for
in many applications, the
complexity of the data 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
13
Ö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
14
Kaynaklar
 Booch, G. 1998. Object-Oriented Analysis and
Design. Addison-Wesley.
 Shankar, K. 1984. Data Design: Types, Structures,
and Abstractions. Handbook of Software
Engineering. New York, NY: Van Nostrand
Reinhold, p. 253.
 Wegner, P. 1976. IEEE Transactions on
Computers, December, 1207-1225.
15