Bob amca dediniz ve ben geldim. Yine her zamanki "yolun sonuna geldik" tezi.
Kendi listem değil, ama önerebileceğim bir liste:
Haskell, "Haskell Programming from first principles": www.haskellbook.com
Idris, "Type-Driven Development with Idris": https://www.manning.com/books/type-driven-development-with-idris
Coq, "Software Foundations", tamamı online erişilebilir kitap, Coq'tan fazlasını içeriyor adından da belli olduğu üzere: https://www.cis.upenn.edu/~bcpierce/sf/current/index.html
TLA+: http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html
Anlatılan şey ilginç, ama ismi pek güzel değil. X ile Y tamamen rastgele iki şey değil, aralarında bağlantı var ama bu bağlantı opak jargonun arkasında kalıyor. Önemli değil bu pek, daha önemli kısmı aşağıda:
İçeriğin haklı olduğu, doğru sonuç çıkardığı senaryoları anlıyorum... Ancak soru soranı eleştirmek kolay, ve de soruyu soranın da birçok durumda daha iyisini yapması zor. Mesela dosya uzantısı/üç karakter örneğini alın, bunu soran kullanıcı ne kadar detay vermesi gerektiğini ne kadar bilecek? Mesela "arkadaşlar bakın ben mp3'lerimi düzenlemek için bir program yazıyorum, çünkü elimde bu ve bu formatta mp3'ler var ve şu şekilde isimleri olmasını istiyorum ... ... ... ... ... (3 paragraf sonra) ve de sonuç olarak dosya isminden uzantıyı atmak istiyorum ki dosya adını alıp işleyebileyim" dese olması gerekenden fazla bilgi verecek, sırf dosya uzantısı ile ilgili bir soru için çok alakasız birçok bilgi barındırıyor. Neyin ne kadar alakalı olduğunu nereden bilecek, bilecek olsa zaten belki de o soruyu sormaya ihtiyacı da olmazdı. Örneğin, dosya uzantılarının hep 3 harf olduğunu düşünmüş, çoğunluğunun da bu şekilde olduğunu düşününce hedeften çok da uzak bir genelleme değil. Dolayısıyla bu işi dosya uzantısı temizlemek için yaptığını gerekli görmemiş, bu genelleme altında gerekli gözükmüyor cidden. Bu örnekte okuyan herkesin (hemen her programcının) çok iyi anladığı bir problem var, bir de herkesin çok da iyi anlamadığı bir problemi hayal edin:
Diyelim ki bir programcının ders programı hazırlayan bir program yazması gerekti bir okuldaki yarı zamanlı öğretmenler için. Arada kısıtlar var, birini bir yere koysanız diğeri açıkta kalıyor, diğer ikisini başka yere koysanız diğeri. Kolay bir şey değil bunu yapmak. Sonra görüyor ki bu programcımız, 10 öğretmene kadar girdilerde yazdığı program iyi çalışıyor, sonra saatler, bazen günler almaya başlıyor. Açtı diyelim en sevdiği forumu, veya en sevdiği StackExchange sitesini sordu: "Arkadaşlar benim bir çizelgeleme problemim var, ama beklediğimden çok kaynak kullanıyor, onun için şu şekilde bir veri yapısı dizayn ettim, şöyle böyle bakın, kullandığım tree search bundan sonra çok daha iyi performans gösterecek ama şu ve bu konuyu çözemedim yardım eder misiniz?"
Soruyu dinleyenler bakar, absürd bir şeyler vardır. Kurcalarlar, ucunu çekerler, bakarlar ki programcı çok da iyi anladığını düşündüğü problemi çok da iyi anlamamış ve çok önemli bir detayı söylemeyi unutmuş: "Bu öğretmenler yarı zamanlı!" Yani haftada 2 gün geliyorlar okula, ve de çözdüğü problem için aslında üstel zaman gerekmiyor, lineer zamanda çözülebiliyor. 3 gün geliyor olsalar, veya 4 gün geliyor olsalar ama üstel zaman gerekecek. Dolayısıyla tree search'lere, çılgın veri yapılarına gerek yok. Ama bu programcı mesela "İSTEDİĞİN ŞEYİ SOR" diye bağırılmayı hakediyor mu? Bence haketmiyor, öğretmenlerin yarı zamanlı olması, hangi günlerinin boş olduğu, kısıtların sayısı ve çeşidi, bu kısıtların hangi nedenlerle oluştuğu vb. birçok şey var probleminde, ama bunlardan bir sürüsü çözümüyle alakasız, bir sürüsüyle alakalı. Hangisinin gerekli olduğunu nasıl bilecek? (Genele, retorik soru) Siz hangilerinin ne kadar alakalı ve önemli olduğunu biliyor musunuz? Ben mesela vaktimi harcayıp sonunda eksik bilgi bu çıksa saçımı başımı yolup bağırmaya başlayabilirim, ama cidden hakediyor mu? Ben kendi anladığım bir konuda böyle bir örnek oluşturdum, siz de kendi iyi anladığınız başka bir konuda böyle örnekler oluşturup hayal edebilirsiniz adil olan tepkinin ne olacağını.
Onun için belki dosya uzantısı örneğinde olduğu gibi "apaçık başlangıç seviyesi" sorularda soru sorana "tam olarak ne yapmaya çalıştığını anlat" demek belki daha doğru, ama sorunun zorluğu arttıkça bunu yapmak kolay değil, veya bunun sınırını belirlemek kolay bir iş değil. Bana kalırsa kimse ilk verdiğim mp3 düzenlemeli aşırı uç örnekte olduğu gibi tüm projesini baştan sona anlatmak zorunda da olmamalı, o da farklı açıdan verimsiz. En iyisi düzgün iletişim, anlaşılmayan yerlerin sorulması, şüpheli yerlerin niye şüphel gözüktüğünü anlamak için geri soru sormak, bağırmamak, sevgi, saygı ve dünya barışı.
Editör markdown formatını desteklemektedir. Detaylı bilgi için bu adresi ziyaret edebilirsiniz.
@kullanici ile birisinden bahsedebilir veya :emoji: ile emoji kullanabilirsiniz.