“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