Bir dilin üzerinde X dili seçmek için düşünülebilecek birçok neden vardır. Y Program okunabilirliği, programlama kolaylığı, birçok platforma taşınabilirlik, iyi programlama ortamlarının varlığı bu gibi nedenler olabilir. Ancak, sadece soruda istendiği şekilde icra hızını dikkate alacağım. Sorunun, örneğin, gelişme hızını dikkate almadığı görülüyor.
İki dil aynı bayt kodunu derleyebilir, ancak aynı kodun üretileceği anlamına gelmez,
Aslında bayt kodu yalnızca belirli bir sanal makine için koddur. Mühendislik avantajlarına sahip, ancak doğrudan belirli bir donanım için derleme ile temel farklılıklar getirmiyor. Dolayısıyla, aynı makinede doğrudan yürütme için derlenmiş iki dili karşılaştırmayı düşünebilirsiniz.
Bu, göreceli dil hızının, ilk derleyicilere dayanan eski bir konu olduğunu söyledi.
Uzun yıllar boyunca, bu ilk zamanlarda, profesyonel el yazısıyla yazılmış kodun derlenmiş koddan daha hızlı olduğunu düşündü. Başka bir deyişle, makine dili Cobol veya Fortran gibi yüksek seviyeli dillerden daha hızlı kabul edildi. Ve hem daha hızlı hem de genellikle daha küçüktü. Yüksek seviyeli diller hâlâ gelişti, çünkü bilgisayar bilimcisi olmayan birçok insan için kullanımı çok daha kolaydı. Hatta yüksek seviyeli dilleri kullanmanın bir adı bile vardı: Oluşturulan kodun büyüklüğünü (bu zamanlarda çok önemli bir sorun olan) ya da gerçekte yürütülen talimatların sayısını etkileyebilecek genişleme oranı. Konsept esas olarak deneyseldi, ancak derleyici bugün standartlara göre oldukça basit bir fikirli iş yaptığı için ilk önce oran 1'den büyüktü.
Böylece makine dili, söylenenden daha hızlıydı, Fortran.
Elbette, bu derleyiciler yıllar geçtikçe değişti, montaj dilinde programlama artık çok nadirdi. Çoğu uygulama için, derleme dili programları, derleyicileri optimize ederek oluşturulan kodla yetersiz rekabet eder.
Bu, bir ana meselenin, ele alınan dil için mevcut derleyicilerin kalitesi, kaynak kodu analiz etme ve buna göre optimize etme olduğunu göstermektedir.
Bu yetenek, bazılarının, derleyici için çalışmayı kolaylaştırmak amacıyla kaynağın yapısal ve matematiksel özelliklerini vurgulamak için dilin özelliklerini genişletmesine bağlı olabilir. Örneğin, bir dil, derleyicinin bu özellikleri optimizasyon amacıyla kullanmasına izin verecek şekilde, kullanıcı tanımlı fonksiyonların cebirsel özellikleri ile ilgili ifadelerin eklenmesine izin verebilir.
Derleme işlemi daha kolay olabilir; bu nedenle, dilin programlama paradigması, kodu ister gerçek ister sanal makine olsun, kodu zorlayacak makinelerin özelliklerine daha yakın olduğunda daha iyi kod üretebilir.
Diğer bir nokta, dilde uygulanan paradigmaların programlanan problem türüne kapalı olup olmadığıdır. Belirli programlama paradigmaları için uzmanlaşmış bir programlama dilinin, bu paradigma ile ilgili çok verimli özellikleri derlemesi beklenir. Bu nedenle, bir programlama dilinin seçimi, açıklığa ve hıza göre, programlanan soruna uyarlanmış bir programlama dilinin seçimine bağlı olabilir.
C'nin sistem programlaması için popülaritesi muhtemelen C'nin makine mimarisine yakın olmasından ve bu sistem programlamasının da doğrudan bu mimariyle ilgili olmasından kaynaklanmaktadır.
Mantıksal programlama ve kısıtlama çözümleme dilleri kullanılarak daha hızlı çalıştırma ile başka bir problem daha kolay programlanacaktır .
Karmaşık reaktif sistemler , bu sistemler hakkında çok özel bilgiler içeren ve çok hızlı kod üreten Esterel gibi özel senkronize programlama dilleri ile çok verimli bir şekilde programlanabilir .
Veya aşırı bir örnek almak gerekirse, bazı diller, ayrıştırıcıları programlamak için kullanılan sözdizimi açıklama dilleri gibi oldukça uzmanlaşmıştır. Bir ayrıştırıcı jeneratör şey ama böyle diller için bir derleyici. Elbette Turing tam değil, ama bu derleyiciler uzmanlık alanlarına göre oldukça iyi: verimli ayrıştırma programları üretiyorlar. Bilginin sınırlı olduğu alan, optimizasyon teknikleri çok özel ve çok ince bir şekilde ayarlanabilir. Bu ayrıştırıcı jeneratörler, başka bir dilde kod yazarak elde edilebileceklerden çok daha iyidir. Sınırlı bir problem sınıfı için mükemmel ve hızlı kod üreten derleyicilere sahip çok sayıda özel dil vardır.
Bu nedenle, büyük bir sistem yazarken, tek bir dile güvenmemek, sistemin farklı bileşenleri için en iyi dili seçmeniz tavsiye edilebilir. Bu, elbette, uyumluluk sorunlarını da beraberinde getirir.
Genellikle önemli olan bir başka nokta, programlanan konular için verimli kütüphanelerin varlığıdır.
Son olarak, hız tek kriter değildir ve kod güvenliği (hatalı girdi veya sistem hatalarına karşı esneklik için örnek olarak), bellek kullanımı, programlama kolaylığı (paradigma uyumluluğu gerçekten yardımcı olabilirse de) kod güvenliği gibi diğer kriterlerle çelişebilir ), nesne kodu boyutu, programın bakımı, vb.
Hız her zaman en önemli parametre değildir. Ayrıca, ortalama karmaşıklık ya da daha kötü durum karmaşıklığı olabilen karmaşıklık gibi farklı görüşler de alabilir. Ayrıca, daha küçük bir programda olduğu gibi büyük bir sistemde, hızın kritik olduğu kısımlar ve önemsiz olduğu yerler var. Ve bunu önceden belirlemek her zaman kolay değildir.