Bu konuya tam olarak girmeden önce, programlama bilmenin bir zorunluluk olmadığını söylemek isterim. Programlama sadece üretkenliğin yoğunlaştırılmış halidir. Bu da benim programlama öğrenmemin esas nedeniydi. Fakat programlamayla bir programa katamayacağınız bazı şeyler vardır. Kolay kullanım, programın göze hoş görünmesi, vb. Bunları sağlamanın yolu dizayn’dan geçer. O yüzden çoğu programcı takımında bir de designer vardır. Öyle yerler gelir ki dizayn programlamanın önüne geçer. Bu çok normaldir. Programlar “insanlar” için yazılır. Yani insana hoş gözükmesi, çok kullanılacak bir program için çok önemlidir. Dizaynın gücünü unutmayın, ama yapabildiğiniz en iyi kodu da yazmaktan vazgeçmeyin. Komut satırına alışkın birileri bulunur her zaman…
Yukarıda da söylediğim gibi, beni programlama öğrenmeye iten esas neden, programlamada en yüksek seviyelerinden birine ulaşmış olan yaratıcılık, üretkenlik, bir de kendi yapımdan kaynaklanan meraktı. Ama sizin nedeniniz, dönem ödevi hazırlamak, bilgisayar olimpiyatlarına, yarışmalarına katılmak, eski sevgilinizin MSN’ini hacklemek*, Bill Gates’ten öcünüzü alacak bir işletim sistemi yazmak*
bile olabilir. Hatta insanlarla bile doğru dürüst anlaşamadığınız halde* bilgisayarla anlaşmaya kalkacak kadar mazoşist* olmanız da olabilir. Bunlar da yetmezse, Ipod’unuz olduğu halde, o güzelim alete Türkçe harfleri eline yüzüne bulaştırmadan gösteren( ı -> ý yapmayan ) bir e-kitap programı bulamamak* bile geçerli benim gözümde. Ama sizin kendi nedeninizi bulmanız lazım. Kendi nedeniniz olmadan programlama öğrenmek sizin için zor olabilir. Bu yüzden şimdi programlama eğitiminin size getirdikleri ve sizden götürdüklerini, kendi bakış açımdan açıklamaya çalışacağım.
Programlama Bize Neler Kazandırır ?
Analitik Düşünce:
Maalesef şu anda sadece bilgisayarları pogramlayabiliyoruz. Ve tahmin edin, bilgisayarlar birazcık aptal ve monoton. Anlayışları kıt. Bir bilgisayarın(aslında işlemcinin) anladığı komut miktarı kısıtlıdır ( bu komutlar o işlemcinin makina dilini oluşturur ) . Bunların da çoğu “taşı”, “topla”, “çıkar”, “çarp” ve bunun gibi yaşamsal fonksiyonlar için ayrılmıştır. Bunu da bırakıyorum, evinizdeki bilgisayarın RAM’i 0.25 ile 4 GB arasında birşey muhtemelen. Kendi RAM’iniz (evet, kendi beyninizin RAM’i) 10000 ile 1000000 GB arası birşey. Ezici bir üstünlük.
Programlama sırasında, beyninizi bilgisayarın tek yönlü, basit işleyişine alıştırırsınız. Bisiklete binmeyi öğrenmek gibi. Bilgisayarın bu basit işleyişini kullanabilmek için ona problemi nasıl çözeceğini ezberletirsiniz. Problemi kendi kafanızda çözüp, bunu çözmekten aciz olan bilgisayara gösterirsiniz.
Yani programlama öğrenirken basite inmeyi de öğrenirsiniz, düşünce gücünüzü sonun kadar kullanmayı da. Bunu yaparken, bir problemi analiz edip, onu çözersiniz. Bu sürece alıştığınızda bir de bakarsınız ki herkesin “nasıl çözücem ben bunu???” diye bakıp kaldığı durumları, soruları çözüvermişsiniz.
Programlama Mantığı:
Programlama mantığının tam bir açıklamasını bilmiyorum. Ama hangi dilde olursa olsun, programlama öğrenirken öğrendiğimiz dilin yanında öğreniriz bunu. Dile çok bağımlı değildir. Yani BASIC(bilmeyenler için: en basit dillerden biridir, bu dilde yazılan kodlara alışınca o kodları anadilinizde yazı okuyormuş gibi okuyabilirsiniz, “beyzik” diye okunuyo) öğrendikten sonra C#’a (bilmeyenler için: C++ temellidir, fakat Java, Delphi gibi dillerden etkilenmiştir, programlamayı basitleştirmek ister, “si şarp” diye okunur) geçebilirsiniz (Saydığım şeyleri aklımdan yazmadım, wikipedia onlar) . Bu durumda sadece iki dilin arasındaki farkları kavrar, C#’ın yeniliklerine alışırsınız. Ama bir problemi çözerken yazdığınız kodlar, esas olarak, değişmez ( PRINT yerine Console.WriteLine dersiniz, ama ikisi de aynıdır. ) . Galiba biraz sıkıcı olmaya başladı. Konuyu baştan ele alalım.
Benim şu ana kadar anladığım kadarıyla programlama mantığı, bir problemi çözerken, problemi parçalara ayırıp, parçalar üzerinde nasıl çalıştığımız demek oluyor. “Oku da adam ol bizim gibi eşek olma!” kelimesini virgülsüz yorumlayın. 2 yorum var (belki de 3 B) ). Hangi şekilde yorumlayıp anladığınız programlama mantığı gibi bir şeye denk gelir. Yine de tam olarak açıklayamadım. Ama bu meletin beyin kimyasını büyük miktarlarda etkilediği kesin. Bir de şöyle güzel bir yanı da vardır ki, bu melet, başka insanların programları nasıl yazdığını sezgisel olarak anlamanızı da sağlayabiliyor. ( Milkdrop*, WinAmp’ta hani, nasıl çalışır bilmememe rağmen, efekti değiştirmemi sağlamıştır kendileri, gurur duyuyorum )
Programlama öğrendikçe ve kendinizi geliştirdikçe yeni diller öğreneceksiniz. Örneğin ben bu işe Pascal ile başlamış(elimde yeterli kaynak yoktu, 2 ay sonra bıraktım), 1yıl sonra yeni bir sayfa açıp BASIC ile programlama mantığını öğrenmiş, 6 ay sonra C öğrenmeye heveslenmişimdir. Bir buçuk yıl sonra ( evet, sadece 3,5 yıllık programcıyım ) ben bu işi öğrendim deyip C, C++ ile benzer yapıdaki diğer dilleri de kullanmaya başladım. PHP’ye alışmam 2 hafta sürdü. Ama “Kaptan, bize PHP’de şöyle bişeyler lazım, yapabilir misin?” sorusu gelirse “Karasancak bilir o işleri abi, benim yazacağım PHP’ye güvenilmez.” şeklinde cevaplar vermekteyim.
Programlama mantığını öğrenmeyenlerin başına gelebilecek hayali bir senaryo:
(Monitör bulanıklaşır. Yeniden düzeldiğinde 1 yıl ilerisi görünmektedir ve bu makaleyi okuyan kişi programcı olup, kafayı yemiş, pardon, aşmış bir program yazmış…)
“Sevgili günlük,
Şu programı da bi türlü bitiremedim. XML ile ayar saklıyim dedim, XML’i okutamıyorum. Hay o XML ile tutturan kafamın… Bi de C’de yazıyorum programı ya… Neyse, bugün ‘ları bulan kodları yazdım. İki tag arasındaki değeri de okutacam ama ya eğer programın başka sürümlerini yazarsam nasıl ayarları aktarcam diye düşünüyorum. Şimdi gece gece senin de canını sıktım günlük. Hadi iyi geceler.”
Alternatif olarak programlama mantığı gelişmiş birisini veriyorum:
“Sevgili günlük,
Program bitti bitecek. Ayarları XML olarak saklıycaktık ya, bugün onu da bitirdim. Programlamanın ilk kuralını hatırladım: ‘Hiç kimsenin, senin tekerleği yeniden icat etmene ihtiyacı yok.’. Girdim Google’a ‘library xml c’ yazdım. İngilizce bişiler çıktı. İndirdim. İçinde örnekler de vardı. Bi örneği değiştirdim. XML de bitti. Ben biraz ekşisözlük kasıcam günlük, sen uyu.”
(Monitör yine bulanıklaşıyo, okuyucunun, “böyle aptalca örnek mi olur” diye saçını başını yolduğu, yine yanlış cümle, ağzı açık bir biçimde “I know programming technique.” dediği ana gidilir.)
NOT: Bu programlama mantığı cidden değişmez. Ama hafıza kaybına uğrayıp da herşeyi baştan öğrenmek zorunda kalırsanız her halde çok pis koyardı. Kabus gibi ya. Sen bu işe gençliğini ver, sonra herşeyi unut… Tüylerim tiken tiken oldu.
Programlama Bizden Neler Götürür ?
Gençlik:
Evet 14*-15 yaşlarında programlamaya başlayıp gençliklerini heba eden bazı insanlar görülmekte. Bu melet bağımlılık yapıyo. Zaten mühendis olursanız öğreneceksiniz seve seve. Öğrenmek için 15 yaşınızın yazı gayet uygun. Ama “yok ben mazoşistim öğrenecem” diyosanız siz bilirsiniz. Sorumluluk kabul etmeyiz.
İnsanlık yüzdenizin büyük bir bölümü:
Bunu ilk öğrendiğimde ben de kendimi aldatılmış hissetmiştim. Ama programlama ile kız tavlanmaz ya da oğlanın aklı çelinmez. Ha belki Prolog gibi yapay zeka dilleriyle olabilir. Prolog’um başlangıç seviyesinin bile altında, onu bilemem. C ya da Assembly ile anakart, işlemci tavlanır. Ama o da işinize yaramaz. Siz en iyisi böyle sorunlarınızı çevrenizdeki Güzin Abla rolüne bürünmüş insanlara danışın. Ne demişler: “Kelin merhemi olsa…”
En vurucu olan ise sürekli sağ alttan “Bilgisayarınız risk altında olabilir!” diye baloncuk çıkaran Windows’un, sevgilinizle aranız bozulduğunda bir kerecik bile olsun o baloncuğa “üzülme arkadaşım, yarın kızgınlığı geçer onun, sen bırak Winamp’ta Sezen Aksu’dan ‘Ben Sende Tutuklu Kaldım’ı dinlemeyi, bak ben sana daha neşeli bişeyler açıyim Media Player’da…” yazmaması… Linux en azından “Bu bilgisayar kem gözlere karşı korunuyor.” gibi bişeyler yazıp güldürüyo insanı


Henüz yorum yok