O que é Jupyter Notebooks?
Jupyter Notebook é um ambiente de computação de código aberto que combina execução de código ao vivo em linguagens como Python, R e Julia, rich text, fórmulas matemáticas e visualizações de dados em um único documento interativo da web.
Nascimento, filosofia e programação literária
Os Jupyter Notebooks são o ambiente de trabalho padrão da ciência de dados moderna, do aprendizado de máquina e da pesquisa acadêmica. Nascidos da evolução do projeto IPython (Interactive Python), iniciado por Fernando Perez em 2001, o Project Jupyter surgiu em 2014 como uma estrutura independente.
A origem do nome é uma referência de dois significados:
- A combinação das letras de Julia, Python e R, as três linguagens de código aberto pioneiras na computação científica.
- Respeito pelos cadernos mantidos pelo astrônomo Galileu Galilei enquanto explorava as luas de Júpiter em 1610.
Filosoficamente, baseia-se no princípio da "Programação Literária" (Literate Programming), cunhado pelo cientista da computação Donald Knuth: os programas não devem ser escritos apenas para serem executados por máquinas, mas principalmente para que os seres humanos possam lê-los e seguir sua cadeia de raciocínio. O Jupyter une suas hipóteses, código, gráficos visuais e conclusões em um único documento dinâmico.
Arquitetura do sistema: Cliente, servidor e kernel
A infraestrutura Jupyter opera em uma arquitetura de três camadas fracamente acoplada:
- Cliente (Interface Web): É o front-end em JavaScript/HTML5 executado no seu navegador (JupyterLab ou interface clássica) que permite editar, executar e visualizar as saídas das células.
- Servidor Jupyter (Servidor Web baseado em Tornado): É o backend que é executado na sua máquina local ou em um servidor remoto, gerencia o sistema de arquivos, coordena sessões e fornece conexões WebSocket.
- Kernel: É a linguagem isolada que executa o código de fato. Por exemplo, ipykernel para Python, IRkernel para R e IJulia para Julia. A comunicação entre o servidor e o kernel ocorre em formato JSON através de sockets de mensagens ZeroMQ, que são padrão da indústria.
Estrutura interna do arquivo .ipynb: Embora a extensão dos documentos Jupyter seja .ipynb, eles são, na verdade, arquivos JSON hierárquicos. O tipo de cada célula (code, markdown), a ordem de execução (execution_count), o código-fonte (source) e as saídas geradas (outputs · texto, HTML, gráficos PNG no formato Base64) são armazenados neste objeto JSON.
O poder da ciência de dados e as armadilhas da engenharia de software
- Análise Exploratória de Dados (EDA): Depois que os cientistas de dados carregam um enorme conjunto de dados na memória uma única vez, eles podem realizar a limpeza de dados, o treinamento de modelos e a visualização com Matplotlib/Seaborn/Plotly em diferentes células, sem precisar repetir a etapa de carregamento na memória que leva horas.
- Risco de Estado Oculto (Hidden State): A capacidade de executar as células em ordem aleatória em vez de de cima para baixo (execução fora de ordem) pode deixar estados de variáveis invisíveis na memória. Isso pode fazer com que outra pessoa obtenha resultados diferentes ou receba erros ao executar o mesmo notebook ("crise de reprodutibilidade").
- Desafios do Controle de Versão (Git): Como os arquivos .ipynb contêm saídas ricas e gráficos em Base64, é difícil analisar diferenças de linhas (diff) e resolver conflitos de mesclagem (merge conflict) no Git. Para superar esse problema, são utilizadas ferramentas como o jupytext (uma ferramenta que sincroniza o notebook com Markdown limpo ou scripts Python) e o nbdime.
Perguntas e respostas
O que significa Jupyter Notebook e de onde vem seu significado?
Nome Júpiter; Julia é derivada das primeiras letras das linguagens de programação Python e R e uma referência às notas de observação de Júpiter do astrônomo Galileu. É um notebook interativo com código ao vivo e rich text.
Qual é a diferença entre o Jupyter Notebook e um arquivo Python padrão (.py)?
Arquivos .py são códigos de texto puro que são compilados e executados em uma única peça do início ao fim. .ipynb, por outro lado, é uma estrutura JSON que pode executar o código em células segmentadas e armazenar saídas, tabelas e gráficos diretamente abaixo do código.
Qual é a relação entre o Google Colab e o Jupyter Notebook?
O Google Colab é uma variante de nuvem proprietária da infraestrutura do Jupyter Notebook que roda na nuvem do Google, oferece aceleração gratuita de hardware GPU e TPU e não requer instalação.
Como garantir código limpo e controle de versão no Jupyter Notebook?
A melhor abordagem é limpar as saídas das células (Limpar todas as saídas) antes de enviar os códigos para o repositório, executar novamente as células sequencialmente de cima para baixo e tornar o formato do arquivo versionável com ferramentas como jupytext.
Termos relacionados
Ferramentas relacionadas
Esta explicação foi escrita em linguagem simples para a TreScout com IA e traduzida automaticamente do original em turco · a versão turca é a que vale. Se algo parecer errado ou faltando, escreva para hello@trescout.com. Ler em turco →