Turing bütünlüğünün ötesinde birkaç güç tanımı vardır. Mark, "Paul Graham tanımı" olarak düşünme eğiliminde olduğumu belirtti. Oldukça iyi bir tanım, ciddi bir kusur ile: yanlış. Teorik olarak dil gücünün çok iyi bir tanımıdır, ancak teori ile pratik arasındaki fark hakkında ne söylediklerini biliyorsunuz ...
Eğer herkes mükemmel bir kod yazabiliyorsa, sadece kusursuz bir şekilde kusursuz değil, aynı zamanda mükemmel bir şekilde gelecek için de dayanıklı, tutarlı bir şekilde Paul Graham tanımı doğru olacaktır. Ama belli ki durum böyle değil. Gerçek dünyada, yazılım mühendisliğine giren zamanın ve çabanın çoğu, ürünün ilk yaratılmasıyla değil, daha sonra bakım ile ele alınmaktadır. Hangi istatistikleri dinlediğinize bağlı olarak (ve muhtemelen projeden projeye biraz değişiyorsa) bakım, bir programa harcanan toplam çabanın% 60 ila% 90'ını oluşturur.
Bakım genellikle kodu ilk yazan kişi dışındaki kişiler tarafından ve çoğu zaman kodun ilk yazılmasından aylar ya da hatta yıllar sonra yapılır; bu, orijinal kodlayıcıya bile, "başkalarının kodu" olabileceği anlamına gelir. puan. Bakım sırasında üretken olmak istiyorsanız, kodun orijinal amacını okuyarak hızlıca tespit edebilmeniz gerekir.
Bu nedenle, daha güçlü bir dil, kodun hızlı bir şekilde okunmasını kolaylaştıran, kodun hızlı yazılmasını kolaylaştıran bir dil değildir . İkisi arasında adil bir örtüşme olacağı eğiliminde olmakla birlikte, kavramlar çoğu zaman çapraz amaçlara da sahiptir, çünkü terse sözdizimi çoğu zaman bir derleyici / tercümanın bir bakım programcısından çok daha kolay bir şekilde çıkartabildiği konusunda ayrıntıları vermez.
EDIT: Bir dilin gücünü tanımlamanın bir başka önemli noktası var: ifade edebildiğiniz kavramlar yelpazesi ve her iki ucuna ne kadar kolay vurabileceğiniz. Paul Graham, bunu bir soyutlamanın ne kadar yükseğe ulaşabileceğinizi değerlendirmekten hoşlanıyor, ancak bu sadece yarısı. Gerektiğinde gidemeyeceğiniz altta bir soyutlama limiti uygulayan herhangi bir dil sakattır, çünkü soyutlanan ayrıntılar bir sebepten ötürü oradadır. Bu, COBOL gibi kolay okunabilen bir oyuncak dil ile kolay okunabilen güçlü bir dil arasındaki farktır: COBOL'de işaretçiler yoktur ve herhangi bir hesaplamayı ifade edebileceğiniz, hatta COBOL için uygun olmayan satır içi düzeneğe erişimi yoktur.
COBOL ayrıca soyutlama spektrumunun üst kısmına vurmada da iyi değildir. Wikipedia'ya göre, algoritmalar ve veri yapıları oluşturmayı zorlaştıran "kullanıcı tanımlı türler ve kullanıcı tanımlı işlevler" yok.