Devo passar de C ++ para Python? ... Ou outro idioma?

votos
12

Na empresa em que trabalho, nós fazemos um monte de processamento de transações baseado em arquivo. Os centros de processamento em torno a conversão de arquivos entre vários formatos para atender numerosos sistemas em diversas empresas.

O processamento quase sempre envolve um XMLestágio e pode incluir um monte de análise de texto, pesquisas de banco de dados, conversão de dados e validação de dados.

Atualmente os programas que executam todas estas tarefas são escritos em C++e eles executam muito rapidamente tudo em um servidor média. Estou investigando as possibilidades de usar uma linguagem mais moderno que os programadores de pós-graduação mais recentes são mais propensos a estar familiarizado. (Alocação de memória correto no C++parece causar problemas com um monte de programadores mais novos estes dias)

Com base na breve informações fornecidas, seria uma linguagem como python fornecer a funcionalidade necessária e desempenho, bem como abordar a alocação de memória (e outros C++relacionados) problemas que surgem?

Eu gosto da idéia de não precisar compilar os programas que cada vez que fazemos uma mudança. Eu entendo que as linguagens interpretadas provavelmente não atingiu o mesmo desempenho que atualmente recebem.

Nossos sistemas são Linuxbaseados que também restringir algumas opções.

Quaisquer comentários sobre a funcionalidade e desempenho disponível com Pythonou sugestões de linguagens alternativas seria muito apreciado.

Publicado 12/08/2008 em 13:24
fonte usuário
Em outras línguas...                            


13 respostas

votos
18

Eu gosto da idéia de não precisar compilar os programas que cada vez que fazemos uma mudança. Eu entendo que as linguagens interpretadas provavelmente não atingiu o mesmo desempenho que atualmente recebem.

Este é o maior problema; você pode viver com o impacto no desempenho. Você poderia tentar usar Python e estendendo-o com o seu actual C ++ módulos para o desempenho peças pesadas. Ainda assim, a mudança de todo o sistema parece ser um grande esforço, se a única razão é a falta de talento C ++. A contratação de pessoas que conhecem C ++ parece ser a opção mais barata.

Respondeu 12/08/2008 em 13:38
fonte usuário

votos
9

O que é mais importante, obter rapidamente os programas para o trabalho, ou se os programas de trabalho rapidamente?

Se você está lidando com um grande número de arquivos grandes, então você pode ser melhor se hospedar em C ++ e ensinando seus programadores de pós-graduação que um ponteiro é (!)

Caso contrário, eu fortemente recomendo que você olhar para uma solução baseada em script, porque o desenvolvimento nestes, uma vez que está até a velocidade, é muito mais rápido. E muito mais divertido, se formos honestos, para a maioria das pessoas, pelo menos.

Se a carga de processamento por registro não é alta, você pode ser surpreendido como pouco desempenho você perde: arquivo IO quase certamente será tratado em um (C) biblioteca compilada, de modo que a sobrecarga intérprete pode ser relativamente baixo. Vale a pena tentar, eu sugiro.

Das linguagens imperativas, Perl é uma opção óbvia, Python é popular e Ruby tem um alto perfil (e provavelmente características OO limpos do que os dois primeiros). Depois, há o, er, reino ligeiramente mais esotérico das linguagens funcionais, mas eu não estou qualificado para comentar sobre aqueles.

Respondeu 12/08/2008 em 13:52
fonte usuário

votos
5

Python provavelmente remover a maioria das coisas de baixo nível que você usar em seu aplicativo. alocação de memória não seria mais um problema. Além disso, pelo menos a minha universidade parece estar abraçando Python como linguagem de programação porque os alunos não tem que escrever todo esse material formal para começar. O seu único problema seria a parte desempenho, como Python provavelmente nunca será tão rápido quanto um programa compilado C ++.

Eu aconselho-o a levar um par de semanas para conhecer as linguagens de programação que você está considerando. Eu confira o Ruby também. Talvez brinquedo ao redor com Haskell um pouco?

Pelo que entendi Python parece bem equipado para lidar com tudo o que você está falando. XML, pesquisas de banco de dados, validação, análise. Geralmente é uma escolha segura, não apenas por causa da experiência de programação fácil e divertido, mas se você está preso há uma maravilhosa comunidade em torno da linguagem que são apenas feliz em ajudar.

Respondeu 12/08/2008 em 13:33
fonte usuário

votos
4

Outra alternativa é inserir Python em seu programa C ++. Você poderia manter muito do seu aplicativo o mesmo, e fazer chamadas para Python para as peças que mudam frequentemente, ou precisam de flexibilidade que uma linguagem de script fornece.

A partir dos docs Python

Os capítulos anteriores discutidos como estender Python, isto é, como para estender a funcionalidade de pitão, anexando uma biblioteca de funções C a ele. Também é possível fazê-lo o contrário: enriquecer seu aplicativo C / C ++, embutindo Python nele. Embedding fornece o aplicativo com a capacidade de implementar algumas das funcionalidades da sua aplicação em Python ao invés de C ou C ++. Isso pode ser usado para muitas finalidades; um exemplo seria a de permitir aos usuários personalizar a aplicação às suas necessidades, escrevendo alguns scripts em Python. Você também pode usá-lo a si mesmo se algumas das funcionalidades podem ser escritos em Python com mais facilidade.

Respondeu 12/08/2008 em 15:34
fonte usuário

votos
2

Se você está bem com ficar com uma linguagem compilada, gostaria de ficar com C ++ e sugerem a escolha de um bom conjunto de bibliotecas e ensinar os novatos sobre o uso correto e adesão aos padrões sólidos.

Se você conseguir encontrar um conjunto agradável de bibliotecas, será mais fácil para iniciantes para aprender a escrever código sólidos. Meu (atual) preferência pessoal é a biblioteca de classes Qt porque torna o manuseio fácil e segura de memória e é agradável para trabalhar. Ele também possui suporte para análise XML e geração, foi construído em, capacidades de rede de expressões regulares, é multi-plataforma, ... e também é muito útil para sistemas não-GUI.

Para mim, é uma enorme diferença entre trabalhar com C ++ simples, biblioteca std e STL e trabalhar com uma biblioteca poderosa como Qt. Provavelmente, olhando para impulsionar as guloseimas também é muito proveitoso.

Respondeu 01/06/2011 em 13:06
fonte usuário

votos
2

Eu odeio dizer isso, mas f você quer algo que seus desenvolvedores recebidas vão estar familiarizado com, ir com Java. Java é a linguagem que os graduados mais recentes será mais familiarizado. Você ainda tem que compilar, mas tempos de compilação será menor do que C ++. Ele vai rodar em Linux e praticamente qualquer outro lugar. Ele tem um coletor de lixo bom. É muito rápido. E eu mencionei seus desenvolvedores estarão familiarizados com ele? Não, não é "cool" como Python, mas é uma linguagem muito experimentadas e verdadeiras.

Honestamente, eu duvido que você tem um monte de desenvolvedores de entrada que sugam com C ++, mas seria fantástico com Python qualquer maneira. As pessoas que usam Python também tendem a ser muito bem com o gerenciamento de memória manual. As pessoas que estão mal com o gerenciamento de memória, na verdade, tendem a ser ruim com todos os idiomas.

Eu encontrá-lo preocupante que você tem desenvolvedores que são tão ruins com gerenciamento de memória que deseja mudar de idioma. Isso é um sinal indicando um problema, mas não tenho certeza que o problema é com a língua.

Respondeu 12/08/2008 em 20:10
fonte usuário

votos
1

Desempenho em Python pode ser um problema muito grande. Uma vez eu tive que criar programa que envolve algoritmo de otimização na lista de tarefas. Comecei com Python, criou super-rápido e limpo, em seguida, viu que levará as idades para obter um resultado. Reescrevê-lo linha por linha para C ++ resultou em mais de 100x melhoria de velocidade ...

Então, às vezes, não é uma questão de perda de desempenho 5-10% como você pode ver. Você deve investigar-lo no seu caso (pequeno teste talvez?).

Respondeu 01/06/2011 em 13:04
fonte usuário

votos
1

Gostaria de sugerir a tentar Groovy. O suporte XML está bem e análise, bem como a validação de dados deve ser não difícil.

Contudo, algumas pessoas apontou que a migração pode não ser a ideia mais brilhante. você não pode tentar fatorar material comum em "objetos macher" e "validar objetos" para que novos programadores usar sua biblioteca C ++ em vez de tentar escrever código de erro nova tendência que só duplica fragmentos existentes?

Também amke-se de usar modernas de arquivo IO (iostreams) e não C como IO em C ++, que deve ajudar com problemas de memória muito.

Também olhando para as bibliotecas de impulso pode ser útil.

Respondeu 01/06/2011 em 12:48
fonte usuário

votos
0

Concordo com os outros, você deve ficar com C ++. Mudar para uma linguagem não-compilado é um passo para trás. Enquanto muitos programadores podem ter problemas para lidar com alguns dos aspectos problemáticos da língua (como ponteiros), pelo menos a maioria dos programadores tenham sido expostos a algum C ++. Eu recomendo que você gastar seu tempo e dinheiro melhorando a sua base de código e programadores em vez de comutação idiomas.

Quanto a outras línguas, você pode querer manter seu olho em GO lang. Um amigo meu usou bastante extensivamente. É uma linguagem compilada moderna. Ela tende a ser claro, conciso e moderno. GO aplicações tipicamente funcionam a velocidades comparáveis ​​aos escritos em C ++ e interage bem com a teia. Não é muito maduro neste momento, mas parece promissor.

Boa sorte!

Respondeu 06/06/2012 em 01:57
fonte usuário

votos
0

Se a natureza do projeto que você está fazendo permite sequer cogitar tal movimento, em seguida, se move (supondo que você tem alguma pista). Em muitos projetos C ++ no entanto, sua única opção é mover para baixo um ou dois níveis de abstração (por exemplo, a C ou Assembly).

Respondeu 01/06/2011 em 13:13
fonte usuário

votos
0

deve se mover para python que languange fazer todos os possíveis em redes, se você precisar de mais rápido mover para c / c ++

Respondeu 22/09/2010 em 13:51
fonte usuário

votos
0

Se você pode ir longe com o uso de Python, Ruby, Groovy ou Perl vs. C ++ você seria melhor fora de ir com uma dessas linguagens de alto nível. Produtividade vai aumentar muito. Se você achar que precisa de mais desempenho, em seguida, ir com Java. Todos devem saber em e usar pelo menos uma língua de tipagem dinâmica.

Respondeu 08/09/2008 em 03:43
fonte usuário

votos
0

Ou deve tentar armazenar suas regras de análise em um banco de dados em vez de deixá-los hard-coded dentro do seu código. Como Ken Downs justamente citado, minimizar código, maximizar dados . Desta forma, você não precisa recompilar cada vez que um minúsculo mudanças de regras.

Respondeu 12/08/2008 em 20:00
fonte usuário

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