Python é bom para projetos de software grandes (não baseado na web)?

votos
27

Agora eu estou desenvolvendo principalmente em C / C ++, mas eu escrevi alguns pequenos utilitários em Python para automatizar algumas tarefas e eu realmente amá-la como linguagem (especialmente a produtividade).

Exceto para as performances (um problema que poderia ser, por vezes, resolvido graças à facilidade de interface Python com módulos C), você acha que é apropriado para uso em produção no desenvolvimento de aplicações complexas stand-alone (pense, por exemplo, a um processador de texto ou uma ferramenta de gráfico)?

O IDE que você sugere? O IDLE fornecido com Python não é suficiente até mesmo para pequenos projetos em minha opinião.

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


13 respostas

votos
31

Nós usamos IronPython para construir o nosso aplicativo de planilha principal (código de produção 40kloc - e é Python, que IMO significa loc per recurso é baixa) em Resolver Sistemas , então eu definitivamente dizer que ele está pronto para uso em produção de aplicativos complexos.

Há duas maneiras em que isso pode não ser uma resposta útil para você :-)

  1. Estamos usando IronPython, não o CPython mais usual. Isso nos dá a grande vantagem de ser capaz de usar bibliotecas de classes .NET. Eu posso estar me preparando para flamejante aqui, mas eu diria que eu nunca vi uma aplicação CPython que parecia "profissional" - para ter acesso aos WinForms conjunto de widgets foi uma grande vitória para nós. IronPython também nos dá a vantagem de ser capaz de soltar facilmente em C # se precisamos de um aumento de desempenho. (Embora para ser honesto nós não precisava fazer isso. Todos os nossos problemas de desempenho até à data têm sido porque nós escolhemos algoritmos mudos e não porque a linguagem era lento.) Usando C # a partir de IP é muito mais fácil do que escrever uma extensão de C para CPython .
  2. Nós somos uma loja de Extreme Programming, para que escrever testes antes de escrever código. Eu não iria escrever código de produção em uma linguagem dinâmica sem escrever os testes primeiro; a falta de um passo de compilação precisa ser coberto por alguma coisa, e como outras pessoas têm apontado, refactoring sem ela pode ser difícil. (A resposta de Greg Hewgill sugere que ele teve o mesmo problema Por outro lado, eu não acho que eu iria escrever -. Ou especialmente refatorar - código de produção em qualquer idioma nos dias de hoje sem escrever os testes primeiro -, mas YMMV.)

Re: o IDE - temos sido bastante bem com cada pessoa usando seu editor de texto favorito; se você preferir algo um pouco mais pesado, em seguida, WingIDE é muito bem-visto.

Respondeu 03/11/2008 em 20:05
fonte usuário

votos
22

Você vai encontrar principalmente duas respostas para isso - o religioso eo outro religiosa (você tem que estar brincando comigo Python Não ... não é maduro o suficiente!?) (Sim, claro, é a melhor linguagem de sempre!!!). Vou talvez pule a última religião (Python ?! Use rubi!). A verdade, como sempre, está longe de ser óbvio.

Prós : É fácil, legíveis, baterias incluídas, tem muitas boas bibliotecas para praticamente tudo. É expressiva e tipagem dinâmica torna mais conciso em muitos casos.

Contras : como uma linguagem dinâmica, tem muito pior suporte IDE (conclusão sintaxe apropriada requer tipagem estática, seja explícita em Java ou inferida na SML), seu sistema de objeto está longe de ser perfeitas (interfaces, alguém?) E é fácil acabar com código confuso que tem métodos que retornam quer int ou boolean ou objeto ou algum tipo sob circunstâncias desconhecidas.

Minha opinião - Eu amo Python para scripting, automação, minúsculos webapps e outras tarefas simples e bem definidos. Na minha opinião é de longe a melhor linguagem dinâmica do planeta. Dito isto, eu não usá-lo de qualquer linguagem de tipagem dinâmica para desenvolver um aplicativo de tamanho substancial.

Diga - que seria bom usá-lo para Stack Overflow, que tem três desenvolvedores e eu acho que não mais de 30k linhas de código. Para coisas maiores - primeiro o seu desenvolvimento seria super rápido, e então uma vez equipe e base de código crescer as coisas estão a abrandar mais do que fariam com Java ou C #. Você precisa compensar a falta de verificações de tempo de compilação escrevendo mais UnitTests, refatorações ficar mais difícil porque você nunca sabe o que o seu refacoring quebrou até que você executar todos os testes ou até mesmo todo o aplicativo grande, etc.

Agora - decidir sobre o tamanho de sua equipe vai ser e como é grande o aplicativo é suposto ser uma vez que é feito. Se você tem 5 ou menos pessoas e o tamanho de destino é de aproximadamente Stack Overflow, vá em frente, escrever em Python. Você vai terminar em nenhum momento e ser feliz com uma boa base de código. Mas se você quer escrever segundo o Google ou o Yahoo, você será muito melhor com C # ou Java.

Nota lateral em C / C ++ que você mencionou: se você não está escrevendo software crítico desempenho (dizem raytracer paralelo maciço que terá a duração de três meses de renderização de um filme) ou um sistema muito missão crítica (dizem Mars Lander que vai voar três anos consecutivos e tem apenas uma chance para pousar direito ou você perder US $ 400mln) não usá-lo. Para aplicações web, a maioria dos aplicativos de desktop, a maioria dos aplicativos em geral, não é uma boa escolha. Você vai morrer ponteiros de depuração e de alocação de memória na lógica de negócios complexos.

Respondeu 30/08/2008 em 09:21
fonte usuário

votos
17

Na minha opinião python é mais do que pronto para o desenvolvimento de aplicações complexas. Vejo pítons mais força no lado do servidor do que escrever clientes gráficos. Mas ter um olhar para http://www.resolversystems.com/ . Eles desenvolvem uma planilha inteira em python usando a porta .net ironpython.

Se você estiver familiarizado com o eclipse ter um olhar para pydev que fornece suporte auto-realização e depuração para python com todas as outras coisas eclipse como suporte svn. O cara desenvolvê-lo acaba de ser comprada pela aptana , então isso vai ser uma escolha sólida para o futuro.

@Marcin

Contras: como uma linguagem dinâmica, tem suporte IDE pior maneira (conclusão sintaxe apropriada requer tipagem estática, seja explícita em Java ou inferida na SML),

Você está certo, que a análise estática não pode fornecer a conclusão sintaxe completa para linguagens dinâmicas, mas eu coisa pydev começa o trabalho feito muito bem. Ainda mais eu tenho um estilo de desenvolvimento diferente quando de programação Python. Eu tenho sempre uma sessão ipython aberto e com um F5 eu não só obter a conclusão perfeita ipython, mas objeto introspecção e manipulação também.

Mas se você quer escrever segundo o Google ou o Yahoo, você será muito melhor com C # ou Java.

Google apenas reescreveu jaiku para trabalhar em cima do App Engine, tudo em python. E, tanto quanto eu sei que eles usam um monte de python dentro do Google também.

Respondeu 30/08/2008 em 08:19
fonte usuário

votos
13

Eu realmente gosto de python, geralmente é a minha língua de escolha nestes dias para pequenas (não-gui) coisas que eu faço no meu próprio.

No entanto, para alguns projetos Python maiores que eu abordados, eu estou achando que não é exatamente o mesmo que a programação em digamos, C ++. Eu estava trabalhando em um analisador de linguagem, e precisava representar um AST em Python. Esta é, certamente, dentro do escopo do que Python pode fazer, mas eu tinha um pouco de dificuldade com alguns refatoração. Eu estava mudando a representação do meu AST e mudar métodos e classes em torno de um lote, e eu descobri que eu perdi a tipagem forte que estaria disponível para mim em uma solução de C ++. Tipagem pato do Python era quase muito flexível e eu me vi adicionando um monte de assertcódigo para tentar verificar meus tipos como o programa funcionou. E então eu não poderia realmente ter certeza de que tudo foi devidamente digitado a menos que eu tinha 100 testes de cobertura de código% (o que eu não fiz na época).

Na verdade, isso é outra coisa que eu sinto falta às vezes. É possível escrever código sintaticamente correto em Python que simplesmente não vai funcionar. O compilador é incapaz de dizer-lhe sobre isso até que ele realmente executa o código, portanto, em caminhos de código raramente usados, como manipuladores de erro que você pode facilmente ter erros invisíveis à espreita. Mesmo código que é tão simples como imprimir uma mensagem de erro com uma seqüência de formato% pode falhar em tempo de execução por causa de tipos incompatíveis.

Eu não usei Python para qualquer GUI coisas, então não posso comentar sobre esse aspecto.

Respondeu 30/08/2008 em 08:22
fonte usuário

votos
8

Python é considerado (entre os programadores Python :) para ser um grande idioma para prototipagem rápida. Não há um monte de sintaxe estranha ficar no caminho de seus processos de pensamento, de modo que a maior parte do trabalho que você faz tende a ir para o código. (Há muito menos idiomas necessários para ser envolvido em escrever um bom código Python do que em escrever uma boa ++ C).

Diante disso, a maioria das Python (CPython) programadores atribuem à "otimização prematura é a raiz de todo mal" filosofia. Ao escrever de alto nível (e significativamente mais lento) de código Python, pode-se otimizar os gargalos usando ligações de C / C ++ quando o aplicativo está em fase de conclusão. Neste ponto, torna-se mais claro o que os seus algoritmos de processamento intensivo são através de perfis adequados. Desta forma, você escreve a maior parte do código de uma maneira muito legível e de fácil manutenção, permitindo simultaneamente para aumentos de velocidade na estrada. Você verá vários módulos de biblioteca Python escritos em C por esta mesma razão.

A maioria das bibliotecas gráficas em Python (ie wxPython) são apenas wrappers Python em torno bibliotecas C ++ qualquer maneira, então você está muito bem escrito para um backend C ++.

Para abordar a sua pergunta IDE, SPE (Editor Python de Stani) é um bom IDE que eu usei e Eclipse com PyDev começa o trabalho feito bem. Ambos são OSS, por isso, eles estão livres para tentar!

[Editar] @Marcin: Você já teve experiência de escrita> 30k LOC em Python? Também é engraçado que você deve mencionar preocupações escalabilidade do Google, já que eles são maiores apoiantes do Python! Também uma pequena organização chamada NASA também usa Python frequentemente;) ver "Um codificador e 17.000 linhas de código mais tarde" .

Respondeu 30/08/2008 em 09:21
fonte usuário

votos
5

Nada a acrescentar às outras respostas, além de que se você escolher python você deve usar algo como pylint que ninguém mencionou até agora.

Respondeu 04/11/2008 em 23:44
fonte usuário

votos
4

Uma maneira de julgar o que python é usado para é olhar para o que produtos usar python no momento. Esta página da Wikipedia tem uma longa lista, incluindo vários frameworks web, sistemas de gerenciamento de conteúdo, sistemas de controle de versão, aplicativos de desktop e IDEs.

Como diz aqui -. "Alguns dos maiores projetos que usam Python são o servidor Zope aplicação, YouTube, eo cliente BitTorrent originais As grandes organizações que fazem uso de Python incluem Google, Yahoo !, CERN e NASA ITA usa Python para alguns. de seus componentes."

Assim, em breve, sim, é "adequado para uso em produção no desenvolvimento de aplicações stand-alone complexos". Portanto, são muitas outras línguas, com vários prós e contras. Qual é a melhor linguagem para o seu caso de uso particular é muito subjetiva para responder, por isso não vou tentar, mas muitas vezes a resposta será "a seus desenvolvedores sabem melhor".

Respondeu 30/08/2008 em 19:42
fonte usuário

votos
2

Refatoração é inevitável em bases de código maiores ea falta de tipagem estática torna isso muito mais difícil em python do que em linguagens de tipagem estática.

Respondeu 30/08/2008 em 10:53
fonte usuário

votos
1

Python é uma delícia de usar. Eu usá-lo de forma rotineira e também escrever um monte de código para o trabalho em C #. Há duas desvantagens para escrever código UI em Python. um é que não há um único quadro ui que é aceito pela maioria da comunidade. quando você escrever em c # bibliotecas de tempo de execução .NET e de classe são todos feitos para trabalhar juntos. Com Python cada biblioteca UI tem da própria semântica que são muitas vezes em desacordo com a mentalidade pythônico em que você está tentando escrever seu programa. Não estou culpando os escritores biblioteca. Eu tentei várias bibliotecas (wxWidgets, PythonWin [invólucro em torno MFC], Tkinter), Ao fazê-lo muitas vezes eu senti que eu estava escrevendo código em um idioma diferente do Python (apesar do fato de que era python) porque as bibliotecas aren' t exatamente pythônico eles são uma porta de outro idioma seja C, C ++, tk.

Então, para mim eu vou escrever o código UI no .NET (para mim C #) por causa do IDE e da consistência das bibliotecas. Mas quando eu posso eu vou escrever lógica de negócios em python, porque é mais claro e mais divertido.

Respondeu 13/11/2008 em 09:12
fonte usuário

votos
1

E, tanto quanto eu sei que eles usam um monte de python dentro do Google também.

Bem, eu espero que sim, o fabricante de python ainda trabalha no Google, se não estou enganado?

Quanto ao uso de Python, eu acho que é uma grande linguagem para aplicações stand-alone. É muito usado em um monte de programas Linux, e há uma boa widgets alguns jogos lá fora para ajudar no desenvolvimento de GUI do.

Respondeu 13/11/2008 em 08:36
fonte usuário

votos
0

Tente Django ou Pilares, escrever um aplicativo simples com ambos e, em seguida, decidir qual deles melhor lhe convier. Há outros (como Turbogears ou Werkzeug), mas esses são os mais utilizados.

Respondeu 10/08/2010 em 02:51
fonte usuário

votos
0

Eu só tinha uma experiência python, meu projeto trash-cli.

Eu sei que, provavelmente, alguns ou todos os problemas depende da minha inexperiência com python.

Achei frustrar essas coisas:

  1. a dificuldade de encontrar um bom IDE de graça
  2. o apoio limitado a refatoração automática

Além disso:

  1. a necessidade de introduzir dois níveis de pacotes de agrupamento e módulos me confunde.
  2. parece-me que não há uma convenção de nomenclatura de código amplamente adotado
  3. parece-me que há alguns padrão biblioteca API docs que estão incompletos
  4. o fato de que algumas bibliotecas padrão não são totalmente orientada a objetos me irrita

Embora alguns programadores python me dizer que eles não têm esses problemas, ou eles dizem que estes não são problemas.

Respondeu 10/11/2008 em 11:03
fonte usuário

votos
0

Eu sei que provavelmente estou dizendo o óbvio, mas não se esqueça que a qualidade da equipe de desenvolvimento e sua familiaridade com a tecnologia terá um grande impacto na sua capacidade de entregar.

Se você tem uma equipe forte, então provavelmente não é um problema se eles estão familiarizados. Mas se você tem pessoas que são mais de 9 a 5'rs que não estão familiarizados com a tecnologia, eles vão precisar de mais apoio e que você precisa para fazer uma chamada, se os ganhos de produtividade são dignos de qualquer que seja o custo desse apoio é.

Respondeu 30/08/2008 em 10:49
fonte usuário

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