Python hangi uygulama türleri için kötü bir seçimdir? [kapalı]


21

Python'u öğrenmeye yeni başladım ve dille ilgili daha fazla bilgi edinmek istiyorum.

Python'un birçok durumda C veya C ++ 'ya göre yavaş bir dil olduğunu fark ettim. Bu nedenle, Python mümkün olduğunca hızlı çalışması gereken uygulamalar için muhtemelen en iyi seçenek değildir.

Bunun dışında Python'un okunması ve yazılması kolay olan genel amaçlı bir dil olduğu anlaşılıyor. Mevcut kütüphaneler ona çok fazla işlevsellik kazandırır. Performans kritik uygulamaların dışında, Python'u (ve neden) kullanmak kötü bir seçimdir?


8
Mükemmel bir genel amaçlı dil diye bir şey yoktur. Her beş yılda bir, yeni bir tane, yalnızca niş pazarlarda hayatta kalan eskisinin yerine geçiyor. Lisp, Fortran, Pascal, Temel, Ada, Perl ...
mouviciel

3
@mouviciel: Pascal bir niş dil? Tamam, adı Borland / CodeGear / Embarcadero IDE ile eşleşecek şekilde Delphi olarak değiştirildi, ancak Delphi hala Pascal'a dayanıyor ve Pascal'da pazar payını kaybetmiş olsa da, tam olarak bir niş dili demem. Ve bu konuda hiçbiri Temel değil. Visual Basic hala Temel. Hem Delphi hem de Visual Basic birçok şirkette kullanılmaktadır ...
Marjan Venema

7
"Python, C veya C ++ 'ya göre yavaş bir dildir". Bunu, kullandığınız belirli bir ölçüt ile desteklemelisiniz. Bazı durumlarda (birçok sistem çağrısı yapan G / Ç'ye bağlı programlar) Python, C kütüphanesi kadar hızlı olduğundan, C kadar hızlıdır.
S.Lott

@ S.Lott True, ve PyPy bazen JVM'ye, hatta C / C ++'ya rakip olabilir
yati sagade,

Pascal, üniversitedeyken tercih edilen öğretim diliydi. Sonra birkaç on yıl geçmiş ve şimdi onun Java'sı gibi görünüyor. Birkaç dili profesyonelce kodluyorum (yarım düzine kadar), ancak eğlence için hala Delphi'yi kodluyorum.
Mawg

Yanıtlar:


22

Sınırlı kaynaklarla gömülü hedeflere yönelik yazılımlar. Bu gezegendeki işlemcilerin çoğu ya yetersiz kaynaklar nedeniyle Python'u çalıştıramaz ya da hiç kimse bu mimariye bir sürüm sunmamıştır. Çoğu işlemci, şimdi bile, bir megabayttan daha az bellek kullanıyor.


… Birileri bir Python limanı Arduino yapana kadar. Bekle!
Spoike

5
@Bu bağlantının aslında bilgisayarda python çalıştırması ve sadece seri olarak arduino ile iletişim kurması içindir. Arduino python kodunu çalıştırmıyor
basarat

1
@BasaratAli: Disclaimer - Yorumumu jest olarak yazdım. ;-)
Spoike

14

Akla zıplayan iki yer, Erlang'ı kullanacağım çok fazla eşzamanlılık gerektiren şeyler. Ya da muhtemelen Fortran kullanmaya çalışacağım ağır iş sayısal hesaplaması.


1
Fortran sayısal hesaplamanın öncesinde C / C ++ hala mı ...?
Sardathrion - Eski Monica

1
Biliyorsun bilmiyorum. Çok tecrübeli olduğum bir alan değil. Ancak, ben fortran millet aletleri gerçekten hızlı gitmek için 30 + yıl harcadığını biliyorum.
Zachary K

@Sardathrion - Söylemesi zor. Sadece doğal, anladın. Ancak birkaç ay önce, Intel Fortran şöhretinden Lionel, fortran hattının diğer tüm ürünleri geliştirme hattında sattığını söyledi (ki bu çok dar değil).
Rook

@Idigas: Gerçekten de, Fortran'ın yoğun bir şekilde kullanıldığını biliyorum ama bunun eski kodlardan kaynaklanabileceğini ve optimizasyon kısıtlamalarından kaynaklanabileceğini biliyorum. Belki de bunu bir soru olarak sormalıyım ...
Sardathrion - Monica

Ayrıca, sayısal hesaplama yapan birçok kişinin Fortran'ı gerçekten iyi tanıdığını ve onların seçim aracı olduğunu da unutmayın. Öyleyse bu tür bir göreve ihtiyaçları olduğunda Fortran'a ulaşacaklar.
Zachary K,

8

Python, derleme zamanı denetimi olmadan dinamik olarak yazılmış bir dil olduğundan, kapsamlı birim testlerine sahip olmayan büyük bir Python projesini yeniden düzenlemek zor olacaktır.

Bu nedenle, uzun süre sürdürülmesi ve değiştirilmesi gereken büyük bir projeniz varsa ve ekibiniz her şey için otomatik testler oluşturma konusunda kararlı değilse, Java veya C # kullanmanız daha iyi olabilir.


17
Herhangi bir büyük projenin birim testi olmadan yeniden toplanması çok zordur.
Sardathrion - Monica

9
Doğru, ancak tip güvenliği olmadan çok daha zor.
Eric Wilson

3
@Eric Wilson - O zaman bile, güçlü yazma size yanlış bir güvenlik hissi verebilir ... Derler, gönderir !
Mark Booth,

2
Bu, sorunun konusu üzerinde% 100 olmayabilir ancak yine de geçerli bir nokta olabilir. Özellikle dinamik olarak yazılmış diller için yeniden yapılanma desteği, Java veya C # gibi dillerle karşılaştırıldığında eksik. Sadece yeniden adlandırma, büyük Python projelerinde ayrıntılı bir alıştırma olabilir.
55'te OliverS

Python ayrı bir çalışma zamanı veya VM gerektiriyor mu, yoksa kendi kendine yeten bir yürütülebilir dosya oluşturabilir mi?
Teksas'taki Jim

2

Ana odak pencereleri GUI geliştirme ise, iyi form tasarımcıları sıkıntısı olduğundan (.Net kullanmaya kıyasla) CPython'a karşı öneririm.

Ancak, IronPython .Net'te çalışır ve sizler arasından seçim yapabileceğiniz Form tasarımcılarına sahip iki IDE vardır: Visual Studio ve SharpDevelop. Aslında, Visual Studio için Python Araçları , henüz denememiş olmama rağmen oldukça temiz olan IronPython'un yanı sıra CPython için de kullanılabilir ...


2

Bu gerçekten "kötü seçim" ile ne demek istediğine bağlı.

Python'u kullanmanın çok zor olduğu uygulamaları kastediyorsanız, göreceli olarak daha az şey var: akla gelen ve henüz söylenmeyen ana uygulama, gelişmiş tip sistemlere sahip dillerin (Haskell, bağımlı olarak yazılan diller) yüksek düzeyde doğruluk gerektiren bir koddur. ) daha iyi seçeneklerdir.

Python'un alt-optimal olduğu uygulamaları kastediyorsanız (yani, daha iyi seçenekler var), o zaman daha fazlası var ama onlar daha özneldir. Örneğin, kuşkusuz sınırlı bir deneyime göre, derleyiciler ve tercümanlar üzerinde çalışmak cebirsel veri türleri, desen eşleştirme ve Python'dan daha işlevsel özelliklerle çok daha kolaydır. Ancak, bu tür uygulamaları ayrıntılı bir şekilde listelemek, kişi başına farklılık gösterdikleri için mümkün değildir.


2

Etkileyici özelliği ve çok çeşitli destek kitaplıkları sayesinde hızlı bir şekilde komut dosyası yazmak için idealdir.

Dinamik tip kontrolü ve açık değişken bildirim eksikliği, yüz binlerce, hatta milyonlarca kod satırı içeren büyük projeler için kötü bir seçimdir. Aynı şey kritik görev veya güvenlik kritik sistemler için de geçerlidir. Örneğin, bir aviyonik sistemde, derleme zamanında yakalanabilecek bir hata nedeniyle sistemin başarısız olması tamamen kabul edilemez.


0

Tıpkı senin gibi, ben de Python ile başlıyorum. Ama benim için makine öğrenimi ve veri bilimi bağlamında.

Ayrıca Java 8'deki yeni bilgileri ve yeni akış odaklı kütüphanelerini de yeni öğrendim.

Yeni Java 8 akış kitaplıklarının akışkanlık hissini ve Apache kıvılcım kitaplıklarına sahip olmamın ne kadar yakın olduğunu gerçekten çok sevdim. Python'a girdiğimde aynı ve daha fazlasını beklerdim.

Daha fazlasını gördüm. Ama çok daha az. Çok fazla olmasına rağmen, kötü belgeler akışkanlık yok ve aslında bir yöntemin yeni bir nesneyi mi yönettiğini veya bunun üzerinde çalıştığını tahmin etmekten vazgeçtim; bir haritaya yakın hiçbir şey / azaltmak vb. Hayal kırıklığına uğramaktan şaşırdım.

Ancak en başından beri, dili öğrenmenin ne kadar kolay olacağı konusunda büyük bir beklentim yoktu. Haklıydım: tutarsız, sezgisel, öğrenmesi zor. Ama bu sadece Java gibi her şeyde oldukça iyi olma deneyimimdi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.