10 BILGISAYAR

bölüm 1

PROGRAMLAMA DİLİ
Herhangi bir problemin çözümü için hazırladığımız komutları belirli bir mantıksal sıra içinde yazılarak bilgisayara yüklenmesini sağlayan ve özel kodlama sistemlerinden oluşan yapıdır. Komutlar bir araya gelerek “program”ı meydana getirir. Belli bir dil ile yazılmış komutlara “kaynak kod” da diyebiliriz. Kaynak kodu (source code), herhangi bir yazılımın işlenip makine diline çevrilmeden önce insanların okuyup üzerinde çalışabildiği programlama diliyle yazılmış hali.

Örneğin aşağıda C va Pascal dillerinde yazılmış örnek iki kaynak kod vardır. Bu örnek kodlar ekrana "Merhaba Dünya" yazdırır.

C DİLİ
#include 
void main()
{
  printf("Merhaba Dünyan");
}

PASCAL
Begin
  Writeln (‘Merhaba Dünya’);
End.

Programlama dillerini alt seviyeli ve üst seviyeli programlama dilleri olmak üzere iki kısma ayırabiliriz.
 
ALT SEVİYELİ PROGRAMLAMA DİLLERİ

MAKİNE DİLİ 
Makine dili, işlemcinin verilen komutlar doğrultusunda çalıştırılmasını sağlayan ve işlemci mimarisine göre değişen en alt seviyedeki programlama dilidir. Komutları ve kodları 0 ve 1’lerden oluşan bir dildir.  Bu dil sadece 0 ve 1 binary ikililerinin anlamlı kombinasyonlarından meydana gelmektedir. Bu nedenle, makine dilinin anlaşılması çok güçtür. Diğer proglamlama dillerin gerektirdiği derleyici ya da yorumlayıcı kullanımını gerektirmediğinden ve donanımı doğrudan kontrol etme gücü olduğundan kullanılır.

Makine dilinde yazılmış bir programa amaç (object) programa denir.  

Örneğin: 1 0011 0111 gibi 9 bitlik bir wordu düşünecek olursak burada sol baştaki 1 biti indirect adresleme yapıldığını, bu bitten sonraki 4 bit olan 0011 çarpma işleminin yapılması gerektiğini geriye kalan 4 bit 0111 ise hafızanın 0111 adresine gidilmesi gerektiğini belirtebilmektedir. 
       
















ASSEMBLY DİLİ 
Assembly dili karmaşık programlar yazmak için kullanılan düşük seviyeli bir programlama dilidir. Assembly insanlar tarafından anlaşılması zor olan makine dilinin sayısal ifadelerini, insanlar tarafından anlaşılarak programlanması daha kolay olan alfabetik ifadelerle değiştirerek düşük seviyede programlama için bir ortam oluşturur. Assembly kullanmanın amacı, ilk bilgisayarlarda yazılan programların daha az hata içermesi ve daha az zaman almasını sağlamaktır. Konuşma dilinden uzaklaştıkça seviye düşer, yaklaştıkça artar, dolayısıyla assembly makine diline göre yüksek seviyeli dillere daha yakındır. Makine dilinden sonra ortaya çıkmıştır. Temelde makina diline getirilen İngilizce kelimelerle yapılan kısaltmalarla (mnemonic) oluşmuştur.

Assembly dilinde yazılmış programlar, genellikle platformdan bağımsız yüksek seviyeli diller ile yazılmış programlara karşın belli bir işlemci mimarisi hedef alınarak yazılmıştır. Çünkü assembly ile yazılmış bir kod bire bir işlemci ile konuşur. Bu nedenle ortaya yazımı çok zahmet gerektiren bir kod çıkar. Ancak program gereksiz kodlar içermediğinden çok daha yüksek performanslarda çalışabilir.

Assembly dilini makina koduna çeviren programlara assembler denir. Bir assembler'ı derleyiciden ayıran en önemli özellik bire bir dönüşüm yapmasıdır. Derleyiciler kodun tamamını okurlar ve kodun tamamını anlamlı bir programa dönüştürürler. Kodun her satırını tek tek okuyan ve uygulayan programlara ise yorumlayıcı denir.  Assembler, çalışma mantığı olarak işlemci ile yüz yüze konuşmak gibidir. Her yapılması istenen olay işlemciye teker teker anlatılır. Bu biraz zahmetli ve karışık bir süreç gerektirir, buna karşın gereksiz rutinler otomatik eklenmediği için işlemciden en uygun verimle faydalanılabilir

Assembly dilinde Makine diline yakınlığı bakımından yazılan kodlar son derece hızlı şekilde derlenir ve bu dilde yazılan programlar orta ve yüksek seviyeli programlama dillerine göre çok daha hızlı çalışır. Ancak anlaşılmasının güçlüğü ve kodlamanın çok uzun olması nedeniyle kullanımı zor bir dildir. Örneğin C dili ile yazılan 8–10 satırlık kodun makineye verdiği mesajı bu dilde ancak 80–90 satır kod ile verilebilir.

Assembly, bilgisayar biliminin gelişimi süresince geniş alanlarda kullanılmıştır. Ancak günümüzde yüksek seviyeli dillerin yaygınlaşması ile daha seyrek kullanılan bir araç haline gelmiştir. Genellikle donanımla bire bir ilişki kuracak kod parçaları yazmak için ya da beklenmedik performans sorunlarını çözmek için kullanılmaktadırlar. Çoğunlukla kodlanan programlar donanım sürücüleri, gömülü sistemler ve gerçek zamanlı uygulamalardır. Bu uygulamalar yüksek hız ve performans gerektirdiğinden, Assembly ile programlanmaktadırlar. Örneğin işletim sistemlerinin çekirdekleri assembler ile yazılarak güçlü bir temel elde edinilmesini amaçlar. Yüksek düzeyli dillerde program yazarken bilgisayar donanımının görünmeyen bazı yanlarına Assembly dilinde sahip olunur. Assembly dilinde yazılan programlar yüksek düzeyli dillerle yazılan programlara nazaran daha hızlı ve küçük boyutludur. Assembly dili, program büyüklüğünde ve çalışma hızında ideal optimizasyon sağlar. 

Sonuç olarak, Makine dilinin dezavantajları, hatalı kod yazımının kolay olması ve yazımının uzun sürmesidir. Makine dilinin daha rahat programlanması için 1950’li yıllarda “Assembly dili” geliştirilmiştir. “Assembly dili” basit, hatırlanması kolay deyimlerden oluşur. Programcılar 1 ve 0 ile program yazma yerine “Assembly dili”ni geliştirmişlerdir, bilgisayarın bu yazılanlarla ilgili hiçbir fikri yoktur. Bu sebeple programcılar “Assembly dil” komutlarını “makine dili”ne çeviren programlar yazmışlardır. Bu programlara “makine dili çeviricisi - assembler” denir. Böylece “Assembly dili” ile yazılmış bir kod, bilgisayarın anlayabileceği “makine dili”ne dönüşmüş olur.

YÜKSEK SEVİYELİ PROGRAMLAMA DİLLERİ
Makine dili ve Assembly diline oranla makineye daha az bağımlı dillerdir.  Yüksek seviyeli bir dilin öğrenilmesi daha kolaydır. Yüksek seviyeli dillerde program yazmak daha kolaydır. Yüksek seviyeli dillerde yazılan programlara kaynak (source) program denir. Kaynak program bir yorumlayıcı ya da derleyici tarafından makine diline (object programa) çevrilir. 

Yüksek seviyeli dillere örnek verirsek BASIC, C, C++, DELPHI, Visiual Basic, Delphi, Visiual C++, Pascal vb. diller.

Yüksek seviyeli dillerin genel özelliklerini şöyle özetleyebiliriz:
•	“Makine diline” göre daha şişkin ve yavaş kod meydana getirirler.
•	Tüm sistem kaynaklarına ulaşılamayabilir.
•	Bir derleyici gereklidir.
•	Kısa zamanda program yazmaya başlanır.
•	Öğrenme ve ustalaşma için geçen zaman fazla değildir.
•	Yanlışlıkla sistem kaynaklarının bozulmaması için kalkanları vardır.
•	Okuması ve değiştirmesi kolaydır.
•	Başka bilgisayar çeşitlerinde de çalışabilirler, yani taşınabilirdirler.

İYİ BİR PROGRAMIN TEMEL ÖZELLİKLERİ
•	Doğruluk: Verilen görevlerin tam olarak yerine getirilmesidir.
•	Dayanıklılık: Beklenmedik hatalardan dolayı programın çalışması kesilmemelidir.
•	Genişletilebilme: İleri aşamalarda görevlerin değişikliği veya yenilerinin eklenmesi kolay olmalıdır.
•	Basitlik: Karmaşık tasarımlardan kaçınmak gerekir.
•	Modülerlik: Program kodları başka programlar içinde de kullanılabilmelidir.
•	Uyumluluk: Başka bilgisayar ve sistemlerde çalışabilmelidir.
•	Kontrol edilebilirlik: Hata olabilecek yerlere açıklayıcı hata mesajları konulmalıdır.
•	Kolay kullanım: Kullanıcı ara birimi kolay olmalı ve rahat öğrenilebilmelidir.
•	Parçalanabilirlik: Problemin küçük parçalara ayrılarak yazılmasıdır.
•	Anlaşılırlık: Başkasının yazdığı program elden geçirilirken rahatça okunabilmelidir.
•	Koruma: Modüller birbirlerine müdahale etmemelidirler.

PROGRAMLAMA ARAÇLARI

DÜZENLEYİCİ (EDİTÖR)
Komutları yazmamız için kullanılır. ASCII (American Standard Code for Information Interchange) dosya olarak yazabileceğiniz tüm programlar işinizi görür. Mesela not defteri olabilir. Metin dosyaları tüm bilgisayarlarda standart olan bir dosya türüdür. Ama bir kelime işlemci programı kullanmak yerine programcılar kendi düzenleyicilerini geliştimişlerdir. Programı, yazması, düzenlemesi ve yazdırılması kolay bir araç gibi düşünebilirsiniz.

DERLEYİCİLER (COMPILERS)
Komutlarımızı makine diline çevirir. Programcılıkta, bir programlama dilinde yazılmış olan kaynak kodunu başka bir dile (genellikle makine koduna) çeviren yazılım. Eğer yazım hataları yok ise, sonuçta çalıştırılabilir bir dosya meydana gelir. Örneğin, şu satırı bir programın kaynak kodunda (programın okunabilir hali) düşünelim:
A = 5 + B

Alttaki assembly'de yazılmış satırlar, aynı programın derlenmiş halidir:
LOAD A [0]        ;; belleğin 0 adresindeki veriyi A siciline yükle 

ADD  A BX         ;; A siciline BX sicilindeki adreste bulunan veriyi ekle 

STOR A [100]      ;; sonucu 100 adresine yaz 

Bu örnekte çevirinin hedefi, programcının anladığı kaynak kodundan işlemcinin anladığı 0 ile 1 den oluşan makina dili kodunu üretmek (LOAD,ADD ve STOR komutları 0001, 0011 ve 0010 olarak yorumlanır)

 0001 01 00 00000000
 0011 01 10 00000010
 0010 01 00 00000100
 ---- -- -- ---------
  |   |  |   |_________bellek adresi
  |   |  |____________işaret   
  |   |______________sicil
  |_________________komut

Mesela Microsoft Word programı derlenmiş bir dosyadır. Kaynak kod değişmediği sürece tekrar derleme işlemi yapılmasına gerek yoktur. Derleyici işlemci türünüze göre kod oluşturur. Eğer işlemcinizin mimarisi farklı ise o işlemciye göre tekrar derlenmesi gereklidir. 

YORUMLAYICILAR (INTERPRETERS)
Yorumlayıcı (interpreter), kaynak kodunu satır satır makine koduna çeviren ve çalıştıran yazılım türüne verilen addır. Bilgisayar programlamada yorumlanan programlama dili, bu dilde yazılan programların çalışabilmeleri için kaynak kodlarının bir yorumlayıcı tarafından yorumlanması gerektiğini ifade etmektedir. "Interpreted programming language" olarak da geçmektedir.

Teorik olarak herhangi bir proglamlama dili ile yazılan bir program, kendi derleyicisi tarafından makine diline dönüştürülür ve derlendikleri platform üzerinde doğrudan çalıştırılır (C, Ada, Pascal, Delphi, Algol dillerinde olduğu gibi) ya da o dilin yorumlayıcısı tarafından işletilerek çalıştırılır (Python, Ruby, Java, Lisp, BASIC, AWK gibi). Bununla beraber kimi dillerde bu iki özelliğe de rastlamak mümkündür (Lisp, C, Ocaml ve Python'da olduğu gibi).

Yorumlanan dillerde sık rastlanan özelliklerden bazıları şunlardır;Platformdan bağımsızlık, Kolay hata ayıklama, Küçük program boyutu ve Dinamik tip belirlemedir. 

Ek olarak yorumlanan diller, doğrudan makine diline çevrilmedikleri ve bir yorumlayıcı tarafından yorumlandıkları için performans gerektiren yerlerde bekleneni veremeyebilirler. Fakat özellikle akademik çalışmalarda programlama dili öğretmek için, ya da yazılım projelerinde prototoip üretimi için sıkça tercih edilmektedirler.

Perl ve Visual Basic yorumlayıcı (interpreter) olarak çalışır. Kodlar satır olarak çalıştırılır. Çoğu web programlama dili yorumlanarak çalıştırılırlar. Mesela web tarayıcıları, sitedeki JavaScript kodlarını yorumlarlar. Yani ortada derlemiş bir dosya yoktur. Bu da sitedeki kaynak kodun bilgisayara metin olarak indirilip, çalıştırılması anlamına gelir.

P-code (sanal makine kodu) denen hem derleyici hem de yorumlayıcı programlama dilleri de vardır. Birçok bilgisayarda az değişiklik yapılarak çalışabilen program yazmak için programcılar, p-code programlarını tasarlamışlardır. Program sanal makine koduna dönüştürülür. P-code olarak derlenmiş kodu çalıştırmak için bir yorumlayıcı kullanılır. 
Sonuç olarak derleyiciler kaynak programı alarak ondan başka bir amaç program oluştururlar. Oysa yorumlayıcılar kaynak programı satır satır ele alarak çalıştırırlar. Yorumlayıcılar standart bir kod üretmezler. Yorumlama işlemi satır satır olduğu için ilk hatanın bulunduğu yerde genellikle programın çalışması kesilir. 

Çok kullanılan yorumlanan diller ise şunlardır;
BASIC, Forth, Java, JavaScript, Lisp, MATLAB, Ocaml, Perl, PHP, Python, Ruby, Tcl 

BAĞLAYICILAR (LINKER)
Bağlayıcı, derleyici tarafından object dosyasına çevrilen bir veya birden çok dosyanın birbirleri ile ilişkilendirmesi ve tek bir çalıştırılabilir dosyaya çevrilmesini sağlayan yazılımdır.

ÇEVİRİCİLER
Herhangi bir programlama dilinde yazılmış olan kaynak programı girdi olarak alan ve bunu işlevleri aynı olacak şekilde olacak biçimde başka bir dile dönüştüren programlardır.

BÖCEK AYIKLAYICI (DEBUGGER)
Çok az program %100 tam çalışır. Hatalar yüzünden programlar çöker, veriler kaybolur, ya da program tuhaf çalışır. Aslında program her zaman aynı durumda aynı sonucu vermelidir. Ama yazılım ve donanım farklılıklarından dolayı her zaman istenen sonuç elde edilemeyebilir. Yazılımın olduğu her yerde böcek vardır. Derleyiciniz, işletim sisteminiz ve tabii ki kendi programınızda da böcekler olabilir. Maalesef bir böceği temizlemek yeni böcekler oluşmasına sebep olabilir.

Yazdığınız programlarda böcek ayıklamanın (debugging) yolları; adım adım çalıştırmak (step), durak noktaları kullanmak (breakpoint), değişkenleri izlemektir (watch).

Adımlamak, Programın satır satır çalıştırılmasıdır. Böylece böcek olan satır incelenebilir. Neyi yanlış yaptığınızı yazdığınız kodları inceleyerek öğrenirsiniz.

Durak noktaları: Tüm programı satır satır çalıştırmak yerine, şüphelendiğiniz yerlere durak noktaları ekleyerek, programın oraya kadar çalışıp durması sağlanır. Program durunca da satır satır çalıştırılarak nerede hata olduğu bulunmaya çalışılır.

Değişken izleme: Program çalışırken, hafızadaki değişkenlerin değerlerinin nasıl değiştiğin 
görebilirsiniz. Yanlış bilgi var ise, programdaki hatayı anlamaya, değişkenin nereden etkilendiğini bulmaya çalışırsınız.

YARDIM VE KURULUM
Yardım dosyası ve kurulum hazırlama programları ayrıca satılır veya ücretsiz olarak internette bulunabilir. Kurduğunuz programlama dilinde basit olarak yardım hazırlamak için yardımcı program olabilir. Çoğu programın yardım dosyası vardır. İlk kez programınızı kullanan veya bir konuda takılan biri için ilk akla gelen şey, “Bu programın yardımı nerede?” sorusudur. Yardım dosyası olan programlar daha modern hale gelir. Program test edildikten, hataları giderildikten ve yardım dosyası hazırlandıktan sonra son adım olarak kuruluma geliriz. CD veya disketlere bölünecek şekilde “kur” dosyası yapılır.

Not: Bazı programlar doğrudan istenen herhangi bir dizinde çalışsa bile, genellikle ek dosyalar (veritabanı dosyaları, DLL, OCX dosyaları gibi) problem çıkarabilir.

Kurulumu olmayan programları kullanıcı denemeye bile çalışmayabilir. Çünkü elle kurulum zahmetli bir işlemdir. Bu işi kolaylaştıran kurulum programıdır. Kurulum halinin doğru çalıştığını test ederek dağıtımınızı yapabilirsiniz. Ayrıca kurulum programları dosyaları sıkıştırdıkları için kur dosyası az yer kaplar. Kurulum sırasında kullanıcıya bilgi veren ses ve grafik görüntüler vardır. İlerleme durumunu gösteren çubuk sayesinde ne kadar zaman kaldığını anlayabiliriz. Diske dosyaların kopyalanması hızlı ve pürüzsüz olarak halledilir. Bu da kullanıcıya programınızın profesyonel olduğunu gösterir.

Yardım dosyası hazırlayacağınız programlara örnek olarak “Shalom Help Maker” ve “Install Maker” programları örnek verilebilir.

BİR PROGRAMIN HAYAT DÖNGÜSÜ
Genel olarak tipik bir program döngüsü şöyledir:
•	Geliştirilme aşaması (ilk oluşturulma ve yayımlanma)
•	Bakım döngüsü (olabildiğince kısa zamanda böceklerin ayıklanması)
•	İyileştirme döngüsü (yeni özellikler katma)

Geliştirme aşaması: Her program programcının bilgisayarında boş bir ekran olarak başlar. Bir fikirden, gerçek bir program oluncaya dek, geliştirme aşaması devam eder.

1. Fikir doğar.
2. Programın tipik hali ortaya çıkar.
3. Hangi bilgisayarlarda çalışacağı belirlenir.
4. Sahte kodlar yazılır.
5. Bir veya daha fazla dil seçilir.
6. Program yazılır.
7. Test edilir. (Alfa sürümü denir.)
8. Problemler giderilir. (7 ve 8. adım gerektiği kadar tekrar edilmelidir.)
9. Diğer insanlara test etmeleri için verilir. (Beta sürümü denir.)
10. Problemler giderilir. (9 ve 10. adım gerektiği kadar tekrar edilmelidir.)
11. Halka program sunulur ve pazarlandığı gibi çalışması umulur.

Bakım döngüsü: Çoğu programcı, eski bir programı güncellemek yerine yeniden program yazarlar. Güncellemek aynen, kendi evinizi temizlemek yerine, başkasının evini
temizlemek gibidir. Bakım gerektiğinde şu adımlar yapılır:
1. Programın hangi kısmında hata olduğu bulunur.
2. Böcek temizlenir.
3. Yeni böceklere sebep olunup olunmadığı anlaşılması için test edilir.
4. Testte görülen böcekler temizlenir. (1 ve 4 arası her böcek için tekrar edilir)
5. Yazılım için yama geliştirilir.

İyileştirme döngüsü: Yazılımın tamiri ve kararlı, güvenilir hâle gelmesi, ücretsiz bir
destek hizmeti olduğu için şirket para kazanmaz. Bunun yerine yeni eklentilere sahip
sürümleri satmak kazandırır. Yeni yazılım ve donanım ortamlarının avantajını kullanmak için birçok program, tekrar elden geçirilir.
1. Programa ne eklenecekse belirlenir.
2. Bu özellik nasıl çalışacak ise sahte kodlar ile yazımı yapılır
3. Program değiştirilir.
4. Alfa sürümü olarak test edilir.
5. Hatalar tespit edilip giderilir.
6. Beta sürümü olarak test edilir.
7. Beta testçilerinin hata raporları okunur. (1 ve 7. adımlar arası her eklentide tekrar
edilir.)
8. Halka sunulur ve çıkabilecek yeni hatalar beklenir. (Bakım döngüsüne girilir.) 

Üniversitelerdeki ve sektördeki “yazılım mühendisliği” sözündeki mühendislik, aslında daha çok “sanat” olarak kullanılabilirdi. Yazmak, değiştirmek ve güncellemek yüksek bir zekâ ve matematik bilgisi gerektirmez. Daha çok üretkenlik, azim ve bol hayal gücü gerektirir.



YAPISAL PROGRAMLAMA
Yapısal programlama dilleri kullanılarak yazılan programlar, mantıksal bütünlük gösteren bloklara (bölümlere) bölünebilirler. Bu yolla uzun ve karmaşık programların, bloklara ayırarak daha kolay biçimde yazılabilmesi mümkün olmaktadır.

Yapısal programlama yordamsal programlamanın bir alt/yan dalı olarak görülebilir, temel programlama tekniklerinden birisidir. “goto” terimine karşı bağımlılığı azalttığı ve hatta kaldırdığı için ünlenmiştir.

Tarihsel olarak bakıldığında yapısal programlamadan pek çok alt yöntem türetilmiştir. Bunlardan ikisi Jackson’ın Yapısal Programlaması ve Dijkstra’nın Yapısal Programlamasıdır. 

Yapısal programlama, yordamsal programlama dillerinin pek çoğu ile yapılabilmektedir. 1970’lerin başlarında popülerleşmeye başlayan yapısal programlama ile pek çok yeni yordamsal programlama dili yapısal programlamayı destekleyecek özellikleri barındırmaya başladılar. Bu dillere örnek olarak Pascal ve Ada verilebilir.

Küçük kod parçacıkları seviyesinde yapısal programlama hiyerarşik program akışı yapılarını tavsiye eder. Bu yapılar pek çok modern dilde kolayca elde edilebilen, “while”, “repeat”, “for” gibi yapılardır. Yapısal programlama bu yapılar için tek giriş ve tek çıkış noktalarını tavsiye eder. Bu tavsiyeyi zorunlu kılan dillere rastlanmaktadır.

Bu teknik ile programcılar büyük kod parçalarını daha kısa alt yordamlar halinde yazarlar. Bu sayede parçacıklar anlaşılabilecek kadar küçük olurlar. Genel olarak programlarda çok az veya hiç genel (global) değişkenler kullanılmaz, genel değişkenler yerine altyordamlar yerel değişkenler kullanırlar ve değişkenlerini adres ve değer ile gönderir.

NESNE YÖNELİMLİ PROGRAMLAMA  ( OBJECT ORİENTED PROGRAMMİNG (OOP)) 
Bir bilgisayar programlama yaklaşımıdır. 1960'lı yılların sonuna doğru ortaya çıkan bu yaklaşım, o dönemin yazılım dünyasında beliren bir bunalımın sonucudur. Yazılımların karmaşıklığı ve boyutları sürekli artıyor, ancak belli bir nitelik düzeyi korumak için gereken bakımın maliyeti (zaman ve çaba olarak) daha da hızlı artıyordu. NYP'yi bu soruna karşı bir çözüm haline getiren ana özelliği yazılımda birimselliği (İngilizce - modularity) benimsemesidir.

NYP'nın altında yatan birimselliğin ana fikri, her bilgisayar programının (izlence), etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir. Hâlbuki NYP'dan önce var olan tek yaklaşımda (Yordamsal programlama), programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmektedirler.

Bu temele dayanan NYP'nın, bilimsel çevreler tarafından geçmişe göre daha yüksek esneklik ve bakım kolaylığı sunduğu iddia edilmektedir ve bu nedenle günümüzde geniş çaplı yazılım geliştirme tasarılarında yaygınca kullanılmaktadır.

Nesne tabanlı programlama dili, nesne kullanımını destekleyen ve sarma ilkesine uyan programlama dillerini tanımlar. Ancak nesne tabanlı programlama dilleri, kalıtım gibi nesne yönelimli programlama dillerine özel özellikleri taşımazlar. Bu durumda nesne yönelimli programlama dilleri nesne tabanlı programlama dillerinin altkümesini oluşturur.

Nesne yönelimli olan nesne tabanlı programlama dillerinden Simula, Smalltalk, C++, Objective-C, Eiffel, Python, Java, C#, Visual Basic .NET ve REALbasic'i sayabiliriz. Nesne tabanlı olup da nesne yönelimli olmayan programlama dili olarak da Visual Basic iyi bir örnek teşkil etmektedir. Visual Basic nesne ve sınıfları desteklese de, kalıtımdan yoksundur

VERİ TABANI (DATABASE) PROGRAMCILIĞI
C ve benzeri diller genel amaçlı diller olduğu için, bu diller ile oyun, muhasebe programı veya bir kelime işlemci programı yapılabilir. Bilgisayarların en çok kullanım alanı ise, bilgi kaydetme ve düzeltmedir. İsimler, adresler, elektronik posta adresleri, telefon numaraları, iş deneyimleri, muhasebe geçmişleri gibi bilgiler veri tabanlarında saklanır. Veritabanını kolaylaştırmak için “veritabanı (database) programcılığı” geliştirilmiştir. Veri tabanı programlama ile değişik firmaların isteklerine göre özel veri tabanları oluşturabilirsiniz. En çok kullanılan veri tabanı programları Microsoft Access, MSSQL ve MySQL’dir. Verileri düzenleme için kendilerine has dilleri vardır. Bu dile SQL (Structured Query Language – Yapısal Sorgu Dili) denir. dbase, FileMaker ve FoxPro programları ise artık pek kullanılmıyor. Yine SQL tabanlı Oracle ise, çok büyük veri tabanları barındıran, güvenlik ve hız gerektiren uygulamalarda kullanılır.

Veri tabanı programcılığının dezavantajları şunlardır:
•	Veri tabanı programları, veri tabanını işleyen program sistemde kurulu değilse çalıştırılamazlar.
•	Sadece veri tabanı programını kullanarak antivirüs, oyun, kelime işlemci gibi program yapamazsınız.


BETİK (SCRİPT) PROGRAMCILIĞI
Birçok program kendi programlama dilinin kullanılması imkânını sağlar. Örneğin Word ve Excel içinde, neredeyse Visual Basic’e benzeyen, Visual Basic for Applications (VBA) adı verilen bir dil vardır.

Betik dilleri normalde diğer programlama dillerinden daha kolaydır. Bu diller ile kullanıcıya yardımcı bazı işlemler yapabiliriz:
•	Var olan bir programı özelleştirebiliriz.
•	Çok az program yazarak, karmaşık bir programı kullanışlı hale getirebiliriz.

Şunları unutmayınız:
•	Betik dili ana programa bağımlıdır, sadece ana programın kurulu olduğu bilgisayarlarda yazdığınız program çalışabilir.
•	Programınızın satış ve dağıtımı zordur. Almak isteyen ana programı da satın almak zorunda kalır.
•	Genel programlama dillerinden daha kısıtlı imkânlarınız vardır.

WEB PROGRAMCILIĞI
Bazı anlarda okunaklılığı azaltsa da, günümüz internet siteleri bol grafik, efekt ve animasyonlarla süslüdür. Kolay web programcılığı için HTML (HyperText Markup Language – Hiper Yazı İşaret Dili) icat edilmiştir. Bir sitenin HTML olarak kaynağını incelediğinizde çok karmaşık ve dağınık gelebilir. HTML ile site tasarımı çok zor olduğu için JavaScript gibi web sayfası yardımcı programlama dilleri yapılmıştır. Etkileşimli site yapmak, kullanıcının formlara girdiği verileri kontrol etmek, site içine oyun eklemek isterseniz, bunları JavaScript, Java, CGI veya Macromedia Flash ile yapabilirsiniz.

Web programlama dilleri, sitenin ziyaretçi sayısını artırır ve ziyaretçinin uzun süre sitede kalmalarını sağlar. Öğrenmesi kolaydır ve dünyanın herhangi bir yerinden siteye (uygulamaya) ulaşıp, değişiklikler yapabilme imkânı vardır.

Dezavantajları:
•	Tüm web tarayıcıları JavaScript ve Java desteklemez. (Daha eski tarayıcılar gibi)
•	Bağlantı hızını düşürür.
•	İnternet bağlantısı yok ise sayfanın görüntülenmesi mümkün olmayabilir.

Sonuç olarak her konuda bir işe yarayan “mükemmel” dil yoktur. Profesyonel olarak program yazmak istiyorsanız, C# gibi yüksek seviye bir dil ve SQL gibi veri tabanı dili öğrenmelisiniz. İş bulmakta zorlanmazsınız. Eğer sizden site yapılması isteniyor ise Java, JavaScript, PHP ve ASP.NET gibi dillere aşina olmak kaçınılmazdır. Eski bilgisayarlarda hâlâ eski kodların barınmasından dolayı, piyasada az kullanılan diller ile iyi kariyer yapabilirsiniz. Hatta bilen sayısı az olmasından dolayı, iyi ücret alabilirsiniz.

ÇOK DİL KULLANMA
Bazı derleyiciler, kaynak kodu önce özel bir dosya türüne çevirir. “Object file – nesne dosyası” denilen bu dosya, kaynak dilden bağımsız hâle gelir. Farklı dilde oluşturulmuş nesne dosyaları, “linker - bağlayıcı” adı verilen programlar ile birleştirilir. Sonuçta ise çalıştırılabilir tek dosya oluşur.

Microsoft Windows, dillerin ortak kod kullanımı için DLL (Dynamic Link Libraries –Dinamik Bağ Kütüphanesi) yöntemi kullanır. Ara birimi olmayan bu dosyalar, farklı programlama dilleri kullanabilsin diye sisteme tanıtılmıştır.

Son bir yöntem, Microsoft’un .NET teknolojisidir. Aynı ara birimde ister C#, ister Visiual Basic veya başka bir dil ile program yazılabilir. Aynı veri tabanını ve çözümü ortak kullanarak birçok programcı bir arada çalışabilir. Her dilin kendine has avantajı kullanılarak, uygulamalar daha güçlü hâle gelebilir.

 
Bugün 6 ziyaretçi (8 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol