Melhor resposta
Confira este meme python
Resposta
Alguns motivos:
- A certa altura, o cérebro humano não consegue perceber nenhuma melhora na velocidade. Se eu reimplementar meu código Python em C e ele for executado 200 vezes mais rápido, o usuário nem notará se o código original já foi executado em 0,01 segundos. Caramba, eles provavelmente nem perceberão se o código original só foi executado em 0,1 segundos. A diferença entre 0,1 segundo e 0,0005 segundo é efetivamente imperceptível para a maioria das pessoas. Mesmo para as pessoas que podem realmente discerni-lo, ainda parece completamente normal.
- Sua lentidão depende muito de como você o está usando. O verdadeiro problema é que muitas pessoas sofrem com o problema de otimização prematura. Sim, Python é lento, mas é provável que seu código não seja realmente lento por causa do Python; ele é lento porque seu código usa estruturas de dados e algoritmos errados para resolver um determinado problema. Usar uma linguagem compilada como C apenas oculta o problema. Sim, é mais rápido, mas só é mais rápido em um algoritmo ineficiente. Usar as estruturas de dados e algoritmos corretos será escalonado, praticamente independentemente da linguagem em que você os implementa e de quantos dados você acaba lidando. Mudar para um uma linguagem mais rápida só criará ganhos de curto prazo. Um algoritmo O (n!) ainda é um algoritmo O (n!), mesmo se você implementá-lo em C. Engenheiros verdadeiramente experientes sabem disso e podem fazer aplicativos que são mais do que rápidos e que escalam bem, independentemente da linguagem de implementação, porque usam as estruturas e algoritmos corretos.
- Python tem sido (e provavelmente continuará a ser) principalmente uma linguagem de “cola”; é muito bom para conectar softwares que não eram originais Pretendia trabalhar diretamente um com o outro. Também é bom para automatizar tarefas que normalmente seriam feitas à mão. Para esses propósitos, é mais do que rápido o suficiente, já que o trabalho principal acontece em outro lugar de qualquer maneira. Para linguagens “mais rápidas” como C, esse tipo de trabalho de colagem é tão dolorosamente lento e sujeito a erros de código que nem vale a pena o esforço. Quaisquer ganhos na velocidade de execução são mais do que compensados pela quantidade de tempo desperdiçado do desenvolvedor para fazê-lo funcionar. Esse é um grande motivo pelo qual continua a ser tão popular.
- Alguns gargalos estão simplesmente fora do controle direto da linguagem de implementação. IO é comum. Estou lidando com um aplicativo agora em que tudo em Python é mais do que rápido. Só quando entramos na rede para consultar o banco de dados é que as coisas ficam lentas. Meu perfil mostra que mesmo as partes mais lentas do código Python são completamente insignificantes em comparação com o tempo gasto esperando no IO da rede. Agora estou tentando encontrar maneiras de acessar menos o banco de dados (cache do lado do cliente, evitando qualquer verificação redundante de integridade nos dados, etc.). Mesmo se eu escrevesse o aplicativo em assembler, isso ainda seria um problema. Corrigir esse problema com Python é na verdade mais rápido e fácil porque ele vem com bibliotecas de perfil (muito robustas) na biblioteca padrão. Muitas linguagens compiladas “rápidas” tradicionalmente não vêm com isso fora da caixa.
A moral da história é: o tempo do desenvolvedor supera o tempo da máquina, quase sempre. Quando isso não espera, a lentidão geralmente é capaz de identificar certos gargalos que podem ser otimizados em uma biblioteca ou serviço externo com bastante facilidade. Os momentos em que algo realmente realmente não pode ser otimizado em uma biblioteca ou serviço externo são incrivelmente raros. Como em, quase inexistente.
Uma exceção é se você souber desde o início que seu aplicativo requer o mais próximo possível do desempenho em tempo real e a maior parte do código será centrada na computação. Um bom exemplo são os videogames ou aplicativos DCC. É melhor que estejam o mais próximos do tempo real possível ou você não terá um usuário base para falar.
No entanto, a menos que seja esse o caso, muitos desenvolvedores preferem os ganhos de produtividade do Python, mesmo que apenas para prototipagem.