Marmara lletiSim Dergisi, Sayt:7, TemmuT 1994
PROGRAMLAMA
DiLLERi
Arq.
Giir.
Levent
ELDENiZ
MARMARA
r-nriVpnSireSi
itetiqim Fakiiltesi
Bilgisayar
bilimi bilgi
iglemin araglannr ve geli$im stirecini igerir. Bilgisayarlardan problem gdziimiindeyararlanrken kullanrcilarla
bilgisa-yarlar arasmda bir iletiqim kurulmasr zorunlulu[u vardrr. Bilgisayarlar 0 ve
I
sembolleri ile ifade edilen elektriksel bir dille konuqurlar. Bu makinedili'nin
aynntdan her makinenin tasarlanmasr srasrndaiiretici
tarafindanbeliilenir.
Kullanrcrlar da elbettte kendidofal dillerini
kullanrrlar. Bu da bilgisayar ve kullarucrsr arasrndaki iletigim arahlrnr oldukga daralur. Kullanrcrlar gok ge-nigbir
alanayaylan
problemlerle bilgisayarlannrn bagrna oturudar. Ancakmevcut makine
dili
ile bu problemlerin bilgisayara aktanlmasr oldukgagiiE-tiir.
Bu guEliik programlama ve programlamadili
kawamlannrn ortaya gk-masrnayol
agm$tr
(1).Programlama
dillerini
srnrfl andrrmanrniki
yolu vardrr: Seviyelerine ve uygulama alanlanna gore.Programlama
dillerinin
dOrt seviyedetoplayabiliriz.
1. Konuqma diline
yakn
programlamadilleri
2. Yiiksek diizey programlama
dilleri
3. Assemblydilleri
4. Makine
dilleri
Konugma diline yakrn programlama
dilleri di[er
dillerle karqrlagtrrrl-drklannda en iist diizeydedirler ve bu dillerdeki ifadeler ingilizcegibidir.
Bu diller esas olarak "nasrl yaprlrr"dan gok "ne yapilacak" ifadelerinin hakimol-dupu komut dilleridirler. istatistik
dilleri
olan SPSS ve SAS, veritabanrdille-ri
NATURAL
veIMS
bunlara 6rnekverilebilir.
Budiller
profesvonellerinkendi iglerini yaparken kullandrklan terminolojiye uygun
bir
gekilde, prog-ramlama tecriibesi veya programcl destefi gerekmeden programlamayapa-bilmeleri diiqi.iniilerek geligtirilmi gtir.
Yiiksek
diizey programlamadilleri
en gok kullantlan programlamadilleridir.
B0yle olmakla bereber asltnda konugmadiline
yaktndefillerdir'
Bu diller diger programctlann kolayca okuyup anlayabileceli yanmqekille-rine ve algoritmalara izin verider. Ayrrca yiiksek diizey diller genellikle
tay-nabilirlik 6zelli[ine
sahiptirler. Bu da farkh makinelerde kullanilabileceklerianlamma gelir. Yani bir program bir makineden diferine metin diizeltimi ge-rekmeden kolayca tagrnabilir. Bu anlamda ytiksek diizey
diller
"makinedenbalrmsrz" olarak
adlandrtltrlar.
Yiikse.k diizey dillere 6rnek olarak Pascal,APL ve FORTRAN (bilimsel uygulamalarda), COBOL (veri iqleme
uygula-malarrnda), SNOBOL (metin igleme uygulamalannda), LISP ve PROLOG
(yapay zeka uygulamalannda) ve
PLll
(genel amagh uygulamalarda)verile-bilir
(2).Assembly ve
Makine Dilleri
Assembly ve Makine
dilleri
donanrmbalrmh
programlama dilleri-dirler. Her makine kendi makrne ve assembly diline sahiptir. Makinedili bir
CPU tarafrndan komut olarak ahntp uygulanan bellek veri guruplarml temsil
eden
ikili
kod dizilerinden olugur. Assemblydili
makinedili
komutlarmtn sembolikifadelerini
iEerenbir
programlamadilidir.
Makine diline ktyasla daha az srkrcr bir programlamaya izin verir. Temel makine mimarisi budille-ri
etkili
programlamada kagtntlmaz ktlar.Aqalrdaki iiq benzer program pargast yiiksek di.izey, assembly ve
ma-kine
dilleri
arasrndaki farklart gdstermektedir (3).Pascal
AssemblvDili
Makine Dili
Z:=W+XxY
L
3,XM2,Y
A
3,W ST3,Z 41 3 0C1A4 3A 2 0C1A8 1A 3 0C1A0 50 30c1A4
Ornekte
gOriildiilii gibi
bire bir kargrlagurmada assembly ile makinedili
arasrnda yakrnbir iliqki
oldupu gOriilebilir.Makine Dili Komutlar
Sistem Komutlarr (lsletim sistemi taraf rndan makine diline gevrilen)
$ekil
1.Bir
bilgisayar sisteminin katmanlarr. Kaynak: GEAR,
C.William, Computer Organization
andProgramming
With
an Emphasison The Personal
Computer,
1985, s.7.Yiiksek diizey bir dilde veya bir assembly dilde programm makine ko-duna
gewilip
gahgabilmesi iginbir
arabirime ihtiyag vardrr. Buarabirimler-den en gok kullanrlanlan "assembler, compiler ve interpreter"drr.
$ekil2.
Assembler arabirimi. Kaynak :TUCKER,
1986, s.4.Compiler
Yiiksek diizeyli program komutlarmr CPU'nun dolrudan do!ruya
an-iayp
yerine getirecegiikili
kodlara d6niigttirenbir
geviri programrdrr.Derle-yici programrn
ttimiinii
ikili
koda d0niigtiirerek srraylaytiriitiilmesini
sallar.Programda herhangi
bir de[iqiklik
yaprldrlmda programln kaynak kodununtiimiinUn yeniden derlenmesi gerekir (4). X Makine Dilinde Yaz rlmls Esdeger Program
t41
Makine XIt"g'E
Makine X
Ilq;!
$ekil3.
Compiler arabirimi,Kaynak: TUCKER,
1986, s'4'Interpreter
Ytiksek
dtzeyli
bir
dilde ifade edilmiq olan deyimlerin uygulanmastigin kullanrlan geviri programrdrr. Programrn her
deyimini
iglem srasmdaItili
toda gevirir ve hemen icra eder. Deflenen programlara g6re yorumlananprogramlar daha yavag igler (5).
$ekil4.
Assembler arabirimi'Kaynak: TUCKER,
1986' s'4. Assembler ve Compiler arabirimleri programln kaynak kodunu kul-landrlrmrz makinenin makine diline gevirirler. Interpreter ise programrn herdeyimini gahgma esnasrnda antnda Eevirir ve galtqtrrrr. Compiler ile progra-mrn bir defa makine diline gevrilmesi gahqmasr igin yeterlidir. Ancak interp-reter ile programln her gahqmasrnda tekrar gevrilmesi gereklidir.
Bazr diller APL, PROLOG ve LISP gibi, sadece interpreter edilen/yo-rumlanan dillerdir. FORTRAN, Pascal, COBOL, PLA' SNOBOL, C, Ada ve
Modula-2
gibi diller
ise compiler edilen/derlenendillerdir.
Interpreter tara-frndan qafuqtrrrlan diller hatalarm bulunmast ve dilzeltiimesi agtstndancom-Makine X
piler taraflndan gah$trlian dillere gcire daha kullanrghdrdar. Deneysel ve
e[i-tim
amagh programcrhk gahgmalannda interpreterdiller
daha srkkullanilr.
Programlamadillerinin
kargrlaqtrnlmasr ve delerlendirilmesinde go-zciniinde bulundurulmasr gereken dokuz kritervardr.
Bunlar gunlardtr (6):1.
Anlamhhk
2.
iyi
tanrmlama3.
Veri tipleri
ve yaprlan4.
Modiilerlik
5. Girig-Qrkrg imkanlan 6. Taqrnabilirlik 7.Etkinlik,
verimlilik
8.Egitilebilirlik
9. GenellikPASCAL
Pascal 1970'lerin bagmda algoritma tasarlml ve bilgisayar
biliminin
ilkelerini
Olretmek igin tasarlanmrgtrr.lg60'larda aynr amaglardofirultusun-da
geligtirilen
ALGOL (Algoritmik Dil)'iin
devamrnitelilindedir.
pascalmatematifin, veri iqlemin ve yapay zekanrn pratik uygulamalannda
kullanrl-maktadrr.
ALGOL
1 960'larda programlamadili
tasanmrnda kullanrlmrgtrr.Pascal da
l9704li
ve80'li
yrllarda aynr gdrevi yerine getirmigtir (7).FORTRAN
FORTRAN
1954'tegeligtirilmigtir.
Dolayrsrile
halen kullanrtmaktaolan en eski ve en
giiglli
yiiksek diizey dillerdendir.FORTRAN
(FormulaTranslating System -
Formiil
Qeviim Sistemi) en gok bilimsel vemiihendis-lik
programlama gah gmalannda kullanrlmaktadrr (8).COBOL
1959'un Mayrs aynda veri iglem guruplannrn ortak bir veri iglem
dili-ne ihtiyag duymasr ile ortaya grkmrgtrr. 1960'rn Nisan aymda endiistriden ve kamudan bilgisayariireticilerinin
ve kullanrcrlarmrn biraraya gelmesi ile or-taya grkan ve diizenlenen CODASYL(Conference on Data Systems Langua-ges)'deilk
versiyonu COBOL-60 adryla yayrnlanml$tlr.COBOL
(Common Business Oriented Language) en gok veri igleme uygulamalanndamaktadf. Programiafln ve programlama tekniklerinin
bir
makinedendigert-ne
kolaylftla
aktallabilmesi ve paylaqrlabilmesi amactylabir
ortakdil
oiarakgeligtirilmigtir. Bu
aqrdanCOBOL
ingilizce
konuqmadiline
benzerbir
progladama dilidir.
S6zdizimi dikkatsizbir
g6zlemcinin bile bir programclgiUiptogturnr okuyup anlayabileceli
gibi
tasarlanmrqtrr (9)' CCprogramlamadiligokgeni$biralandaqalrqabilmekigintasaflan-mrqtrr. C'nin geligimi
ile
UNIX
igletim sisteminin geligimiparalellik
izler.1qi6g',laLiNIX Bell Laboratuvallaflnda tamaml assembler ile yaztlarak
geliq-tirilmiqtir. Aynr
zamanda Kenneth Thompson tarafindanB
adrnda deneyselbir
dil
geliqtirilmigtir. 1.972'deC B'ninbir
geniqletmesi olarak tasallanml$tr.1973'I;LINIX
bu sefer yiizde doksanr Cile
tekrar yazrlmrqtrr (10)'Giiniimiizde ise kigisel bilgisayarlann yaygrnlagmasr ile-bir- gok yeni
progamlama
dili
ortaya gitmrgtrr. Ozellikle son yrllarda yaygrn kullantmbu-iun"Ogutr, FoxPro, eiogress, Paradox gibi veri tabanr
dillerini,
VisualBasicgibi Muttimedya
programlamadillerini,
Turbo Pascal vec++ gibi
genelimagh programlama
dillerini
bunlara Ornek olarakverebiliriz'
DiPNOTLAR
(1) SCHEID, Francis,
Theory
and Problems ofcomputers
andProgram-ming
1983. s. 1.(2) TUCKER,
Allen
B. Jr.,Programming
Languages, 1986, ss' 2-3'(3) Ibid., s. 3.
(4)