Comparando Python com outras
linguagens de programação
traduzido da fonte: https://www.python.org/doc/essays/comparisons/
“Este ensaio foi escrito em algum momento de 1997. Ele mostra sua idade. É mantida
aqui meramente como um artefato histórico”. Guido van Rossum
Python é freqüentemente comparado a outras linguagens de programação de
computadores interpretados, como: Java, JavaScript, Perl, Tcl ou Smalltalk. As
comparações com C++, Common Lisp e Scheme também podem ser esclarecedoras.
Nesta seção, eu compararei brevemente o Python com cada um dessas linguagens.
Essas comparações se concentram apenas em questões de linguagens. Na prática, a
escolha de uma linguagem de programação é muitas vezes ditada por outras
restrições do mundo real, como custo, disponibilidade, treinamento e investimento
prévio, ou até mesmo apego emocional. Como esses aspectos são altamente variáveis,
parece uma perda de tempo considerá-los muito para essa comparação.
Java
Espera-se que os programas Python sejam mais lentos do que os programas Java, mas
eles também demoram muito menos tempo para se desenvolver. Os programas
Python são geralmente 3-5 vezes menores do que os programas Java equivalentes.
Essa diferença pode ser atribuída aos tipos de dados de alto nível integrados do
Python e à sua tipagem dinâmica. Por exemplo, um programador Python não perde
tempo declarando os tipos de argumentos ou variáveis, e a poderosa lista polimórfica
de Python e tipos de dicionário, para os quais o suporte sintático rico é construído
direto para o idioma, encontrar um uso em quase todos os programas Python. Devido
à digitação em tempo de execução, o tempo de execução do Python deve funcionar
mais do que o Java. Por exemplo, ao avaliar a expressão a + b, primeiro deve
inspecionar os objetos a e b para descobrir seu tipo, o que não é conhecido no tempo
de compilação. Em seguida, invoca a operação de adição apropriada, que pode ser um
método sobrecarregado pelo usuário definido. O Java, por outro lado, pode executar
um número inteiro eficiente ou uma adição de ponto flutuante, mas requer
declarações de variáveis para a e para b e não permite a sobrecarga do operador +
para instâncias de classes definidas pelo usuário.
Por estas razões, o Python é muito mais adequado como linguagem de "cola",
enquanto o Java é melhor caracterizado como um idioma de implementação de baixo
nível. Na verdade, os dois juntos fazem uma excelente combinação. Os componentes
podem ser desenvolvidos em Java e combinados para formar aplicativos em Python;
O Python também pode ser usado para protótipos de componentes até que seu design
possa ser "endurecido" em uma implementação Java. Para suportar este tipo de
desenvolvimento, uma implementação do Python escrita em Java está em
desenvolvimento, o que permite chamar o código Python de Java e vice-versa. Nesta
implementação, o código-fonte Python é traduzido para bytecode Java (com a ajuda
de uma biblioteca de tempo de execução para suportar a semântica dinâmica de
Python).
Javascript
O subconjunto "baseado em objeto" do Python é aproximadamente equivalente ao
JavaScript. Como o JavaScript (e ao contrário de Java), o Python suporta um estilo de
programação que usa funções e variáveis simples sem se envolver em definições de
classe. No entanto, para JavaScript, isso é tudo o que existe. O Python, por outro
lado, suporta escrever programas muito maiores e melhor reutilização de código
através de um verdadeiro estilo de programação orientado a objetos, onde classes e
herança desempenham um papel importante.
Perl
Python e Perl vêm de um plano de fundo semelhante (scripts Unix, que ambos
superaram há muito tempo) e possuem muitas características semelhantes, mas têm
uma filosofia diferente. Perl enfatiza o suporte para tarefas comuns orientadas a
aplicativos e por ter expressões regulares embutidas, digitalização de arquivos e
recursos geradores de relatórios. Python enfatiza o suporte para metodologias de
programação comuns, como design de estrutura de dados e programação orientada a
objetos, e encoraja os programadores a escrever um código legível (e, portanto,
sustentável), fornecendo uma notação elegante, mas não excessivamente encriptora.
Como conseqüência, o Python se aproxima de Perl, mas raramente o bate em seu
domínio de aplicação original; no entanto, Python tem uma aplicabilidade bem além
do nicho de Perl.
Tcl
Como o Python, o Tcl é utilizável como um idioma de extensão do aplicativo, bem
como uma linguagem de programação autônoma. No entanto, o Tcl, que
tradicionalmente armazena todos os dados como cadeias de caracteres, é fraco nas
estruturas de dados e executa o código típico muito mais lento do que o Python. Tcl
também carece de recursos necessários para escrever grandes programas, como
namespaces modulares. Assim, enquanto um aplicativo grande "típico" usando o Tcl
geralmente contém extensões Tcl escritas em C ou C++ que são específicas desse
aplicativo, um aplicativo equivalente em Python pode ser escrito em "Python puro".
Claro, o desenvolvimento puro do Python é muito mais rápido do que ter que
escrever e depurar um componente C ou C++. Foi dito que a única qualidade de Tcl é
o kit de ferramentas Tk. O Python adotou uma interface para o Tk como sua
biblioteca de componentes GUI padrão.
O Tcl 8.0 aborda a velocidade de envio, fornecendo um compilador bytecode com
suporte de tipo de dados limitado e adicionando espaços para nome. No entanto,
ainda é uma linguagem de programação muito mais pesada.
Smalltalk
Talvez a maior diferença entre Python e Smalltalk seja a sintaxe "mainstream" de
Python, o que lhe dá uma vantagem no treinamento do programador. Como
Smalltalk, o Python possui digitação e vinculação dinâmica, e tudo em Python é um
objeto. No entanto, o Python distingue os tipos de objetos internos das classes
definidas pelo usuário e, atualmente, não permite a herança de tipos incorporados. A
biblioteca padrão da Smalltalk de tipos de dados de coleta é mais refinada, enquanto a
biblioteca do Python possui mais facilidades para lidar com as realidades da Internet
e da WWW, como e-mail, HTML e FTP.
Python tem uma filosofia diferente em relação ao ambiente de desenvolvimento e
distribuição de código. Onde a Smalltalk tradicionalmente tem uma "imagem do
sistema" monolítica, que compreende tanto o ambiente como o programa do usuário,
o Python armazena módulos padrão e módulos de usuários em arquivos individuais
que podem ser facilmente reorganizados ou distribuídos fora do sistema. Uma
conseqüência é que há mais de uma opção para anexar uma Interface gráfica de
usuário (GUI) a um programa Python, uma vez que a GUI não está incorporada no
sistema.
C++
Quase tudo o que dizia para o Java também se aplica ao C++, apenas mais: onde o
código Python é normalmente 3-5 vezes menor do que o código Java equivalente, é
geralmente 5-10 vezes menor do que o código C++ equivalente. Evidências
anedóticas sugerem que um programador Python pode terminar em dois meses o que
dois programadores C++ não podem completar em um ano. Python brilha como uma
linguagem de cola, usada para combinar componentes escritos em C++.
Common Lisp e Scheme
Essas linguas são próximas de Python em sua semântica dinâmica, mas tão diferentes
em sua abordagem à sintaxe que uma comparação se torna quase um argumento
religioso: a falta de sintaxe de Lisp é uma vantagem ou uma desvantagem? Deve-se
notar que o Python possui recursos introspectivos semelhantes aos de Lisp e os
programas Python podem construir e executar fragmentos de programa em tempo
real. Normalmente, as propriedades do mundo real são decisivas: Common Lisp é
grande (em todos os sentidos), e o mundo Scheme está fragmentado entre muitas
versões incompatíveis, onde a Python possui uma implementação única, gratuita e
compacta.

Comparando python com outras linguagens de programação

  • 1.
    Comparando Python comoutras linguagens de programação traduzido da fonte: https://www.python.org/doc/essays/comparisons/ “Este ensaio foi escrito em algum momento de 1997. Ele mostra sua idade. É mantida aqui meramente como um artefato histórico”. Guido van Rossum Python é freqüentemente comparado a outras linguagens de programação de computadores interpretados, como: Java, JavaScript, Perl, Tcl ou Smalltalk. As comparações com C++, Common Lisp e Scheme também podem ser esclarecedoras. Nesta seção, eu compararei brevemente o Python com cada um dessas linguagens. Essas comparações se concentram apenas em questões de linguagens. Na prática, a escolha de uma linguagem de programação é muitas vezes ditada por outras restrições do mundo real, como custo, disponibilidade, treinamento e investimento prévio, ou até mesmo apego emocional. Como esses aspectos são altamente variáveis, parece uma perda de tempo considerá-los muito para essa comparação. Java Espera-se que os programas Python sejam mais lentos do que os programas Java, mas eles também demoram muito menos tempo para se desenvolver. Os programas Python são geralmente 3-5 vezes menores do que os programas Java equivalentes. Essa diferença pode ser atribuída aos tipos de dados de alto nível integrados do Python e à sua tipagem dinâmica. Por exemplo, um programador Python não perde tempo declarando os tipos de argumentos ou variáveis, e a poderosa lista polimórfica de Python e tipos de dicionário, para os quais o suporte sintático rico é construído direto para o idioma, encontrar um uso em quase todos os programas Python. Devido à digitação em tempo de execução, o tempo de execução do Python deve funcionar mais do que o Java. Por exemplo, ao avaliar a expressão a + b, primeiro deve inspecionar os objetos a e b para descobrir seu tipo, o que não é conhecido no tempo de compilação. Em seguida, invoca a operação de adição apropriada, que pode ser um método sobrecarregado pelo usuário definido. O Java, por outro lado, pode executar um número inteiro eficiente ou uma adição de ponto flutuante, mas requer declarações de variáveis para a e para b e não permite a sobrecarga do operador + para instâncias de classes definidas pelo usuário. Por estas razões, o Python é muito mais adequado como linguagem de "cola", enquanto o Java é melhor caracterizado como um idioma de implementação de baixo nível. Na verdade, os dois juntos fazem uma excelente combinação. Os componentes
  • 2.
    podem ser desenvolvidosem Java e combinados para formar aplicativos em Python; O Python também pode ser usado para protótipos de componentes até que seu design possa ser "endurecido" em uma implementação Java. Para suportar este tipo de desenvolvimento, uma implementação do Python escrita em Java está em desenvolvimento, o que permite chamar o código Python de Java e vice-versa. Nesta implementação, o código-fonte Python é traduzido para bytecode Java (com a ajuda de uma biblioteca de tempo de execução para suportar a semântica dinâmica de Python). Javascript O subconjunto "baseado em objeto" do Python é aproximadamente equivalente ao JavaScript. Como o JavaScript (e ao contrário de Java), o Python suporta um estilo de programação que usa funções e variáveis simples sem se envolver em definições de classe. No entanto, para JavaScript, isso é tudo o que existe. O Python, por outro lado, suporta escrever programas muito maiores e melhor reutilização de código através de um verdadeiro estilo de programação orientado a objetos, onde classes e herança desempenham um papel importante. Perl Python e Perl vêm de um plano de fundo semelhante (scripts Unix, que ambos superaram há muito tempo) e possuem muitas características semelhantes, mas têm uma filosofia diferente. Perl enfatiza o suporte para tarefas comuns orientadas a aplicativos e por ter expressões regulares embutidas, digitalização de arquivos e recursos geradores de relatórios. Python enfatiza o suporte para metodologias de programação comuns, como design de estrutura de dados e programação orientada a objetos, e encoraja os programadores a escrever um código legível (e, portanto, sustentável), fornecendo uma notação elegante, mas não excessivamente encriptora. Como conseqüência, o Python se aproxima de Perl, mas raramente o bate em seu domínio de aplicação original; no entanto, Python tem uma aplicabilidade bem além do nicho de Perl. Tcl Como o Python, o Tcl é utilizável como um idioma de extensão do aplicativo, bem como uma linguagem de programação autônoma. No entanto, o Tcl, que tradicionalmente armazena todos os dados como cadeias de caracteres, é fraco nas estruturas de dados e executa o código típico muito mais lento do que o Python. Tcl também carece de recursos necessários para escrever grandes programas, como namespaces modulares. Assim, enquanto um aplicativo grande "típico" usando o Tcl geralmente contém extensões Tcl escritas em C ou C++ que são específicas desse aplicativo, um aplicativo equivalente em Python pode ser escrito em "Python puro".
  • 3.
    Claro, o desenvolvimentopuro do Python é muito mais rápido do que ter que escrever e depurar um componente C ou C++. Foi dito que a única qualidade de Tcl é o kit de ferramentas Tk. O Python adotou uma interface para o Tk como sua biblioteca de componentes GUI padrão. O Tcl 8.0 aborda a velocidade de envio, fornecendo um compilador bytecode com suporte de tipo de dados limitado e adicionando espaços para nome. No entanto, ainda é uma linguagem de programação muito mais pesada. Smalltalk Talvez a maior diferença entre Python e Smalltalk seja a sintaxe "mainstream" de Python, o que lhe dá uma vantagem no treinamento do programador. Como Smalltalk, o Python possui digitação e vinculação dinâmica, e tudo em Python é um objeto. No entanto, o Python distingue os tipos de objetos internos das classes definidas pelo usuário e, atualmente, não permite a herança de tipos incorporados. A biblioteca padrão da Smalltalk de tipos de dados de coleta é mais refinada, enquanto a biblioteca do Python possui mais facilidades para lidar com as realidades da Internet e da WWW, como e-mail, HTML e FTP. Python tem uma filosofia diferente em relação ao ambiente de desenvolvimento e distribuição de código. Onde a Smalltalk tradicionalmente tem uma "imagem do sistema" monolítica, que compreende tanto o ambiente como o programa do usuário, o Python armazena módulos padrão e módulos de usuários em arquivos individuais que podem ser facilmente reorganizados ou distribuídos fora do sistema. Uma conseqüência é que há mais de uma opção para anexar uma Interface gráfica de usuário (GUI) a um programa Python, uma vez que a GUI não está incorporada no sistema. C++ Quase tudo o que dizia para o Java também se aplica ao C++, apenas mais: onde o código Python é normalmente 3-5 vezes menor do que o código Java equivalente, é geralmente 5-10 vezes menor do que o código C++ equivalente. Evidências anedóticas sugerem que um programador Python pode terminar em dois meses o que dois programadores C++ não podem completar em um ano. Python brilha como uma linguagem de cola, usada para combinar componentes escritos em C++. Common Lisp e Scheme Essas linguas são próximas de Python em sua semântica dinâmica, mas tão diferentes em sua abordagem à sintaxe que uma comparação se torna quase um argumento religioso: a falta de sintaxe de Lisp é uma vantagem ou uma desvantagem? Deve-se
  • 4.
    notar que oPython possui recursos introspectivos semelhantes aos de Lisp e os programas Python podem construir e executar fragmentos de programa em tempo real. Normalmente, as propriedades do mundo real são decisivas: Common Lisp é grande (em todos os sentidos), e o mundo Scheme está fragmentado entre muitas versões incompatíveis, onde a Python possui uma implementação única, gratuita e compacta.