``KTHXBAI, MATLAB!`` Migrando a Academia para o Python

Propaganda
“KTHXBAI, MATLAB!”
Migrando a Academia para o Python
Melissa Weber Mendonça
1/ 25
pythonbrasil[9]
Quem (não) sou eu?
:)
2/ 25
O que estou fazendo aqui?
Pedindo ajuda!
3/ 25
MATLABR
Linguagem de alto nı́vel e um ambiente interativo para
computação numérica, visualização e programação.
4/ 25
MATLABR
Linguagem de alto nı́vel e um ambiente interativo para
computação numérica, visualização e programação.
4/ 25
Estado atual das coisas
“Todo mundo usa MATLAB por que todo mundo usa MATLAB”
5/ 25
Estado atual das coisas
“Todo mundo usa MATLAB por que todo mundo usa MATLAB”
“Já que temos a licença, vamos usar”
5/ 25
Estado atual das coisas
“Todo mundo usa MATLAB por que todo mundo usa MATLAB”
“Já que temos a licença, vamos usar”
“Não tenho tempo para aprender outra linguagem”
5/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
Prototipagem rápida
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
Prototipagem rápida
Biblioteca enorme de rotinas básicas
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
Prototipagem rápida
Biblioteca enorme de rotinas básicas
Debugagem/controle de variáveis muito fácil (e visual)
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
Prototipagem rápida
Biblioteca enorme de rotinas básicas
Debugagem/controle de variáveis muito fácil (e visual)
Profiler, mlint, autocomplete, IDE: “Fácil”, “bonito” (?)
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
Prototipagem rápida
Biblioteca enorme de rotinas básicas
Debugagem/controle de variáveis muito fácil (e visual)
Profiler, mlint, autocomplete, IDE: “Fácil”, “bonito” (?)
GPU’s, paralelização
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
Prototipagem rápida
Biblioteca enorme de rotinas básicas
Debugagem/controle de variáveis muito fácil (e visual)
Profiler, mlint, autocomplete, IDE: “Fácil”, “bonito” (?)
GPU’s, paralelização
Gráficos: visualizar (e editar!) gráficos no momento da
execução
6/ 25
Por que se usa MATLAB?
Stack cientı́fico completo vs.
Python+NumPy+Scipy+matplotlib+ipython
Toolboxes
Prototipagem rápida
Biblioteca enorme de rotinas básicas
Debugagem/controle de variáveis muito fácil (e visual)
Profiler, mlint, autocomplete, IDE: “Fácil”, “bonito” (?)
GPU’s, paralelização
Gráficos: visualizar (e editar!) gráficos no momento da
execução
Documentação: Help
6/ 25
Por que não usar MATLAB?
Código fechado
7/ 25
Por que não usar MATLAB?
Código fechado
Caro
7/ 25
Por que não usar MATLAB?
Código fechado
Caro
Não é uma linguagem de
uso geral
7/ 25
Por que não usar MATLAB?
>> x = int8(100)
x =
100
>> y = 400
y =
400
>> z = x+y;
>> z
z =
127
WAT?
8/ 25
Detalhes (nem tão pequenos)
() vs. []: Permite visualizar a diferença entre acessar
elementos e fazer uma chamada de função.
9/ 25
Detalhes (nem tão pequenos)
() vs. []: Permite visualizar a diferença entre acessar
elementos e fazer uma chamada de função.
Funções e classes podem ser definidas em qualquer
lugar, inclusive na linha de comando (no MATLAB,
precisam estar em arquivos isolados)
9/ 25
Detalhes (nem tão pequenos)
() vs. []: Permite visualizar a diferença entre acessar
elementos e fazer uma chamada de função.
Funções e classes podem ser definidas em qualquer lugar,
inclusive na linha de comando (no MATLAB, precisam estar
em arquivos isolados)
Legibilidade
9/ 25
Detalhes (nem tão pequenos)
() vs. []: Permite visualizar a diferença entre acessar
elementos e fazer uma chamada de função.
Funções e classes podem ser definidas em qualquer lugar,
inclusive na linha de comando (no MATLAB, precisam estar
em arquivos isolados)
Legibilidade
Python tem estruturas de dados melhores: dicionários
9/ 25
Detalhes (nem tão pequenos)
() vs. []: Permite visualizar a diferença entre acessar
elementos e fazer uma chamada de função.
Funções e classes podem ser definidas em qualquer lugar,
inclusive na linha de comando (no MATLAB, precisam estar
em arquivos isolados)
Legibilidade
Python tem estruturas de dados melhores: dicionários
Namespaces; import
9/ 25
Broadcasting
Se A é 20 × 1 × 15, B é 20 × 12 × 1, C é 1 × 12 × 15, no MATLAB
terı́amos
D = bsxfun(@times, bsxfun(@minus,B,C), A);
e em Python
D = A*(B-C)
10/ 25
Índices
“A Case against the GO TO
Statement”
Odiava BASIC
“Why numbering should start
at zero”
Dijkstra
11/ 25
MEX files
12/ 25
MEX files
f2py
12/ 25
Desempenho
C, C++, Fortran (sim, eu uso Fortran :))
Python tem um desempenho melhor naturalmente!
13/ 25
Comunidade
Vocês!
Nós :)
14/ 25
Muito além da técnica...
Open Science
15/ 25
Muito além da técnica...
Open Science
Reprodutibilidade
15/ 25
Muito além da técnica...
Open Science
Reprodutibilidade
Universidades Públicas
15/ 25
?
16/ 25
Impedimentos
Técnicos (bem poucos!)
17/ 25
Impedimentos
Técnicos (bem poucos!)
Humanos
17/ 25
Cultura Acadêmica
Na academia a teoria não é o problema; o conservadorismo é
pior.
18/ 25
Cultura Acadêmica
Na academia a teoria não é o problema; o conservadorismo é
pior.
Publicações usando Python
18/ 25
Cultura Acadêmica
Na academia a teoria não é o problema; o conservadorismo é
pior.
Publicações usando Python
Converter alunos e depois converter professores!
18/ 25
Matemática
Purismo
19/ 25
Matemática
Purismo
Isolamento
19/ 25
Matemática
Purismo
Isolamento
Código raramente compartilhado (às vezes, escondido de
propósito!)
19/ 25
Matemática
Purismo
Isolamento
Código raramente compartilhado (às vezes, escondido de
propósito!)
“Implementação é detalhe”
19/ 25
“Introdução à Computação Cientı́fica”
Ciência da Computação
(só computação, sem matemática)
vs.
“Computação Cientı́fica”
(só matemática, sem computação)
20/ 25
Casos de sucesso
21/ 25
Casos de sucesso
21/ 25
Do que precisamos?
Material didático
22/ 25
Do que precisamos?
Material didático
Troca de experiências
22/ 25
Do que precisamos?
Material didático
Troca de experiências
Documentação
22/ 25
Do que precisamos?
Material didático
Troca de experiências
Documentação
Ambientes amigáveis multiplataformas
22/ 25
Exemplos
“Janelinha branca”
StackOverflow
... tudo em inglês!
23/ 25
Ajudem-me a migrar a academia
para o Python!
24/ 25
Contato
@melissawm
www.mtm.ufsc.br/˜melissa
25/ 25
Download