Bilgisayar Programcılığı ve Programlama Dilleri
Bilgisayar Programcılığı
Nedir bu bilgisayar programcılığı ? Zor mu? Deli işi mi?
Evet birçok kişi bilgisayar programcılarının ne ile uğraştığını bilir fakat nasıl uğraşıp neler yaptığını pek bilmez... Bu konulara sayfamda biraz özet olsa da değineceğim. Önce bilgisayar dünyasında sıkça kullanılan bir kelimeden bahsedeyim yazılım...
Yazılım(software) kelimesi bilgisayar programlama dilleriyle oluşturulan dökümanları, dosyaları ifade eder. Yani bilgisayarınızda işletilmek, çalıştırılmak üzere tasarımlanmış dosyalar yazılım kapsanına girer.
Bu dosyalar nasıl yapılır ?
Yazılım programlama dilleri ile tasarlanır ve yazılır,programlama dili de nedir? derseniz.Programlama dilleri, bilgisayarınızın donanımını(ekran kartı, ses kartı, modem, mouse, klavye...) sizin en rahat biçimde kullanabileceğiniz düzeye getirmeye çalışır. Yani bilgisayarın o soğuk 1010110 gibi rakamlarını sizin zevkle kullandığınız programlara, işletim sistemlerine, oyunlara çevirir.
Örneğin kullanılmakta olan Windows işletim sistemi onbinlerce sayfa milyonlarca bilgisayar kodunun biraraya gelmesinden oluşur. İşte işin tüm zorluğu, o kodların arasında dolaşan, hata mesajlarını günlerce kodları gözden geçirerek arayan, sandalye tepesinde saatlerce aynı ekrana bakarak ilginç görüntüler sergileyen programcıların üzerindedir...
Bilgisayar programcıları işini zevkle yapan ve işini bir hobi edinmiş insanlardan oluşur, en azından öyle olmalı. Aksi halde yoğun konsantrasyon ve sabır isteyen bu işi yapmak aşırı zorlaşır. Neyse... Programlama dillerinden bahsediyorduk Programlama dilleri kendi aralarında sınıflara ayrılmışlardır. İnsanın en zor öğrenebileceği, anlayabileceği yani 1100101 gibi makina kodlarına yakın diller en düşük seviyeli(low level) programlama dilleri, insanın en kolay anlayıp kullanabileceği ve insan diline yakın özellikler gösteren diller ise en yüksek seviyeli(high level) programlama dilleridir. Şimdi bu sınıflandırmaya örnekler verelim;
Çok yüksek seviyeli diller : VisualBasic, VB.NET, Acces , Foxpro ...
Yüksek seviyeli diller: Pascal ,Basic ,Fortran...
Orta seviyeli diller: C ,C++, C# , Java ,ADA...
Düşük seviyeli diller: Assembly...
Makina dilleri: Bilgisayarın çalışma dilleri 1 ve 0'lardan oluşur...
Bu dillerin kullanıldığı alanlara örnek verirsek;
Bilim ve Mühendislikte: Pascal ,C ,C++ ,Java ,Fortran...
Veritabanı Programcılığında: Dbase ,Acces ,Foxpro ,Sql...
Yapay Zeka Kullanımında: Prolog ,Lisp...
Sistem Programcılığında: C ,C++ ,Java ve sembolik makina dilleri...
Bir bilgisayar programı nasıl yazılır ?
Bir yazılım değişik dillerle oluşturulabilir fakat izlenen yöntemler genelde birbirine benzer.Örneğin Algoritma...
Algoritma, elimizdeki sorunun çözümüne gidebilmek için tasarlanan yollar,yöntemlerdir. Örneğin bir arkadaşınıza daha önce gitmediği bir yerdeki bir postaneyi tarif edeceksiniz. Bunun için anlatımda genelden özele giden bir yol izlersiniz. Önce gideceği semti sonra caddeyi sonra postanenin olduğu yönü tarif eder son olarak da kolay bulması için postanenin çevresindeki göze batan özelliklerden bahsedersiniz.İşte bu yaptıklarınız bir algoritmadır. Ve amacınız arkadaşınıza postaneyi bu algoritma yardımıyla tarif etmektir...
Bilgisayar programlama dilleri de programcılıkta bunu gibi yöntemler kullanarak çözüme gider. Algoritmanın uzunluğu kullanılan programlama dilinin seviyesi ve problemin karmaşıklığı ile doğru orantılıdır.
Yapılan algoritma ve tasarımdan sonra yazılım aşamasına gelinir ve bu aşamada yapılacak programın kullanım ömrü, programın kullanım düzeyi ve hangi amaçla kullanılacağı gibi soruların cevaplarına bakılarak programlama dili seçilir. Dil seçimi bazı kriterlere göre yapılmaktadır, örneğin kısa sürmesi ve görsel tasarım içermesi, veritabanı iletişimi yoğun kullanılması gereken bir program yapmamız gerekiyor olsun. Bu durumda Assembly dili ile yola çıktığımızda bahsedilen proje birkaç kişilik deneyimili bir programcı grubu ile birkaç yıl alır. C ile iki programcı aynı işi üç dört ayda VisualBasic veya Delphi ile bir programcı bahsedilen işi bir iki aya yakın bir sürede yapabilir.
Başka bir açıdan örnek verirsek örneğin bir ekran kartı programlamamız gerekiyor ve bu kartın driver'ını ( sürücüsünü ) biz yazacağız. Bu durumda bu işi VB veya Delphi ile yapmamız imkansızdır, kullanmamız gereken diller öncelikle Assembly ve C/C++ olmalıdır.
Evet, programlama dillerinin kendi alanları vardır ve her dil kendi branşında kullanıldığı sürece başarılı ve etkili kullanılmış olur. Buraya kadar anlattığımı özetlersem.
Bir bilgisayar programı yazmak için belli aşamalar vardır ve bu aşamalar geçildiğinde kodlamaya başlanabilir. Bunlar:
Analiz
Algoritma
Dil Seçimi
Kodlama
Analiz ile gerçekleştirilmek istenen proje tasarımlanır ve parametreleri araştırılır.Algoritma ile adımlar tayin edilir. Dil seçimi ile en uygun programlama dili seçilir. Ve kodlamaya başlanır...
Kod yazıldıktan sonra da bazı aşamalardan geçer bunlar da genel olarak :
Test ve Debug
Pilot denemeler ve ilk versiyon denemeleri
Hazır halde çalışır programı sunma
Programlama Dilleri
Bu bölümde programlama dillerinin kullanıldıkları alanları ve özelliklerini inceleyeceğiz. Programlama dilleri uygulama alanlarına göre dörde ayrılır:
Bilimsel ve Mühendislik Alanında : Üniversitelerde ve bilimsel kuruluşlarda mühendislik veya matematik hesapları için kullanılan bu dillere örnek; Pascal, C, C++, Java dilleridir.
Veritabanı Kullanımında : Genellikle Personel kayıtları, fabrika stok veya depo denetimi gibi veritabanı gerektiren işlemlerde kullanılan diller;DBASE,SQL,FOXPRO,PARADOX gibi veritabanı dilleridir.
Sistem Programcılığında : İşletim sistemlerinin ve sistem programlarının yazılımında kullanılan dillere örnek, C ,C++ ,Java ve makina dilleridir.
Genel Amaçlı kullanım : Çeşitli konularda uygulama geliştirmek için kullanılan dillere örnek,C ,C++ ,Java ,VB ve Pascal'ı verebiliriz.
Son yıllarda programlama dillerinde nesneye yönelik tasarımlar yapılmış ve bu dillerin çoğunun nesneye yönelik programlama yapabilen uyarlamaları çıkmıştır. Nesneye yönelik programlama, programcının kendi sınıfını ve nesnesini oluşturup bunun üzerinde işlemler yapmasına olanak sağlayan ve programlama dillerinin geldiği son aşamalardan birisidir. Bu konu oldukça kapsamlı olup bunun geniş açıklamasını burada yapmayacağım.
OOP(Object Oriented Programming) yani Nesneye Yönelik Programlama'nın kullanılmasıyla ve Visual programcılığın da gelişmesi ile beraber ortaya oldukça güzel görünümlü ve kullanışlı programlar çıkmaya başladı. Bu bilgisayar programlarına olan ilgiyi arttırdı ve bu konulardaki araştırmaları hızlandırdı. Sonuçta şu anda, pekçok dilin artık nesneye yönelik olan ve visual özellikler içeren sürümleri kullanılmakta ve tercih edilmektedir. Örneğin: C++ ,Visual C++ ,C++ Builder ,Delphi ,Java...
İnternet'in de yaygınlaşmasıyla programlama dillerine yeni özellikler eklendi ve internet'te kullanılabilecek nitelikte görsel özellikli diller çıkarıldı. Örneğin HTML, kullanıcının dikkatini çeken renkli ve hareketli arabirimiyle her geçen gün yeni ekler ile gelişmektedir. JavaScript ve VBScript iki script dili olarak HTML'ye getirdiği ek özelliklerle çokça kullanılır oldu. Ve asp ile veri tabanını aktif kullanıma sunma, aktif sayfalar hazırlama olanağı elde edildi.
Görüldüğü gibi özellikle internet'in gelişmesi ile birlikte programlama dillerinin yapılacak işe veya kullanılacak platforma göre değişik özellikler gösteren uyarlamaları çıktı. Bu durumda web teknolojisini izleyen ve internet üzerinde yazılım geliştirmek isteyen bir programcının javascript ,vbscript ,java ,HTML gibi dilleri bilmesi ve bu konularda kendini geliştirmesi gerekir. Uygulama programlarına ,ticari programlara, veya işletim sistemlerinin kullanımına yönelik yazılım geliştirmek isteyen programcıların da C++ ,Java ,Delphi gibi son zamanların en popüler dilleri üzerinde çalışması, bunları öğrenmesi gerekir.
Internet programcılığı, esnek mimari, OOP gibi konularda söylenmesi gereken önemli bir nokta da Java'nın programlama dünyasına getirdiği önemli bir özelliktir. Java nın çıkması ile atılan önemli bir adım da platform'dan yani işletim sisteminden bağımsız olarak çalışan, her sistemde çalışabilen, programların yazılabilmesidir. İleriye yönelik bir bakış açısı ile bakıldığında cep bilgisayarlarının, kablosuz cihazların, cep telefonlarının sıklıkla kullanılacağı ve artık PC lerin döneminin kapanmaya başladığı düşünülürse birçok cihazda çalışabilecek programların yazılmasının önemi anlaşılabilir. Java son yıllarda programlama dünyasına gelmiş en iyi programlama aracıdır ve yeni çıkacak programlama dillleri de Java'nın birçok özelliğinden esinlenmektedir.
Şimdi programlama dillerine özet bir bakış yapalım;
C
Yapısal programlama dilleri arasındadır. Öğrenilmesi zaman almasına rağmen oldukça kullanışlı ve esnek yapısı ile adından yıllarca bahsettirmiş, bilgisayar programcılığının temel dillerinden biridir. C ile bilgisayarınıza bir sistem yazmaktan bir oyun yazmaya veya printer kontrolü yapmaya kadar her türlü işlem yapılabilir ve bu özelliği sayesinde kullanım alanı çok geniş bir dildir.
C++
Nesneye yönelik programlama yapabilen diller arasındadır. C'nin saydığımız tüm özelliklerine ek olarak güçlendirilmiş nesne yönetim özelliği ile şu anda bilgisayar dünyasının en çok kullanılan dillerinden biridir
C#
Nesneye dayalıdır(OOP). C++ ın ve Java'nın pozitif yönlerini bünyesinde birleştirmiş yeni bir dildir. Programcıya internet uygulamaları ve yerel uygulamalar yazmakta bazı kolaylıklar getirmiştir. İleriye dönük olarak microsoft'un java teknolojisine rakip olarak ortaya sürdüğü bir programlama dilidir ve microsoft'un bu konulardaki (internet uygulamaları) yelpazesini genişletmeye yönelik bir atılımdır. Microsoft teknolojileri kullanacak programcıların C#'ı öğrenmeleri zamanla gerekecektir ve öncelikle öğrenilmeye başlanması da avantaj getireceği açıktır.
Java
Nesneye yönelik dillerdendir. Son yıllarda geliştirilmiş bir dil olup modern ve yenlikçi altyapısı ve visual özellikleri ve sürekli gelişen kütüphane (library) desteği ile gün geçtikçe kullanımı artan bir dil olmuştur. Java dili hemen hemen her alanda kullanılabilen esnek ve güçlü bir dildir.
VB.NET
Nesneye dayalı bir dildir. VisualBasic(VB) teki biçok özellik bu dilde yeniden yapılandırılarak değişmiştir. Yapısına bakılırsa VB den ayrı yeni bir dil geliştirilmiş denilebilir. Eklenen bazı özellikler ile VB de yapılamayan birçok işlem artık yapılabilmektedir ve OOP nin özellikleri desteklenerek daha verimli kod yazmaya olanak sağlanmıştır. VB programcılarının VB.NET'e geçişleri kolay olmayacak olsa da VB yerine VB.NET kullanımı gün geçtikçe artacaktır. VB.NET internet uygulamalarından yerel uygulamalara kadar kullanım imkanı geniş bir dildir.
Delphi
Pascal tabanlı bir dil olup nesneye yönelik programlama yapabilme özelliği taşır. Öğreniminin çok zor olmayışı ve üniversitelerde pascal eğitiminin ağırlıklı verilmesi nedenleriyle çoğu bilgisayar programlama öğrencisinin tercih ettiği bir dildir.Visual programlama özelliği taşır.
Pascal
Pascal Yapısal bir dildir, C 'ye benzerlik gösterir. Öğrenilmesinin zor olmayışı ve bilgisyar eğitimi veren okullarda okutulan bir ders olması sebebiyle kullanım alanı genelde üniversiteler ve bilimsel hesaplamalar yapan kurumlardır.
VisualBasic
Basic tabanlı bir dil olup öğrenilmesi kolay, kullanım alanı geniş bir dildir. Özellikle görsel uygulamalarda projenin arabiriminin hızlı yazılmasını sağladığı için genelde kullanıcı arabirimi tasarımlarında kullanılır. Kapsamlı veya çok kullanıcılı uygulamalarda kullanılmaz. Kullanıcı sayısı az olan veya kısa sürede bitmesi gereken küçük ölçekl projelerde tercih edilen bir programlama aracıdır. Yoğun olarak kullanılmaktadır
Programlama dillerinin hepsini incelemeye imkan olmadığından çok kullanılan bir kısım dilden bahsettim. Her dilin kullanım amacı ve yönelimi farklı olabilir önemli olan hedeflediğiniz konularda size yardımcı olacak dili seçip onunla çalışmanızdır.