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

Program Nedir? Programlama Dili Nedir?

Program, yapılmasını istediğiniz işlemleri bilgisayara bildirdiğiniz adım adım komutlar kümesidir. Bilgisayara istediğiniz işlemleri bildirme yolunu sağlayan kurallar kümesi bir programlama dilini oluşturur. Pek çok programlama dili vardır.

PROGRAMLAMA SÜRECİ
Bir program geliştirmenin ilk adımları herhangi bir problem çözme işinin adımlarına benzer.  Öncelikle problem tanımlanmalı ve sonra çözüm planlanmalıdır. Daha sonra programın işe uygun bir dille kodlanması, sınanması ve belgelenmesi gerekir. 
Problemin tanımlanması: Programı talep eden / kullanacak olan kişilerle görüşerek, NE istediklerinin, giriş ve çıkış aygıtlarının, istedikleri rapor formatlarının belirlenmesi ve bunlar üzerinde yazılı anlaşmaya varılması aşamasıdır. Basit bir aşama değildir.
Çözümün planlanması: Çözümün planlanmasında akış şeması (“flowchart”) çizilebilir veya günlük dille adımlar yazılabilir (“pseudocode”) veya her ikisi birden yapılabilir. 
Akış şeması, düşünülen çözümün adım adım ve görsel ifadesidir. En basit şekliyle dikdörtgen kutulardan ve oklardan oluşur. Akış şeması sembolleri ANSI (American National Standards Institute) standardı olarak belirlenmiş ve tüm dünyada kullanılmaktadır.  
Belli başlı semboller: 
Programın kodlanması: Çözümün bir programlama diliyle ifade edilmesi akış şeması ve/veya pseudocode ile ifade ettiğiniz mantığın (algoritmanın) programlama diline tercüme edilme işidir. Kullanacağınız dilin tüm kurallarını doğru olarak takip etmeniz gerekir. Hiçbir yazım hatası yapmadan programınızı kodlamanız programın hatasız yani istediğiniz sonucu verecek biçimde çalışmasını gerektirmez. Çünkü dili doğru kullanmanıza rağmen mantık hataları (“logic errors”) yapmış olabilirsiniz. Ancak, dilin kurallarının doğru kullanımı, kodlamada gerekli ilk adımdır. 

Programın sınanması (“testing the program”) : Genellikle, program ne kadar dikkatli kodlanırsa kodlansın, ilk çalıştırmada bir takım derleme hataları (“compilation errors”)  alınması kaçınılmaz olabilir. Derleme aşaması hatasız geçilmeden çalıştırma (“run”) aşamasına geçilemez. Alınması olası hataları mümkün olduğunca azaltmak ya da yok etmek için programımızı kodladıktan sonra kontrol etmeliyiz (masa başı kontrol). 
      —Masa başı kontrol: yazdığımız kodun masa başında izlenmesi, kontrolu. Diğer bir deyişle, programdaki her cümlede değişkenlere örnek değerler verilerek koşul cümlelerinin, döngülerin vb. sınanması)
      —Programın derlenmesi (“compilation”) : programcı ne kadar deneyimli olursa olsun bu adımda genellikle hatalar alınır / alınabilir. Bunları anlayıp düzeltmek gereklidir.
      —Programın çalıştırılması (“run” aşaması): derleme hatalarından arınmış programı çalıştırıp istediğimiz/beklediğimiz sonuçları alıp almadığımızın kontrolu. Yani ‘programın mantığı doğru mu?’. Giriş değeri olarak bir takım örnek değerler verip programı çalıştırdıktan sonra değişik giriş değerleri vererek olabildiğince her koşulda programın çalışıp çalışmadığının kontrol edilmesi önemlidir.

Programın belgelenmesi (“documentation”): Genellikle ihmal edilen ancak ÇOK önemli bir aşamadır. Programınızın doğru olarak çalıştığından emin olduktan sonra

          Programın amacını,
          Nasıl çalıştığını / mantığını, akış şemasını,
          Kullanıcı tarafından nasıl kullanılacağını,
          Giriş bilgilerini (nasıl nereden verilecek, vb.),
          Çıkış bilgilerini, raporlama formatlarını,

İfade eden, ayrıca program listesini ve örnek çıktıları içeren bir doküman hazırlanmalıdır.
Bu doküman, programı talep etmiş kullanıcı grubuna verileceği gibi, ilerde değişiklik yapılacağı zaman ( sizin tarafınızdan veya başka bir programcı tarafından) çok yardımcı olacaktır. Programcıların en çok, hiçbir dokümantasyonu olmayan mevcut bir programı değiştirmeleri istendiğinde çok zorlanırlar.