Bør jeg flytte fra C ++ til Python? ... Eller et annet språk?

stemmer
13

I firmaet jeg jobber for, gjør vi mye av filbasert transaksjonsbehandling. Foredlings sentre rundt konvertering av filer mellom mange formater som passer til mange systemer i en rekke selskaper.

Behandlingen innebærer nesten alltid en XMLscene og kan inneholde mye tekst parsing, database oppslag, datakonvertering og datavalidering.

Foreløpig programmene utfører alle disse oppgavene er skrevet i C++, og de utfører ganske raskt alt på en gjennomsnittlig server. Jeg undersøker mulighetene for å bruke en mer moderne språk som nyere graduate programmerere er mer sannsynlig å bli kjent med. (Riktig minnetildeling i C++ser ut til å fører til problemer med mye nyere programmerere disse dager)

Basert på den korte informasjonen som gis, vil et språk slik som python gi den nødvendige funksjonalitet og ytelse, i tillegg til å ta opp minnetildeling (og diverse andre C++beslektede) problemer som oppstår?

Jeg liker tanken på å ikke ønsker å kompilere programmene hver gang vi gjør en endring. Jeg forstår at de tolket språk sannsynligvis wont treffe samme ytelse vi nå får.

Våre systemer er Linuxbasert som også begrenser noen alternativer.

Eventuelle kommentarer til funksjonaliteten og ytelsen tilgjengelig med Pythoneller forslag til alternative språk ville være mye verdsatt.

Publisert på 12/08/2008 klokken 12:24
kilden bruker
På andre språk...                            


13 svar

stemmer
19

Jeg liker tanken på å ikke ønsker å kompilere programmene hver gang vi gjør en endring. Jeg forstår at de tolket språk sannsynligvis wont treffe samme ytelse vi nå får.

Dette er det største problemet; kan du leve med resultatene hit. Du kan prøve å bruke Python og strekker den med din nåværende C ++ moduler for ytelses tunge deler. Likevel, bytte hele systemet virker som en stor innsats hvis den eneste grunnen er mangel på C ++ talent. Ansette folk som vet C ++ virker som det billigere alternativ.

Svarte 12/08/2008 kl. 12:38
kilden bruker

stemmer
10

Som er mer viktig, raskt å få programmene til å fungere, eller få programmene som arbeider raskt?

Hvis du arbeider med et stort antall store filer så du kan være bedre å bo i C ++ og undervise graduate programmerere hva en peker er (!)

Ellers vil jeg på det sterkeste at du ser på et skriptbasert løsning, fordi utviklingen i disse, når du er opp til hastighet, er så mye raskere. Og mye mer moro, hvis vi er ærlige, for folk flest minst.

Dersom per-posten behandling belastningen er ikke høy, kan du bli overrasket over hvor liten forestilling du taper: file IO vil nesten helt sikkert bli håndtert på en kompilert (C) biblioteket, så tolken overhead kan være relativt lav. Verdt å prøve, vil jeg foreslå.

Av de imperative språk, er Perl et opplagt alternativ, er Python populære og Ruby har en høy profil (og sannsynligvis renere OO funksjoner enn de to første). Deretter er det litt mer, eh, esoteriske verden av funksjonelle språk, men jeg er ikke kvalifisert til å kommentere de.

Svarte 12/08/2008 kl. 12:52
kilden bruker

stemmer
6

Python ville sannsynligvis fjerne det meste av det lave nivået ting som du bruker i din søknad. Minnetildeling ville ikke være et problem lenger. Også, i hvert fall mitt universitet synes å være omfavne Python som programmeringsspråk fordi elevene ikke trenger å skrive alt det formelle ting å komme i gang. Din eneste problemet ville være ytelsen del, som Python vil trolig aldri bli like fort som en kompilert C ++ program.

Jeg vil råde deg til å ta et par uker å bli kjent med programmeringsspråk som du vurderer. Jeg ville sjekke ut Ruby også. Kanskje leke rundt med Haskell litt?

Som jeg forstår det Python synes godt utstyrt for å håndtere alt du snakker om. XML, database oppslag, validering, parsing. Det er vanligvis et trygt valg, ikke bare på grunn av enkel og morsom erfaring med programmering, men hvis du sitter fast det er en awesome samfunnet rundt språket som er bare glad for å hjelpe.

Svarte 12/08/2008 kl. 12:33
kilden bruker

stemmer
5

Et annet alternativ er å legge inn Python i C ++ program. Du kan holde mye av søknaden din det samme, og ringe ut til Python for bitene som endrer ofte, eller trenger den fleksibiliteten som et skriptspråk gir.

Fra Python docs

De tidligere kapitler hvordan man skal forlenge Python, det vil si hvordan å utvide funksjonaliteten til Python ved å feste et bibliotek av C-funksjoner til den. Det er også mulig å gjøre det omvendt: berike C / C ++ program ved å bygge Python i den. Inkludering gir søknaden din med evnen til å gjennomføre noen av funksjonaliteten til programmet i Python i stedet for C eller C ++. Dette kan brukes til mange formål; ett eksempel ville være å tillate brukere å skreddersy programmet til deres behov ved å skrive noen skript i Python. Du kan også bruke den selv om noen av funksjonaliteten kan bli skrevet i Python lettere.

Svarte 12/08/2008 kl. 14:34
kilden bruker

stemmer
3

Hvis du er bra med å bo med et kompilert språk, ville jeg bli med C ++ og foreslå å velge et godt sett med biblioteker og undervise newbies om korrekt bruk og etterlevelse av ensfargede mønstre.

Hvis du klarer å finne en hyggelig sett med biblioteker, vil det være enkelt for nybegynnere å lære å skrive god kode. Min (nåværende) personlige preferanse er Qt klassen biblioteket fordi det gjør minnehåndterings enkelt og trygt, og er behagelig å arbeide med. Den har også støtte for XML parsing og generasjon, har regexp er innebygd, nettverksfunksjonalitet, er kryss-plattform, ... og er også svært nyttig for ikke-GUI-systemer.

For meg er det en stor forskjell mellom å arbeide med vanlig C ++, std bibliotek og STL og arbeider med en kraftig bibliotek som Qt. Sannsynligvis, ser inn boost godbiter er også svært worthwile.

Svarte 01/06/2011 kl. 12:06
kilden bruker

stemmer
3

Jeg hater å si dette, men f du vil ha noe som innkommende utviklere kommer til å bli kjent med, gå med Java. Java er språket som de fleste nyutdannede vil være mest kjent med. Du har fortsatt å kompilere, men kompilere tider vil være kortere enn C ++. Det vil kjøres på Linux og ganske mye andre steder. Det fikk en god søppelinnsamler. Det er ganske fort. Og gjorde jeg nevne dine utviklere vil være kjent med det? Nei, det er ikke "kult" som Python, men det er en svært prøvd-og-sann språk.

Ærlig talt, jeg tviler på at du har fått mange innkommende utviklere som suger med C ++, men ville være kjempeflott med Python uansett. De fleste som bruker Python vel en tendens til å være i orden med manuell minnehåndtering. Folk som er dårlig med minnehåndtering faktisk har en tendens til å være dårlig med alle språk.

Jeg finner det betenkelig at du har utviklere som er så ille med minnehåndtering som du ønsker å bytte språk. Det er et skilt som angir et problem, men jeg er ikke sikker på at problemet er med språket.

Svarte 12/08/2008 kl. 19:10
kilden bruker

stemmer
2

Ytelse i Python kan være en veldig stor sak. Når jeg måtte lage program som involverer optimalisering algoritme på listen over oppgaver. Jeg startet med Python, skapte det super-rask og ren, da så det vil ta aldre å gi et resultat. Skrive det linje for linje i C ++ resultert i over 100x fart forbedring ...

Så noen ganger er det ikke et spørsmål om ytelse tap 5-10% som du kan se. Du bør undersøke det i ditt tilfelle (kanskje litt test?).

Svarte 01/06/2011 kl. 12:04
kilden bruker

stemmer
2

Jeg vil foreslå å prøve groovy. XML-støtte er fin og analyse samt datavalidering bør være å ikke vanskelig.

Men noen mennesker påpekt at trekkende kanskje ikke den smarteste ideen. Kan du ikke prøve å faktor ut vanlige ting inn "Macher objekter" og "validere objekter", slik at nye programmerere bruke C ++ bibliotek i stedet for å prøve å skrive feil utsatt ny kode som bare dupliserer eksisterende fragmenter?

amke også passe på å bruke moderne fil IO (iostreams) og ikke C som IO i C ++, som skal hjelpe til med hukommelsesproblemer mye.

Også ute etter å boost bibliotekene kan være nyttig.

Svarte 01/06/2011 kl. 11:48
kilden bruker

stemmer
0

Jeg er enig med andre, bør du feste med C ++. Bytte til et ikke-kompilert språk er et skritt bakover. Mens mange programmerere kan ha problemer med å håndtere noen av de problematiske sidene ved språket (som pekere), minst fleste programers har vært utsatt for noen C ++. Jeg anbefaler at du bruker tid og penger forbedre kodebasen og programmerere heller da å bytte språk.

Som for andre språk, kan det være lurt å holde øye med GO lang. En venn av meg brukte den ganske mye. Det er en moderne kompilert språk. Det har en tendens til å være klar, konsis og moderne. GO programmer typisk kjøre i hastigheter sammenlignes med de som er skrevet i C ++ og det grensesnitt godt med nettet. Det er ikke veldig moden på dette punktet, men det ser lovende ut.

Lykke til!

Svarte 06/06/2012 kl. 00:57
kilden bruker

stemmer
0

Hvis innholdet i prosjektet du gjør kan du selv tenke slikt tiltak, deretter flytter (forutsatt at du har noen anelse). I mange C ++ prosjekter derimot, er ditt eneste valg å flytte ned ett eller to abstraksjonsnivå (f.eks til C eller Assembly).

Svarte 01/06/2011 kl. 12:13
kilden bruker

stemmer
0

skal flytte til python som languange gjøre alt mulig i nettverk, hvis du trenger raskere flytte til c / c ++

Svarte 22/09/2010 kl. 12:51
kilden bruker

stemmer
0

Hvis du kan komme unna med å bruke Python, Ruby, Groovy eller Perl vs. C ++ du ville være bedre å gå med en av disse høyere nivå språk. Produktiviteten vil øke betraktelig. Hvis du finner ut at du trenger mer ytelse så gå med Java. Alle bør vite på og bruke minst en dynamisk skrevet språk.

Svarte 08/09/2008 kl. 02:43
kilden bruker

stemmer
0

Eller bør prøve å lagre parsing regler på en database i stedet for å forlate dem hardkodet inn koden din. Som Ken Downs rette sitert, minimere kode, maksimere data . Denne måten du ikke trenger å rekompilere hver gang en liten regelendringer.

Svarte 12/08/2008 kl. 19:00
kilden bruker

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