Çeviri: Yaren Akkaya
Orijinal metin/ kaynak: ‘The Art of Computer Programming’ by Donald Knuth
Bazı kitaplar raflarda çok güzel görünüyorlar. Sadece estetik erdemleri yüzünden değil, kitapların sırtları sahipleri hakkında bilgi veriyor. Donald Knuth’ın dört ciltli “Bilgisayar Programlama Sanatı” – hepsi koyu mor kutularında rahatlar- net bir mesaj verir: Kenara çekilin, Muggle’lar, çünkü Gerçek Bir Programcının huzurundasınız. Bilgisayar Bilimlerinin Ciddi Uygulayıcısı.
Bill Gates bir keresinde demiş ki: “Eğer iyi bir programcı olduğunuzu düşünüyorsanız, Bilgisayar Programlama Sanatı’nı okuyun… Eğer bütün hepsini okuyabilirseniz bana özgeçmişinizi gönderin.”
Bana göre, bu seriyi sipariş etme eylemi büyük bir başarı gibi hissettiriyor. Bu kitaplar elime varmadan önce onlar için özel bir yer tahsis ettim, yeni parlak bir anabilgisayar için ahırda yeni bir oda yapmak gibi. Onların yetki ağırlığı o kadar iyiydi ki taşınmaz hale geldi. Böylece onları hiç okumadım, ve bu gerçekten serinin kitap eleştirisi değil. Üzgünüm ama üzgün değilim.
Bu aynı zamanda, eleştirmenlerin filmin ortasında nefretle erken kalkıp gittikleri o eleştiriler gibi değil. Knuth’ın kitapları destansıdır ve o gerçekten bilgisayar bilimleri temellerinin ustasıdır, kökenleri iki alanın kesiştiği matematiktir. Çok fazla saygı duyuyorum.
Ben sadece TAOCP’nin derinliklerine layık değilim. ( “The Art Of Computer Programming”) Birinci cildin önsözünü üç veya dört kez okudum, ve tüm seriyi bitirmenin nasıl bir his olduğunu düşündüm. Wyoming dağlarının zirvesinde bir kulübeye tek başına taşınıp, bir kağıt yığını, birkaç kutu kalem, TAOCP, matematik kitapları ve Adderall’un doksan günlük erzağı ile internetsiz birkaç ayımı geçirebilirdim
Dağlarda temel algoritmalar üzerine derin derin düşünerek uzun yürüyüşlere çıkabilirdim. Laptop yok, wifi yok, elektrik yok. Bunların hepsi dikkat dağıtıcı şeyler. Gün batımından sonra mum ışığında okuyabilir ve problem çözebilirdim ve hayallerim harmonik sayılar evreni, binom katsayıları ve doğrusal olmayan veri yapılarına doğru olan keyifli bir gezinti olabilirdi.
Ama bu hiçbir zaman olmayacak. Böylece, dün önsözü tekrar eleştiriyordum, duraksamam gerektiğini ve bugüne kadarki yolculuğuma yansıtmam gerektiğini hissettim.
Knuth’ın bilgisayarlara olan sevgisine göre, bütün seri bir şeye adanmıştı: IBM 650 ana bilgisayar, 1950’lerde çok popülerdi. O ilk seri üretim bilgisayardı ve bugünün parasıyla birkaç yüz bindi. Bu Knuth’ın dişini kırdığı makinedir.
1950’lerde bilgisayarlar hakkında heyecanlı olmak, uygulamalı matematik hakkında heyecanlı olmaktı. Önceki IBM 650’de temel matematik işlemleri ve kontrol yapıları vardı ve ondalık matematik etrafında inşa edilmişti, ikili değil.
Görüntü ve hiçbir komut satırı yoktu. İnsan, işletim sistemi oldu: böylece kontrol paneli operatöre programları açmak ve kapatmak için izin verdi.
Diyelim ki Fibonacci sayıları üretmek için bir program yazmak istediniz. Fortran henüz yoktu- 650 çıkarıldıktan dört yıl sonra geldi. Böylece o önceki yıllarda ne yapmak istiyorsanız makine seviye işlemin kodunu yazmak zorundaydınız ve programınızı monte etmek ve bir anahtar yumruk makinesi kullanarak mühürlü programınızla bir deste karta yumruk atmalıydınız.
Programınızı optimize etmenin birkaç yolu vardı. Daha hızlı bir algoritma tasarlayabilirdiniz.
Veya veri yapılarını dağıtmak probleme daha uygun olacaktır.
Ayrıca programınızın nasıl yükleneceğini ve çalışacağını optimize edebilirdiniz- makine tahıl ile çalışıyor. Manyetik davul belleği, modern sabit sürücünün öncüsü, 650 için birincil bellek oldu ve çok yavaştı. Yani bir programcı olarak amacınız 12.500 RPM’in dönme gecikmesini en aza indirmek yani bütün kodlarınız ve verileriniz kolayca yürütme sırasında CPU ‘ya yetişmeli. Anabilgisayarın CPU döngüsü ve davul bellek dönüşünün arasındaki senkronizasyonun mükemmel olmasını istersiniz.
Bilgisayar bilimleri burada sahtedir, matematik ve mekanik mühendisliğinin kesiştiği yerde. Bu her akıllı insan tarafından tamamen anlaşılabilirdir. Bu artık doğru değil. Knuth ve dönemin programcılarının IBM 650’den daha akıllı olmaları gerekti. Onlar her bir vakum tüpü ve kontrol anahtarını anladılar. Bizler artık bu şekilde bilgisayarlarımızdan zeki değiliz.
Özsözün ilk paragrafında, Knuth programlamayı “şiir oluştururken ki veya resim yaparken ki gibi bir estetik deneyim” olarak adlandırır. Bence bu estetik güzellik hala kalkınan bütün programcıları büyüler.1950’lerden beri, üstel eğri boyunca olan güzel yolculuktan sonra, güzelliğin bozulmadan kalmasını bilmek rahatlatıcı. Artık yazılıma şekil vermesekte ve onu sıcak gürültülü hesap makinesiyle doldurmasakta, programlamanın güzelliği hala her soyutlamanın katmanını içermektedir.
Yazılım yazmanın performatif doğasının elden montaj olan 8 kblık hafıza kısıtlamaları tarafından ve yumruk kartları işçiliği emeği tarafından nasıl şekillendirdiğini merak ediyorum. Knuth zamanında kod yazmanın heyecanlı ve yüksek bir tel üzerinde yürümek gibi olduğunu hayal ediyorum. Küçük hatalar acı doluydu. Ama onlarca soyutlama bir minder yığını gibi yığılmış ve çoğumuz sadece en tepesinde dönüyoruz.
Bugünün yazılımının kısa geri bildirim dönüsünün bir bedeli vardır. Günümüzde yazılım geliştirmenin daha eğlenceli olabilecek iken, aynı zamanda düşünmeden önce hile yapmak daha kolay ve bu bir çok problem yaratabilir. Büyük yazılım hala çok fazla düşünce gerektirmez ve kolaylıkla titizliği kaybederiz.
IBM 650’nin kısıtlamaları zordu ve hızlıydı, bugünün kısıtlamaları daha yumuşak ve sıkılıkla kendini empoze etmiştir. Mobil telefonların küçücük ekranları ekonomik yazılım ve ara yüz tasarımında yenilik dalgasının habercisiydi. Hedef geliştirme ortamının kısıtlamalarını seçenlerin bizim gelecekte sahip olacağımız yeniliklerin oyun alanını seçmesi beni etkiliyor.
Yazı için teşekkürler, Yalnız çeviriniz, yani Türkçeyi kullanma şekliniz çok düz olmuş. Geliştirmeniz dileğiyle 🙂