Programlama Temelleri
1. PROGRAMLAMA DILLERI
Bilgisayar çok karmasik bir elektronik cihazdir, simdilik bizi ilgilendiren kisim onun
çalisma prensibi degil, programlama kismidir.
Bilgisayar ögrendigini unutmaz, eger iyi programlarsaniz kusursuz olarak islemleri
yapar, yorulmadan hep ayniislemi tekrar yapabilir. Programlar bilgisayarin tüm
kaynaklarina erisebilir, tabii onu yazan programciizin vermisise. Bilgisayar, bir konuda
yorum yapamaz, yeni durumlara uyum saglamak için çaba sarf etmez.
Insan unutkandir, hata yapabilir, yorulur ve beyninin tamaminikullanamaz, moral
durumu degisebilir ve duygusal olarak etkilenir. Insanlarin en büyük avantaji, yeni durumlar
karsisinda bocalasa bile zamanla uyum saglayabilmesidir. Basina gelen olaylardan ders
çikartabilir. Tek basina birçok sorunu çözebilirler. Bilgisayar ise her zaman aynitepkiyi
verir, kendini gelistiremez. Insan tarafindan kontrol edilmedikçe etkinliklerini
degistirmezler.
Bilgisayar; ekonomi, bilim, mühendislik, egitim ve askeri alanlarda yardimciolmasi
için üretilmistir. Çok karmasik formüllerin sonucunu kisa zamanda elde etmek için
programlar yazilmistir. Özellikle Ikinci Dünya Savasiveri sifreleme ve silahlarin hedefi
daha dogru bulmasigibi konular sebebi ile bilgisayarin gelisimi hizlanmistir.
Bir programlama dilini neden ögreniriz? Bu sorunun cevabi, eglence için, bir ihtiyaci
gidermek için, kariyer için veya zekânizikanitlamak için olabilir. Para kazanmak her ne
kadar birincil hedef gibi görünse de, eger isinizi severek yapmiyor iseniz, ne kadar
kazandiginizin pek önemi olmaz.
Eger bilgisayara ne yapmasigerektigini söylemezseniz, hiçbir sey icra etmez.
Bilgisayara yaptirmak istediginiz seyi iki sekilde gerçeklestirebilirsiniz:
Adim adim bir program yazarak
Uygun bir program satin alarak
Iyi bir programin temel özellikleri sunlardir:
Dogruluk : Verilen görevlerin tam olarak yerine getirilmesidir.
Dayaniklilik : Beklenmedik hatalardan dolayiprogramin çalismasi
kesilmemelidir.
Genisletilebilme : Ileri asamalarda görevlerin degisikligi veya yenilerinin
eklenmesi kolay olmalidir.
Basitlik : Karmasik tasarimlardan kaçinmak gerekir.
Modülerlik : Program kodlaribaska programlar içinde de kullanilabilmelidir.
Uyumluluk : Baska bilgisayar ve sistemlerde çalisabilmelidir.
Kontrol edilebilirlik : Hata olabilecek yerlere açiklayicihata mesajlarikonulmalidir.
Kolay kullanim : Kullaniciara birimi kolay olmalive rahat ögrenilebilmelidir.
Parçalanabilirlik : Problemin küçük parçalara ayrilarak yazilmasidir.
Anlasilirlik : Baskasinin yazdigiprogram elden geçirilirken rahatça
okunabilmelidir.
Koruma : Modüller birbirlerine müdahale etmemelidirler.
Temel olarak bir algoritma, bilgisayara belli bir problemin çözümünü anlatmaktir.
Dünya problemlerden olustuguna göre, pratikte insanlarin yazabilecegi program sayisive
çesitliliginin bitmesi çok zordur. Büyük bir problemin bilgisayara yaptirilmasiiçin,
genellikle küçük parçalara bölmek gereklidir.
Örnegin bir oyunda su adimlariçözmek gerekebilir:
Kullanicinin bir nesneyi (araba, adam, uzay gemisi…)
nasil hareket ettirebilecegi
Nesnenin duvar, uçurum veya çevredeki baska
nesnelere göre çarpmadan, düsmeden nasil hareket
edecegi
Gerçekçi olarak çevre tasarimiyapmak
Gelen merminin nereye çarptigini bulmak ve
oyuncunun saglik durumunu ekrana yazmak
Programlama genellikle zor degildir, ama zaman harcayan bir istir. Bir pinpon
oyununu yazmak, bir savasuçaginin simülasyonunu yapmaktan daha kolaydir. Eger adim
adim bir yeri tarif edebiliyorsaniz, program yazabilirsiniz. Bir bilgisayar aptal olduguna göre
ona ne yapacaginiadim adim anlatmaniz gereklidir.
Arkadasiniza evinizin yolunu tarif ederken:
Yayla mahallesine git
Çinar sokagina git
Trafik isiklarindan saga dön
Iki sokak ileride sola dön
Bir insan için kolay olan bu adimlar bilgisayarda yazildiginda hiçbir anlam ifade
etmez:
Yayla mahallesine nasil gidecegim?
Çinar sokagininasil belirleyecegim?
Isiklardan ne kadar sonra saga dönecegim?
Sola dönünce arabayinasil park edecegim?
Programcilik
Programlar her zaman ise yaramayabilir. 1980’li yillarda Amerikan ordusu “Tegmen
York” isminde bir pilotsuz uçan uçak savar planlamisti. Basit olarak amaç, düsman uçagini
bulup yok etmekti. Milyonlarca dolar harcandiktan, saatlerce program yazildiktan ve test
edildikten sonra programcilar çalisacagina emin oldular. En üst rütbeli subaylar ve
görevliler önünde, deneme için hazirlik yapildi. Maalesef deneme sirasinda, “Tegmen
York” tüm silahlarinidüsmana degil, komutanlarin üzerine dogrultmustu. Neyse ki insanlar
etrafa dagilirken, füzelerini ateslememisti! Bu korkunç denemeden sonra proje rafa
kaldirildi.
1.1. Bilgisayar ProgramiIçin Neler Bilmeliyim?
Bir programikullanmaktan çok, yazma konusunda istekli iseniz, zaten program
yazmak için gerekli seye sahipsiniz demektir.
Istek: Önünüze ne kadar engel çiksa da, isteginiz varsa ögrenirsiniz. (Kanuni
olmayan bir sey ile ilgileniyorsaniz, hapishanede geçirilecek zamaniniz
olabilir!)
Meraklilik: Bu sayede ögreneceginiz dil size angarya gibi gelmez.
Hayal gücü: Böylece daha ilginç ve faydaliprogram yapabilirsiniz.
1.2. Programlama Dili
Bilgisayar Türkçe, Ingilizce veya baska bir dilden anlamaz.
Bilgisayarin fonksiyonel bir beyni olmadigiiçin insanlar komutlar
yazmalidir. Bu özel dile “programlama dili” denir.
Komutlar bir araya gelerek “program”imeydana getirir. Belli bir
dil ile yazilmiskomutlara “kaynak kod” da diyebiliriz.
1.3. Neden Birçok Programlama Dili Vardir?
Her programlama dili özel bir amaca hizmet eder. Insanlar farkliproblemleri çözmek
için degisik programlama dilleri yazmislardir. Temelde bilgisayarlar 1 ve 0’lardan olusan
ikilik sayi* sistemindeki dili anlarlar. Buna “makine dili” denir:
Makine dilinin dezavantajlari, kodlariyazarken hata yapilma olasiliginin fazla olmasi
ve yaziminin uzun sürmesidir. Makine dilinin daha rahat programlanmasiiçin 1950’li
yillarda “assembly dili” gelistirilmistir. “Assembly dili” basit, hatirlanmasi kolay
deyimlerden olusur.
Programcilar 1 ve 0 ile program yazma yerine “assembly dili”ni gelistirmislerdir,
bilgisayarin bu yazilanlarla ilgili hiçbir fikri yoktur. Bu sebeple programcilar “assembly dil”
komutlarini“makine dili”ne çeviren programlar yazmislardir. Bu programlara “makine dili
çeviricisi - assembler” denir. Böylece “assembly dili” ile yazilmisbir kod, bilgisayarin
anlayabilecegi “makine dili”ne dönüsmüsolur.
Not: Bir programiilk denemede çalistirmak zordur. Genel davranisolarak programiokunakli
yazarsaniz, hatalara firsat vermez, ileride bir eklenti yapmak istediginizde zorlanmazsiniz
Temel olarak makine dilinde; mantiksal islemler, aritmetik islemler, dallanma
islemleri ve veri hareket islemleri yapabiliriz. Bu islemleri kullanarak ister basit ister çok
karmasik programlar yazabilirsiniz.
“Assembly dili” makine dilinden daha rahat yazilmasina ragmen, hala bazi
dezavantajlara sahiptir:
Yavasve çok yer kaplayan programlar olusur. (bu satir hataliassembly yazilan
programlar az yer kaplar ve yavasçalismazlar)
Baska dile çevrilmeleri zordur.
Çok uzun program yazimina elverisli degildir.
Programcilar donanima erisimi daha kolay olan, okunakli, yazimive düzenlemesi
kolay olan bir dile ihtiyaç duymuslardir. Bunun üzerine C (1972 dogum yili) tasinabilir† dili
gelistirilmistir. Cobol (1959) ve Fortran (1957) gibi birçok diller de vardir ama hala
günümüzde yaygin olarak kullanilan C dili olmustur.
Her ne kadar kendi dilimizde program yapmak gurur ve heyecan verici olsa da, ileride
göreceginiz bir dilin temel gereklilikleri sebebi ile bu dillerde büyük (karmasik) programlar
yapmak zordur. Programlamaya isinmak için, ilk denemelerinizi bu programlama dillerinde
yapabilirsiniz.
Bir dilin okunaklive kolay yazilabilir olmasidisinda, bilgisayarin donanimina
ulasmasive baska bilgisayarda da rahatlikla çalismasigereklidir. Yüksek seviye bir dili
“makine diline” çeviren programlara “derleyici – compiler” denir. Derleyiciyi aynen
Fransizca bir kitabin Türkçeye çevrilmesini saglamak gibi düsünebiliriz. Tabii insan dilinin
baska dile çevrimi çok daha zor bir islemdir.
Eger uygun bir derleyiciniz var ise programinizin kaynak kodunu baska bilgisayarda
derleyerek çalistirabilirsiniz. Örnegin, Macintosh’ta yazilan bir programin kodlarini
Windows’ta biraz degistirerek kullanabilirsiniz.
C programlama dili diger Cobol ve Fortran gibi dillerden daha basit oldugu için, C
dilini makine diline çeviren birçok derleyici yazilmistir. C dili böylece öyle çok
yayginlasmistir ki, bu dile uyumlu olan diller ortaya çikmistir. Mesela C++ (c plus plus),
Java, Perl, Python ve C# (c sharp) gibi. Su anda kullanilan taninmis, taninmamisbirçok
program C veya C++ ile yapilmistir: Windows, Unix, Microsoft Office gibi...
Not: C’nin çok güçlü olmasibazikötülükleri de beraberinde getirir: Tüm sistem kaynaklarina erismek
gibi. Bu kullanmasinibilmeyen birinin eline elektrikli testere vermek veya el bombasinivermek
gibidir… Yanlisyazilan kod, bilgisayarin göçmesine sebep olabilir. Özellikle eski DOS günlerinde
programdaki hatalardan dolayibilgisayarin kilitlenmesi çok sik olan bir durumdu. Yeni isletim
sistemleri, program hatalarinda bilgisayarin kilitlenmemesi için önlemler almislardir.
Programlama dilleri özel amaçlar için yazildiklariiçin o dilde her istediginizi yapmak
zordur. Mesela Fortran matematik hesaplamalar için yapilmistir, bu dilde bir isletim sistemi
yazmak gereksiz yere çok uzun zaman alan bir islem olur.
Mühendisler diger insanlarin rahatça program yazmalariiçin Basic (Beginners All
Purpose Symbolic Instruction Code - 1964) ve Pascal (1971) gibi diller üretmislerdir. Basit
bir dilden yola çikilarak istenen dile geçisyapilabilir.
Lisp 1950’li yillarda yapilmisbir derlenebilen mantik programlama dilidir. Prolog
(“programming in logic” kelimelerinin kisaltmasi) adindaki 1972 yilinda ortaya çikan dil ise,
“mantik programlama dili” olarak tarif edilebilir. Komut dizileri yerine mantik deyimleri ile
program yazilir. Genellikle yapay zekâ ile ilgili konularda kullanilir. Yazimive kurallariçok
basittir.
Yüksek seviyeli dillerin genel özelliklerini söyle özetleyebiliriz:
“Makine diline” göre daha siskin ve yavaskod meydana getirirler.
Tüm sistem kaynaklarina ulasilamayabilir, tabii amaciniz disk yardimci
programi(Norton SystemWorks…) gibi program yazmak degilse…
Bir derleyici gereklidir.
Kisa zamanda program yazmaya baslanir.
Ögrenme ve ustalasma için geçen zaman fazla degildir.
Yanlislikla sistem kaynaklarinin bozulmamasiiçin kalkanlarivardir.
Okumasive degistirmesi kolaydir.
Baska bilgisayar çesitlerinde de çalisabilirler, yani tasinabilirdirler.
Sik sorulan sorular:
1. Assembly dili ile yüksek seviye dil arasindaki hiz farkine kadardir?
Cevap:Assembly dili yaklasik 2 ile 20 kat arasinda daha hizlidir.
2. Assembly dili ile yüksek seviye dil arasindaki program tasarim süresi
ne kadardir?
Cevap:Assembly dili yaklasik 10 ile 100 kat arasinda daha yavassürede tamamlanir.
3. Derleyiciler hangi dilde gelistirilmislerdir?
Cevap:Önceleri assembly dili ile yazilmislardir. Daha sonra yüksek seviye
diller güçlendikçe bu diller kullanilarak derleyiciler yazilmistir
1.4. HizliUygulama Gelistirme Ortamlari
Eski zamanlarda fare, grafik ekran imkâniolmadigiiçin “metin tabanli” ortamlarda
çalisilirdi. Pencere ve dügme gibi kavramlar ise, 1984 yilinda Apple "System 1" ve 1992
yillarinda Microsoft Windows 3.1’in ortaya çikmasiile günlük hayatimiza girdi.
Pencereler, kaydirma çubuklari, araç çubuklari, menüler programcinin daha hizlibir
sekilde program yapmasina sebep oldugu için, bu ortamlara “HizliUygulama Gelistirme –
Rapid Application Development (RAD)” denilmistir. Görsel Programlama Dilleri (Visual
Programming Languages) olarak da adlandirilirlar. Programciolusturacagiprogramin ara
birimini, istedigi gibi tasarlayabilir ve bu ara birimi islevsel hâle getiren kod kismini
yazabilir.
Popüler RAD dilleri: Visual Basic, Delphi, JBuilder ve Visual C#.
RAD ile programci, temel programlama dilleri olan C, Basic ve Pascal gibi dilleri
kullanarak, hizlibir sekilde uygulama gelistirebilir. Kullaniciara birimi gelistirmek kolaydir.
C ve Basic bilen için görsel programlama diline geçisçok kolaydir.
Maalesef RAD ile dilin tasinabilirligi azalir. Yani Windows ortaminda Visual Basic
ile yazilan programin, Linux’ta çalisma ihtimali azdir. Tahmin ettiginiz gibi, artik görsel
programlama ile yaptiginiz programlar daha çok disk alanikaplayacak ve daha yavas
çalisacaklar.
Türkçe görsel programlama diline örnek Yunus’tur**.
1.5. Veri Tabani(Database) Programciligi
C ve benzeri diller genel amaçlidiller oldugu için, bu diller ile oyun, muhasebe
programiveya bir kelime islemci programiyapilabilir. Bilgisayarlarin en çok kullanim alani
ise, bilgi kaydetme ve düzeltmedir. Isimler, adresler, elektronik posta adresleri, telefon
numaralari, isdeneyimleri, muhasebe geçmisleri gibi bilgiler veri tabanlarinda saklanir.
Neredeyse tüm firmalar veri tabanisayesinde islerini daha rahat yürütürler.
Kimse garip komutlar ile kayit, okuma ve silme islemlerini yapmak istemez.
Veritabaninikolaylastirmak için “veritabani(database) programciligi” gelistirilmistir. Veri
tabani programlama ile degisik firmalarin isteklerine göre özel veri tabanlari
olusturabilirsiniz.
En çok kullanilan veri tabaniprogramlariMicrosoft Access, MSSQL ve MySQL’dir.
Verileri düzenleme için kendilerine has dilleri vardir. Bu dile SQL (Structured Query
Language – Yapisal Sorgu Dili) denir. dbase, FileMaker ve FoxPro programlariise artik pek
kullanilmiyor. Yine SQL tabanliOracle ise, çok büyük veri tabanlaribarindiran, güvenlik ve
hiz gerektiren uygulamalarda kullanilir.
Veri tabaniprogramciliginin dezavantajlarisunlardir:
Veri tabaniprogramlari, veri tabaniniisleyen program sistemde kurulu degilse
çalistirilamazlar.
Sadece veri tabaniprograminikullanarak antivirüs, oyun, kelime islemci gibi
program yapamazsiniz.
1.6. Betik (Script) Programciligi
Birçok program kendi programlama dilinin kullanilmasiimkâninisaglar. Örnegin
Word ve Excel içinde, neredeyse Visual Basic’e benzeyen, Visual Basic for Applications
(VBA) adiverilen bir dil vardir.
Office programlariiçindeki makrolar (VBA) kullaniciya yardimciislevler saglar.
Betik dilleri normalde diger programlama dillerinden daha kolaydir. Bu diller ile
kullaniciya yardimcibaziislemler yapabiliriz:
Var olan bir programiözellestirebiliriz.
Çok az program yazarak, karmasik bir programikullanislihale getirebiliriz.
Sunlariunutmayiniz:
Betik dili ana programa bagimlidir, sadece ana programin kurulu oldugu
bilgisayarlarda yazdiginiz program çalisabilir.
Programinizin satisve dagitimizordur. Almak isteyen ana programida satin
almak zorunda kalir.
Genel programlama dillerinden daha kisitliimkânlariniz vardir.
1.7. Web Programciligi
Bazianlarda okunakliligiazaltsa da, günümüz internet siteleri bol grafik, efekt ve
animasyonlarla süslüdür. Kolay web programciligiiçin HTML (HyperText Markup
Language – HiperYaziIsaret Dili) icat edilmistir.
Bir sitenin HTML olarak kaynaginiincelediginizde çok karmasik ve daginik gelebilir.
HTML ile site tasarimiçok zor oldugu için JavaScript gibi web sayfasiyardimci
programlama dilleri yapilmistir. Etkilesimli site yapmak, kullanicinin formlara girdigi
verileri kontrol etmek, site içine oyun eklemek isterseniz, bunlariJavaScript, Java, CGI veya
Macromedia Flash ile yapabilirsiniz.
Web programlama dilleri, sitenin ziyaretçi sayisiniartirir ve ziyaretçinin uzun süre
sitede kalmalarinisaglar. Ögrenmesi kolaydir ve dünyanin herhangi bir yerinden siteye
(uygulamaya) ulasip, degisiklikler yapabilme imkânivardir.
Dezavantajlari:
Tüm web tarayicilariJavaScript ve Java desteklemez. (Daha eski tarayicilar
gibi)
Baglantihizinidüsürür.
Internet baglantisiyok ise sayfanin görüntülenmesi mümkün olmayabilir.
Sonuç olarak her konuda bir ise yarayan “mükemmel” dil yoktur. Profesyonel olarak
program yazmak istiyorsaniz, C# gibi yüksek seviye bir dil ve SQL gibi veri tabanidili
ögrenmelisiniz. Isbulmakta zorlanmazsiniz. Eger sizden site yapilmasiisteniyor ise Java,
JavaScript, PHP ve ASP.NET gibi dillere asina olmak kaçinilmazdir.
Eski bilgisayarlarda hâlâ eski kodlarin barinmasindan dolayi, piyasada az kullanilan
diller ile iyi kariyer yapabilirsiniz. Hatta bilen sayisiaz olmasindan dolayi, iyi ücret
alabilirsiniz.
Çok Dil Kullanma
Baziderleyiciler, kaynak kodu önce özel bir dosya türüne çevirir. “Object file – nesne
dosyasi” denilen bu dosya, kaynak dilden bagimsiz hâle gelir. Farklidilde olusturulmus
nesne dosyalari, “linker - baglayici” adiverilen programlar ile birlestirilir. Sonuçta ise
çalistirilabilir tek dosya olusur.
MicrosoftWindows, dillerin ortak kod kullanimiiçin DLL (Dynamic Link Libraries –
Dinamik BagKütüphanesi) yöntemi kullanir. Ara birimi olmayan bu dosyalar, farkli
programlama dilleri kullanabilsin diye sisteme tanitilmistir.
Son bir yöntem, Microsoft’un .NET teknolojisidir. Ayniara birimde ister C#, ister
Basic veya baska bir dil ile program yazilabilir. Ayniveri tabaninive çözümü ortak
kullanarak birçok programcibir arada çalisabilir. Her dilin kendine has avantaji
kullanilarak, uygulamalar daha güçlü hâle gelebilir.
ALINTIDIR!
Kaynak = megep.meb.gov.tr