Marmara lletisim Dergisi, Sayt:7, TemmuT 1994 PROGRAMLAMA DiLLERi Arq. Giir. Levent ELDENiZ MARMARA r-n rivpnsiresi itetiqim Fakiiltesi Bilgisayar bilimi bilgi iglemin araglannr ve geli$im stirecini igerir. Bilgisayarlardan problem gdziimiinde yararlanrken kullanrcilarla bilgisayarlar arasmda bir iletiqim kurulmasr zorunlulu[u vardrr. Bilgisayarlar 0 ve I sembolleri ile ifade edilen elektriksel bir dille konuqurlar. Bu makine dili'nin aynntdan her makinenin tasarlanmasr srasrnda iiretici tarafindan beliilenir. Kullanrcrlar da elbettte kendi dofal dillerini kullanrrlar. Bu da bilgisayar ve kullarucrsr arasrndaki iletigim arahlrnr oldukga daralur. Kullanrcrlar gok genig bir alana yaylan problemlerle bilgisayarlannrn bagrna oturudar. Ancak mevcut makine dili ile bu problemlerin bilgisayara aktanlmasr oldukga giietiir. Bu gueliik programlama ve programlama dili kawamlannrn ortaya gkmasrna yol agm$tr (1). Programlama dillerini srnrfl andrrmanrn iki yolu vardrr: Seviyelerine ve uygulama alanlanna gore. Programlama dillerinin dort seviyede toplayabiliriz. 1. Konuqma diline yakn programlama dilleri 2. Yiiksek diizey programlama dilleri 3. Assembly dilleri 4. Makine dilleri Konugma diline yakrn programlama dilleri di[er dillerle karqrlagtrrrldrklannda en iist diizeydedirler ve bu dillerdeki ifadeler ingilizce gibidir. Bu diller esas olarak "nasrl yaprlrr"dan gok "ne yapilacak" ifadelerinin hakim oldupu komut dilleridirler. istatistik dilleri olan SPSS ve SAS, veritabanr dilleri NATURAL ve IMS bunlara 6rnek verilebilir. Bu diller profesvonellerin r39
kendi iglerini yaparken kullandrklan terminolojiye uygun bir gekilde, programlama tecriibesi veya programcl destefi gerekmeden programlama yapabilmeleri diiqi.iniilerek geligtirilmi gtir. Yiiksek diizey programlama dilleri en gok kullantlan programlama dilleridir. B0yle olmakla bereber asltnda konugma diline yaktn defillerdir' Bu diller diger programctlann kolayca okuyup anlayabileceli yanm qekillerine ve algoritmalara izin verider. Ayrrca yiiksek diizey diller genellikle taynabilirlik 6zelli[ine sahiptirler. Bu da farkh makinelerde kullanilabilecekleri anlamma gelir. Yani bir program bir makineden diferine metin diizeltimi gerekmeden kolayca tagrnabilir. Bu anlamda ytiksek diizey diller "makineden balrmsrz" olarak adlandrtltrlar. Yiikse.k diizey dillere 6rnek olarak Pascal, APL ve FORTRAN (bilimsel uygulamalarda), COBOL (veri iqleme uygulamalarrnda), SNOBOL (metin igleme uygulamalannda), LISP ve PROLOG (yapay zeka uygulamalannda) ve PLll (genel amagh uygulamalarda) verilebilir (2). Assembly ve Makine Dilleri Assembly ve Makine dilleri donanrm balrmh programlama dilleridirler. Her makine kendi makrne ve assembly diline sahiptir. Makine dili bir CPU tarafrndan komut olarak ahntp uygulanan bellek veri guruplarml temsil eden ikili kod dizilerinden olugur. Assembly dili makine dili komutlarmtn sembolik ifadelerini ieeren bir programlama dilidir. Makine diline ktyasla daha az srkrcr bir programlamaya izin verir. Temel makine mimarisi bu dilleri etkili programlamada kagtntlmaz ktlar. Aqalrdaki iiq benzer program pargast yiiksek di.izey, assembly ve makine dilleri arasrndaki farklart gdstermektedir (3). Pascal Assemblv Dili Makine Dili Z:=W+XxY L 3,X M2,Y A 3,W ST3,Z 41 3 0C1A4 3A 2 0C1A8 1A 3 0C1A0 50 3 0c1A4 Ornekte goriildiilii gibi bire bir kargrlagurmada assembly ile makine dili arasrnda yakrn bir iliqki oldupu goriilebilir. 140
Makine Dili Komutlar Sistem Komutlarr (lsletim sistemi taraf rndan makine diline gevrilen) $ekil 1. Bir bilgisayar sisteminin katmanlarr. Kaynak : GEAR, C. William, Computer Organization and Programming With an Emphasis on The Personal Computer, 1985, s.7. Yiiksek diizey bir dilde veya bir assembly dilde programm makine koduna gewilip gahgabilmesi igin bir arabirime ihtiyag vardrr. Bu arabirimlerden en gok kullanrlanlan "assembler, compiler ve interpreter"drr. Makine X It"g'E X Makine Dilinde Yaz rlmls Esdeger Program $ekil2. Assembler arabirimi. Kaynak : TUCKER, 1986, s.4. Compiler Yiiksek diizeyli program komutlarmr CPU'nun dolrudan do!ruya aniayp yerine getirecegi ikili kodlara d6niigttiren bir geviri programrdrr. Derleyici programrn ttimiinii ikili koda d0niigtiirerek srrayla ytiriitiilmesini sallar. Programda herhangi bir de[iqiklik yaprldrlmda programln kaynak kodunun tiimiinun yeniden derlenmesi gerekir (4). t41
Makine X Ilq;! $ekil3. Compiler arabirimi, Kaynak: TUCKER, 1986, s'4' Interpreter Ytiksek dtzeyli bir dilde ifade edilmiq olan deyimlerin uygulanmast igin kullanrlan geviri programrdrr. Programrn her deyimini iglem srasmda Itili toda gevirir ve hemen icra eder. Deflenen programlara g6re yorumlanan programlar daha yavag igler (5). Makine X lryry{ $ekil4. Assembler arabirimi' Kaynak: TUCKER, 1986' s'4. Assembler ve Compiler arabirimleri programln kaynak kodunu kullandrlrmrz makinenin makine diline gevirirler. Interpreter ise programrn her deyimini gahgma esnasrnda antnda Eevirir ve galtqtrrrr. Compiler ile programrn bir defa makine diline gevrilmesi gahqmasr igin yeterlidir. Ancak interpreter ile programln her gahqmasrnda tekrar gevrilmesi gereklidir. Bazr diller APL, PROLOG ve LISP gibi, sadece interpreter edilen/yorumlanan dillerdir. FORTRAN, Pascal, COBOL, PLA' SNOBOL, C, Ada ve Modula-2 gibi diller ise compiler edilen/derlenen dillerdir. Interpreter tarafrndan qafuqtrrrlan diller hatalarm bulunmast ve dilzeltiimesi agtstndan com- 142
piler taraflndan gah$trlian dillere gcire daha kullanrghdrdar. Deneysel ve e[itim amagh programcrhk gahgmalannda interpreter diller daha srk kullanilr. Programlama dillerinin kargrlaqtrnlmasr ve delerlendirilmesinde gozciniinde bulundurulmasr gereken dokuz kriter vardr. Bunlar gunlardtr (6): 1. Anlamhhk 2. iyi tanrmlama 3. Veri tipleri ve yaprlan 4. Modiilerlik 5. Girig-Qrkrg imkanlan 6. Taqrnabilirlik 7. Etkinlik, verimlilik 8. Egitilebilirlik 9. Genellik PASCAL Pascal 1970'lerin bagmda algoritma tasarlml ve bilgisayar biliminin ilkelerini Olretmek igin tasarlanmrgtrr.lg60'larda aynr amaglar dofirultusunda geligtirilen ALGOL (Algoritmik Dil)'iin devamr nitelilindedir. pascal matematifin, veri iqlemin ve yapay zekanrn pratik uygulamalannda kullanrlmaktadrr. ALGOL 1 960'larda programlama dili tasanmrnda kullanrlmrgtrr. Pascal da l9704li ve 80'li yrllarda aynr gdrevi yerine getirmigtir (7). FORTRAN FORTRAN 1954'te geligtirilmigtir. Dolayrsr ile halen kullanrtmakta olan en eski ve en giiglli yiiksek diizey dillerdendir. FORTRAN (Formula Translating System - Formiil Qeviim Sistemi) en gok bilimsel ve miihendislik programlama gah gmalannda kullanrlmaktadrr (8). COBOL 1959'un Mayrs aynda veri iglem guruplannrn ortak bir veri iglem diline ihtiyag duymasr ile ortaya grkmrgtrr. 1960'rn Nisan aymda endiistriden ve kamudan bilgisayar iireticilerinin ve kullanrcrlarmrn biraraya gelmesi ile ortaya grkan ve diizenlenen CODASYL(Conference on Data Systems Languages)'de ilk versiyonu COBOL-60 adryla yayrnlanml$tlr. COBOL (Common Business Oriented Language) en gok veri igleme uygulamalannda kullanrl- 143
maktadf. Programiafln ve programlama tekniklerinin bir makineden digertne kolaylftla aktallabilmesi ve paylaqrlabilmesi amactyla bir ortak dil oiarak geligtirilmigtir. Bu aqrdan COBOL ingilizce konuqma diline benzer bir progladama dilidir. S6zdizimi dikkatsiz bir g6zlemcinin bile bir programcl giuiptogturnr okuyup anlayabileceli gibi tasarlanmrqtrr (9)' C Cprogramlamadiligokgeni$biralandaqalrqabilmekigintasaflanmrqtrr. C'nin geligimi ile UNIX igletim sisteminin geligimi paralellik izler. 1qi6g',laLiNIX Bell Laboratuvallaflnda tamaml assembler ile yaztlarak geliqtirilmiqtir. Aynr zamanda Kenneth Thompson tarafindan B adrnda deneysel bir dil geliqtirilmigtir. 1.972'deC B'nin bir geniqletmesi olarak tasallanml$tr. 1973'I;LINIX bu sefer yiizde doksanr C ile tekrar yazrlmrqtrr (10)' Giiniimiizde ise kigisel bilgisayarlann yaygrnlagmasr ile-bir- gok yeni progamlama dili ortaya gitmrgtrr. Ozellikle son yrllarda yaygrn kullantm buiun"ogutr, FoxPro, eiogress, Paradox gibi veri tabanr dillerini, VisualBasic gibi Muttimedya programlama dillerini, Turbo Pascal ve c++ gibi genel imagh programlama dillerini bunlara Ornek olarak verebiliriz' DiPNOTLAR (1) SCHEID, Francis, Theory and Problems of computers and Programming 1983. s. 1. (2) TUCKER, Allen B. Jr., Programming Languages, 1986, ss' 2-3' (3) Ibid., s. 3. (4) AYDIN, Emin D., Biliqim Sistemleri Siizliisii Bilgisayar Bilgi\lem ve Telekomiinikasyon, 1992, s. 12L (5) Ibid., s. 333. (6) TUCKER, Op.cit., s. 11' (7) Ibid., s. 16. (8) Ibid., s. 63. (9) Ibid., ss. 102-103. (10) Ibid., ss. 412-473. 144