5 Temmuz 2017 Çarşamba

Programlamanın Taousu - 5. Kitap - Bakım


Ve şoyle dedi usta programcı:
"Bir program uç satırı geçtiyse bir gun mutlaka bakıma ihtiyaç duyar."

5.1
İyi kullanılan bir kapıya yağ gerekmez.
Akan su kir tutmaz.
Ne duşunceler ne de sesler boşlukta hareket edebilir.
Kullanılmayan yazılım çurur.
Bunlar buyuk sırlardır.

5.2
Bir mudur bir programcıya uzerinde çalıştığı programı ne kadar surede bitirebileceğini sordu. "Yarın bitecek," diye cevapladı programcı tereddut etmeden.
"Bu bana pek gerçekçi gelmedi açıkçası," dedi mudur. "Açık konuş, ne kadar surer?"
Programcı durup biraz duşundu. "Eklemek istediğim bir iki ozellik daha var. İki hafta alır," dedi.
"Bu bile iyimser bir beklenti!" diye ısrar etti mudur, "Bana kısaca programın ne zaman tamamlanacağını soyler misin?"
Programcı bunu kabul etti.
Yıllar sonra, mudur emekli oldu. Emekliliğini kutlama yemeğine çıkarken programcıyı bilgisayarı başında uyurken gordu. Sabaha kadar program yazmıştı.

5.3
Bir gun bir çırak programcıya bir muhasebe paketi yazma gorev verildi.
Çırak gunlerce deliler gibi çalıştı ancak usta programı incelediğinde sistemde bir ekran editoru, genelleştirilmiş grafik rutinleri, bir tur yapay zeka arabirimi bulunduğunu gordu. Muhasebeye yonelik hiçbir şey yoktu.
Usta bu noktaya dikkat çekince çırak biraz bozuldu, "Lutfen bu kadar sabırsız olmayın, sureç içinde muhasebe fonksiyonlarını da ekleyeceğim."

5.4
İyi bir çiftçi ekinini ihmal eder mi?
İyi bir oğretmen en aptal oğrenciye bile kotu davranır mı?
İyi bir baba bir çocuğunu açlığa makhum eder mi?
İyi bir pogramcı programının bakımını yapmayı reddeder mi?

Programlamanın Taousu - 4. Kitap - Kodlama


Ve şoyle dedi usta programcı: "İyi yazılmış bir program kendi içinde bir cennettir, kotu bir program ise cehennemin ta kendisi."

4.1
Bir program hafif ve çevik olmalıdır. Alt rutinleri inci dizileri gibi bağlanmalıdır. Programın ruhu ve amacı surekli goz onunde bulundurulmalıdır. Fazla ya da az olmamalı, gereksiz donguler ve değişkenler kullanılmamalıdır. Ancak yapıdan yoksunluk ya da değiştirilemez bir katılık da bulunmamalıdır.

Bir program "En Kuçuk Şaşkınlık" yasasını takip etmelidir. Nedir bu yasa? Program kullanıcıya daima onu en az şaşırtacak şekilde cevap vermelidir.
Bir program, ne kadar karmaşık olursa olsun, tek bir birim gibi çalışmalıdır. Program dış gorunuşu tarafından değil içsel mantığı tarafından yonlendiriliyor olmalıdır.
Eğer program bu ihtiyaçları karşılamazsa duzensizlik ve karmaşa hakim olur. Bunu duzeltmenin tek yolu programı yeniden yazmaktır.

4.2
Bir çırak ustaya sordu: "Bazen çalışan, bazen de çoken bir programım var. Programlama kurallarına uydum ama gene de apışıp kaldım. Bunun sebebi ne olabilir?"

Usta şoyle cevapladı: "Kafan karışmış çunku Tao'yu anlamıyorsun. Sadece bir insan etrafındaki insanlardan rasyonel davranışlar bekler. Sen neden aynı şeyi insanların yaptığı bir makinadan bekliyorsun? Bilgisayarlar determinizmi sadece simule ederler, mukemmel olan ise sadece Tao'dur.
Programlama kuralları geçicidir. Sadece Tao kalıcıdır. Bu yuzden aydınlanabilmek için once Tao'yu kavramalısın."

"Peki ama aydınlandığımı nasıl anlayacağım?" diye sordu çırak.
Usta cevap verdi: "Programın duzgun çalışacak."

4.3
Bir usta çıraklardan birine Tao'nun doğasını anlatıyordu: "Tao tum yazılımların içinde vardır, ne kadar kuçuk olurlarsa olsun bu yazılımlar."

"Bir hesap makinasında Tao var mıdır?" diye sordu bir çırak.
"Vardır."
"Peki bir video oyununda da var mıdır Tao?" diye devam etti çırak.
"Bir video oyununda bile vardır," dedi usta.
"Peki, kişisel bilgisayardaki Windows sisteminde de Tao var mıdır?" diye sordu çırak.
Usta oksurdu, boğazın temizledi, biraz kımıldandı ve "Bugunku dersimiz bu kadar," dedi.

4.4
Prens Wang'ın programcısı yazılım kodluyordu. Parmakları klavye uzerinde dans ediyor, programları tek bir hata mesajı olmadan derleniyor ve ruzgar gibi çalışıyordu.

"Mukemmel!" diye bağırdı Prens. "Tekniğin kusursuz!"
"Teknik mi?" dedi programcı ve terminalinden yukarı doğru baktı. "Benim takip ettiğim şey Tao'dur - tum tekniklerin otesinde. Programlamaya ilk kez başladığımda tum problemi tek bir kutle gibi goruyordum. Aradan yıllar geçtikten sonra o kutleyi gormuyorum. Bunun yerine alt rutinler kullanıyordum. Ancak şimdi artık hiçbir şey gormuyorum. Tum varlığım şekilsiz bir boşluk gibi. Ruhum plansız programsız, içgudulerini takip ederek ozgurce çalışabiliyor. Kısaca programım kendi kendini yazıyor. Evet, doğru, bazen guç problemlerle karşılaştığım oluyor. Onların geldiğini goruyorum ve yavaşlayıp sessizce izliyorum. Sonra tek bir satırı değiştiriyorum ve problemler duman gibi uçup gidiyor. Programı derliyorum ve yapılan işin guzelliği varlığıma işliyor. Gozlerimi kapatıyorum ve sonra sistemden çıkıyorum."

Bunun uzerine Prens Wang dedi ki "Keşke tum programcılarım senin kadar bilge olsaydı."

Programlamanın Taousu - 3. Kitap - Tasarım


Ve şoyle dedi usta programcı:
"Program test edilmeye başlandığında tasarım değişiklikleri yapmak için artık çok geçtir."

3.1
Bir zamanlar bir bilgisayar fuarına giden bir adam vardı. Her gun girişteki guvenlik gorevlisine şoyle diyordu: "Ben buyuk bir hırsızım, arakladığım şeyler yuzunden meşhurum. Seni uyarıyorum bu fuar da benden nasibini alacak."

Bu konuşma guvenlik gorevlisini çok rahatsız etmişti çunku içeride milyonlarca dolar değerinde bilgisayar ekipmanı vardı ve o da bu yuzden hırsız olduğunu soyleyen adamı yakın takibe almaya karar verdi. Ancak adam bir standdan diğerine gidiyor ve kendine kendine mırıldanıyordu, tum yaptığı buydu.

Adam fuarı terk eder etmez, guvenlik gorevlisi onu bir kenara çekiyor baştan sonra arama tarama yapıyordu. Adamın hırsızlığına işaret eden hiçbir şey çıkmıyordu uzerinden.

Ertesi gunu fuara gelen adam guvenlik gorevlisine yanaşıp dedi ki: "Dun iyi iş çıkardım ama bugun daha da iyi olacak." Tum huzuru kaçan bu sefer takip işini daha sıkı tutmaya karar vermişti ancak sonuç gene husrandı.

Fuarın son gununde dayanamayan guvenlik gorevlisi adama gidip şoyle dedi:"Sayın Hırsız, o kadar şaşırmış durumdayım ki huzurum kaçtı, çok kotu durumayım, lutfen beni aydınlatın, çaldığınız şey nedir?"

Adam gülümsedi ve tek bir cumle sarf etti:"Fikir çalıyorum."

3.2
Bir zamanlar yapısal olmayan programlar yazan bir usta programcı vardı. Çomez programcı onu taklit etmeye yeltendi ve o da yapısal olmayan programlar yazmaya başladı. Sonra ustaya gidip programlarını değerlendirmesini isteyince usta ona yapısal olmaya programlar yazmadığı için kızdı ve dedi ki: "Usta için uygun olan çomez için uygun değildir. Yapıyı aşmadan once Tao'yu kavramalısın."

3.3
Bir zamanlar savaş lordu Wu'nun topraklarında yaşayan bir programcı vardı. Wu onu huzuruna getirtti ve sordu: "Hangisini tasarlamak daha kolaydır, bir muhasebe paketi mi yoksa bir işletim sistemi mi?"
Programcı cevapladı: "Bir işletim sistemi."
Kulaklarına inanamayan savaş lordu içini çekti ve dedi ki: "Bir işletim sistemi ile kıyaslandığında muhasebe yazılımının çok basit olduğu su goturmez!"
"Tam olarak oyle denemez efendim", dedi programcı, "bir muhabesebe paketi tasarlarken programcı değişik fikirleri olan insanlarla muhatap olmak zorunda kalır: program nasıl çalışmalıdır, raporlar nasıl gorunmelidir, vergi kanunlarına ne şekilde uymaldıdır, vs. Oysa bir işletim sistemi dış gorunuş ile sınırlandırılamaz. Bir işletim sistemi tasarlarken programcı makina ve fikirler arasındaki en basit uyumu arar bu yuzden de işletim sistemi tasarlamak daha kolaydır."
Savaş lordu Wu başını onaylar biçinde salladı ve gulumsedi: "Guzel ve akıllıca! Peki hangisinin hatalarını ayıklamak daha kolaydır?"
Programcı cevap vermedi.

3.4
Bir mudur usta programcıya gitti ve yeni bir uygulama ile ilgili ozellik listesini gosterdi. Sonra da sordu: "Eğer 5 programcıyı gorevlendirirsem sistemin tasarlanması ne kadar surer?"
"1 yıl," diye cevapladı usta hiç tereddut etmeden.
"Fakat bu iş çok acil! 10 programcı çalıştırsak?"
Ustanın kaşları çatıldı. "Bu durumda iki yıl surer" dedi.
"Peki ya 100 programcı çalıştırsak?"
Usta omuz silkti ve "O zaman tasarım asla tamamlanmaz" dedi.

Programlamanın Taousu - 2. Kitap - Eski Ustalar


Şoyle dedi usta programcı:
"Üç gun program yazma ve hayat anlamsızlaşır."

2.1
Eski zamanlarda yaşayan programcılar gizemliydi. Onların duşuncelerini takip edebilmemiz mumkun değil, bu yuzden sadece gorunuşlerini tarif etmekte yetineceğiz.
Suyu geçen bir tilki gibi uyanık. Savaş meydanındaki general gibi dikkatli. Misafirlerini ağırlayan ev sahibi gibi nazik. Yontulmamış tahta blok gibi basit. Derin mağaralardaki sular gibi karanlık.
Onların kalplerindeki ve kafalarındaki sırları kim bilir?
Cevap sadece Tao'dadır.

2.2
Buyuk usta Turing bir gun ruyasında bir makina olduğunu gordu ve uyandığında dedi ki: "Bilmiyorum ki acaba ben ruyasında bir makina olduğunu goren Turing miyim yoksa Turing olduğunu goren bir makina mıyım!"

2.3
Buyuk bir firma için çalışan bir programcı bir yazılım konferansına gider ve sonra donup mudurune rapor verir: "O firmalarda çalışan programcılar nasıl insanlar! Kotu davranıyorlardı ve dış gorunuşleri ile ilgilenmiyorlardı. Saçları uzun, giysileri eski pusku, kırış kırıştı. En guzel odamızı batırdılar ve benim prezentasyonum esnasında gurultu yapıp durdular."

Mudur bunun uzerine dedi ki: "Seni oraya asla gondermemeliydim! O programcılar fiziksel dunyanın otesinde yaşarlar. Hayatı saçma, bir tur tesaduf kabul ederler. Sınır tanımaksızın hareket ederler. Sadece programları için yaşarlar. Neden toplumsal kurallara uysunlar ki?...
Onlar Tao'nun içinde yaşarlar."

2.4
Bir çırak ustaya sordu: "Bak şurada bir programcı var, hiç tasarım yapmadan program yazıyor, dokumantasyon hazırlamıyor ve test etmiyor. Ancak kimi gorduysem onun dunyadaki en iyi programcı olduğunu soyluyor. Bu nasıl olabilir?"

Usta cevap verdi: "O programcı Tao'yu bilir. Tasarım kaygısını aşmıştır, sistem goçtuğunde ofkelenmez, evreni olduğu gibi kabul eder. Dokumantasyon kaygısın aşmıştır, bir başkasının onun koduna bakıp bakmaması umurunda değildir. Test etme kaygısını da aşmıştır çunku yazdığı her program kendi içinde mukemmel, şık ve rahattır, amaçları hemen belli eder kendini. Evet, gerçekten de o Tao'nun gizemlerine ermiştir."

Programlamanın Taousu - 1. Kitap - Sessiz Boşluk

Ve şoyle dedi usta programcı: "Sadece TCP/IP kullanarak uzaktaki makinanın işletim sistemini anlayabildiğinde tapınaktan ayrılmanın zamanı gelmiş demektir."

1.1
Sessiz boşlukta gizemli bir şey oluştu. Tek başına hareketsiz bekleyen o şey yine de surekli hareket halindedir. Tum programların ozunde yer alır o. Adını bilmiyorum onun, bu yuzden Programlanın Taosu diyeceğim.

Tao buyukse işletim sistemi buyukturr. İşletim sistemi buyukse derleyici buyuktur. Derleyici buyukse uygulama buyuktur. Kullanıcı mutludur ve dunyada uyum hukum surer.
Programlamanın Taosu uzaklara gider ve sabah ruzgarı ile geri doner.

1.2
Tao makina dilini doğurdu. Makina dili assembler'ı doğurdu.
Assembler derleyiciyi doğurdu. Şimdi ortalıkta onbin tane programlama dili var.
Ne kadar alçakgonullu olsa da her dilin bir amacı vardır. Her dil yazılımın Yin ve Yang'ını ifade eder. Her dilin Tao içinde bir yeri vardır.
Ancak mumkunse COBOL ile programlamayın.

1.3
Başlangıçta sadece Tao vardı. Tao Mekanı ve Zamanı doğurdu. Bu yuzden Zaman ve Mekan programlamanın Yin ve Yang'ıdır.
Tao'yu anlamayan programcılar programları için bir turlu yeterli zamana ve mekana sahip olmazlar. Tao'yu anlayan programcılar ise hedeflerine varmak için gerekli zamana ve mekana daima sahiptirler.
Başka turlu nasıl olabilirdi ki?

1.4
Bilge programcıya Tao'dan bahsedildiğinde onu takip eder. Ortalama programcıya Tao'dan bahsedildiğinde onu araştırma gereği duyar. Aptal programcıya Tao'dan bahsedildiğinde kahkahalarla guler.

Eğer gulmezse, duyduğu gerçek Tao değildir.
En yuksek ses işitilmesi en zor olandır.
İleri gitmek geri çekilmeye goturur.
Buyuk yetenek kendini olgunlukta gosterir.
Mukemmel bir programın bile hataları vardır.

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü