Python büyük yazılım projeleri için iyi mi (web tabanlı değil)?

oy
27

Şu anda çoğunlukla C / C ++ içinde geliştiriyorum ama bazı görevleri otomatik hale getirmek Python bazı küçük araçları yazdım ve gerçekten dil (özellikle verimlilik) gibi seveceğim.

performansları hariç (bazen C modülleri ile Python arabirim kolaylığı sayesinde çözülebilir bir sorun), do bunu tek başına karmaşık uygulamaların geliştirilmesinde üretim kullanımı için uygun olduğunu düşünüyorum (bir kelime işlemciye örneğin düşünüyorum veya grafik aracı)?

Ne IDE önerirsiniz? Python ile sağlanan BOŞTA bile bence küçük projeler için yeterli değildir.

Oluştur 30/08/2008 saat 06:08
kaynak kullanıcı
Diğer dillerde...                            


13 cevaplar

oy
17

Bence python'da karmaşık uygulamaları geliştirmek için daha fazla hazırdır. Ben grafiksel müşterilerine yazarken daha sunucu tarafında piton gücü daha görüyoruz. Ama bir göz http://www.resolversystems.com/ . Onlar .net ironpython bağlantı noktasını kullanarak Python bütün tabloları gelişir.

Güneş tutulmasından aşina değilseniz bir göz Pydev svn desteği gibi tüm diğer tutulma hediyeler ile piton için otomatik tamamlama ve hata ayıklama desteği sağlar. Adam sadece tarafından satın alınmıştır gelişmekte Aptana , bu nedenle bu gelecek için sağlam bir seçim olacaktır.

@Marcin

Eksileri:, kötü yol IDE desteği vardır dinamik bir dil olarak (uygun sözdizimi tamamlama, statik yazar, Java açık veya SML anlaşılmaktadır olsun),

Statik analiz dinamik diller için tam sözdizimi tamamlanmasını sağlamak olmayabilir, haklılar ama şey Pydev çok iyi iş bitmiş olur. piton programlarken Dahası ben farklı bir gelişim stili var. Açık her zaman ipython oturumu ve bir F5 ile sadece ipython mükemmel tamamlanmasını olsun, ama aynı zamanda iç gözlem ve manipülasyon nesne yoktur.

İkinci Google ya da Yahoo yazmak istiyorsanız, C # veya Java ile çok daha iyi olacaktır.

Google sadece Jaiku yeniden yazdım tüm python, App Engine üstünde çalışmak. Ve bildiğim kadarıyla onlar da google'ın içinde pitonun çok kullanırım.

Cevap 30/08/2008 saat 06:19
kaynak kullanıcı

oy
13

Gerçekten piton gibi, genellikle küçük (non-gui) için bu gün seçim benim dilim başıma yapmak şeyler.

Ancak, ben ele ettik bazı büyük Python projeler için, ben C ++, diyelim programlama oldukça aynı olmadığını buluyorum. Bir dil ayrıştırıcı üzerinde çalışan ve Python bir AST temsil etmek gerekiyordu. Bu Python neler yapabileceğini kapsamında kesinlikle ama bazı üstlenmeden ile sorun biraz vardı. Benim AST temsilini değişen ve çevresinde bir çok yöntem ve sınıfları değişen ve ben bir C ++ çözümde bana uygun olacağını güçlü yazarak cevapsız bulundu. Python'un ördek yazarak neredeyse oldu çok esnek ve kendimi bir sürü ekleyerek bulundu assertprogramı koşarken benim türlerini kontrol etmek denemek için kod. Ve sonra ben gerçekten% 100 kod kapsama testi vardı sürece her şeyin düzgün (Ben o zaman yoktu) daktilo edilmiş olduğundan emin olamazdı.

Aslında o bazen özlüyorum başka şey. Bu sadece aday olmayacağını Python sözdizimsel doğru kod yazmak mümkündür. derleyici aslında kodu çalıştırır kadar bu konuda söylüyorum aciz, bu nedenle bu tür hata işleyicileri olarak Seyrek kullanılan kod yollarında size görünmeyen böcek etrafında gizlenen kolayca sahip olabilir. Çünkü uyumsuz türleri zamanında başarısız olabilir bir% biçim dizesi ile bir hata mesajı yazdırmak kadar basit bile kodu.

O yönü üzerinde yorum yapamam bu yüzden herhangi bir GUI şeyler için Python kullanmadım.

Cevap 30/08/2008 saat 06:22
kaynak kullanıcı

oy
8

Python Python programcıları arasında (kabul edilir :) hızlı prototipleme için büyük bir dil olması. Orada düşünce süreçlerinin engel gereksiz sözdizimi bir sürü değil, bu yüzden yaptığınız işin en koduna gitmek eğilimindedir. (Iyi C ++ yazılı olarak daha iyi Python kod yazarken dahil olmak üzere gerekli çok daha az deyimler var.)

Bu göz önüne alındığında, en Python (CPython) programcılar atfetmek felsefesi "erken optimizasyonu tüm kötü köküdür". üst düzey (ve önemli ölçüde daha yavaş) Python kodunu yazarak, tek Başvurunuz tamamlanmak üzeredir zaman C / C ++ bağları kullanarak darboğazlar dışarı optimize edebilirsiniz. Bu noktada sizin işlemciyi yoğun algoritmalar uygun profil aracılığıyla ne daha netleşiyor. yolda hızlandırıcılar için izin verirken Bu şekilde, bir çok okunabilir ve sürdürülebilir şekilde kod en yazma. Bu sebeple C ile yazılmış birçok Python kütüphanesi modüller görürsünüz.

Python (yani wxPython) En grafik kütüphaneleri zaten C ++ kütüphaneleri etrafında sadece Python sargı olan, bu yüzden hemen hemen bir C ++ arka uç için yazıyoruz.

IDE sorusunu ele almak SPE (Stani, Python Editör) Ben kullandım ve iyi bir IDE Eclipse ile Pydev yanı işi alır. Hem OSS, bu nedenle denemek için özgürsünüz!

[Düzenle] @Marcin: Eğer Python deneyim yazma> 30k LOC oldu mu? Onların Python'un büyük destekçileri madem sen Google'ın ölçeklenebilirlik kaygılarını belirtmek gerektiğini de komik! ) Bkz Ayrıca NASA denilen küçük örgüt de sıkça Python kullanır "Daha sonra bir kodlayıcı ve Kanunun 17.000 Hatları" .

Cevap 30/08/2008 saat 07:21
kaynak kullanıcı

oy
22

Bunu çoğunlukla iki cevaplarını bulacaksınız - dini birini ve diğer dini bir (sen dalga geçiyor olmalısın Python Hayır ... bu yeterince olgun değil!?) (Evet Elbette Şimdiye kadar en iyi dildir!!). Belki son din atlayacak (Python ?! Kullanım Ruby!). Gerçek şu ki, her zaman olduğu gibi, bariz uzaktır.

Artıları : Bu, kolay, okunabilir, piller dahil neredeyse o her şey için iyi kütüphanelerin bir sürü vardır. Bu ifade var ve dinamik yazarak birçok durumda daha özlü hale getirir.

Eksileri : Dinamik dil olarak sahiptir yolu daha kötü IDE desteği (uygun sözdizimi tamamlama gerektirir , onun nesne sistemi mükemmel olmaktan uzak Java açık veya SML anlaşılmaktadır olsun, statik yazarak) (arayüzleri, kimse?) Ve onu sonuna kadar kolaydır int veya boolean nesne veya bilinmeyen şartlarda çeşit ya da dönen yöntemleri vardır dağınık kodla.

Benim alabilir - Ben komut dosyası, otomasyon, minik webapps ve diğer basit iyi tanımlanmış görevler için Python seviyorum. Bence Şimdiye kadar üretilmiş en iyi gezegende dinamik dili. Ben olacağını söyledi asla bunu kullanmak herhangi önemli boyutta bir uygulama geliştirmek için dinamik olarak yazılan dil.

Üç tasarımcılara sahiptir yığın taşması, için kullanmak iyi olurdu ve ben kod artık 30k daha satırları tahmin - söyle. Daha büyük şeyler için - ilk geliştirme süper hızlı olacağını ve daha sonra ekibi ve kod temeli kez şeyler bunlar Java veya C # ile olduğundan daha fazla yavaşlıyorlar büyür. Daha unittests yazarak derleme zamanı kontrollerinin eksikliği dengelemek için ihtiyaç refactorings vb bütün testleri hatta kocaman uygulamayı çalıştırmak edene kadar refacoring kırdı asla bilemezsiniz neden zor olsun

Şimdi - ekibinizin olacak ve ne kadar büyük uygulama işlem bittikten sonra olması gerekiyordu ne kadar büyük karar. Eğer 5 veya daha az kişi var ve hedef büyüklüğü kabaca yığın taşması ise, Python yazmak, devam et. Hiçbir zaman bitirmek ve iyi kod temeli ile mutlu olacak. İkinci Google ya da Yahoo yazmak istiyorsanız, C # veya Java ile çok daha iyi olacaktır.

Bahsettiğiniz C / C ++ üzerinde Yandan not: performans kritik yazılım yazma değilse ya da çok kritik bir sistem (bir film render üç ay sürecek olan kitlesel paralel Raytracer demek) (üç yıl düz uçacak Mars Aracına demek ve hakkını karaya tek bir şansı vardır ya da bunu kullanmayın) $ 400mln kaybedersiniz. web uygulamaları, çoğu masaüstü uygulamaları için, genel olarak, çoğu uygulamaya iyi bir seçim değildir. Karmaşık iş mantığında ayıklama işaretçileri ve bellek ayırmayı ölecektir.

Cevap 30/08/2008 saat 07:21
kaynak kullanıcı

oy
0

Ben muhtemelen belirgin belirten biliyorum fakat geliştirme ekibinin kalite ve teknoloji ile aşinalık sunmak için becerisinde önemli bir etkisi olacağını unutmayın.

Güçlü bir ekibiniz varsa bunlar bilginiz varsa, o zaman muhtemelen bir sorun değildir. Eğer teknoloji ile aşina olmayan 9 daha 5'rs olan insanlar var etmişse, o zaman daha fazla destek gerekir ve verimlilik kazançları bu desteğin maliyeti ne olursa olsun değer olup olmadığını arama yapmak gerekiyordu.

Cevap 30/08/2008 saat 08:49
kaynak kullanıcı

oy
2

Refactoring büyük codebases üzerinde kaçınılmazdır ve statik yazarak eksikliği statik olarak yazılan dillerde daha Python bu çok zor hale getirir.

Cevap 30/08/2008 saat 08:53
kaynak kullanıcı

oy
4

Ne için kullanıldığını piton yargılamak için bir yolu ürünler şu anda python kullanmak ne bakmaktır. Bu wikipedia sayfası çeşitli web çerçeveler, içerik yönetim sistemleri, sürüm kontrol sistemleri, masaüstü uygulamalar ve IDE içeren uzun bir liste var.

O söylediği gibi burada -. "Python kullanmak büyük projelerden bazıları Zope uygulama sunucusu, YouTube ve orijinal BitTorrent istemcisi olan Python faydalanmak Büyük organizasyonlar Google, Yahoo !, CERN'de ve NASA dahil ITA bazıları için Python kullanır. bileşenlerinin."

Yani kısacası, evet, o "tek başına karmaşık uygulamaların geliştirilmesinde üretim kullanım için uygun" dir. Yani çeşitli artıları ve eksileri ile diğer birçok dil vardır. belirli kullanım durumlarında çok iyi dil cevap veremeyecek kadar sübjektif olduğunu Hangisi "geliştiricileriniz iyi bildiğim bir" böylece denemez, ama çoğu zaman cevap olacaktır.

Cevap 30/08/2008 saat 17:42
kaynak kullanıcı

oy
31

Bizim amiral gemisi elektronik tablo uygulaması oluşturmak için IronPython kullandım (40kloc üretim kodu - ve IMO özelliği başına loc düşük olduğu anlamına gelir Python, var) at Çözümleyici Sistemleri , bu yüzden kesinlikle karmaşık uygulamalar üretim kullanıma hazır olduğunu söyleyebilirim.

Orada bu sizin için yararlı bir cevap olmayabilir iki yolu vardır :-)

  1. Biz IronPython, fazla zamanki CPython kullanıyoruz. Bu bize .NET sınıf kitaplıkları kullanabilme büyük avantaj sağlar. Burada yanan kendim kuruyorum olabilir, ama ben gerçekten "profesyonel" görünüyordu CPython uygulama görmedim söyleyebilirim - yani widget bizim için büyük bir galibiyet WinForms erişimi edildi sahip. IronPython da bize bir performans artışı gerekiyorsa kolayca C # içine düşmesi mümkün olmanın avantaj sağlar. (Dürüst olmak gerekirse rağmen biz var asla biz aptal algoritmaları yerine dil yavaş çünkü daha seçtik çünkü bunu yapmak için gerekli. Bugüne kadar performans sorunlarının tamamı olmuştur.) IP'den C # ile CPython için bir C Uzantısı yazmaktan daha çok daha kolaydır .
  2. Biz Extreme Programlama dükkanı olduğumuzdan, kod yazmadan önce biz testleri yazmak. Ben ilk testler yazmadan dinamik dilde üretim kodu yazmak olmaz; Bir derleme aşamasında eksikliği şey tarafından kaplanması gerekmektedir ve diğer insanlar belirttiğimiz gibi, onsuz üstlenmeden zor olabilir. (Üretim kodu - - veya özellikle planı ayrı. Greg Hewgill cevabı Öte yandan, ben yazardım sanmıyorum yine aynı sorunu var anlaşılacağı herhangi ilk bugünlerde testleri yazmadan dili - ymmv.)

Re: IDE - Biz onların favori metin editörü kullanarak her kişi ile hemen hemen ince oldum; Sonra biraz daha ağır bir şey isterseniz WingIDE oldukça iyi sayılır.

Cevap 03/11/2008 saat 18:05
kaynak kullanıcı

oy
5

Hiçbir şey, diğer cevaplar eklemek yanında size piton seçerseniz o olmalı gibi bir şey kullanmak PyLint kimse şimdiye kadar söz etti.

Cevap 04/11/2008 saat 21:44
kaynak kullanıcı

oy
0

Sadece bir piton deneyimi, benim çöp-cli proje vardı.

Ben muhtemelen bazı veya tüm sorunların piton ile benim acemilik bağlı olduğunu biliyoruz.

Bunları hayal kırıklığına uğratmaktan bulundu:

  1. ücretsiz için iyi bir IDE bulma zor
  2. Otomatik Yeniden düzenleme ile sınırlı destek

Dahası:

  1. gruplama paketleri ve modüllerin iki düzeyde tanıtmak ihtiyacı beni karıştırır.
  2. Bir yaygın olarak benimsenen kod adlandırma kuralı yoktur geliyor bana
  3. tamamlanmamış olan bazı standart kütüphane API docs vardır geliyor bana
  4. bazı standart kütüphaneler tam nesne yönelimli değildir aslında beni rahatsız ediyor

Bazı piton kodlayıcıların bu sorunları yok söyle yoksa dedikleri halde bu sorunlar değildir.

Cevap 10/11/2008 saat 09:03
kaynak kullanıcı

oy
1

Ve bildiğim kadarıyla onlar da google'ın içinde pitonun çok kullanırım.

Eh ben öyle san yanılmıyorsam eğer, pitonun yapımcısı hala google çalışıyor?

Python kullanımı gelince, ben tek başına uygulamalar için büyük bir dil olduğunu düşünüyorum. Bu ağır Linux programlarının bir çok kullanılan ve GUI en geliştirilmesine yardımcı olmak için orada birkaç güzel Widget setleri vardır.

Cevap 13/11/2008 saat 06:36
kaynak kullanıcı

oy
1

Python kullanmak bir zevktir. Ben C # iş için bir sürü kod yazma rutin ve aynı zamanda kullanabilirsiniz. Python UI kod yazarken iki dezavantajları vardır. bir topluluğun çoğunluğu tarafından kabul edilen tek ui çerçeve yoktur olmasıdır. Eğer c # yazarken .NET çalışma zamanı ve sınıf kitaplıkları hep birlikte çalışmak içindir. Python ile her UI kütüphanesi programınızı yazmaya çalışıyorum edildiği pythonic zihniyet ile birbirine aykırıdır en az kendi anlambilim vardır. Ben kütüphane yazarları sorumlu görüyorum. Birkaç kütüphaneler denedim (wxWidgets PythonWin [MFC etrafında Sarıcı], Tkinter), kütüphaneler değiller çünkü bunu yaparken Sık sık (python olduğu gerçeğine rağmen) Python dışında bir dilde kod hazırlamakta olduğunu hissettiğimde' t tam pythonic onlar, c ++, bu c olmak tk başka bir dilden bir liman bulunmaktadır.

Benim için çünkü IDE & kütüphanelerin tutarlılık .NET UI kodu (benim için C #) yazacak. Ben Python iş mantığını yazacak zaman Ancak daha net ve daha eğlenceli olduğu için.

Cevap 13/11/2008 saat 07:12
kaynak kullanıcı

oy
0

Django veya Pylons deneyin her ikisi ile basit bir uygulama yazıp size en uygun olan karar. Orada (Turbogears veya Werkzeug gibi) diğerleri ancak bu en çok kullanılan bulunmaktadır.

Cevap 10/08/2010 saat 00:51
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more