CENG 104 Bilgisayar Mühendisliği Semineri Dersi Pamukkale Üniversitesi Mühendislik Fakültesi Pamukkale University Engineering Faculty BİLGİSAYAR PROGRAMLAMA DİLLERİ COMPUTER PROGRAMMİNG LANGUAGES 1Ömer 1Bilgisayar YÜCEL, 13253072 Mühendisliği Bölümü, Pamukkale Üniversitesi, Denizli. [email protected] Abstract Özet Bilgisayarların gelişim sürecinde programlama dilleri pek çok aşama ve evrim sonucunda bugünkü şekillerini almışlardır. Programlama dilleri, genel olarak uygulama alanına göre ve seviyelerine göre sınıflandırılabilir. Programlama ortamında editör, derleyici, kütüphane, bağlayıcı, yükleyici, hata ayıklayıcı, yorumlayıcı bileşenleri bulunmaktadır. Anahtar kelimeler: Programlama dili, Derleyici, Yorumlayıcı 1 Giriş Programlama dilleri teorisi, Bilgisayar Mühendisliğinin bir koludur ve tasarım, uygulama, analiz ve programlama dillerinin genel özelliklerini içerir. Matematik, yazılım mühendisliği, dil bilimi ve hatta eğitim bilimleri arasında yer alan disiplinler arası bir konu olan programlama dilleri teorisi, bilgisayar mühendisliğinin en temel kollarından biridir. 2 Bilgisayar Programlama Dilleri 2.1 Program ve Programlama Dili Program, bir hesaplamanın yapılabilmesini sağlayan ardışık simgeler dizisidir [1]. Programlama dili ise, bir makinenin -esas olarak da bir bilgisayarın- davranışını kontrol etmek için kullanılabilen ve ardışık simgelerden oluşan yapay bir dildir [1]. Başka bir kaynak da ise program ve programlama dili şöyle tanımlanmaktadır. Bir program bilgisayara ne yapması gerektiğini söyleyen bir dizi komuttur. Bilgisayarlarda işlemlerin bilgisayar tarafından kolayca anlaşılıp uygulanabileceği bir dilde (makine dili) açıkça yazılması gerekir. Ancak bu işlemlerin makine dilinde bir programcı tarafından yapılması yerine, programlamanın yapısal biçimde bir dil aracılığıyla yapılmasını ve daha sonra çevrilerek bilgisayara anlatılması işlemini programlama dilleri üstlenirler [2]. 2.2 Programlama Dillerinin Tarihçesi Charles Babbage'nin 1822'de analitik makinesini keşfetmesinden bu yana bilgisayarların belirli bir görevi yapmalarına yönelik talimatları anlamaları ihtiyacı doğmuştur. Programlama dilleri ilk olarak belirli bir programa belli bir işi yapmak için talimatların adım adım bilgisayara girilmesi şeklinde ortaya çıkmıştır. Daha sonraki zamanlarda programlama dilleri mantıksal dallanma, nesne yönelimi gibi özellikler kazanarak gelişim göstermiştir. Halen kullanılmakta olan programlama dilleri son 50 yıllık süreçte iki önemli evre geçirmişlerdir. Bunlar erken dönem programlama dilleri ve modern programlama dilleri olarak iki ana grupta toplanabilirler. Charles Babbage'nin analitik makinesi, sadece dişli çarkların ayarlanması yoluyla bazı aritmetik hesaplamalar yapabilen mekanik sistem olmasına karşılık, bu ayarlamalar ilk programlama dili olarak kabul edilmiştir. Zamanla bu fiziksel hareket şekli, yerini elektrik işaretlere bırakmıştır. Bu şekilde bir programlama dili ilk olarak ABD Computer programming languages in the development process of many stages and forms received today as a result of evolution. Programming languages can be classified in general, according to their application area and according to their level. In programming environment editor, compiler, libraries, linker, loader, debugger, interpreter components are available. Keywords: Programming language, Compiler, Interpreter hükümeti tarafından geliştirilen ENIAC bilgisayarında kullanılmıştır (1942). 1945 yılında, John Von Neumann bilgisayar programcılığının yönünü belirleyen iki önemli kavram geliştirmiştir. Bunlardan ilki, basit bir donanımın, karmaşık komutlar ile kontrol edilmesini öngören ve yeniden programlamayı basitleştirerek, programa göre donanım değişikliğini ortadan kaldıran paylaşımlı programlama tekniğidir. İkinci kavram ise programlama dilleri açısından oldukça önemli olan, koşullu denetim transferi kavramıdır. Bu kavram bir program kodunun yazılış sırasına göre işletilmesi yerine alt programların ve kısa kod parçalarının istenen herhangi bir sıraya göre işletilmesini öngörmektedir. Bu fikir program kodunun dallanabilmek için "if-then" gibi mantıksal ifadelere veya "for" gibi döngü deyimlerine göre oluşturulması gerektiğini ifade etmektedir. 1949'da Short Code adı verilen programlama dili ortaya çıkmıştır. Bu elektronik cihazları programlamaya yarayan ilk programlama dilidir. Bu dil karmaşık programlama dillerinin ilk örneği olarak kabul edilir. 1951'de Grace Hopper ilk derleyiciyi yazmıştır. Bu gelişme daha hızlı programlamaya imkân vermiştir. 1957 yılında ilk gelişmiş programlama dili olan FORTRAN ortaya çıkmıştır. Bu dil IBM tarafından bilimsel hesaplamalar için geliştirilmiştir. Dil içeriği oldukça basit olup kullanıcıya bilgisayarın donanımına alt seviyeden erişim imkânı sağlar. Günümüzde kullanılan basit veri türleri, kaynağını FORTRAN dilinden almıştır. FORTRAN dili sayısal işlemlerde avantajlı bir dil olmasına rağmen giriş-çıkış işlemlerinin kontrolü açısından yeterli bir dil değildir. Bu nedenle giriş-çıkış düzenlemelerinin oldukça önemli olduğu ticari uygulamalar için 1959'da COBOL dili geliştirilmiştir. COBOL özellikle iş dünyası için geliştirilmiş bir dil olup, sadece sayı ve metin türünde veri türlerini içermektedir. Aynı zamanda bu dil, yukarıdaki veri türlerinin diziler ve kayıtlar gibi veri grupları halinde organize edilmesine olanak sağlamıştır. 1958'de, MIT'de çalışan John McCarthy, yapay zeka araştırmaları için LISP dilini geliştirmiştir. Üstün uzmanlık isteyen bir alan için tasarlanması sebebiyle kendine özgü söz dizimi yapısına sahiptir. Bu dilin diğer dillerden en büyük farkı içerdiği tek veri türünün liste olmasıdır. Liste veri türü parantezler ile sınırlandırılmış bir öğeler dizisini ifade eder. LISP dilinin kendi kendini değiştirme ve hatta geliştirme gibi kendine özgü özellikleri vardır. ALGOL dili 1958 yılında bir araştırma grubu tarafından bilimsel amaçlı kullanım için geliştirilmiştir. Bu dilin programlama açısından önemi; PASCAL, C, C++, JAVA gibi dillerin gelişmesi için ilk adım Ö. Yücel Pamukkale Üniversitesi Mühendislik Bilimleri Dergisi, Cilt XX, Sayı X, 20XX, Sayfalar XX-XX olması ve aynı zamanda BNF (Backus-Naar Form) olarak bilinen bir formal dil bilgisine sahip ilk programlama dili olmasıdır. ALGOL dili bir sonraki nesli olan ALGOL 68 ile birlikte, kendi kendini çağıran fonksiyonlar gibi özellikler kazanmasına rağmen, bu özellikler kullanım zorluklarını da beraberinde getirmiş, bu nedenle PASCAL gibi daha kolay ve küçük programlama dillerinin geliştirilmesine neden olmuştur. PASCAL dili düzenli bir yaklaşım izlenerek, o dönem kullanımda olan COBOL, FORTRAN ve ALGOL gibi dillerin en iyi özellikleri birleştirilerek Niklaus Wirth tarafından 1968 yılında geliştirilmiştir. Diğer dillerdeki giriş-çıkış işlemleri, matematiksel fonksiyonlar gibi özelliklerin en iyilerinin seçilmesi ile oluşturulan PASCAL dili oldukça başarılı bir dil olmuştur. Bunun yanı sıra PASCAL ile birlikte işaretçi veri türü de geliştirilmiştir. Ayrıca PASCAL dili "case" kontrol yapısını içeren ilk dil olma özelliğini taşımaktadır. PASCAL dili dinamik değişkenlerin kullanılması konusunda da yenilikler içermektedir. Dinamik değişkenler, program çalışırken "new" ve "dispose" komutları ile oluşturulabilen ve silinebilen değişkenlerdir. Ancak PASCAL dili dinamik dizileri veya dinamik değişken gruplarını desteklememektedir. PASCAL bu özellikleri, bir sonraki nesil sayılan PASCAL-MODULA2 sayesinde kazanmıştır. Ancak bu dönemlerde C dili kullanıcılar arasında popülerlik kazanmaya başlamıştır. C programlama dili New Jersey'deki Bell Laboratuvarları'nda Dennis Ritchie tarafından 1972 yılında geliştirilmiştir. İlk gelişmiş dillerden günümüzün modern dillerine geçiş PASCAL' dan C' ye geçiş ile olmuştur. C dilinin ataları B ve BCPL dilleri olmasına rağmen, C dili ile PASCAL dilleri arasındaki benzerlikler oldukça belirgindir. PASCAL'ın içerdiği bütün özellikler hatta "case" gibi yeni özellikler bile C dili içerisinde bulunmaktadır. C dili hızlı ve güçlü olmak adına işaretçi yapısını oldukça kapsamlı kullanmakta, ancak yine bu sebepten dolayı okunabilirliği zor bir dildir. C dili PASCAL dilindeki hataların büyük bir kısmını giderdiği için PASCAL kullanıcılarını kazanmayı başarmıştır. Dennis Ritchie C dilini yine aynı dönemde üzerinde çalışılan Unix sisteminde kullanılmak üzere geliştirmiştir. Bu nedenle, C ve Unix verimlilik açısından en uyumlu platformları oluşturmaktadır. C dili Unix, Windows, MacOS ve çeşitli Linux sürümleri gibi işletim sistemlerinin geliştirilmesinde kullanılmıştır. 80'li yıllara doğru yeni bir programlama yaklaşımı olan nesneye yönelik programlama ortaya çıkmıştır. Bu yöntemde verinin parçaları programcı tarafından paketlenebilen ve yönlendirilebilen birer nesne olarak ele alınmıştır. Bu yaklaşımdan etkilenen Bjarne Stroustroup sınıf veri türü içeren bir C uyarlaması (C with Classes) geliştirmiştir. Bu eklentiler grubu, yeni bir programlama dili olan C++ dilinin gelişiminin yolunu açmıştır. Böylece C++ dili 1983 yılında kullanıma sunulmuştur. C++ dili, C dilinin gücünü nesneye yönelik programlama kullanılarak organize etmek için geliştirilmiştir. Ancak nesneye yönelik programlama metodu kullanılırken C dilini üstün kılan hızı ve taşınabilir olma özellikleri korunmuştur. 1990'ların öncesinde interaktif TV geleceğin teknolojisi olarak görülüyordu. SUN Microsystems, interaktif TV'nin bir özelliğe ihtiyacı olduğuna karar verdi. Bu özellik, bütün makinelerde sorunsuz çalışma veya taşınabilirlik idi. 1994'de Java bu ihtiyaç üzerine geliştirilmiştir. İnteraktif TV'nin başarısızlıkla sonuçlanmasından sonra, Java proje takımı giderek kullanımı artan ve popülerleşen web üzerine yoğunlaştı. Bir yıl sonra Netscape kendi internet gezginini geliştirmek için Java'nın lisansını aldı. Bu tarihlerden itibaren birçok firma Java ile yazılmış programlarını duyurmaya başladılar ve Java birden bire çok kullanılan bir programlama dili haline geldi. Yüksek hedeflere sahip Java, ciddi optimizasyon sorunlarına sahip olmasına rağmen, bir anlamda geleceğin dili olarak kabul edilebilir. Modern programlama dilleri arasında 1964'de geliştirilen BASIC de önemli bir yere sahiptir. Esas olarak bilgisayarla doğrudan ilgili olmayan alt düzeyli kullanıcılar için geliştirilmiş olan BASIC, program komutlarının ardışık olarak icrası üzerine kurulmuş, değişken tanımlama, giriş-çıkış özellikleri oldukça basit olarak gerçekleştirilebilen ancak sınırlı bir programlama dilidir. BASIC dili üzerine inşa edilen Visual BASIC (VB) görselliğin ön plana çıkarıldığı bir programlama dilidir. En az sayıda kod yazılarak, menüler, sürgü çubukları ve iletişim kutuları hazırlanarak, Windows uygulamaları hazırlanması ve mevcut Windows uygulamalarına arayüz hazırlanabilmesi VB'nin çok popüler bir dil olmasına yol açmıştır. 1987'de Larry Wall tarafından Unix işletim sistemindeki metin eşleştirme özelliklerinin yetersizliğinin giderilmesi amacıyla geliştirilen Perl, çoğu zaman internetin tamiri için bir yapışkan bant olarak adlandırılır. Bu tabirin temel nedeni, sahip olduğu çok güçlü eşleştirme fonksiyonları nedeniyle, Perl'in web arayüzlerinin ve program parçacıklarının uygunlaştırılmasında sıkça kullanılan bir motor olmasından kaynaklanmaktadır [3]. Tarihsel gelişimi, en bilinen programlama dilleri açısından yukarıdaki şekilde verilen programlama dillerinin birbiriyle olan etkileşimleri ve geliştirilme tarihlerine göre Şekil 1'de zaman çizelgesi şeklinde verilmiştir. Şekil 1: Programlama dillerinin zaman çizelgesi Ö. Yücel Pamukkale Üniversitesi Mühendislik Bilimleri Dergisi, Cilt XX, Sayı X, 20XX, Sayfalar XX-XX 2.3 Programlama Dillerinin Sınıflandırılması Programlama dilleri zamanla işlevlerine göre farklı alanlarda kullanılmışlardır. Programlama dillerini, uygulama alanlarına ve seviyelerine göre sınıflandırmak mümkündür [4]. Ön Uç Sözdizimi Çözümleme Kaynak Anlam Çözümleme Arka Kod 2.3.1 Genel Sınıflandırma Temel (Imperative) Programlama Dilleri Fortran, C, Cobol, Basic, Pascal Veriye Yönelik (Data Oriented) Programlama Dilleri Lisp, Apl, Snobol, Icon Nesneye Yönelik (Object Oriented) Programlama Dilleri Simula, C++, Ada 95, Java, Visual Basic (VB) 2.3.2 Uygulama Alanlarına Göre Sınıflandırma Bilimsel ve Mühendislik Dilleri Fortran, C, Pascal Sistem Programlama Dilleri C, Assembler Veri Tabanı Dilleri Dbase, Clipper Yapay Zeka Dilleri Prolog, Lisp Genel Amaçlı Programlama Dilleri C, Pascal, Basic 2.3.3 Seviyelerine Göre Sınıflandırma Makine Dilleri Düşük Seviye Assembler (ASM) Orta Seviye C, C++, C# Yüksek Seviye Fortran, Basic, Pascal, Cobol Çok Yüksek Seviye Fortran, Clipper, VB, Paradox, Access 2.4 Programlama Ortamı Bir programlama ortamı, programlama dili ile birlikte birçok bileşenden oluşur. Bu bileşenler, sembolik olarak kodlanmış programın bilgisayar donanımı tarafından istenilen işlevleri yerine getirmesi için gereken tüm unsurlardır. Bir programlama ortamının temel unsurları aşağıda açıklanmıştır. 2.4.1 Editör Kaynak kodu oluşturmak ve gerektiğinde değişiklik yapmak için gerekli olan araçtır. Editörde yazılanlar, seçilen dilin komutlarından oluşan metinlerdir. 2.4.2 Derleyici Editör tarafından bir bilgisayar dilinde yazılmış olan kaynak kodunu, makine koduna çeviren bir bilgisayar programıdır. Ön uç kodun söz diziminin ve anlam yapısının kullanılan dile uygunluğunu kontrol ederken; arka uç makine kodunu üretir. Ön uç dile bağımlı iken; son uç makineye bağımlıdır. Şekil 2'de bir derleyicinin genel yapısı verilmiştir. Arka Uç Makineden Bağımsız Eniyileme Kod Üretimi Makine Bağımlı Eniyileme Makine Kodu Şekil 2: Bir derleyicinin genel yapısı 2.4.3 Kütüphane Nesne dosyalarının tutulduğu yerlerdir. 2.4.4 Bağlayıcı Programın içerdiği tüm nesne dosyalarını birleştirerek tek bir yürütülebilir dosya haline getirir. 2.4.5 Yükleyici Yürütülebilir dosyayı, diskten belleğe kopyalar. 2.4.6 Hata Ayıklayıcı Programın hatalarını anlayabilmek için programın yürütülmesini, adım adım kontrol edilebilmesini sağlar. 2.4.7 Yorumlayıcı Bir programın kaynak kodunu doğrudan satır satır yürüten bir programdır. 2.5 Emulatör Emulatör yazılımları birer dönüştürücüdürler. Eski oyun makinelerindeki yazılım ve donanımı, bilgisayara uyumlu hale getirerek oyunları oynamamızı sağlarlar. Öykünme (emulasyon) veya öykünüm, herhangi bir bilgisayar ortamında kullanılan yazılımlar yoluyla başka bir bilgisayar sisteminin taklit edilmesi anlamına gelmektedir. Öykünme işini gerçekleştiren yazılıma emulatör veya öykünücü adı verilir. Günümüzde kişisel bilgisayarlarda her türlü eski bilgisayar ve oyun sisteminin taklit edilmesi olanaklı hale gelmiştir. Sadece kişisel bilgisayarlar için değil, çeşitli oyun konsolları ve farklı işletim sistemlerinin farklı ortamlarda çalıştırılması da sağlanır [5]. 2.6 UML UML (Unified Modelling Language) yazılım sistemlerinin olgularını tanımlamak, görselleştirmek, oluşturmak ve kayıt altına almak (dokümante etmek) için kullanılan bir standartlar dilidir. UML, büyük ve karmaşık sistemlerin modellenmesinde başarısı ispatlanmış deneyimlerin bir araya gelmesiyle oluşmuştur ve nesneye yönelik yazılım ve yazılım geliştirme sürecinin önemli bir parçasıdır. UML, yazılım projelerinin tasarımını daha çok grafiksel öğeler ile belirtir. UML kullanımı takım içindeki iletişimi güçlendirir, potansiyel tasarımların ortaya çıkmasını sağlar ve yazılımın mimari tasarımını ortaya koyar [6]. Ö. Yücel Pamukkale Üniversitesi Mühendislik Bilimleri Dergisi, Cilt XX, Sayı X, 20XX, Sayfalar XX-XX Sorular Soru 1) Programlama dili ilk olarak hangi bilgisayarda kullanılmıştır ? A) Analitik Makine B) ENIAC C) Mark 1 D) DEVAC E) UNIVAC Şekil 3: Java UML sınıf diyagramı örneği 3 Sonuçlar Yapmış olduğum bu çalışmada, bilgisayar programlama dillerinin tarihçesi hakkında bilgiler edindim. Programların nasıl sınıflandırıldığı ve bir programlama ortamında hangi bileşenlerin bulunduğu bilgisine ulaştım. Bilgisayar programlama dillerinin bilgisayar mühendisliğinin en temel kollarından birisi olduğu sonucuna ulaştım. Bilgisayar programlama dilleri yıllardır geliştirilmekte olup, gelecekte de bu gelişimi devam ettirilecektir. Her geliştirilen programlama dili belirli eksikleri gidermekle birlikte yeni boşluklar da oluşturacaktır. 4 Kaynaklar [1] Dr. Rifat Çölkesen, Bilgisayar Mühendisliğine Giriş, Papatya Yayıncılık Eğitim, İstanbul, 2010. [2] http://www.bilgisayarogren.com/basic1.doc (Erişim tarihi: 16.02.2014) [3] Dr. Rifat Çölkesen, Bilgisayar Mühendisliğine Giriş, Papatya Yayıncılık Eğitim, İstanbul, 2010. [4] Dr. Rifat Çölkesen, Bilgisayar Mühendisliğine Giriş, Papatya Yayıncılık Eğitim, İstanbul, 2010. [5] http://emulator.nedir.com/#ixzz2uh3Tw5Vl (Erişim tarihi: 01.03.2014) [6] http://uml.nedir.com/#ixzz2tPu43wSI (Erişim tarihi: 15.02.2014). Soru 2) Aşağıdaki programlama dillerinden hangisi kendi kendini değiştirme ve hatta geliştirme gibi kendine özgü özellikleri olan ve John McCarthy tarafından yapay zeka araştırmaları için geliştirilen bir programlama dilidir ? A) PROLOG B) COBOL C) LISP D) FORTRAN E) ALGOL Soru 3) Bir programlama ortamında aşağıdaki bileşenlerden hangileri bulunur ? I. Derleyici II. Editör III. Emulatör IV. Bağlayıcı A) I, II B) II, IV C) I, II, III D) I, II, IV E) I, II, III, IV Soru 4) Aşağıda tanımları verilen kavramların, doğru eşleştirilmiş şekli verilen kavramların sırasına göre aşağıdakilerden hangisidir ? -Emulatör, UML, Editör, Program, Programlama Dili, YorumlayıcıI. Bir hesaplamanın yapılabilmesini sağlayan ardışık simgeler dizisidir. II. Bir makinenin davranışını kontrol etmek için kullanılabilen ve ardışık simgelerden oluşan yapay bir dildir. III. Yazılım sistemlerinin olgularını tanımlamak, görselleştirmek, oluşturmak ve kayıt altına almak için kullanılan bir standartlar dilidir. IV. Bir programın kaynak kodunu doğrudan satır satır yürüten bir programdır. V. Kaynak kodu oluşturmak ve gerektiğinde değişiklik yapmak için gerekli olan araçtır. VI. Öykünme veya öykünüm, herhangi bir bilgisayar ortamında kullanılan yazılımlar yoluyla başka bir bilgisayar sisteminin taklit edilmesi anlamına gelmektedir. Öykünme işini gerçekleştiren yazılımdır. A) V, IV, VI, I, II, III B) IV, V, III, II, I, VI C) III, VI, V, I, II, IV D) V, VI, IV, II, I, III E) VI, III, V, I, II, IV
© Copyright 2024 Paperzz