C# Programlama Sanatı



Programlama Sanatı




Programcılar modern
çağın ressamları, heykeltıraşları yani sanatçılarıdır.
Programlama da sanatın ta kendisi. Bir başka açıdan baktığı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 esin kaynağına
yani ilhama dayanarak program yazar, aklına ilginç bir fikir
gelir, bu fikri kendi araçlarını kullanarak başlar program
halinde vücuda getirmeye.



Programcının en büyük
görevi, insanlar ile bilgi arasındaki iletişimi ve bağlantıyı
sağlamaktır. İnsan yaşamını kolaylaştıran bu kutsal görev
programcı olmayanlarca pek de önemsenmez. Geleceğin sanal
şehirlerini kuranlar programcı dediğimiz gizli kahramanlardır.
Yeni yazdığı programın kullanıldığını ve yararlı olduğun görmek
ona her şeyi unutturur, programcı olmayanların asla
anlayamayacağı bir haz verir.



Bilgisayar
kullanıcısı sayısı gün geçtikçe geometrik olarak artıyor ama bu
tür bir haz bilgisayar kullanıcılarının büyük bir çoğunluğu
tarafı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 sadece yazı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 kelime var.
Anahtar kelime diye adlandırdığımız bu kelimelerin c# dilindeki
sayısı 77 tanedir. C dilinin geleneğini sürdürdüğü için de bu
kelimeler küçü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 benzerlik bence her
ikisinin de okuyarak öğrenilememesidir. Pratik yapmak
zorundayız. Bir müzik aletini çalmayı öğrenirken olduğu kadar
çok pratik yapmalıyız hem de. Bir programcı gibi düşünmeye ve
kendi kodumuzu kendimiz yazmaya alışmalıyız.



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



PROGRAMLAMA NEREDEN
NEREYE



Charles Petzold,
bilgisayar devrimini iki evreye ayırır: Birinci evre
bilgisayarların tasarlandığı ve yapıldığı zaman, ikinci evre ise
onlarca yıl sonra bilgisayarların programcı olmayan kimseler
tarafından da kullanılabilir olmasıdır.



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



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



Derlemek, Yorumlamak



Bilgisayar sadece
Makine kodunu çalıştırabilir. Öyleyse yüksek seviyeli dillerle
yazılan program kodları Makine konuda dönüştürülmelidir.
Derleyici, bir programı tamamen Makine koduna çevirirken
yorumlayıcı bu iş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 ve
uzun yıllar değişiklikler yapılarak kullanıldı. Hâlâ Pascal, PL/I
ve C gibi 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üşünmek
imkansızdır. 1947 yılında transistor orada icat edildi.
1970’lerde UNIX işletim sistemi orada geliştirildi.Uzun yıllar,
büyük bir kısmı Dennis Ritchie tarafından geliştirilen C dili,
UNIX işletim sistemi ile ilişkilendirilir. C dili tek harfle
temsil edildiğinden bu adın nereden geldiği merak edilebilir:
İlk olarak CPL (Combined Programming Language) dili vardı. BCPL
(Basic CPL) dili daha sonra CPL dilinden esinlenerek
geliştirildi. Sonraları BCPL dilinin basitleştirilmiş bir hali
olan B dili ortaya çıktı. C dili de bu B dilinden türetildi. C
ismi oradan gelir.



ALGOL ve onun türevi
olan dillerde, program parçaları BEGIN ve END kelimeleri arasına
yazılır. C ise bu işi küme parantezlerini kullanak yapar. 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şmeye
yarayan yapılara izin verir. Bazıları C’ye yüksek seviyeli
assembly dili 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 dillerin derleyicileri
program kodları derlenirken programın çökmemesi ve veri
kayıplarına neden olmaması için fazladan kodlar eklerler. C
derleyicisi ise hızlı program ortaya koyma adına, fazladan kod
eklemez. Bu yüzden, dikkatli davranılmadığında hata oluşturmaya
daha elverişlidir. Hatasız program olmaz ise de, C’de bu durum
daha yaygındır. Hataların çoğunluğu işaretçi kullanmanın yol
açtığı hatalardır.



C, hala çok yaygındır
ama bazı açılardan tarih olmuştur. Geleneksel prosedürel diller
grubuna dahil edilmektedir. Program içerisinde belirli bir işi
yapan ya da algoritmayı gerçekleştiren program parçasına
prosedür denir. Bir C programı da, bir grup prosedür ya da
fonksiyondan 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. Nesne yönelimli
programlama dillerinin (OOP) ilki Palo Alto Araştırma Merkezinde
(PARC) geliştirilen SmallTalk dilidir. PARC, Microsoft Windows
ve Apple Machintosh’ta da kullanılan grafiksel kullanıcı arayüzü
kavramlarını geliştiren Xerox tarafından kurulan araştırma
laboratuarıdır.



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



C dilinin de nesne
yönelimli sürümünü yazmak isteyenler oldu. 1980lerin başında
Bjarne Stroustrup tarafından Bell laboratuarlarında C++ (Si plas
plas okunur) geliştirildi. C++ dilinin adında geçen ++, C
dilinde bir 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çin bir 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şlemciler ve
gereğinden fazla bellek var. Bir program yazılırken dikkat
edilen temel kriterler değişti. Eskiden performans ve ekonomik
kaynak kullanımı iken şimdilerde yerini daha hızlı ve hatadan
arınmış kod yazmaya bıraktı. Bu da alçak seviyeli yapıdan hızla
uzaklaşma ve işaretçi kullanımının azalması demekti. Artık
programcılar işaretçi kullanmaktan kaçınıyorlar.



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



C#’ın Doğuşu



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



C# Java gibi, C# da
C’nin tehlikeli özelliklerini almadı. Ama işaretçiler C#’tan
tamamıyla çıkarılmadı. Java ile C# arasındaki diğer bir
benzerlik, derleyicinin rolündedir. Geleneksel olarak, derleyici
kaynak kodu (yüksek seviyeli dil metin dosyası) makina koduna
çevirir. Makina kodu, bilgisayar tarafından çalıştırılabilir bir
formdadır. Bu da 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 bir programda bulunan kötü ve zararlı kod
işletim sistemi tarafından kolaylıkla tetkik edilebilir.


Hanci.org sizlere daha iyi hizmet sunmak için çerezleri kullanıyor.
Hanci.org sitesini kullanarak çerez politikamızı kabul etmiş olacaksınız.
Detaylı bilgi almak için Gizlilik ve Çerez Politikası metnimizi inceleyebilirsiniz.