Joshua Bloch: Java Platformunun Vicdanı
"Java programlama dili, 5.0 sürümünde getirilen değişikliklerle karmaşıklık bütçesini tüketti." Bu şaşırtıcı bir cümle, özellikle de onu söyleyen kişi nedeniyle. Joshua Bloch, yıllarını Sun Microsystems'de söz konusu eklemeleri tasarlayarak geçirdi ve şekillenmesine yardımcı olduğu JDK 5.0 sürümü, dilin şimdiye kadar gördüğü en iddialı genişlemeydi. Sonra dünyaya bunun yeterli olduğunu söyledi. Kişisel olarak genişlettiği bir sistemi denetleme ve özellikler yerine bütçelerle düşünme içgüdüsü, tek bir satırda onun tüm kişiliğidir.
Southampton, Columbia, Pittsburgh
Bloch, 28 Ağustos 1961'de Southampton, New York'ta doğdu. Columbia Üniversitesi Mühendislik ve Uygulamalı Bilimler Okulu'ndan bilgisayar bilimleri alanında lisans derecesi aldı, ardından 1990 yılında tamamladığı doktora için Carnegie Mellon'a gitti. "Soyut Veri Nesnelerinin Çoğaltılması İçin Pratik Bir Yaklaşım" başlıklı tezi, ACM Seçkin Doktora Tezi Ödülü'ne aday gösterildi.
Başlık iki kez okunmaya değer. Lisansüstü bir öğrenci olarak bile, Bloch'un çalışmalarındaki anahtar kelime pratikti. Çoğaltmaya dağıtık sistemlerde teorik bir sorun olarak saldırmıyordu; mühendislerin soyut veri nesnelerine karşı gerçekten dağıtabilecekleri bir sürümün peşindeydi. Kariyerinin geri kalanını, kanıtlanabilir şekilde doğru olan ile çalışan bir programcının güvenle kullanabileceği şey arasındaki o dar, modası geçmemiş boşlukta geçirdi.
Sun ve Collections Framework
Transarc'ta kıdemli sistem tasarımcısı olarak geçirdiği bir dönemin ardından Bloch, Sun Microsystems'e katıldı; burada Seçkin Mühendis oldu ve Java'yı Java yapan birkaç parçanın tasarımına ve uygulanmasına öncülük etti. Java Collections Framework bunların en büyüğüdür: o zamandan beri her Java programının üzerine inşa edildiği arayüzler ve uygulamalar kümesi — listeler, kümeler, haritalar ve bunlar üzerinde çalışan algoritmalar. Ayrıca java.math paketine ve dilin assert mekanizmasına öncülük etti ve JDK 5.0'daki önemli geliştirmeleri yönetti.
Bu kendine özgü bir yazarlık türüdür. Bir koleksiyon kütüphanesi bir uygulama değil, bir sözlüktür. Bloch'un adını hiç duymamış milyonlarca programcı, çalışma hayatlarını onun seçtiği isimler ve fiiller içinde geçirir ve düşüncelerinin şekli, onun arayüzlerinin şekliyle kısıtlanır. Bunu yanlış yapmak kötü bir program üretmezdi; program yazmak için kötü bir dil üretirdi, kalıcı olarak.
Effective Java
2001 yılında Effective Java'yı yayınladı ve programlama dilleri hakkındaki kitapların nadiren yaptığı bir şeyi yaptı: bir topluluğun ahlaki otoritesi haline geldi. Her biri bir kural belirleyen ve ardından gerçek hata modlarından yola çıkarak savunan, numaralandırılmış bağımsız öğeler dizisi olarak yapılandırılmış kitap, 2001 yılında Jolt Ödülü'nü kazandı. 2008'deki ikinci baskı, okunması zorlaşmadan elli yedi öğeden yetmiş sekize çıktı; üçüncüsü 2017'de geldi.
İşbirlikçilerle iki kitap daha yazdı. 2005 yılında Neal Gafter ile yazdığı Java Puzzlers, dilin tuzaklarının bir antolojisidir — spesifikasyona göre doğru, sezgiye göre ise çılgınca davranan kodlar — tanısal bir egzersiz olarak sunulmuştur. 2006'daki Java Concurrency in Practice, Doug Lea dahil beş işbirlikçiyle yazıldı ve platformun kullanıcılarından istediği en zor şey üzerine standart referans haline geldi.
Google ve API Tasarımı
Bloch, Haziran 2004'ten Ağustos 2012'ye kadar Google'ın baş Java mimarıydı. Merkezi endişesinin kamusal bir tartışmaya dönüştüğü yer orasıydı. 2006 tarihli konferans makalesi "İyi bir API nasıl tasarlanır ve neden önemlidir", arayüz tasarımını bir zevk meselesi yerine riskleri olan bir disiplin olarak ele alır, çünkü bir API yeniden müzakere edilemeyecek bir sözleşmedir. Hayal kırıklığını somut olarak tanımladı: Google'da belirli sınıflar için alternatif uygulamalar sağlayamadı çünkü bunlar arayüz yerine somut türler olarak bildirilmişti — yıllar önce başkası tarafından verilmiş bir karar, ki kendi ifadesiyle, bu "sıradan geliştiricilerin her gün hissettiği" türden bir sınırlamadır.
Tavsiyesinin tutarlı bir tadı vardır: kişinin kendi yargısına karşı alçakgönüllülük. Kendinizi tekrar etmeyin; kendi kütüphanenizi yazmak yerine, özellikle eşzamanlılık için yerleşik bir kütüphaneye ulaşın. Erken optimizasyon hakkındaki genel uyarıların diğer insanlar için geçerli olduğu hissine güvenmeyin — "erken optimizasyon hakkındaki genel uyarıların sizin için geçerli olmadığını hissetmek kolaydır, çünkü sadece hangi kodun zaman açısından kritik olduğunu bilirsiniz." Ve The Elements of Style'ı okuyun, çünkü "iyi programlama ve iyi yazma, her ikisi de ifade netliği ve ekonomisi ile ilgilidir."
Joshua neden dahi olarak adlandırılıyor
Söz konusu yetenek ham bir buluş değil, daha nadir bir şeydir: bir yazılım parçasını onu kullanmak zorunda kalacak yabancının konumundan görme ve kendi yetkinliğiniz için değil, o yabancının olası hataları için tasarlama yeteneği. Bloch'un çerçevesinde bir API, asla onay vermeyen ve değiştiremeyen insanlara dayatılan bir dildir, bu da onu tasarlamayı on yıllar öncesinden büyük ölçekli kötüye kullanımı tahmin etme egzersizi haline getirir. Collections Framework bunun kanıtıdır: tüm çalışan programcıların büyük bir kısmı tarafından kullanılan, büyük ölçüde değişmeden kalacak kadar doğru bir sözlük. İkinci parça kodlaştırmadır: Effective Java, daha önce sadece birkaç platform mühendisinin kafasında yaşayan örtük uzmanlığı aldı ve onu aktarılabilir, tartışılabilir kurallara dönüştürdü.
Karşı argüman belirtilmeyi hak ediyor. Bloch yeni bir bilgisayar bilimi üretmedi. Tezi seçkin bir tez ödülüne aday gösterildi, verilmedi; en bilinen çalışması, keşiften ziyade kürasyon ve yargı olan bir en iyi uygulamalar kitabıdır. Kayıtlardaki onurlar bir ticari yayın ödülü ve bir dergi listesidir, alanın büyük araştırma ödülleri değildir ve burada danışılan hiçbir kaynak kimsenin ona dahi dediğini kaydetmemektedir. Collections Framework, solo bir beste değil, liderlik ettiği büyük bir ekip çalışmasıydı. Adil karar, Bloch'un mühendislik yargısının yüce bir uygulayıcısı ve öğretmeni olduğudur — yazılımda yenilikten daha önemli olan ve çok daha az kredi alan bir disiplin.
Miras
Sun'dan ayrıldıktan sonra dili şekillendirmeye devam etti, kapanışlar için yaklaşımlar olarak Otomatik Kaynak Yönetimi blokları ve Özlü Örnek Oluşturma İfadeleri önerdi; ARM blokları JDK 7'ye girdi. Aralık 2004'te Java Developer's Journal onu dünyadaki en önemli kırk yazılım insanı arasında gösterdi. O zamandan beri Carnegie Mellon'a döndü ve burada Yazılım ve Toplumsal Sistemler Bölümü'nde uygulama profesörüdür — uygulama her zaman asıl nokta olduğu için kariyerinin özeti gibi okunan bir unvan.
Çalışmanın ölçüsü, etkisinin atfedilmemesidir. Bugün bir yerlerde, Bloch'un düzyazısından tek bir satır bile okumamış bir programcı, somut bir sınıf yerine bir arayüze ulaşacak veya bir eşzamanlılık ilkelini elle yazmayı reddedecektir, çünkü bir meslektaşı bir kitapta numaralandırılmış bir öğede okuduktan sonra onlara bunu yapmamalarını söylemiştir.
