Intro ao Python

Intro ao PythonIntroQual é a idéia do Python?"Jeito Python" de programas (Pythonic)1. Princípios do Código Pythonicoa) Legibilidade acima de tudob) "Explícito é melhor que implícito"c) "Simple is better than complex" d) "Don’t reinvent the wheel"2. Abstração em Objetosa) Variáveis como Objetosb) Estruturas de Dados como Objetosc) Duck Typing3. Padrões Pythonicos Comunsa) Context Managers (with)b) List Comprehensionsc) F-strings (formatação elegante)d) Desempacotamento4. Quando Usar OOP em Python5. Exemplo ComparativoProblema: Calcular média de notas.Resumo jeito PythonicPython foi concebida desde o início para ser orientada a objetos?Todos os dados e variáveis são considerados objetos?Exemplo demonstrando que tudo é objeto:Resumo:Linguagem Interpretada1. Interpretação vs. Execução em Python2. Mecanismos que viabilizam projetos grandes em Pythona) Modularização e Pacotesb) Namespaces e Escopoc) Orientação a Objetos (OOP)d) Ferramentas de Gestão de Dependênciase) Documentação e Type Hintsf) Testes e Debuggingg) Compilação para Bytecode/Cython3. Desafios e Mitos4. Exemplo de Projeto Grande em PythonDjangoa) Desenvolvimento Web Backendb) Aplicações com Banco de Dadosc) Sistemas com Painel Administrativod) Projetos que Priorizam SegurançaConclusãoPara programadores em C, Pascal ou Matlab1. Para Programadores de C (Baixo Nível/Estruturas Rígidas)a) Gerenciamento Automático de Memória b) Tipagem Dinâmica vs. Estática c) Ausência de Ponteiros e Aritmética de Memória d) Performance 2. Para Programadores de Pascal (Estruturada/Fortemente Tipada)a) Sintaxe Mais Permissivab) Orientação a Objetos (OOP) Opcional c) Tipagem Forte, mas Dinâmica 3. Para Programadores de Matlab (Científico/Matricial)a) Índices Começando em 0 vs. 1 b) Operações Matriciais sem Sintaxe Dedicada c) Ambiente Interativo Diferente 4. Desafios Comuns a Todosa) Filosofia "Pythonica" b) Bibliotecas e Ecossistema c) Tratamento de Exceções vs. Verificações Rígidas Exemplo Prático: Soma de Elementos (C vs. Python)Como Superar Essas Dificuldades?ResumoReferências


Intro

Embora o Python tenha sido conceituado no final da década de 1980 e, após sua implementação em 1989, tenha emergido como uma nova plataforma de linguagem multiparadigma com o advento do Big Data. Python inclui várias estruturas de dados, bibliotecas padrão com a implementação de análise de sentimento e código de ciência de dados.

top_programming_languages_2024

Fonte da figura acima: The Top Programming Languages 2024: Typescript and Rust are among the rising stars, IEEE Spectrum, 22 Aug 2024.

Na busca por uma boa linguagem de programação na qual muitos aplicativos de ciência de dados possam ser desenvolvidos, o python surgiu como uma solução de programação completa. Devido à baixa curva de aprendizado e flexibilidade do Python, ele se tornou uma das linguagens que mais crescem. As bibliotecas em constante evolução do Python o tornam uma boa escolha para análise de dados [Nagpal & Gabrani, 2019].

Python é uma linguagem interpretada que se tornou mais comumente usada em aplicativos HPC (High-Performance and Scientific Computing). O Python se beneficia da capacidade de escrever módulos de extensão em C, que podem usar ainda mais bibliotecas otimizadas que foram escritas em outras linguagens compiladas. Para usuários de HPC, duas das extensões mais comuns são NumPy e mpi4py (MPI = Multiple Processes Instructions ou Programação Paralela) [Smith, 2016].

IEEE Spectrum: What Software Engineers Should Know About AI Jobs Today Stanford’s 2023 AI Index, mostra como estava o mercado de IA até final de 2022 (reportagem de Abril de 2023). Ressaltando os países que mais estavam oferecendo colocações da área de IA:

demandas_empregos_ia.jpg

Setores onde a demanda crescia (aprendizado de máquina) e outros diminuia (robótica):

job_postings_by_skill_cluster

E apontava Python como a linguagem mais escolhida:

top_specialized_skills.jpg

Um prática boa e eficaz associada com o aprendizado de uma linguagem de programação está relacionada com uso eficaz de fluxogramas como ferramenta de aprendizado. A capacidade dos alunos de resolver problemas usando fluxogramas é um bom preditor de sua capacidade de resolver problemas com Python. Isso significa que a maioria dos alunos que têm um bom desempenho usando fluxogramas terá um bom desempenho em Python. A maioria dos alunos achou o fluxograma mais fácil do que o Python (63%) e relatou que o fluxograma os ajudou a entender como escrever programas em Python (73%) [Cabo, 2018].

Mais sobre fluxogramas? Miro: Fluxogramas, Lucidchart: O que é um fluxograma? ou Wikipedia: Fluxograma.

Parallel Computing in Python using mpi4py (Stephen Weston, Yale Center for Research Computing, 2017).

Uso da biblioteca mpi4py-fft para cálculo da FFT (Fast Fourier Transform)

Python continua seu domínio como uma das principais linguagens de programação, mas é notório por ser lento, então alguns desenvolvedores de software recorrem a perfis - ferramentas que executam programas para determinar quais partes do código são lentas.

A IEEE Spectrum em Python Profiler Links to AI to Improve Code cita o uso do Scalene que identifica ineficiências num código Python requisitando sugestões ao GPT-4 (implica uso de uma API: OpenAI key, para seu uso). Você pode testar um demo de uso em [https://plasma-umass.org/scalene-gui/]. O Scalene, um perfil Python que não apenas identifica ineficiências no código, mas também recomenda como esse código pode ser melhorado, com a ajuda da IA. O Scalene traça simultaneamente o uso de três componentes de hardware: CPU, GPU e memória. Além disso, o perfilador de memória do Scalene emprega um algoritmo de amostragem que distingue entre o consumo de memória derivado de uma biblioteca de código nativo subjacente versus o próprio interpretador Python. Este processo revela instâncias em que os codificadores podem mudar para código nativo para melhorar o desempenho. O perfilador de memória identifica automaticamente linhas de Python ou código nativo que provavelmente resultarão nos chamados vazamentos de memória. Um vazamento de memória acontece quando um programa aloca memória, a usa e depois deixa de livrá-la. Isso pode afetar o desempenho de um programa, reduzindo a quantidade de memória disponível. Outra métrica chamada volume de cópia também é rastreada. Ele detecta operações de cópia caras e muitas vezes inadvertidas que ocorrem quando o Python converte entre representações de dados nativas e Python. O que faz a Scalene se destacar de seus pares é sua integração com a IA. Por meio de sua interface de usuário baseada na Web, o perfil Python mostra um detalhamento de nível de linha e por função do uso de CPU e memória e, com o clique de um botão, envia o código para o modelo de linguagem grande GPT-4 do OpenAI, solicitando que ele produza uma versão otimizada do código.

Qual é a idéia do Python?

A principal ideia por trás da linguagem de programação Python é legibilidade, simplicidade e produtividade. Guido van Rossum, o criador do Python (1998), projetou a linguagem com os seguintes princípios em mente:

  1. Código legível e limpo – Python usa indentação obrigatória e uma sintaxe clara para tornar o código mais fácil de ler e escrever.
  2. Produtividade – A linguagem permite resolver problemas com menos código em comparação a linguagens como C++ ou Java.
  3. Multiparadigma – Python suporta programação procedural, orientada a objetos (OOP) e funcional, embora não seja estritamente limitada a qualquer um desses paradigmas.
  4. Tipagem dinâmica e forte – Variáveis não precisam ser declaradas com um tipo, mas os tipos são verificados em tempo de execução.
  5. Bibliotecas incluídas – A biblioteca padrão do Python é extensa e oferece módulos para tarefas comuns, reduzindo a necessidade de código externo.

"Jeito Python" de programas (Pythonic)

O "jeito Python" de programar é guiado por princípios conhecidos como "Pythonic", que refletem a filosofia do Python, resumida no documento "The Zen of Python" (acessível digitando import this no interpretador). Seguem-se os conceitos-chave:

1. Princípios do Código Pythonico

a) Legibilidade acima de tudo

b) "Explícito é melhor que implícito"

c) "Simple is better than complex"

d) "Don’t reinvent the wheel"

2. Abstração em Objetos

Em Python, tudo é objeto (inteiros, strings, funções, módulos, etc.), e a linguagem incentiva o uso de OOP, mas não força seu uso exclusivo.

a) Variáveis como Objetos

b) Estruturas de Dados como Objetos

c) Duck Typing

3. Padrões Pythonicos Comuns

a) Context Managers (with)

b) List Comprehensions

c) F-strings (formatação elegante)

d) Desempacotamento

4. Quando Usar OOP em Python

5. Exemplo Comparativo

Problema: Calcular média de notas.

Resumo jeito Pythonic

O "jeito Python" combina:

  1. Legibilidade (código claro e explícito).
  2. Abstração orientada a objetos (tudo é objeto, mas OOP não é obrigatório).
  3. Utilização de recursos da linguagem (comprehensions, funções embutidas, context managers).

Python permite multi-paradigma, mas o estilo "Pythonic" prioriza simplicidade e elegância.

 

Python foi concebida desde o início para ser orientada a objetos?

Não exatamente. Python foi criada para ser uma linguagem multiparadigma, permitindo programação procedural, funcional e orientada a objetos. No entanto, o suporte a OOP foi incorporado desde o início, e quase tudo em Python é um objeto (como veremos abaixo). A linguagem não força o uso de OOP, mas facilita seu uso quando necessário.

Todos os dados e variáveis são considerados objetos?

Sim! Em Python, tudo é um objeto. Isso inclui:

Até mesmo tipos primitivos, como int e float, são objetos em Python, com métodos associados (ex.: (5).bit_length()).

Exemplo demonstrando que tudo é objeto:

Resumo:

Linguagem Interpretada

Mesmo sendo uma linguagem interpretada, Python é amplamente utilizado em projetos grandes e complexos. Existem mecanismos permitem que Python seja eficiente mesmo em código extensos.

1. Interpretação vs. Execução em Python

2. Mecanismos que viabilizam projetos grandes em Python

a) Modularização e Pacotes

b) Namespaces e Escopo

c) Orientação a Objetos (OOP)

d) Ferramentas de Gestão de Dependências

e) Documentação e Type Hints

f) Testes e Debugging

g) Compilação para Bytecode/Cython

 

3. Desafios e Mitos

 

4. Exemplo de Projeto Grande em Python

Django

Django é um framework Python de alto nível, projetado para o desenvolvimento rápido de aplicações web seguras e escaláveis. Ele segue o princípio "Baterias incluídas" (oferece tudo o que você precisa "de fábrica") e o padrão MVT (Model-View-Template), uma variação do MVC (Model-View-Controller).

Django é usado principalmente para:

a) Desenvolvimento Web Backend
b) Aplicações com Banco de Dados
c) Sistemas com Painel Administrativo
d) Projetos que Priorizam Segurança

 

Conclusão

Python é perfeitamente viável para projetos grandes graças a:

  1. Modularização eficiente (módulos/pacotes).
  2. Ferramentas modernas (venv, pytest, type hints).
  3. Comunidade ativa (boas práticas, PEPs).
  4. Performance gerenciável (Cython, bibliotecas em C).

Se organizado corretamente, um sistema em Python pode ser tão robusto quanto em linguagens compiladas, com a vantagem da produtividade e legibilidade.


Para programadores em C, Pascal ou Matlab

Para programadores vindos de C, Pascal ou Matlab, a transição para Python pode apresentar desafios específicos devido às diferenças de paradigmas, sintaxe e filosofia de design. Abaixo estão as maiores dificuldades categorizadas por linguagem de origem.

1. Para Programadores de C (Baixo Nível/Estruturas Rígidas)

a) Gerenciamento Automático de Memória

b) Tipagem Dinâmica vs. Estática

c) Ausência de Ponteiros e Aritmética de Memória

d) Performance

 

2. Para Programadores de Pascal (Estruturada/Fortemente Tipada)

a) Sintaxe Mais Permissiva

b) Orientação a Objetos (OOP) Opcional

c) Tipagem Forte, mas Dinâmica

 

3. Para Programadores de Matlab (Científico/Matricial)

a) Índices Começando em 0 vs. 1

b) Operações Matriciais sem Sintaxe Dedicada

c) Ambiente Interativo Diferente

 

4. Desafios Comuns a Todos

a) Filosofia "Pythonica"

b) Bibliotecas e Ecossistema

c) Tratamento de Exceções vs. Verificações Rígidas

 

Exemplo Prático: Soma de Elementos (C vs. Python)

 

Como Superar Essas Dificuldades?

  1. Para programadores C:

    • Estudar o modelo de objetos do Python (tudo é referência).
    • Use ctypes ou Cython para integrar código C.
  2. Para programadores Pascal:

    • Praticar OOP com classes simples.
    • Aproveitar a legibilidade do Python (similar ao Pascal).
  3. Para programadores Matlab:

    • Dominar NumPy e pandas para substituir operações matriciais.

    • Adotar Jupyter para um fluxo interativo.

Livro recomendado: Fluent Python (Ramalho, 2022) para entender o "jeito Python" avançado.

 

Resumo

A maior barreira não é a sintaxe, mas a mudança de mentalidade:


Referências

➡︎ Livros bastante interessantes podem ser baixados à partir de: FreeComputerBooks.com. Em especial, sugiro uma "espiada" no tópico Top Free Books.

Por exemplo:

➡︎ Página WEB interessante: The Hitchhiker´s Guide to Pyton (disponível em pt-BR). Do livro O Guia do Mochileiro para Python (ver mais abaixo). 😃

➡︎ Documentação oficial Python, ou Documentação Python 3.8.20 (pt-BR).

Outras Sugestões:


Fernando Passold, em 05/04/2025