Python neden bunlara sahip değil?
Performansı önemseyen Python uygulamaları olmadığını düşündüğünüzden emin değilim. PyPy , IronPython ve Jython , performansı önemseyen endüstriyel güce sahip, üretime hazır Python uygulamalarıdır. Pyston , performans için özel olarak oluşturulmuş bir geliştirme içi uygulamadır . Yüksüz Swallow ve Psyco da Python'un performansını geliştirmeye yönelik projelerdi.
Bununla birlikte, CPython kullanıcılarının diğer tüm uygulamaların toplam birleşik kullanıcı tabanından büyük ölçüde fazla olması , Yüksüz Yutmanın topluluk tarafından reddedilmesi, bu projelerin çoğunun ya ölü olduğu ya da geliştiricileri çekmek için mücadele ettiği, Python'un topluluk değerleri performans.
Bu cevap Python topluluğunun tipik zihniyetine iyi bir örnektir: performans sorunlarını düzeltmek yerine kodlarını Python'a yazmayı tercih ederler.
Ben her ikisi de hız kazancı iddia PyPy ve IronPython bakıyorum. PyPy Yorumlanan bir dil olan Python'da yazılmış bir Python uygulamasının C'deki başvuru uygulamasından nasıl daha hızlı olacağını anlamıyorum.
İlk kapalı: derleyici içinde yazıldığı dil önemli değildir Sonuçta, derleyici yalnızca yürütülür. Zamanlar öylesine bile, eğer o önemli değil, yavaş: derleyici performansı alakasız ne alakalı derleyicinin çıktısının performansıdır .
İkincisi, sadece derleyicinin çıktısının ne kadar hızlı olduğu ve derleyicinin Python'da, yani derlediği dilde yazıldığından önemli olduğu için, kendisini derleyerek hızlı bir şekilde kendini yapabilir.
Üçüncüsü, "yorumlanmış dil" diye bir şey yoktur. Dil, bir dizi matematiksel kural ve kısıtlamadır. Bu bir özelliktir. Kağıt parçası. Bir dil derlenmez veya yorumlanmaz. Bir dil sadece olduğunu . Derleme ve yorumlama bir dil uygulamasının özellikleridir , daha doğrusu, bir derleyici veya yorumlayıcı (duh!), Dil değil. Her dil bir derleyici tarafından uygulanabilir. Her dil bir tercüman tarafından uygulanabilir. Mekanik olarak bir derleyiciden bir derleyici ve bir derleyiciden bir tercüman oluşturabilirsiniz.
PyPy aslında çünkü Ama tüm bu aslında gerçekten önemli değil değil Python ile yazılmış. RPython ile yazılmıştır . RPython , RPython programlama dili ve RPython çerçevesi olmak üzere iki bölümden oluşur .
RPython programlama dili Python değildir . Farklı bir programlama dilidir. RPython, kabaca C ile aynı performansa sahip, kabaca Java ile aynı düzeyde, statik olarak yazılan bir programlama dilidir. RPython, Python'un sözdizimsel ve anlamsal bir alt kümesidir, yani her RPython programı geçerli bir Python programıdır ve Python uygulaması tarafından çalıştırılabilir (tipik olarak birkaç büyüklük sırası daha yavaş olsa da, ancak bu hata ayıklama için hala yararlıdır, çünkü Python'un tüm araçlarına erişirsiniz ve yorum hemen başlar, oysa dil uygulaması derleme genellikle 5-10 dakika sürer ), ancak tersi doğru değildir.
RPython çerçevesi, RPython programlama dilinde yüksek performanslı dinamik dil uygulamaları yazmak için bir çerçevedir. Bir çöp toplayıcı, nesne alanı, meta-nesne protokolü, önceden tanımlanmış nesneler, türler ve işlemler vb. İçerir. Ancak taç mücevher, bir tercümandan otomatik olarak bir JIT derleyici oluşturma yeteneğidir: RPython çerçevesinde bir dil uygularsanız, sadece bir tercüman yazmanız gerekir, RPython çerçevesi JIT ile ilgilenir.
RPython platformunda sadece PyPy değil , birçok dil uygulaması vardır.
IronPython, aynı fikir ama ben .NET Framework hızını nasıl artıracağını görmüyorum.
Microsoft veya Mono'nun çeşitli .NET varyantları gibi ISO CLI uygulamalarının çoğu, karmaşık çöp toplayıcıları, optimize ediciler ve derleyiciler içerir. Aynı şey Jython ve Java uygulamaları için de geçerlidir.
IronPython bir derleyicidir, Python kaynak kodunu DLR ağaçlarına derler (DLR Dinamik Dil Çalışma Zamanı), daha sonra CIL bayt koduna daha da derlenir ve daha sonra yine tipik olarak yerel makine koduna derlenir.