Er Python bra for store programvare-prosjekter (ikke web-basert)?

stemmer
27

Akkurat nå er jeg utvikler det meste i C / C ++, men jeg skrev noen små verktøy i Python for å automatisere noen oppgaver, og jeg virkelig elsker det som språk (spesielt produktivitet).

Med unntak av forestillinger (et problem som kan noen ganger løst takket være den enkle grensesnitt Python med C-moduler), tror du det er riktig for bruk i produksjon i utviklingen av frittstående komplekse applikasjoner (tror for eksempel til en tekstbehandler eller et grafisk verktøy)?

Hva IDE ville du foreslå? Den IDLE utstyrt med Python er ikke nok selv for små prosjekter i min mening.

Publisert på 30/08/2008 klokken 07:08
kilden bruker
På andre språk...                            


13 svar

stemmer
31

Vi har brukt Ironpython å bygge vårt flaggskip regnearkprogram (40kloc produksjonskode - og det er Python, som IMO betyr loc per funksjon er lav) på resolverkort Systems , så jeg vil absolutt si at det er klart til bruk i produksjon av komplekse programmer.

Det er to måter dette ikke kan være en nyttig svar til deg :-)

  1. Vi bruker Ironpython, ikke den mer vanlige CPython. Dette gir oss stor fordel av å kunne bruke NET klassebiblioteker. Jeg kan sette meg opp for flammende her, men jeg vil si at jeg har egentlig aldri sett en CPython applikasjon som så "profesjonell" - så ha tilgang til WinForms widget satt var en stor seier for oss. Ironpython gir oss også fordelen av å være i stand til enkelt slippe inn i C # hvis vi trenger en ytelsesforbedring. (Selv om å være ærlig har vi aldri trengte å gjøre det. Alle våre ytelsesproblemer hittil har vært fordi vi valgte dumme algoritmer i stedet fordi språket var treg.) Ved hjelp av C # fra IP er mye enklere enn å skrive et C Extension for CPython .
  2. Vi er en Extreme Programming butikk, så vi skriver tester før vi skrive kode. Jeg ville ikke skrive produksjonskode i et dynamisk språk uten å skrive testene først; mangelen på en kompilere skritt må være dekket av noe, og som andre har påpekt, kan refactoring uten det bli tøft. (Greg Hewgill svar tyder på at han har hatt det samme problemet på den annen side, jeg tror ikke jeg ville skrive -. Eller spesielt refactor - produksjon kode i noen språk i disse dager uten å skrive testene først - men YMMV.)

Re: IDE - vi har vært ganske mye fint med hver person som bruker sin favoritt teksteditor; Hvis du foretrekker noe litt mer tungvekter så WingIDE er ganske godt ansett.

Svarte 03/11/2008 kl. 19:05
kilden bruker

stemmer
22

Du vil finne det meste to svar på det - religous ene og det andre religiøst (du må være en spøk meg Python Nei ... det er ikke modne nok!?) (Ja selvfølgelig er det det beste språket noensinne!!). Jeg vil kanskje hoppe den siste religion (Python ?! Bruk Ruby!). Sannheten, som alltid, er langt fra opplagt.

Pros : Det er enkelt, lesbare, batterier inkludert, har mange gode biblioteker for stort sett alt. Det er ekspressiv og dynamisk typing gjør det mer konsis i mange tilfeller.

Cons : som et dynamisk språk, har måte verre IDE støtte (riktig syntaks ferdigstillelse krever statisk typing, enten eksplisitt i Java eller sluttes i SML), er dens formål systemet langt fra perfekt (grensesnitt, anyone?), Og det er lett å ende opp med rotete kode som har metoder retur enten int eller boolsk eller et objekt eller en slags henhold ukjente omstendigheter.

Min ta - jeg elsker Python for skripting, automasjon, små webapps og andre enkle veldefinerte oppgaver. Etter min mening er det langt den beste dynamisk språk på planeten. Når det er sagt, jeg ville aldri bruke det noen dynamisk skrevet språk for å utvikle en anvendelse av betydelig størrelse.

Si - det ville være fint å bruke det til Stack Overflow, som har tre utviklere og jeg tror ikke mer enn 30k linjer med kode. For større ting - først din utvikling ville være super rask, og deretter en gang team og kodebasen vokser ting er bremse ned mer enn de ville med Java eller C #. Du trenger å oppveie mangel på samling tidskontroller ved å skrive flere unittests, refactorings bli vanskeligere fordi du vet aldri hva refacoring brøt før du kjører alle tester eller hele stor app, etc.

Nå - bestemme hvor stor laget ditt kommer til å være og hvor stor app er ment å være når den er ferdig. Hvis du har 5 eller mindre folk og målet størrelsen er omtrent Stack Overflow, gå videre, skrive i Python. Du blir ferdig på kort tid og være fornøyd med god kodebasen. Men hvis du ønsker å skrive andre Google eller Yahoo, vil du være mye bedre med C # eller Java.

Side-note på C / C ++ du har nevnt: Hvis du ikke skriver ytelse kritisk programvare (si massiv parallell raytracer som vil løpe i tre måneder gjengivelses en film) eller en veldig virksomhetskritiske system (si Mars Lander som vil fly tre år rett og har bare én sjanse til å lande riktig eller du mister $ 400mln) ikke bruker den. For web apps, de fleste stasjonære apps, de fleste apps generelt det er ikke et godt valg. Du vil dø debugging pekere og minnetildeling i komplekse forretningslogikk.

Svarte 30/08/2008 kl. 08:21
kilden bruker

stemmer
18

Etter min mening python er mer enn klar for å utvikle komplekse applikasjoner. Jeg ser pytonslanger styrke mer på serversiden enn å skrive grafiske klienter. Men ta en titt på http://www.resolversystems.com/ . De utvikler et helt regneark i python bruker .net Ironpython port.

Hvis du er kjent med eclipse ta en titt på pydev som gir auto-fullføring og debugging støtte for python med alle de andre eclipse godbitene som svn støtte. Fyren utvikle det har nettopp blitt kjøpt av aptana , så dette vil være solid valg for fremtiden.

@Marcin

Cons: som et dynamisk språk, har måte verre IDE støtte (riktig syntaks ferdigstillelse krever statisk typing, enten eksplisitt i Java eller sluttes i SML)

Du har rett, at statisk analyse ikke kan gi full syntaks ferdigstillelse for dynamiske språk, men jeg ting pydev får jobben gjort det veldig bra. Videre har jeg en annen utvikling stil når du programmerer python. Jeg har alltid en ipython session åpen og med en F5 jeg ikke bare få den perfekte avslutning fra ipython, men protesterer introspeksjon og manipulasjon i tillegg.

Men hvis du ønsker å skrive andre Google eller Yahoo, vil du være mye bedre med C # eller Java.

Google bare omskrev Jaiku å jobbe på toppen av App Engine, alt i python. Og så vidt jeg vet de bruker mye av pytonslange inne google også.

Svarte 30/08/2008 kl. 07:19
kilden bruker

stemmer
13

Jeg liker python, er det vanligvis mitt språk av valg i disse dager for liten (ikke-gui) ting som jeg gjør på min egen.

Men for noen større Python prosjekter jeg har taklet, jeg opplever at det er ikke helt det samme som programmering i si, C ++. Jeg jobbet på et språk parser, og trengte å representere en AST i Python. Dette er absolutt innenfor rammen av hva Python kan gjøre, men jeg hadde litt problemer med noen refactoring. Jeg var endre representasjon av min AST og endre metoder og klasser rundt mye, og jeg fant jeg savnet sterk typing som vil være tilgjengelig for meg i en C ++ løsning. Pythons duck typing var nesten for fleksibel, og jeg fant meg selv å legge en masse assertkode for å prøve å sjekke min typer som programmet gikk. Og så jeg kunne egentlig ikke være sikker på at alt ble riktig skrevet med mindre jeg hadde 100% kodedekning testing (som jeg ikke gjorde på den tiden).

Egentlig er det en annen ting som jeg savner noen ganger. Det er mulig å skrive syntaktisk riktig kode i Python som rett og slett ikke vil kjøre. Kompilatoren er ute av stand til å fortelle deg om det før det faktisk utfører koden, så i sjelden brukte kode stier som feil handlere kan du lett få usett bugs lurking rundt. Selv kode som er så enkelt som å skrive ut en feilmelding med en% formatstreng kan svikte under kjøring på grunn av feilaktige typer.

Jeg har ikke brukt Python for noen GUI ting så jeg kan ikke kommentere det aspektet.

Svarte 30/08/2008 kl. 07:22
kilden bruker

stemmer
8

Python er regnet (blant Python programmerere :) å være en stor språk for rask prototyping. Det er ikke mye overflødig syntaks komme i veien for dine tankeprosesser, så det meste av arbeidet du gjør har en tendens til å gå inn i koden. (Det er langt mindre idiomer som kreves for å være involvert i å skrive god Python-kode enn skriftlig god C ++.)

Gitt dette, de fleste Python (CPython) programmerere tilskriver til "tidlig optimalisering er roten til alt ondt" filosofi. Ved å skrive høyt nivå (og betydelig tregere) Python-kode, kan man optimalisere flaskehalsene ut med C / C ++ bindinger når søknaden er nærmer seg ferdigstillelse. På dette punktet blir det klart hva dine prosessorintensive algoritmer er gjennom riktig profilering. På denne måten, skriver du det meste av koden i en svært lesbar og vedlikeholdsvennlig måte, samtidig som for speedups nedover veien. Du vil se flere Python bibliotek moduler skrevet i C for denne svært grunn.

De fleste grafiske bibliotekene i Python (dvs. wxPython) er bare Python innpakninger rundt C ++ bibliotek uansett, så du er ganske mye å skrive til en C ++ backend.

For å møte din IDE spørsmålet, SPE (Stani er Python Editor) er en god IDE som jeg har brukt og Eclipse med PyDev får jobben gjort også. Begge er OSS, slik at de er gratis å prøve!

[Edit] @Marcin: Har du hatt erfaring skriving> 30k LOC i Python? Det er også morsomt at du bør nevne Googles skalerbarhet bekymringer, siden de er Python største støttespillere! Også en liten organisasjon som heter NASA bruker også Python ofte;) se "En koder og 17.000 linjer med kode senere" .

Svarte 30/08/2008 kl. 08:21
kilden bruker

stemmer
5

Ingenting å legge til de andre svarene, i tillegg til at hvis du velger python du bruke noe som pylint som ingen nevnt så langt.

Svarte 04/11/2008 kl. 22:44
kilden bruker

stemmer
4

En måte å bedømme hva python brukes til er å se på hvilke produkter bruker python i øyeblikket. Denne wikipedia side har en lang liste med ulike web-rammeverk, innhold styringssystemer, versjonskontrollsystemer, desktop apps og IDE.

Som det står her -. "Noen av de største prosjektene som bruker Python er Zope applikasjonstjener, YouTube, og den opprinnelige BitTorrent-klient Store organisasjoner som gjør bruk av Python inkluderer Google, Yahoo !, CERN og NASA ITA bruker Python for noen. av komponentene."

Så kort sagt, ja, det er "riktig for bruk i produksjon i utviklingen av frittstående komplekse applikasjoner". Så er mange andre språk, med ulike fordeler og ulemper. Hvilken er det beste språket for din bruk tilfellet er for subjektive å svare på, så jeg skal ikke prøve, men ofte svaret vil være "den ene utviklere vet best".

Svarte 30/08/2008 kl. 18:42
kilden bruker

stemmer
2

Refactoring er uunngåelig på større codebases og mangel på statisk typing gjør dette mye hardere i python enn statisk skrevet språk.

Svarte 30/08/2008 kl. 09:53
kilden bruker

stemmer
1

Python er en fryd å bruke. Jeg bruker det rutinemessig, og også skrive mye kode for arbeid i C #. Det er to ulemper å skrive UI-kode i Python. en er at det er ikke en eneste ui rammeverk som er akseptert av de fleste av fellesskapet. når du skriver i C # .NET runtime og klassebiblioteker er alle ment å fungere sammen. Med Python hver UI biblioteket har på egen semantikk som ofte er på kant med Pytonske tankesett der du prøver å skrive programmet. Jeg er ikke kritikk av bibliotek forfattere. Jeg har prøvd flere biblioteker (wxWidgets, PythonWin [wrapper rundt MFC], Tkinter), når du gjør det jeg ofte følte at jeg var å skrive kode i et annet språk enn Python språk (til tross for at det var pyton) fordi bibliotekene aren' t nøyaktig Pytonske de er en port fra et annet språk være det C, C ++, tk.

Så for meg vil jeg skrive UI kode i .NET (for meg C #) på grunn av IDE og konsistensen av bibliotekene. Men når jeg kan jeg vil skrive forretningslogikk i python fordi det er mer tydelig og mer moro.

Svarte 13/11/2008 kl. 08:12
kilden bruker

stemmer
1

Og så vidt jeg vet de bruker mye av pytonslange inne google også.

Vel jeg ville håper det, skaperen av python fortsatt jobber på google hvis jeg ikke tar feil?

Som for bruk av Python, jeg tror det er et flott språk for frittstående apps. Det er mye brukt i mange Linux-programmer, og det er noen fine widget sett der ute for å hjelpe til med utviklingen av GUI-tallet.

Svarte 13/11/2008 kl. 07:36
kilden bruker

stemmer
0

Prøv Django eller Ledningsmaster skrive en enkel app med begge og deretter bestemme hvilken som passer deg best. Det er andre (som Turbogears eller Werkzeug), men de er de mest brukte.

Svarte 10/08/2010 kl. 01:51
kilden bruker

stemmer
0

Jeg hadde bare en python erfaring, min trash-cli prosjektet.

Jeg vet at sannsynligvis noen eller alle problemer er avhengig av min uerfarenhet med python.

Jeg fant frustrerende disse tingene:

  1. den vanskelige å finne en god IDE gratis
  2. begrenset støtte for automatisk reproduksjon

Videre:

  1. behovet for å innføre to nivå av gruppering pakker og moduler forvirrer meg.
  2. Det virker for meg at det ikke er en utbredt kode navnekonvensjon
  3. det virker for meg at det er noen standard bibliotek API dokumenter som er ufullstendige
  4. det faktum at noen standard biblioteker er ikke fullstendig objektorientert irriterer meg

Selv om noen python programmerere fortelle meg at de ikke har disse problemene, eller de sier disse ikke er problemer.

Svarte 10/11/2008 kl. 10:03
kilden bruker

stemmer
0

Jeg vet at jeg sannsynligvis innlysende, men ikke glem at kvaliteten på utviklingsteamet og deres kjennskap til teknologien vil ha en stor innvirkning på din evne til å levere.

Hvis du har et sterkt lag, så er det sannsynligvis ikke et problem hvis de er kjent. Men hvis du har folk som er mer 9 til 5'rs som ikke er kjent med teknologien, vil de trenger mer støtte og du trenger å ringe hvis de produktivitetsgevinstene er verdt uansett hva kostnaden for denne støtten er.

Svarte 30/08/2008 kl. 09:49
kilden bruker

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