Programando com Python

1. Programas

Programas são algoritmos, ou seja, instruções que orientam a execução de uma tarefa. Você pode definir esses algoritmos a partir de concatenações de verbos e objetos:

  1. Abra no STF as páginas das ADIs de 5000 a 6000.
  2. Para cada ADI, armazene todas as informações contidas na página em uma variável string.
  3. Exclua dessa string os elementos que não são informações sobre a ADI (mas que definem a formatação da página, por exemplo).
  4. Leia as informações e identifique nela alguns atributos da ADI (numero do processo, relator, requerente e os outros que forem relevantes)
  5. Grave essas informações em um arquivo.

Esse conjunto de orientações pode ser suficiente quando passadas a um ser humano, que vai receber essas instruções genéricas e vai complementá-las a partir de sua experiência, que lhe dirá:

  1. que páginas devem especificamente ser abertas?
  2. quais são as informações relevantes?
  3. qual o nome do arquivo que deve ser gravado?

Ocorre que os computadores não têm essa propensão a preencher as lacunas de instruções vagas. No caso dos humanos, essa capacidade é uma virtude, pois permite executar ações coordenadas a partir de instruções relativamente simples, que serão interpretadas de forma adequada por uma pessoa com conhecimentos e habilidades adequadas.

Durante milênios, a melhor forma de realizar atividades complexas foi ensinar determinadas pessoas a realizar atividades a partir de uma longa experiência: guiar navios, plantar batatas, curar doenças, realizar partos. O profissional experiente toma decisões a cada momento, e sua vivência anterior lhe permite tomar boas decisões, de forma relativamente intuitiva.

Os auxiliares desses profissionais sempre devem ter sido capazes de seguir instruções, mas quanto mais experiente eles se tornam, mais as instruções podem ser lacônicas, mais espaço pode ser deixado à própria discricionariedade do agente.

Os computadores não são assim (ao menos ainda). Eles são rápidos para fazer cálculos, para buscar informações, para gravá-las. Mas eles precisam de instruções absolutamente precisas, que não deixem nada para a sua discricionariedade. Não basta que eles tenham algoritmos (no sentido de instruções), pois eles precisam de programas de computação: algoritmos escritos em uma linguagem que permite a sua execução computadorizada.

O desenvolvimento do machine learning e da inteligência artificial vai mudando esse panorama aos poucos, na medida em que desenvolvemos algoritmos que permitem que certas funções complexas sejam executadas sem uma definição precisa do que deve ser feito. Porém, a maior parte do que os computadores fazem ainda é seguir, de modo rápido e preciso, as instruções que você dá a ele.

Por isso, o desenvolvimento de um pensamento computacional está ligado à competência de dar instruções claras, definindo exatamente o que deve ser feito. Python é uma linguagem na qual você pode desenvolver instruções complexas, mas que devem ser completas e precisas, para que possam ser executadas.

Não adianta dizer para o computador buscar os dados de todas as ADIs. Talvez não demore tanto o dia em que você possa fazer esse comando para uma Inteligência Artificial e ela consiga te fazer perguntas que vão possibilitar um desenvolvimento automático dos códigos. Mas, atualmente, esse tipo de coisa ainda faz parte da ficção científica.

Por isso, você precisa aprender uma linguagem na qual você possa dar instruções  precisas, sem ambiguidades. Somente vai valer a pena criar códigos que serão executados centenas, milhares de vezes: buscar dezenas de milhares de  processos, analisar centenas de decisões, catalogar milhares de votos.

2. O que é Python?

Qualquer curso de introdução a programação normalmente começa pela escolha de uma linguagem. Neste curso, usaremos Python.

Python é uma linguagem de alto nível criada por Guido Van Rossum em 1989. Por linguagem de alto nível, queremos dizer que Python possui maior grau de abstração em relação ao computador, e está mais próximo da linguagem natural. Enquanto a linguagem de máquina é binária (sequências de zeros e uns), a linguagem de montagem (assembly) utiliza símbolos que se referem a operações específicas realizadas pelo hardware. Ambas são consideradas linguagens de baixo nível, pois não contam com conjuntos de comandos articulados como instruções abstratas: modificar o valor de uma variável, realizar uma iteração (repetição de certos comandos), imprimir um valor.

Esquema simplificado das camadas de abstração de um programa de computador

A vantagem das linguagens de baixo nível é que elas permitem um controle total do que faz o computador, visto que determinam diretamente o funcionamento do hardware.  (Berman, 2022).  Já as linguagens de alto nível são modeladas para serem mais fáceis de se ler e escrever, pois usam uma estrutura próxima das línguas humanas. Embora os programas que as utilizam sejam menos eficientes, esse problema é fartamente compensado pela facilidade que temos em aprender uma linguagem de alto nível e de produzir nelas os algoritmos de que necessitamos.

Porém, o seu hardware somente "compreende" linguagens de baixo nível, que definem o comportamento efetivo da máquina. Por isso, os comandos abstratos produzidos em linguagem de alto nível (Python, R, Rust, etc.) precisam ser convertidos nos comandos concretos da linguagem de máquina, o que é realizado por um programa chamado "assembler".

Você, tal como a grande maioria dos programadores, não precisa aprender linguagens de baixo nível, pois é muito mais produtivo desenvolver códigos nas linguagens de programação. Porém, mesmo nelas, existe um espectro, com níveis de abstração mais altos e mais baixos. Kennedy Behrman explica que "a linguagem C, que está na extremidade mais baixa das linguagens de alto nível, permite gerenciar diretamente o uso de memória do programa e escrever um software altamente otimizado requerido para sistemas incorporados." (Behrman, 2022). Em contraposição, Python é uma das linguagens mais abstratas, o que não permite esse controle refinado do uso do hardware, mas viabiliza o objetivo que temos com ela: um aprendizado rápido e funcionalidades bastante intuitivas.

3. Por que Python?

Embora Python seja a linguagem predominante em ciência de dados, existem outras linguagens de programação amplamente utilizadas, como R, Julia e MATLAB.

Uma boa forma de avaliar a popularidade dessas linguagens é a pesquisa feita pelo Stack Overflow, uma plataforma colaborativa de perguntas e respostas sobre programação em múltiplas linguagens. A última edição dessa pesquisa, publicada no site https://survey.stackoverflow.co/2023/, indica que a popularidade do Python é muito maior que a do R entre os desenvolvedores.

Python ocupa o terceiro lugar nessa pesquisa, atrás apenas das principais linguagens de publicação de páginas na internet (HTML e JavaScript). Já R fica no 21º lugar, o que se explica principalmente pelo fato de que ela se trata de um instrumento especificamente projetado para lidar com questões estatísticas, enquanto Python é uma linguagem que tem um espectro mais amplo de aplicações, sendo usada profissionalmente em vários campos: web design, machine learning, computação científica, desenvolvimento de jogos, ciência de dados, etc.

Fonte: https://survey.stackoverflow.co/2023/#technology-most-popular-technologies

Essa popularidade não indica que existe um prolema com R, mas apenas que ela tem uma comunidade mais restrita de usuários, o que termina lhe conferindo algumas vantagens:

  1. Python tem maior suporte para web scraping, uma atividade de bastante relevância para juristas interessados em programação.
  2. Python possui mais pacotes, ou seja, conjuntos de funções disponibilizados publicamente pelos desenvolvedores.
  3. Por ser uma linguagem considerada mais fácil de aprender, ela é usada como primeira linguagem em vários cursos de introdução à programação (por exemplo: USP, Stanford e MIT).
  4. É a linguagem mais usada para aprendizado de máquinas e computação científica.

Essas particularidades terminam fazendo do Python uma das linguagens mais admiradas pelos desenvolvedores. 65% dos respondentes que usaram Python no passado desejam continuar a utilizá-a, contra 39% dos que usaram R no passado (a admiração é representada pelos pontos vermelhos).

Fonte: https://survey.stackoverflow.co/2023/#technology-admired-and-desired

Além disso, os pontos azuis revelam que há uma quantidade muito maior de pessoas que desejam conhecer Python (39% dos respondentes) do que R (3,5%), o que sugere que a popularidade do Python deve continuar maior, ao longo dos próximos anos. A soma desses motivos indica que a melhor escolha para o nosso curso de introdução à programação é Python.

3. Instalação do Python via Anaconda

Para instalar o Python, você pode entrar na própria página https://www.python.org/, onde é possível fazer o download da última versão disponível para o seu sistema operacional. Este é um programa gratuito e ele é suficiente para que você possa executar programas escritos na linguagem Python, que são reconhecidos pela extensão '.py', que é a marca distintiva desses programas.

Uma vez instalado o Python, você pode baixar todas as bibliotecas que te interessarem, por meio do sistema pip, que é uma ferramenta de instalação de pacotes para Python (Package Installer for Python), que pode instalar qualquer um dos quase 300.000 projetos que existem no repositório do Python Package Index (PyPI).

Em vez de fazer essa instalação do Python e depois instalar individualmente os pacotes que você desejar, optávamos por instalar a Plataforma Anaconda Navigator, que contém vários conjuntos de programas (packages) em Python e R, voltados a data science. A instalação do Anaconda Navigator é simples, mas, se necessário, você pode seguir o vídeo que fizemos com um Tutorial de Instalação da Biblioteca Anaconda.

Como a Anaconda já contém muitos dos elementos que você desejaria instalar, ela poupa o trabalho de selecionar individualmente cada pacote. Além disso, a Anaconda oferece a IDE que utilizaremos neste curso: o Spyder.  Todavia, eu tive algumas dificuldades para atualizar o Spyder para a última versão e alguma instabilidade no uso do Anaconda, o que me fez optar por fazer a instalação específica desses dois programas, a partir de suas páginas oficiais.

4. IDEs

Preciso de algum programa especial para programar em Python?

Precisar, não precisa.

Você não necessita de um processador de texto para escrever um livro, já que você pode escrever qualquer coisa no bloco de notas do seu computador. Com Python ocorre a mesma coisa: você pode escrever programas usando o bloco de notas, que é um instrumento capaz de inserir todos os caracteres que formam os comandos do Python. Desde que você tenha o Python instalado no seu computador (diretamente, ou via Anaconda), você só precisa inserir a extensão .py no seu arquivo para que ele entendido como um programa em Python.

Porém, a sua vida será muito mais fácil se você usar uma espécie de editor de programas: uma plataforma que oferece funcionalidades que facilitam (e muito) a escrita dos seus códigos: exibição que diferencia os tipos de expressões, indentação automática, ferramentas para corrigir erros, ferramentas para acompanhar os valores das variáveis.

Na plataforma Anaconda, estão presentes os ambientes de desenvolvimento PyCharm e o Spyder, que são ambos excelentes. Escolhemos utilizar o Spyder porque ele é um programa mais leve e é open source.

As aulas futuras serão gravadas no ambiente Spyder, que tem o seguinte formato, com o qual logo você vai se acostumar.

Anatomia do Spyder

Para comprender como funciona essa ferramenta, assista ao tutorial Introdução ao Spyder.

Referências

Behrman, Kennedy (2022). Fundamentos de Python para Ciência de Dados. Porto Alegre: Bookman.