Programlama sanatı

Programlamanın bir sanat olduğunu biliyormusunuz? Aslında programcılar ve programlar eşsizdir.
Programcılar modern çağın ressamları, heykeltıraşları yanisanatçılarıdır. Programlama da sanatın ta kendisi. Bir başka açıdanbaktığımızda da programlama bir bilim, programcı da bilim adamıdır.Bence her ikisi de doğru. Şöyle ki, programcı da sanatçının esinkaynağına yani ilhama dayanarak program yazar, aklına ilginç bir fikirgelir, bu fikri kendi araçlarını kullanarak başlar program halindevücuda getirmeye.
Programcının en büyük görevi, insanlar ile bilgi arasındaki iletişimive bağlantıyı sağlamaktır. İnsan yaşamını kolaylaştıran bu kutsal görevprogramcı olmayanlarca pek de önemsenmez. Geleceğin sanal şehirlerinikuranlar programcı dediğimiz gizli kahramanlardır. Yeni yazdığıprogramın kullanıldığını ve yararlı olduğun görmek ona her şeyiunutturur, programcı olmayanların asla anlayamayacağı bir haz verir.

Bilgisayar kullanıcısı sayısı gün geçtikçe geometrik olarak artıyor amabu tür bir haz bilgisayar kullanıcılarının büyük bir çoğunluğutarafından asla yaşanmaz. Çünkü bilgisayar kullanıcılarının büyük birçoğunluğu programcı değildir ve asla da olmayacaklar. Onlar sadeceyazılan programları ve içerisinde yazılım gömülü akıllı cihazlarıkullanırlar.

BİR PROGRAMLAMA DİLİ ÖĞRENMEK
Programlama dili öğrenmeyi yabancı dil öğrenemeye benzetebilirsiniz.Mesela her ikinde de öğrenilmesi gereken, o dile özgü bir grup kelimevar. Anahtar kelime diye adlandırdığımız bu kelimelerin c# dilindekisayısı 77 tanedir. C dilinin geleneğini sürdürdüğü için de bu kelimelerküçük harflerle yazılır.

Yabancı dil öğrenirken bir takım yazım ve dil bilgisi kurallarıöğrenmek zorundayız. Programlama dilinin yazım ve dil bilgisi kurallarıkonuşulan dillerin kurallarına göre daha katıdır.

Programlama dili ile yabancı dil öğrenme arasındaki en büyük benzerlikbence her ikisinin de okuyarak öğrenilememesidir. Pratik yapmakzorundayız. Bir müzik aletini çalmayı öğrenirken olduğu kadar çokpratik yapmalıyız hem de. Bir programcı gibi düşünmeye ve kendikodumuzu kendimiz yazmaya alışmalıyız.

Programlama bir problem çözme etkinliğidir. Programcının tek en önemlikalite göstergesi problemleri bileşenlerine ayırma ve daha küçükparçalara bölerek çözebilme yeteneğidir. Programcının sorumluluğu buküçük parçaları bir araya getirip çözümü oluşturmaktır. Bu beceri debence sadece pratik yaparak gelişir.

PROGRAMLAMA NEREDEN NEREYE
Charles Petzold, bilgisayar devrimini iki evreye ayırır: Birinci evrebilgisayarların tasarlandığı ve yapıldığı zaman, ikinci evre iseonlarca yıl sonra bilgisayarların programcı olmayan kimseler tarafındanda kullanılabilir olmasıdır.

İlk programlanabilir bilgisayar 1930'lu yıllarda yapıldı. Uzun bir süreprogramlama işlemi delikli kartlar gibi mekanizmalar kullanılaraksağlandı. Bilgisayarın kendisine donanım, üzerinde çalışan kodlara dayazılım adı verildi. Bir kaç dekad boyunca donanım ve yazılım birbirinebitişikti. Her makinanın kendine özgü bir komut seti vardı ve bukomutlar başka makinalarda çalışmazdı. Sayısal tümleşik devrelerkullanıldığı dönemlerde de bu durum devam etti.

1950'lerin başında mimariden bağımsız bilgisayar dilleri geliştirilmeyebaşlandı. Bu diller Makine kodu ile karşılaştırıldığında yüksekseviyeli diller olarak aklandırıldı. COBOL, BASIC, FORTRAN gibi dillerhala farklı sürümleri ile hayattadır.

Derlemek, Yorumlamak
Bilgisayar sadece Makine kodunu çalıştırabilir. Öyleyse yüksek seviyelidillerle yazılan program kodları Makine konuda dönüştürülmelidir.Derleyici, bir programı tamamen Makine koduna çevirirken yorumlayıcı buişlemi eş zamanlı olarak yapar.

Bilinen en eski programlama dillerinden birisi de ALGOL dilidir.1950'li yıllarda uluslar arası bir komite tarafından geliştirildi veuzun yıllar değişiklikler yapılarak kullanıldı. Hâlâ Pascal, PL/I ve Cgibi dillerin temelini oluşturduğu için yaşamını sürdürmektedir.

C Dilinin Serüveni
Bell Laboratuarlarının etkisi olmadan çağdaş dünyayı düşünmekimkansızdır. 1947 yılında transistor orada icat edildi. 1970’lerde UNIXişletim sistemi orada geliştirildi.Uzun yıllar, büyük bir kısmı DennisRitchie tarafından geliştirilen C dili, UNIX işletim sistemi ileilişkilendirilir. C dili tek harfle temsil edildiğinden bu adın neredengeldiği merak edilebilir: İlk olarak CPL (Combined ProgrammingLanguage) dili vardı. BCPL (Basic CPL) dili daha sonra CPL dilindenesinlenerek geliştirildi. Sonraları BCPL dilinin basitleştirilmiş birhali olan B dili ortaya çıktı. C dili de bu B dilinden türetildi. Cismi oradan gelir.

ALGOL ve onun türevi olan dillerde, program parçaları BEGIN ve ENDkelimeleri arasına yazılır. C ise bu işi küme parantezlerini kullanakyapar. C’de yazılmış programların en belirgin farkı hızlı olmalarıdır.Çünkü C işaretçiler dediğimiz, bellek bölgelerine doğrudan erişmeyeyarayan yapılara izin verir. Bazıları C’ye yüksek seviyeli assemblydili der. Çünkü C; bit, byte ve bellek düzeyinde çok iyi çalışır.

Aslında bu yaklaşımın tehlikeli tarafı da var. Yüksek seviyeli dillerinderleyicileri program kodları derlenirken programın çökmemesi ve verikayıplarına neden olmaması için fazladan kodlar eklerler. C derleyicisiise hızlı program ortaya koyma adına, fazladan kod eklemez. Bu yüzden,dikkatli davranılmadığında hata oluşturmaya daha elverişlidir. Hatasızprogram olmaz ise de, C’de bu durum daha yaygındır. Hataların çoğunluğuişaretçi kullanmanın yol açtığı hatalardır.

C, hala çok yaygındır ama bazı açılardan tarih olmuştur. Gelenekselprosedürel diller grubuna dahil edilmektedir. Program içerisindebelirli bir işi yapan ya da algoritmayı gerçekleştiren programparçasına prosedür denir. Bir C programı da, bir grup prosedür ya dafonksiyondan oluşur. Fonksiyonlar, devamlı veriler ile çalışır.Prosedürel yapıda bu veriler ile program kodu iç içe bulunur.

Nesne yönelimli programlama terimini çok sık duymaya başladık. Nesneyönelimli programlama dillerinin (OOP) ilki Palo Alto AraştırmaMerkezinde (PARC) geliştirilen SmallTalk dilidir. PARC, MicrosoftWindows ve Apple Machintosh’ta da kullanılan grafiksel kullanıcıarayüzü kavramlarını geliştiren Xerox tarafından kurulan araştırmalaboratuarıdır.

Nesne yönelimli dilde, programcılar prosedürler yerine sınıflaroluştururlar, kodların ve verilerin birleşiminden oluşan nesneler de busınıflardan türetilir. Programlamadaki bu bakış açısı değişimi, çeşitliprogramlama işlerinde tekrar tekrar kullanılabilecek kodlar yazmayaolanağı sağladı.

C dilinin de nesne yönelimli sürümünü yazmak isteyenler oldu. 1980lerinbaşında Bjarne Stroustrup tarafından Bell laboratuarlarında C++ (Siplas plas okunur) geliştirildi. C++ dilinin adında geçen ++, C dilindebir sayıya 1 eklemek için kullanılır, yani sayının değeri 1 artar.

C++ dili, C’nin tüm özelliklerine sahip ama nesne yönelimli olması içinbir takım ek özellikler katılmış hali diye özetlenebilir. Ama bu yapıbiraz hantal bir yapı oldu. Çünkü C’de olan her şeyi destekleme kaygısıile garip bir notasyon ortaya çıktı.

Bu hantal yapının yanında, baş edilmesi gereken bir sorun daha vardı.Bilgisayar donanımı hızla gelişiyor. Gereğinden fazla hızlı işlemcilerve gereğinden fazla bellek var. Bir program yazılırken dikkat edilentemel kriterler değişti. Eskiden performans ve ekonomik kaynakkullanımı iken şimdilerde yerini daha hızlı ve hatadan arınmış kodyazmaya bıraktı. Bu da alçak seviyeli yapıdan hızla uzaklaşma veişaretçi kullanımının azalması demekti. Artık programcılar işaretçikullanmaktan kaçınıyorlar.

1990’larda Sun Microsystems, C++ dilinden daha esnek bir notasyonasahip olan, daha güvenli kod yazmayı olanaklı kılan bir yapı ortayakoydu, yani Java dilini geliştirdi.

C#’ın Doğuşu
Borland firmasından ayrılan Anders Hejlsberg, 20002li yılların başındaMicrosoft için C# (Si Şarp okunur) dilini geliştirdi. C#’taki diyezişareti (şarp), C++ taki ++ ın 2 tanesinin üst üste koyulmuş halidir.

C# Java gibi, C# da C’nin tehlikeli özelliklerini almadı. Amaişaretçiler C#’tan tamamıyla çıkarılmadı. Java ile C# arasındaki diğerbir benzerlik, derleyicinin rolündedir. Geleneksel olarak, derleyicikaynak kodu (yüksek seviyeli dil metin dosyası) makina koduna çevirir.Makina kodu, bilgisayar tarafından çalıştırılabilir bir formdadır. Buda Microsoft Windows ile Apple Machintosh üzerinde aynı programınçalıştırılamayacağı anlamına geliyor.

C# derleyicisi, kaynak kodu bir ara dile (IL) çevirir. Programçalıştırılacağında ise IL makina koduna dönüştürülür. Bunu kullanıcıfark etmez. Teorik olarak, bu iki adımlı işlem, aynı IL kodunun farklımakinalarda da çalışabilmesine olanak tanır. Ayrıca IL formundaki birprogramda bulunan kötü ve zararlı kod işletim sistemi tarafındankolaylıkla tetkik edilebilir.

Yorumlar