Por que tanta popularidade com Python? [fechadas]


54

Além de ser incomodado com o espaço em branco como sintaxe, não sou um odiador, apenas não fico fascinado com o Python.

Aprecio a poesia de Perl e programei belos serviços da Web no bash & korn e shebang gnuplot. Escrevo documentos troffe não me importo com o REXX. Não encontrou o tcl mais útil anos atrás, mas qual é o grande fedor do Python ? Vejo anúncios de emprego e muitos candidatos com isso como prêmio e troféu em seus currículos.


Eu acho que, na realidade, eu estou tentando ser vendido pessoalmente, simplesmente não consigo encontrar um motivo.


81
Eu nunca entendo por que as pessoas ficam irritadas com o recuo necessário do Python. Eu espero que você ia recuar seu código de qualquer maneira, certo?
Greg Hewgill

10
@ GregH, é claro, mas minha sintaxe será obrigatória por ela? Mais ou menos como Makefiles?
Jé Queue

5
@Xepoch: Mas os Makefiles não exigem apenas recuo, eles exigem um tipo específico de recuo que geralmente é indistinguível do outro tipo. Se os Makefiles precisassem de um recuo de espaço em branco em vez de especificamente 0x09, você provavelmente não faria objeção e provavelmente usaria recuo consistente na largura de recuo preferida. É a mesma coisa que o Python permite.
Greg Hewgill

31
Poesia de Perl? A sério? Se você teve a honra de manter o código Perl de outras pessoas, entenderia por que o Perl caiu em termos de popularidade.
grokus

6
@ Greg, eu concordo com você. Eu disse isso antes e direi novamente, quem quer que se queixa da regra de indentação do Python deve ser solicitado a manter o código mal recuado. Apenas dizendo ...
grokus

Respostas:


61

Python é uma linguagem bem projetada, com uma sintaxe razoavelmente limpa, uma biblioteca padrão abrangente, excelente documentação incluída e de terceiros, implantação generalizada e o imediatismo de uma linguagem de estilo "script" (ou seja, nenhuma etapa explícita de compilação).


36
Bem desenhado? Já reparou que você tem uma função global chamada len?
alternativa

65
o que há de errado com len? Eu tenho a impressão de que você só leu sobre python por 5 minutos
Kugel

5
Pessoalmente, a estrutura da linguagem era tão simples de entender que me deu uma melhor compreensão de como as línguas em geral funcionam internamente. São as pequenas coisas. As funções de primeira classe, a capacidade de importar apenas as partes relevantes de um módulo externo para as atuais compreensões de lista, tuplas, a inclusão do self como parâmetro de método me ajudaram a entender a diferença entre funções e métodos (outras línguas se escondem atrás do açúcar). Dói-me usar linguagens como C # agora porque sei intuitivamente que o código não está me ensinando nada sobre como está funcionando internamente.
Evan Plaice

11
Como o python pode ser uma linguagem bem projetada? Usa estranho __double_underscore_names__, mistura alllowercasefunctionamescom mixed_underscoree mixedCamelCasenomes. Requer um :no final de defou loops. Ele usa um monte de abreviatura estranho str, dict, islice. Parece que não havia nenhuma convenção. É um caos puro. Peps, pips, zens ... é mais como uma religião de python do que uma linguagem. Pode ter alguns recursos interessantes, mas não explica por que tantas pessoas estão tão empolgadas com isso. Não há nada de especial em pyhon. Apenas outro produto mal projetado.
T3chb0t

11
E qual é o truque def? Por que defino uma função com a defe não a func? Não há outra língua que não seja tão intuitiva quanto a python.
T3chb0t

76

Eu descobri que o Python é a linguagem de programação mais natural em que já escrevi código. Eu codifiquei várias linguagens antes e depois do Python e, em maior ou menor grau, você precisa lutar contra a linguagem para faça o que você quiser. Python reduz essa luta maciçamente. Eric S Raymond disse muito melhor do que eu em Por que Python?

Como um ponto relacionado, o Python mantém sua limpeza mesmo evoluindo rapidamente. Na maioria dos idiomas com os quais trabalhei, a introdução de novos recursos de idiomas apresenta muitas rugas. Mas com o Python, até os principais recursos da linguagem (decoradores vêm à mente) são adicionados o tempo todo, sem parecer feios.


8
Vim aqui para dizer basicamente isso. A sintaxe parece tão natural que é quase como se você estivesse escrevendo um pseudocódigo.
James Davies

2
Python é compacto: você pode manter todo o seu conjunto de recursos (e pelo menos um índice conceitual de suas bibliotecas) em sua cabeça.
systempuntoout

2
@ Zoomzoom83 Meus pseudocódigos têm início e fim - ele não funciona em python :-(
mbq

11
@mbq E meus pseudocódigos têm chaves, mas isso é outra história;)
Chris diz Reinstate Monica

26

Espero que isso não pareça cínico, mas o IMO Python é tão popular pela mesma razão que Java, C # e Objective-C são. Não porque haja algo de espetacular nas próprias línguas, mas porque cada uma delas tem um patrocinador corporativo capaz de produzir muita publicidade, muita publicidade e muitas bibliotecas e suporte para o idioma preferido.


6
C # é especial, tem linq
Daniel Little

39
Python tem uma grande corporação por trás disso? (pergunta genuína)
Jé Queue

11
Sim, foi isso que eu quis dizer. O Python era muito menos "legal" antes do Google começar a se interessar por ele.
Mason Wheeler

10
@Mason - mas certamente, deve haver alguma razão pela qual um corp grande como o Google o tornaria "legal"?
22410 Jas

7
Por que as pessoas pensam que existem patrocinadores corporativos de python? Alguém já reparou no tamanho do pycon versus as enormes convenções Java / j2ee? Esta é uma história de Davi e Golias sobre financiamento corporativo.
rox0r

11

Minha experiência é que as pessoas que encontram verdadeira alegria na programação geralmente buscam uma linguagem que lhes seja mais adequada do que o que aprenderam na escola ou universidade. Basicamente, isso significa que eles passarão do PHP / Visual Basic / C ++ / Java / C # padrão para algo mais exótico (comercial / profissional), como Python, Ruby, Haskell e até perl (por causa do seu enorme valor de hack e obscuridade).

Não me entenda mal, há programadores C # / VB.net muito experientes que se orgulham de seu trabalho e código (os caras do StackOverflow são um exemplo muito bom), mas você não se torna um programador python apenas porque foi isso que eles ensinaram na escola; tem que ser sua própria decisão.

Acho que Jeff Atwoord tinha um post sobre isso, mas não consigo encontrá-lo. Se o encontrar, atualizarei este comentário.


11
Python foi a primeira língua ensinada na minha escola para 101.
Morgan Herlocker

Quase toda língua tem um motivo para existir e é boa pelo menos em alguma coisa. Na minha opinião, isso diz apenas "eu gosto porque outros gostam".
NtFreX 02/02/19

9

Comparado ao Ruby, que é realmente legal e produz incríveis códigos de golfe, o Python tem essa filosofia central de que "deveria haver uma - e de preferência apenas uma - maneira óbvia de fazer [coisas]", significando a maneira idiomática do Python. Eu descobri que essa é uma grande vantagem em comparação ao Ruby.


4
..ou comparado ao Perl com um número aparentemente infinito de maneiras?
Jé Queue

@Xepoch - na verdade, há muitas vezes muito menos do que infinitas maneiras boas / corretas de fazer as coisas no Perl, e a maioria das pessoas com uma pista poderá facilmente dizer a você, sem muita discordância, qual é o top 1 (ou no máximo 2) estão. se você não acredita em mim, veja as perguntas do Perl no SO. Sim, algumas perguntas têm 10 soluções distintas. Mas a maioria tem uma solução "mais correta para as circunstâncias" claramente acordada.
DVK 13/01

@DVK, eu sei, mas olhando para ele a partir de um objetivo de design.
Jé Queue

8

Comecei a amar Python pela mesma razão que Eric S. Raymond descreve: o ato de escrever programas em Python é conceitualmente muito semelhante a pensar no ato de projetar código na minha cabeça.

Aprender a ser um bom programador Python me tornou um programador C # muito melhor. Isso facilitou muito a compreensão do LINQ. Eu poderia nunca ter adotado um tipo como Dictionary<string, Func<T>>, ou me acostumado a usar yield return, se não tivesse usado classes e geradores em Python. AOP é muito mais fácil de entender agora que eu usei decoradores Python. A lista continua.


6

Em primeiro lugar, a linguagem insignificante peculiaridade como recuo forçado no Python pouco importa se a linguagem em si for poderosamente expressiva e útil. Eu também fui rejeitada no começo devido a isso, mas logo aprendi a olhar além dela e agora nem a sinto como um obstáculo, porque a linguagem é muito mais fácil para eu trabalhar. É como sigilos em variáveis ​​no Perl , é uma peculiaridade inofensiva da língua e qualquer pessoa confortável na língua não se sente incomodada por ela.

Para entender as razões pelas quais tantas pessoas pensam que o Python é ótimo, tente e aprenda a linguagem. Os motivos são basicamente os mesmos que o Perl. Acho que gosto da sintaxe no Python (por exemplo, compreensão de lista, sintaxe OOP, etc.), mas isso é realmente subjetivo e sua opinião pode ser diferente. Prefiro o Python para projetos maiores, enquanto ainda uso o Perl para scripts menores.

E essa é a resposta para sua pergunta. Você compara Python a Perl, bash e tcl. O fato é que isso não é uma comparação justa. Idiomas como o bash foram projetados para escrever pequenos scripts para automatizar tarefas comuns. Algumas pessoas pensam que o Perl também fica pesado se o código for suficientemente grande (o Perl bem escrito não, mas o código bem escrito é difícil de encontrar em um projeto grande). O IMHO Python difere de outras linguagens de 'script', na medida em que se adapta muito bem a grandes projetos, bem como a pequenos scripts pontuais. Eu acho que Ruby também tem a mesma qualidade.


6

A filosofia de que o ditador benevolente deve reforçar sua idéia de bom estilo [1], sua idéia de boa programação, sua idéia de como programar me frustra regularmente. Eu não penso como van Rossum. No entanto, sua linguagem resiste às tentativas de expressar pensamentos não-van Rossum. Seu pensamento funciona muito bem para muitos programadores. Mas parece que não me encaixo no modelo dele de como programar.

É por isso que acredito que Perl é uma linguagem superior.

[1] Veja o blog dele sobre remoção reduce.


você pode explicar seu raciocínio com o processo de pensamento, gostaria de ouvir mais.
Jé Queue

3
@ Xepoch - uma linguagem de programação serve como meio de expressão. Expressões e estilos de pensamento podem ser expressos em um continuum de pensamento, de 'encaixa' a 'muito difícil de encaixar'. Por exemplo, não penso em termos de compreensão de lista. Eles são estranhos ao modo como penso sobre soluções de problemas. Mas a redução do Common Lisp é algo que flui sem dificuldade significativa da minha mente. No entanto, van Rossum evidentemente é o oposto. Java requer que tudo esteja em objetos. Portanto, fica muito difícil criar soluções não orientadas a objetos em Java. E assim por diante - #
Paul Nathan

5

Eu acho que até certo ponto o Python é a única linguagem de programação que você precisará, a menos que queira escrever um kernel do sistema operacional. É adequado para uso interativo, hacks aleatórios, administração de sistemas, aplicativos científicos, ferramentas de sistema operacional, aplicativos Web, aplicativos GUI, incorporação etc. etc., é portátil, gratuito e amplamente utilizado. Nenhuma outra linguagem de programação cobre realmente todos esses campos na prática. É realmente um bom investimento estratégico para uma pessoa e uma empresa.


4
Não estou duvidando do Python aqui, mas acho que o Perl se encaixa na sua descrição acima muito bem, se não melhor.
Jé Queue

Ruby também se sai muito bem nisso.
ocodo 26/09

11
A partir de 2015, Python é a linguagem de propósito geral da computação científica. Todo o resto é o material clássico de baixo nível (C, C ++, FORTRAN), competitivo em alguns nichos (MATLAB, Mathematica, R, Julia, Lua), usado apenas para bibliotecas e infraestrutura (Java), ferramentas de script aleatórias (bash , Perl) ou .... bem ... nenhuma das opções acima.
Paul

5

Desde 2004, eu uso o Python para desenvolver:

  • GUIs
  • Scripts de cenas do traçador de raios com ligações Python a C ++
  • Sistemas de construção automatizados de plataforma cruzada
  • Scripts de teste
  • Ferramentas de uso geral para resolver seus problemas do dia a dia
  • Sites e aplicativos da Web

Em 2004, o Python era a linguagem de escolha, porque os scripts do Python são portáteis no Windows, Linux e Mac com muito poucas modificações.


4
Para citar um comentário de uma resposta diferente: "Não duvido do Python aqui, mas acho que o Perl se encaixa na sua descrição acima muito bem, se não melhor".
DVK

4

Para mim, Python tem sido um amigo querido. É uma linguagem decente de script e prototipagem. As principais coisas em que consigo pensar são:

  • Sintaxe limpa, muito simplista e fácil de entender
  • Multi-paradigma, use-o como uma linguagem imperativa? Certo. OOP? Sem problemas. Ele também possui alguns recursos leves de linguagem funcional, por exemplo, lambda, compreensão de lista etc.
  • Para necessidades básicas de computação, ele possui suporte nativo para estruturas de dados essenciais, matriz, tupla, dicionário (matriz associativa), conjunto etc.
  • Outras características podem tornar um programador muito produtivo, por exemplo, digitação de pato, reflexão, metaprogramação, decoradores, geradores, etc.
  • Rico suporte de biblioteca

lambda está quebrado em python.
Paul Nathan

@Paul Não faria mal dar um link para apoiar sua opinião.
Piotr Dobrogost

@Piotr: docs.python.org/reference/expressions.html#lambda Não pode conter instruções. Isso viola a ideia matemática de uma função anônima.
Paul Nathan

Isso não significa que lambda é ininterrupto?
Rox0r

4

É elegante e realmente fácil de aprender, e quando você estiver familiarizado com os tipos básicos (especialmente as listas), sua produtividade não terá limites. É perfeito para algoritmos de prototipagem ou para escrevê-los em uma linguagem semelhante a um pseudocódigo que pode ser colocada diretamente em uma máquina, e é realmente boa como uma linguagem de script para executar tarefas repetitivas ou executar operações irritantes em arquivos. Eu o uso como uma linguagem de cola para fazer com que os subprocessos se comuniquem: não tão poderosos quanto o bash para algumas tarefas fáceis, mas MUITO MAIS fácil se você precisar fazer mais do que apenas uma única linha de código.

E então não faz distinção entre funções e sub-rotinas, você entende o que quero dizer.


3

Muitos amantes de Python que acabei de ver mudaram do ambiente C e ficaram impressionados com coisas do tipo "Hello "+ "World"is "Hello World". Então, eu diria que esta é a primeira linguagem de script que não coleta tags esotéricas / específicas e que se espalha entre as pessoas martirizadas, como o fogo em uma floresta seca. E assim a moda criada agora vive por conta própria.


2

Voltando à questão agora que estou um pouco menos cansado:

Python é uma linguagem que achei particularmente adequada para tarefas de programação científica, que é um dos lugares onde sua popularidade está crescendo bastante. Algumas razões pelas quais:

  • Um suporte bastante forte à comunidade significa que existem algumas bibliotecas robustas, e o Python funciona como um substituto decente para o MATLAB e algumas das outras linguagens populares nesse campo.
  • Ele joga bem com C quando você fazer velocidade necessidade, mas muitas vezes a velocidade não é realmente necessário, por isso, natureza interpretada de Python não é tão grande de um negócio.
  • Descobri que é uma linguagem bastante acessível sem um grande número daquilo que, para pessoas de fora, parece regras de sintaxe estranhamente arbitrárias. É muito rápido traduzir entre pseudo-código e Python.
  • "Pegue ou deixe OOP". Muitos projetos de programação científica não se beneficiam muito com a extensa OOP. Alguns fazem. É bom ter um idioma que possa alternar facilmente entre os dois.
  • Forte suporte entre plataformas. Especialmente porque o que eu trabalho raramente envolve GUIs, posso confiar em poder enviar um programa Python para outra pessoa sem me preocupar com o SO que eles estão executando.

Não é a linguagem completa de programação, mas é uma linguagem decente "Sim, eu provavelmente tenho uma ferramenta para resolver qualquer problema que surgir", e é provavelmente por isso que está desfrutando de popularidade no momento.


Além de todos os outros itens listados, acho que um dos itens mais importantes foi "Posso confiar em poder enviar um programa Python para outra pessoa sem se preocupar com o SO que eles estão executando". Isso também é muito favorável quando você não quer ficar preso ao tipo de sistema operacional.
Tarik

1

O Python é uma linguagem muito 'webby' nas estruturas disponíveis (Django, Zope, etc) e nas bibliotecas facilmente importáveis, que novamente cobrem muitas funções da web.

Para desenvolvedores da Web que estão migrando apenas de um conjunto de habilidades HTML, CSS + JS (anedoticamente uma grande fonte de novos programadores nos últimos anos), acho que isso a torna uma proposta muito atraente (ao lado de Ruby).

Além disso, o Google não é a Microsoft ....


Java não é MS; portanto, se seu raciocínio estiver correto, eles migrariam para Java, não para python. Deve haver uma razão diferente.
Rox0r

0

Eu acho que uma das principais razões é que 90% do google é feito de Python.

No entanto, o Python também é uma linguagem de programação poderosa e fácil de aprender. Possui estruturas de dados de alto nível eficientes e uma abordagem simples, porém eficaz, da programação orientada a objetos. A sintaxe elegante e a digitação dinâmica do Python, juntamente com sua natureza interpretada, o tornam uma linguagem ideal para scripts e desenvolvimento rápido de aplicativos em muitas áreas da maioria das plataformas.

O intérprete Python e a extensa biblioteca padrão estão disponíveis gratuitamente na forma de código-fonte ou binário para todas as principais plataformas do site do Python, http://www.python.org/ , e podem ser distribuídos gratuitamente. O mesmo site também contém distribuições e ponteiros para muitos módulos, programas e ferramentas Python gratuitos de terceiros e documentação adicional.

O interpretador Python é facilmente estendido com novas funções e tipos de dados implementados em C ou C ++ (ou outras linguagens que podem ser chamadas de C). O Python também é adequado como uma linguagem de extensão para aplicativos personalizáveis.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.