Kısa cevap: bilmiyoruz , 100 yıl sonra tekrar sorun. (O zaman hala bilmiyor olabiliriz; muhtemelen asla bilemeyiz.)
Teorik olarak, bu mümkün. Yazılan tüm programları alın, el ile onları mümkün olan en verimli makine koduna çevirin ve kaynak kodları makine kodlarıyla eşleştiren bir tercüman yazın. Bu, yalnızca sınırlı sayıda program yazılan bir program olduğundan mümkündür (ve daha fazla program yazılırken el ile çevirileri sürdürün). Bu, elbette pratik olarak tamamen aptalcadır.
O zaman yine teoride, üst düzey diller makine kodunun performansına ulaşabilir, ancak bunu geçemezler. Bu hala çok teorik, çünkü pratik açıdan, nadiren makine koduna başvuruyoruz. Bu argüman üst seviye dilleri karşılaştırmak için geçerli değildir: C'nin Python'dan daha verimli olması gerektiği anlamına gelmez, sadece bu makine kodunun Python'dan daha kötü yapamayacağı anlamına gelir.
Diğer taraftan, yalnızca deneysel terimlerle, çoğu zaman , yorumlanmış yüksek seviye dillerin derlenmiş düşük seviye dillerden daha kötü performans gösterdiğini görebiliriz. Zamanında hassas olmayan kodları, çok yüksek seviyeli dillerde ve montajda zaman açısından kritik iç döngülerde, C ve Python gibi diller arasına giren dillerde yazma eğilimindeyiz. Bunu destekleyecek istatistiklere sahip olmasam da, çoğu durumda bunun gerçekten en iyi karar olduğunu düşünüyorum.
Bununla birlikte, üst düzey dillerin gerçekçi bir şekilde yazacakları kodu attığı tartışmasız örnekler vardır: özel amaçlı programlama ortamları. Matlab ve Mathematica gibi programlar, bazı matematik problemlerini çözmede, ölümlülerin yazabileceğinden çok daha iyidir. Kütüphane fonksiyonları C veya C ++ dilinde yazılmış olabilir (“düşük seviyeli diller daha verimlidir” kampına doğru yakıttır), ancak Mathematica kodunu yazdığımda bu benim işim değil, kütüphane kara bir kutu.
Teorik olarak Python'un C'ye göre en iyi performansa yaklaşması veya hatta yaklaşması mümkün mü? Yukarıda görüldüğü gibi, evet, ama bugün bundan çok uzaktayız. Sonra tekrar, derleyiciler geçen yıllarda çok fazla ilerleme kaydetti ve bu ilerleme yavaşlamadı.
Üst düzey diller daha çok şeyi otomatik hale getirme eğilimindedir, bu nedenle gerçekleştirecek daha çok işi vardır ve bu nedenle daha az verimli olma eğilimindedirler. Öte yandan, daha fazla anlamsal bilgilere sahip olma eğilimindedirler, bu nedenle optimizasyonları belirlemek daha kolay olabilir (eğer bir Haskell derleyici yazarsanız, başka bir dişlinin burnunuzun altındaki bir değişkeni değiştireceği konusunda endişelenmenize gerek yoktur). Elmaları ve portakalları farklı programlama dilleri ile karşılaştırmak için harcanan çabalardan biri Bilgisayar Dili Kıyaslama Oyunu (eskiden çatışmada olarak bilinen). Fortran, sayısal görevlerde parlama eğilimindedir; Ancak, yapılandırılmış veriyi veya yüksek oranlı iplik komutasyonunu değiştirmek söz konusu olduğunda, F # ve Scala iyi yapıyor. Bu sonuçları müjdeci olarak almayın: ölçtüklerinin çoğu her dilde test programının yazarının ne kadar iyi olduğu.
Üst düzey dillerin lehine olan bir argüman, modern sistemlerdeki performansın, yürütülen talimatların sayısıyla çok fazla ilişkili olmadığı ve zaman içinde daha az olduğu anlamına gelir. Düşük seviyeli diller, sıralı makineler için iyi eşleşmelerdir. Üst düzey bir dil iki kat daha fazla komut yürütürse, ancak önbelleği daha akıllıca kullanmayı başarırsa, bu nedenle önbellek özünün yarısı kadarını yapar, kazananı sonlandırabilir.
Sunucu ve masaüstü platformlarında, CPU'lar daha hızlı alamadıkları bir platoya neredeyse ulaştı (mobil platformlar da oraya geliyor); bu, paralelliğin sömürülmesinin kolay olduğu dilleri desteklemektedir. Birçok işlemci zamanlarının çoğunu bir G / Ç yanıtını bekleyerek geçirir; Hesaplamada harcanan zaman, G / Ç miktarı ile karşılaştırıldığında çok önemli değildir ve programcının iletişimi en aza indirmesini sağlayan bir dil avantajlıdır.
Sonuçta, üst düzey diller bir ceza ile başlarken, iyileştirme için daha fazla alan var. Ne kadar yaklaşabilirler? 100 yıl sonra tekrar sor.
Son not: Sık sık, karşılaştırma A dilinde yazılabilecek en verimli program ile B dilinde aynı olan veya her dilde yazılan en verimli program arasında değil , aynı zamanda yazılabilecek en verimli program arasındadır . belirli bir süre içinde bir insan tarafından her dilde . Bu, prensipte bile matematiksel olarak analiz edilemeyen bir elementi ortaya koymaktadır. Pratik açıdan, bu, en iyi performansın, performans hedeflerine ulaşmak için ne kadar düşük seviyeli kod yazmanız gerektiği ve yayınlanma tarihlerini karşılamak için ne kadar düşük seviyeli kod yazmanız gerektiği arasında bir uzlaşma olduğu anlamına gelir.