Unixtopia

main/ artigos/

Python

Python é uma linguagem de programação interpretada de alto nível excepcionalmente horrível. Sua prioridade é a legibilidade, facilidade e rapidez, por isso é popular entre iniciantes, crianças e pseudoprogramadores que não conseguem lidar com linguagens de verdade como o C. Python funciona e é confortável, mas qualquer programa escrito nele está para fadado a ser lento, feio, grande e inevitavelmente morrerá sem manutenção, pois as atualizações do Python quebram a compatibilidade com versões anteriores. É a linguagem mais frequentemente usada para programar IAs de rede neural.

Python é lento, até muito mais lento que JavaScript e PHP. Se quiser tornar seus programas mais rápidos, use a implementação PyPy em vez do CPython padrão. Programar em Python não é programar. Fazer um programa em Python versus escrever um programa real é como fazer uma casa no Minecraft e uma na vida real. Python foi feito exatamente para pessoas que não sabem programar, como economistas e programadores profissionais. Python foi criado em 91 por Guido van Rossum que o anunciou na Usenet. A versão 1.0 foi lançada em 94 e a versão 2.0 em 2000. Uma versão muito importante foi 2.7 lançada em 2010, foi usada e suportada por um longo tempo, mas o suporte terminou em 2020 em favor do Python 3.

Existem certos casos de uso, escrevendo scripts descartáveis e códigos rápidos e temporários. O Python também pode ajudar a entrar na programação, para que possa servir como um idioma educacional, no entanto, certifique-se fazer a transição para uma linguagem low-level. Lembre-se, Python nunca deve ser usado para um programa sério. A implementação de referência, CPython, é a mais ampla. Escrito em C e Python. Também existem implementações diferentes, como Micropython, e Pypy, uma implementação alternativa e mais rápida. A ênfase está na legibilidade e no conforto, o objetivo é criar um pseudocódigo executável. Sacrificando o desempenho, a elegância, a manutenção e outros aspectos importantes.

É interpretado e altamente dinâmico, os tipos de variáveis de dados são dinâmicos, listas, strings e dicionários, pois novas versões existem até números inteiros de tamanho arbitrário por padrão. Há coleta automática de lixo e o código pode ser modificado no tempo de execução. É claro que tudo isso torna o idioma lento, com grande footprint de memória. Há um OOP que pode ser evitado. O Python gira em torno de dicionários, um tipo de dados capaz de armazenar chave e pares de valor, a maioria das coisas é implementada internamente com dicionários. Ele não mantém a compatibilidade com versões anteriores, novas versões do Python geralmente não conseguem executar programas escritos em versões antigas. Isso é para que os desenvolvedores possam eliminar coisas que acabaram sendo uma má idéia, que acontece com frequência, mas é claro que você deve continuar reescrevendo seus programas para mantê-los funcionando.

A identação retardada faz parte da sintaxe, uma escolha de design de merda que complica a programação, com revestimento, minificação, código compacto, golfe de código e indentação temporária de depuração. Não há especificação, mas pelo menos há referência online. Possui uma biblioteca padrão gigantesca que lida com Unicode, GUI, bancos de dados, regex, email, HTML, compactação, comunicação com sistema operacional, rede e multithreading. Isso significa que é quase impossível implementar o Python em toda a sua totalidade, sem que 100 programadores trabalhem em período integral por 10 anos. Existem outras falhas, como nomeação inconsistente e estranha de comandos internos e ausência de declaração de interruptor.

Um programa de árvore de divisores implementado em Python3, demonstrando recursos básicos da linguagem:

def printDivisorTree(x):
  a = -1
  b = -1

  for i in range(2,int(x / 2) + 1):
    if x % i == 0:
      a = i
      b = int(x / i)
      
      if a >= b:
        break

  print("(",end="")

  if a > 1:
    printDivisorTree(a)
    print(" " + str(x) + " ",end="")
    printDivisorTree(b)
  else:
    print(x,end="")
  
  print(")",end="")

while True:
  try:
    x = int(input("enter a number: "))
  except ValueError:
    break  

  printDivisorTree(x)
  print("")