Para quais tipos de aplicativos o Python é uma má escolha? [fechadas]

21

Comecei a aprender Python e gostaria de ter um pouco mais de contexto sobre a linguagem.

Sei que, em muitos casos, Python é uma linguagem lenta em relação ao C ou C ++. Portanto, o Python provavelmente não é a melhor escolha para aplicativos que precisam ser executados o mais rápido possível.

Fora isso, parece que o Python é uma ótima linguagem de uso geral fácil de ler e escrever. As bibliotecas disponíveis oferecem uma enorme quantidade de funcionalidades. Fora dos aplicativos críticos de desempenho, onde é uma má escolha usar o Python (e por que)?

Casey Patton
fonte
8
Não existe uma grande linguagem de uso geral. A cada cinco anos, mais ou menos, um novo substitui o antigo, que sobrevive apenas em nichos de mercado. Lisp, Fortran, Pascal, Basic, Ada, Perl ...
mouviciel
3
@mouviciel: Pascal é um idioma de nicho? Ok, seu nome foi alterado para Delphi para corresponder ao IDE Borland / CodeGear / Embarcadero, mas o Delphi ainda é (baseado no) Pascal e, embora tenha perdido participação no mercado, eu não o chamaria exatamente de um idioma de nicho. E nem básico para esse assunto. Visual Basic ainda é básico. Delphi e Visual Basic são usados em muitas empresas ...
Marjan Venema
7
"Python é uma linguagem lenta em relação a C ou C ++". Você deve fazer o backup com a referência específica usada. Em alguns casos (programas vinculados de E / S que fazem muitas chamadas de sistema), o Python é tão rápido quanto C, porque é apenas um invólucro em torno da biblioteca C.
S.Lott
@ S. Lott Verdadeiro e PyPy pode, por vezes rivalizar com a JVM ou mesmo C / C ++
yati sagade
Pascal costumava ser o idioma de ensino preferido quando eu estava na universidade. Então, algumas décadas passaram e agora parece a ela o Java. Eu codifico várias línguas profissionalmente (meia dúzia ou mais), mas ainda codifico o Delphi por diversão.
MAWG

Respostas:

22

Software destinado a destinos incorporados com recursos limitados. A maioria dos processadores neste planeta não pode executar o Python devido a recursos insuficientes ou ninguém portou uma versão para essa arquitetura. A maioria dos processadores, mesmo agora, possui menos de um megabyte de memória.

uɐɪ
fonte
… Isto é, até que alguém crie uma porta Python do Arduino. Oh espere!
Spoike
5
@ Spike esse link é para realmente executar python no computador e apenas se comunicar serialmente com o arduino. Arduino não está em execução de código python
basarat
1
@BasaratAli: Isenção de responsabilidade - escrevi meu comentário em tom de brincadeira. ;-)
Spoike 23/11
14

Os dois lugares que me lembram são coisas que exigem muita concorrência, para as quais eu usaria Erlang. Ou computação numérica de serviço pesado, que provavelmente tentaria usar o Fortran.

Zachary K
fonte
1
É Fortran ainda à frente de C / C ++ em computação numérica ...?
Sardathrion - Reintegrar Monica
1
Você sabe que eu não sei. Não é uma área em que tenho muita experiência. Mas eu sei que o pessoal do fortran passou mais de 30 anos fazendo suas ferramentas irem muito rápido.
Zachary K
@ Sardathrion - É difícil dizer. Apenas natural, você entende. Mas, há alguns meses, Lionel, da Intel Fortran, fama afirmou que sua linha fortran supera todos os outros produtos em sua linha de desenvolvimento (que não é tão estreita).
Rook
@Idigas: Na verdade, eu sei que o Fortran é amplamente utilizado, mas isso pode ser devido ao código legado e não a restrições de otimização. Talvez eu deva fazer isso como uma pergunta ...
Sardathrion - Reinstate Monica
Lembre-se também de que muitas pessoas que fazem computação numérica conhecem o Fortran muito bem e essa é a sua ferramenta de escolha. Então, quando tiverem esse tipo de tarefa, procurarão o Fortran.
Zachary K
8

Como o Python é uma linguagem de tipo dinâmico, sem verificação em tempo de compilação, será difícil refatorar um grande projeto Python que não possui testes de unidade extensos.

Portanto, se você tem um projeto grande que precisa ser mantido e modificado por um longo tempo e sua equipe não está comprometida em criar testes automatizados para tudo, é melhor usar Java ou C #.

Eric Wilson
fonte
17
Refatorar qualquer projeto grande sem testes de unidade é muito difícil.
Sardathrion - Restabelece Monica
9
É verdade, mas muito mais difícil sem a segurança do tipo.
Eric Wilson
3
@ Eric Wilson - Mesmo assim, a digitação forte pode lhe dar uma falsa sensação de segurança ... Compila, envia!
Mark Booth
2
Isso pode não estar 100% no tópico da pergunta, mas ainda é um ponto válido. Falta suporte a ferramentas, especialmente a refatoração para linguagens de tipo dinâmico, em comparação com linguagens como Java ou C #. Apenas renomear coisas pode ser um exercício exaustivo em grandes projetos Python.
Olivers
O Python requer um tempo de execução ou VM separado ou pode gerar um único executável independente?
Jim No Texas
2

Se o foco principal for o desenvolvimento da GUI do Windows, recomendo o CPython, pois há uma falta de bons designers de formulários (em comparação ao uso do .Net).

No entanto, o IronPython é executado no .Net e você tem dois IDEs com designers de formulários para escolher: Visual Studio e SharpDevelop. De fato, as Ferramentas Python para Visual Studio podem ser usadas para CPython e IronPython, o que é bastante interessante, embora eu ainda não tenha tentado ...

AndyHasIt
fonte
2

Isso realmente depende do que você quer dizer com "má escolha".

Se você quer dizer aplicações em que o uso do Python é muito difícil, existem relativamente poucas: a principal que vem à mente e ainda não foi mencionada é o código que requer altos níveis de correção em idiomas com sistemas de tipos sofisticados (Haskell, linguagens de tipo dependente ) são melhores opções.

Se você quer dizer aplicativos em que o Python está abaixo do ideal (ou seja, há melhores opções), existem mais, mas também são mais subjetivos. Por exemplo, em minha experiência reconhecidamente limitada, trabalhar em compiladores e intérpretes é muito mais fácil com tipos de dados algébricos, correspondência de padrões e recursos mais funcionais do que o Python. No entanto, listar exaustivamente aplicativos como esse é impossível, pois eles variam por pessoa.

Tikhon Jelvis
fonte
2

É ideal para criar scripts rapidamente, por causa de sua capacidade expressiva e grande variedade de bibliotecas de suporte.

A verificação dinâmica de tipos e a falta de declaração explícita de variáveis ​​a tornam uma má escolha para grandes projetos que envolvem centenas de milhares ou mesmo milhões de linhas de código. O mesmo vale para sistemas de missão crítica ou de segurança. Em um sistema aviônico, por exemplo, seria completamente inaceitável que um sistema falhasse devido a um erro que poderia ter sido detectado em tempo de compilação.

Mike Collins
fonte
0

Bem, assim como você, também estou começando com o Python. Mas para mim no contexto de aprendizado de máquina e ciência de dados.

Também acabei de adquirir todo o conhecimento novo sobre Java 8 e suas novas bibliotecas orientadas a fluxo.

Eu realmente amei a sensação fluida das novas bibliotecas de fluxo Java 8 e o quão perto eu estava devido às bibliotecas Apache spark. Quando entrei no Python, esperava o mesmo e mais.

Eu vi mais. Mas muito menos. Má documentação, embora houvesse bastante; sem fluidez e, na verdade, fiquei adivinhando se um método reinava em um novo objeto ou se opera sobre ele; nada perto de um mapa / reduzir etc. Fiquei surpreso ao ficar desapontado.

Desde o início, no entanto, eu não tinha grandes expectativas de como seria fácil aprender o idioma. Eu estava certo: inconsistente, pouco intuitivo, difícil de aprender. Mas essa foi apenas a minha experiência de ser muito bom em tudo o que o Java gosta.

YoYo
fonte