Bilgisayar Programlama Programlama nedir? Program nasıl yazılır?

Transkript

Bilgisayar Programlama Programlama nedir? Program nasıl yazılır?
Bilgisayar Programlama
Programlama nedir?
Bilgisayar; Yazılım ve Donanım olarak temel anlamda ikiye ayrılır. Ekran, disk, klavye, ram vbg
donanım birimleri bu dersin kapsamı dışındadır. Ne kadar iyi donanıma sahip olursanız olun,
yazılım olmadan bilgisayar bir anlam ifade etmeyecektir. Windows, Linux gibi herhangibir
işletim sistemi, Word gibi bir kelime-işlem veya Excel gibi bir hesap tablosu programı, bu
dersin konusu olan Visual Basic programlama dili yazılıma verilebilecek örneklerdendir.
Yazılım; "bilgisayarın donanım kısmına yaşam veren komutlardır" [1] veya “komutları da
içeren satırlardır” şeklinde tanımlanabilir. “Burada vurgulanan; eğer bilgisayarda bir iş
yapacaksak, onu gerçekleştirmek için program yazmamız gerektiğidir. Örneğin, derslerimizin
kayıtlarını ve notlarımızı ya da müşterilerimizin kayıtlarını tutmak istiyorsak bir programa
gereksinimimiz vardır. Bunu Microsoft Excel gibi bir program aracılığıyla da yapabilirsiniz.
Ancak program yazabilmek, bu işler için özel bir çözüm ya da uygulama geliştirmek anlamına
gelir. İşte bu nedenle da yazılım yerine daha çok uygulama geliştirme (development) terimi
kullanılır. Program, öncelikle bir işletim sistemi ya da platform için yazılır. Örneğin Windows
XP için yazılan bir program Linux işletim sisteminde çalışmayacaktır. Platformun ardından
Visual Basic ya da C++ gibi programın yazılacağı dil seçilir. Bu diller, bizim programımızı
yazmamızı sağlarlar. Bizim anlaşılabilir şekilde program geliştirmemizi ve geliştirdiğimiz
programı bilgisayarın doğrudan çalıştırabileceği makine diline çevirirler. İşte, kabaca bu
sürece programlama denir “ [1].
Program nasıl yazılır?
Konunun daha iyi anlaşılması için bazı terimlerin ve ifadelerin anlaşılması gerekmektedir.
Konu ile mesleğimiz gereği program ve programcılık dışında çok detaylı bilgi sahibi
olmadığımızdan (olmamamız gerektiğinden) dolayı, konunun daha iyi anlaşılması için bu
terimleri daha iyi anlatan bireve bölüm (2 numaralı kaynak) aşağıya alınmıştır.
Bilgisayarlar işlemlerin kendi anlayacağı dilde (makine dili) açıkça yazılmasını isterler. 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. Bu çevirme işlemine derleme (compile) ya da
yorumlama (interpriting) denir.
Programlama; kullanıcıların isteklerini karşılayacak muhasebe, stok, oyun, işletim sistemi gibi
programları oluşturacak alt yapıyı (kodları) hazırlamaktır. Bu alt yapıyı oluşturan kişilere
programcı denir.
Bir programın çalışması demek, Mikroişlemciye daha önceden hazırlanmış bir kod yığınının
gönderilmesi demektir. Bu kodlar, işlemcinin anlayacağı ASM dilinde (makine dilinde)
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 1/Sayfa 1
yazılmış kısa kodlardır, ASM en hızlı programlama dili olmakla beraber, kullanılması en zor
programlama dilidir. ASM dilinde kullanılan tüm komutlar sadece işlemciye ve donanıma
hitap etmektedir ve programı yazan kişinin tüm donanımı bilmesi gerekmektedir. Örnek
vermek gerekirse A markalı bir ekran kartı için yazılmış bir program B markaları bir ekran
kartında çalışmaz, çünkü donanımsal olarak farklılıklar vardır. ASM dili için kısaca bilgisayarın
anadili diyebiliriz, çünkü CPU (Merkezi İşlem Birimi-İşlemci) sadece ASM kodlarını anlayacak
bir yapıya sahiptir.
Bilgisayar işlemcilerinin ilk çıktığı günlerde sadece ASM dili olduğu için, program yazmak
gerçekten çok zordu. Her değişen donanım ya da işlemci için tekrar program yazılması
gerekiyordu, donanımsal zorluklar dışında yazılımsal zorluklarda vardı, Ekrana sadece A
yazmak için bile bol miktarda kod yazılıyordu. Bu tip sorunları kaldırmak için kullanılması
kolay alt seviye programlama dilleri oluşturuldu (C, Basic, Pascal, Cobol v.s.).
Alt Seviye programlama dilleri ile yazılan kodlar işlemci tarafından anlaşılamayan kodlardır,
bu kodlar Compiler (Derleyici) tarafından işlenerek CPU’nun anlayacağı kodlara (ASM)
çevrilir.
Örnek: ASM ve BASIC Dilinde yazılmış Ekrana A harfi yazan program
ASM (Üst Seviye Dil) :
1. ORG 100
2. MOV AX,CS
3. MOV DS,AX
4. MOV ES,AX
5. MOV AX, B800 (Renkli Ekran Kartının Bellek Adresi (Her Ekran Kartında Değişebilir))
6. MOV DS,AX 7. MOV SI,0 ( A Harfinin Belleğe Yerleşeceği Alan )
8. MOV AL, 41 (A Harfinin ASCII Kodu - Hex olarak)
9. MOV DS: [SI],AL ( Ekrana A Harfinin basılma anı)
BASIC (Alt Seviye Dil):
1. PRINT “A”
Örnekte görüldüğü gibi Alt Seviye bir dilde ekrana A yazmak için tek bir komut yeterlidir, Üst
seviye dilde ise çok daha fazla kod yazılması gerekir. Alt Seviye Dillerde yazılan programların
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 1/Sayfa 2
kodları her ne kadar kısa görünsene derlenip çalışan duruma getirildiklerinde boyutları, Üst
Seviye Dilde yazılan programdan daha büyük olurlar. Sebep ise ASM dili ile yazılan
programda hedefe direk (çok hızlı) ulaşılırken, Alt Seviye dilde derleme esnasında kod içine
donanım ve işlemciyi tespit eden v.s. kodların eklenmesidir. Bu yüzden alt seviyede yazılan
programlar ASM dilinde yazılan programdan çok daha yavaş çalışırlar.
Alt seviye programla dilleri, yukarıdaki örneklerden de, anlaşıldığı gibi sadece bir çeviri
aracıdır, tek programlama dili ASM’dir. Fakat ASM diline C gibi yakın olan programlama dilleri
de bazı kaynaklarda üst seviye dil olarak geçer.
Programlama dillerinin sınıflandırılması
En temel anlamda programlama dilleri; genel ve özel amaçlı programlama dilleri olarak ikiye
ayrılır;
1-Özel Amaçlı Programlama Dilleri: Bu tür programlama dilleri ile aklınıza gelen her şeyi
programlayamazsınız, bu diller sadece üretildikleri amaca uygun işler (programlar) yazmak
için kullanılabilirler. Bilgisayar ortamında çizim işlemleri için geliştirilmiş olan Autocad
programı genel amaçlı bir programlama dili ile (örneğin C veya Visual Basic) yazılmıştır, ama
Autocad programına uygun bir işlem yaptırılacaksa bu işin bu dile özgü dil ile yazılması
gerekir, dolayısıyla bu dil ile örneğin bilgisayarınızdaki müziklerin çalınabilmesi programını
yazamazsınız, ama yarıçapı verilen bir daireyi otomatik olarak çizdirilmesine uygun bir
program yazabilirsiniz. CNC (Sayısal Kontrollü Tezgah) tezgahlarının yapacağı işlerin
programları da bu işe uygun programlar ile yazılır, çünkü bu tür cihazlar ile delik delme,
çapak alma gibi özel işler yapılabilir. Yine bilgisayardaki yazma işlemleri (kelime-işlem) için
kullandığımız Word programına yaptırılabilecek işlemler de yine bu dil için geliştirilmiş
programlama dili (VBA) ile yazılabilir. Çünkü Word programı sadece yazma işlemleri (rapor,
dilekçe, kitap vbg yazma işlemleri) için geliştirilmiş olan bir paket programdır.
2-Genel Amaçlı Programlama Dilleri: İsminden de anlaşılacağı gibi bu tip programlama dilleri
ile her tür program yazılabilir. Çizim programı, muhasebe programı, bilgisayarınızdaki
müzikleri çalan program, ikinci dereceden bir denklemin köklerini bulan program genel
amaçlı programlama dilleri ile yazılabilecek programlara örnek olarak verilebilir. Bu tür
dillerin en yaygın olarak kullanılanları; C (“si” olarak okunur), C# (“si şarp” olarak okunur),
Java, Visual Basic, Fortran, Pascal vbg. olarak verilebilir.
Bu derste Genel Amaçlı Programlama Dillerinden “Visual Basic Programlama Dili”
anlatılacak ve bu dil ile nasıl program yazılacağı anlatılmaya çalışılacaktır.
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 1/Sayfa 3
Programlama Dilleri Arasındaki Farklar
Programlama dilleri aynen konuştuğumuz dile benzer. C, Visual Basic veya Fortran bilgisayar
programlama dilleri arasındaki fark, Türkçe, İngilizce, Arapça, Hintçe konuşma dilleri
arasındaki farka benzer. Konuşma dilleri arasındaki farkları şu şekilde açıklayabiliriz; her dilin
kendine has özellikleri vardır. Bazı diller bazı özel durumları açıklayabilmek için kendilerini
geliştirmişlerdir, dolayısıyla bu diller o olayları daha kolay anlatırlar. Örneğin Afrika dillerinde
av, hayvan, tarım gibi o dillerin geliştiği yerlere özgü ifade, atasözü, deyim gibi konuşma
diline has özellikler daha fazla gelişmiştir. Aynı şekilde Avrupa dilleri, teknoloji türevi söz,
atasözü ve deyimlere daha fazla gelişmiştir ve bu diller bu tür olayları daha kolay ifade
edebilirler. Bu, diğer dillerin gelişmemiş taraflarını açıklayamaz anlamında anlaşılmamalıdır.
Açıklayabilir, ama aynı işlemi daha fazla cümle kurarak yapabilir. Halbuki o dilin özellikle
kendi alanına has durumları anlatması daha kolay ve daha kısa olabilir, çünkü sözkonusu dil
avantajlı olduğu olaylara göre kendisini geliştirmiştir. Atasözlerinin anlatılmak istenen
durumu daha etkili anlatmayı başarabildiği, daha fazla cümle kurmaya gerek bırakmadığı
aşikardır. Bu durumu şu şekilde örneklendirebiliriz; bildiğiniz gibi millet olarak biz (Türkler)
misafirperverlikleri ile tanınırız, dolayısıyla konuşma dilimizde “Tanrı misafiri” denilen bir
deyim vardır, bu deyim anlatmak istediğini fazla cümleye gerek bırakmadan anlatabilir. Bu
deyim Türkçe’ye has bir deyimdir, aynı anlamı bir başka dilde, örneğin İngilizce’de birkaç
cümle veya paragraf ile açıklayabilirsiniz.
Aynı durumu programlama dilleri açısından şu şekilde düşünebiliriz: her programlama dilinin
daha başarılı olduğu, daha kolay yapabildiği, kabiliyetli olduğu taraflar vardır. Örneğin
Fortran programlama dili matematiksel işlemleri daha kolay yapabilmektedir, dolayısıyla
matematik yoğun (örneğin matris işlemleri) işlemleri Fortran çok daha kolay yapabilir. C
programlama dili hazır kütüphaneleri ile daha öne çıkmaktadır, dolayısıyla bir diğer
programlama dilinin sayfalarla yapabildiği aynı işi, C dili hazır programları ile çok daha az satır
ile gerçekleştirebilir. C dilinin bu özelliğini, konuşma dilindeki atasözlerine benzetebiliriz.
Konu ile ilgili son örneğimizi Visual Basic dilinden verelim. Bu dil öğrenmesi ve öğretilmesi
diğer dillere göre daha kolay olan bir dildir, dolayısıyla bu anlamda İngilizce konuşma diline
benzetilebilir.
Hangi Programlama Dilini Öğrenmeliyiz?
Bu soruya, ne olmak istediğinize karar vererek cevap vermeniz daha doğru olur. Çünkü bilgi
ve öğrenmek güzeldir, ama insanın kısa ömründe her şeyi öğrenmesi mümkün değildir,
özellikle daha sonra kullanmayacağı bir şeyi, sadece “herkes öğreniyor”, “çok işe yarıyormuş”
diyerek öğrenmesi tamamen zaman kaybıdır. Bilgisayar programlama, bilgisayar ile ilgili
yapılacak işlerin en zor olanlarından birisidir. Bu iş hazır bir programı (Word, Excel vbg. hazır
bir programı) kullanmaya benzemez, onun yerine “bilgisayara derdinizi” anlatma işlemidir ki,
bir anlamda “bilgisayara problemi öğretmek, onu o işi yapabilir hale getirmek” demektir.
Yani karşınızda elektrik ile çalışan ve her şeyi yerli yerinde noksansız isteyen makineye
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 1/Sayfa 4
(bilgisayara) bir şey öğretmek demektir, bu makinenin herhangi bir esnekliği yoktur, virgül
koymanız gereken yerde bunu unuttuğunuzda orada onu düzelmenizi bekleyen ve bir adım
daha ileriye gitmeyen bir makine ile muhatap olduğunuzu bilmeniz gerekir. Dolayısıyla kişi,
zeki bile olsa, programlamaya karşı merakı ve kabiliyeti yoksa bilgisayar programcısı olamaz.
Bilgisayar programcılığı kendi başına bir meslektir, aynı zamanda özellikle mühendislerin
kendi mesleklerini yürütebilmeleri için bilmelerinde faydası olacak bir artı özelliktir. Peki her
mühendis mutlaka herhangi bir programlama dilini bilmelimidir?. Buna şu şekilde cevap
verebiliriz, mühendis olarak iki tür yerde çalışabilirsiniz; Her şeyin yerli yerinde olduğu,
herkesin yetki ve sorumluluklarının belli, kurumsal bir işletmede (örneğin Toyota, Vestel vbg)
çalışabilir veya her işi herkesin yaptığı, yetki ve sorumluluk karmaşasının olduğu ve ülkemiz
sanayisinin büyük çoğunluğunun içinde bulunduğu bir işletmede.
Çalışanların ne ile sorumlu olduğunun belli olduğu birinci tür işletmelerde, çok büyük bir
ihtimalle “Bilgi İşlem Departmaları da” vardır. Dolayısıyla istediğiniz bir programı mühendis
olarak (gerekirse) sistem analistliğini yaparak Bilgi İşlem Departmanından istersiniz. Onlarda
gerekirse söz konusu programı yazarak veya piyasadan satın alarak problemi giderirler. Bu
şekildeki çalışan bir mühendisin genel anlamda (genel mantığı ile, dil ayrımı olmadan, o veya
şu programlama dili demeden) programcılığı bilmesi bu tür işlerini görebilmesi açısından
yeterlidir. Belki bazı küçük çaplı programları yazabilmesi için temel anlamda bir programlama
dilini bilmesi iyi olacaktır. Visual Basic yukarıda anlatmaya çalıştığımız mühendisin (çalışanın)
işini fazlası ile görecektir. Visual Basic daha önce de bahsedildiği gibi “genel amaçlı
programlama” dillerinden birisidir, yani bu dil ile programcılık anlamında her şeyi bilgisayara
programlayabilirsiniz. Öğrenmesi diğer dillere göre (özellikle C diline göre) çok daha kolaydır,
ama (yine C diline göre) biraz yavaş çalışmaktadır.
Herkesin her işi yapabildiği bir işletmede çalışıyorsanız, her şeyi bilmeniz patronun gözünden
düşmemeniz açısından iyi olacaktır, aynı zamanda programcılıktan da anlamanız, gerekirse
yazdırılması (veya satın alınması) gereken programın sizin tarafınızdan yazılabilmesi demektir
ki, işte böyle durumlarda en az bir tane programlama dilini iyi derecede (program
yazabilecek derecede) bilmeniz sizin açınızdan iyi olacaktır.
Bilgisayar mühendisliği dışındaki mühendislerden özellikle Endüstri mühendisleri, kendi
alanları dışında bilgisayar programcılığı da yapabilmektedirler. Bu şekilde çalışmayı
düşünenlerin özellikle C dilini bilmelerinin ortaya koyacakları ürünün daha kolay ve hızlı
çalışması açısından avantajlı olduğunu, C# gibi şu anda popular olan bir dili iyi derecede
bilmenin de işlerini kolaylaştıracağını unutmamaları gerekir.
Bu konuda son olarak en temel anlamda Visual Basic ile C dilini kıyaslamak gerekirse şunu
söyleyebiliriz; Visual Basic öğrenmesi C diline göre daha kolaydır, C dili ile daha fazla
ayrıntılara inilebilir, öğrenmesi çok daha zordur, Visual Basic diline göre, makine diline daha
yakın olduğu için daha hızlı çalışır. Yapılan bir araştırma mühendislerin iş ortamında en çok
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 1/Sayfa 5
Excel programını kullandıklarını göstermiştir. Visual Basic, Excel programının makro
programlama dilidir, yani Visual Basic bilerek hem kendi başına bir programlama dilini
öğrenmiş hem de Excel ortamında program yazarak Excel’i daha fonksiyonel kullanmış
olursunuz.
Zamanımızın ve Geleceğin Mesleği Olarak Programcılık
“Geleceğin Meslekleri” anahtar cümlesi ile internette arama yaptığınızda sonuçlardan büyük
bir kısmının “bilgisayar programcılığı”, “bilişim” türü meslekler olduğunu göreceksiniz.
Bilgisayar programcılığını; zeki, akıllı ve birçok yeteneği olan kişilerin bile bu konuda isteği
merakı ve kabiliyeti yoksa başaramayacağını daha önce söylemiştik. Bugün batılı toplumlarda
en fazla ihtiyaç duyulan iş kollardan birisi bilişim sektörüdür. Almanya, Kanada, Avustralya
gibi gelişmiş ülkeler bu kabiliyete sahip olan kişileri vatandaş olarak kabul etmektedir. Bu
yeteneğe sahip olanlar “arayan eleman” yerine “aranan eleman” olmaktadırlar.
Çalışma Soruları
1. Makinelerin, örneğin bir otomobil veya bir saatin nasıl çalıştığını merak eder misiniz?,
bunun için bir saatin içini açıp karıştırır mısınız?. Bu tür özelliğe sahip bir kişi ile
bilgisayar programcılığı arasında sizce bir ortak yan var mıdır?, açıklamaya çalışınız.
2. C, Visual Basic, C# isimlerini daha önce duydunuz mu?, yapabiliyorsanız bu ifadeleri
açıklayabilir misiniz?
3. Word programı ile Bilgisayar Programcılığını kısaca karşılaştırın, sizce aralarındaki
farklar nelerdir?
4. İleride ne olacağınıza karar verdiniz mi?, gelecekte çalışmak istediğiniz meslekte
bilgisayar ve bilgisayar programcılığının önemini ve ağırlığını anlatmaya çalışınız.
Kaynaklar
[1] http://www.bilgisayarogren.com/basic1.doc
[2] http://tr.wikibooks.org/wiki/Programlama_Nedir
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 1/Sayfa 6

Benzer belgeler