5 Haziran 2008 Perşembe

Programlama dili nedir ki(ne)?!

Önceki yazımı yayınladıktan birkaç saniye sonra hemen başlayayım dedim programlama ile ilgili yazmaya. İlk önce program yazmayı merakeden yada bilgisayarı bir deney aracı bir uğraş haline getiren pek çok insanın hemen aklına gelen şu basit soruyu cevaplamaya çalışmak istiyorum:Programlama dili nedir (aslında ilk soru "Bu programlar-oyunlar- nasıl yapılıyor ki yahu" dur.) neden vardır? Aslında programlama dili sihirli bişey değildir. Hatta hepsi aynı şeydir (Durun yahu hemen itiraz etmeyin tamam sizde birşeyler biliyorsunuz).Yani hepsi bilgisayara birşeyler yaptırtır. Yaptırtır yaptırmasına da ama nasıl yaptırtır ki(ne)? Şimdi ilk önce ayrıntıya girmeden şu an ekranına baktığımız şeyi işletim sistemiyle, işlemcisiyle, ekran kartıyla, hafızasıyla, disk sürücüsü ile bi bütün olarak yani bilgisayar olarak ele alalım.Bu kabullenme ile program yazan insan bu bilgisayara bir şeyler yaptırtacak ama onla nasıl iletişim kuracak. Yani derdini nasıl anlatacak? Anlatmak için kullandığı şey ne olacak? Eğer o bir insan olsaydı konuşarak anlaşırdık ama o bir insan değil! Hadi insan diyelim ama türk değil o zaman onla aynı dili konuşmanız gerekir yada bir tercuman tutarsınız o anlatır derdinizi.İşte o tercumana programcı bir şeyler söyler "iki düğme oluştur düğmenin birinde TAMAM yazsın diğerinde İPTAL yazsın TAMAMI tıklayınca AYARLARI kaydet İPTALİ tıklayınca bir şey yapmadan çık v.s." tercumanda bilgisayara şöyle söyler: "101011110101010111110101010101010001010101011111010 1010101010100011111101010101010101111010101011110101 1010101010101000101010101111101001011110101010111110 0101111010101011111010101010101000101010101111101011 010101010100010101010111110100101111010101011111010" . Şimdi siz olsanız tercumanı aradan kaldırmak istermisiniz? Şahsen ben hiç istemem. Peki neden sadece bir tek programlama dili yok? Aslında ilk başlarda varmış ve adıda assemblymiş(Bir varmış bir yokmuş gibi oldu!).Fakat hiç düşündünüzmü dünya üzerindeki konuşulan her dilin kendine göre avantaj ve dezavantajları var. Doğal olarak insanlar kendi dili dışında dil öğrenme ihtiyacı duydukları zaman bu dez/avantajları göz önünde bulundurur.Örneğin fransızca öğrenmeyi denemeye kalksak ne olur. Bildiğim kadarıyla fransızlar her nesneye hatta hayvana dişi-erkek kavramıyla yaklaşıyorlar(Kedi dişi masa nonoş v.s. :)) ). Bu da fransızca öğrenmek işi bayağı karmaşık olacak demek. Öteki taraftan dünyanın en nazik dili olarak geçiyor ve etkili bir romantizim yaratıyor.Bu bağlamda assemblyde fransızca gibi. Yukardaki örnek de olduğu gibi assembly 1 ve 0 larla konuşmaktan bir adım uzak sadece. Ama öteki yandan yazdığınız programın performansı için oldukça iyi bir dil. Şu bilgiyi hemen vermek istiyorum.Makina diline (yani bizim için bilgisayar dili) yakın olan dillere düşük seviye diller (low-level language) insan konuşmasına benzeyen yani "eğer şu yoksa bunu al o da yoksa geri dön şunu yap" şeklindeki dillere yüksek seviye (high-level language) denir. Derleyici -Compiler-?! (Af buyur o ne yav annem gibi bişey mi ortalığı toplayan falan :))) Eh madem biz bu bilgisayarla aynı dilde hiç konuşmadık bu adama nasıl söz geçiriyoruz? Şöyle ki hemen her programlama dilinde komutlar (bilgisayara emir vermek için kullandığımız dilin sözcükleri anlamında kullanıyorum) düz yazı ile yazılır (içinde yazı karakteri, büyüklüğü, rengi gibi bilgiler taşımayan sadece "abvds" gibi harfler bulunan dosyaya düz yazı dosyası denir.) ve bu yazı dosyası derleyiciye verilir. Derleyici dosyayı okur ve bilgisayarın anlayacağı dile çevirir. Böylece programımız üretilmiş olur. Bu bağlamda derleyici bizim tercümanımızdır. Komut kelimesi yanlış anlaşılmasın. Komut çoğu zaman bilgisayardaki tıklayacağınız bir düğmesi olmayan klavye ile yazarak isteğimizi belirttiğimiz programlardır." del foto.jpg " komutu foto.jpg'yi siler ve del bir programdır fare ile tıklayacağınız bir öğesi bulunmaz.Komut satırından emirlerimizi bilgisayara iletiriz. Sonuç: Yazımın sonunda size şunları anlatmaya çalıştım:
  1. Programlama dili nedir neden gereklidir? -Bilgisayara derdini anlatan programcı dilidir.
  2. Programlama dili ile bilgisayara derdimizi anlatan kimdir. -Derleyici yada yorumlayıcı(yorumlayıcı için daha erken ama anlatacam onu da elbet).
  3. Madem ben bilgisayarıma doğrudan bişey anlatamıyorum o zaman uygun bir dil ile mi anlatacağım derdimi? -Evet aynen öyle
  4. E o zaman ben gidip bir programlama dili mi öğreneyim? Evet bu da doğru ama...
  5. Bu kadar mı şimdi! -Hayır devamı gelecek tabi :))
  6. Programcı büyüklerimize saygı onlardan da bize sevgi arz ediyoruz.(Yav adam bizden büyük yada küçük ama o yazıyor e biz kullanıyoruz. Mesela Pardus'u yazıyor. Firefox'u çeviriyor zembereği yazıyor. E biz de yeni yeni programlama ile ilgili birşeyler öğreniyoruz o zaman kavga etmek, kırılmak, kırıcı eleştiri yapmak karşılıklı olarak yok! <:))
Şunları ise henüz anlatmadım:
  1. Programlama dili öğrenmek kolaydır denir. -"İyi de ben geri zekalımıyım değişken, fonksiyon, nesne, örnek nedir hiç bişey anlamamıştım". Aslında geri zekalı değilsin sadece sen araştırmaya kalktığın zaman televizyon programlarında ki Prof.Dr. XXXX gibi "Efendim karsinomların iki çeşiti vardır malign ve selim malign olanların hemidesmazomları........." şeklinde konuşan yazarlarla karşılaşıyorsun o kadar. Ben de senin mahallenin çocuğu olduğum için sana sahip çıkmaya çalışıyorum.(Bu arada o insanları yadırgamayın tüm dünyaları bu olmuş olabilir ve sanki sizde onlardan ve o dünyadanmış gibi zanedebilirler ama siz de onlar sayesinde msn, internet, google gibi şeyleri kullanıyorsunuz ve hala onlar bunu size aşılamaya çalışıyorlar. Sonuçta aziz insanlar onlar)
  2. Programlama dilleri dışında daha kolay olan programlama dilcikleri var.(javascript,php v.s)
  3. Düşük seviye programlama ile yüksek seviye programlam nedir niye var? -Niye Arapça, Türkçe, İngilizce, Ugandaca var?
  4. Benim aklıma gelmeyen ama sizin aklınızda olan pek çok şey var! - E yaz bana o zaman abi biliyosan söyle şu ne diye. Ben de biliyorsam söyleyeyim sölemezsem de Bill GATES gibi olayım (Büyük yemin ettim bak).
Sürçü lisan ettiysek affola :))))

Hiç yorum yok: