Oi gente, o meu nome é Eduardo Ochs, e o
título desse vídeo é "Convite: Maxima".
Deixa eu começar explicando o que que é
o Maxima: o Maxima é um sistema de
computação simbólica, tipo Mathematica,
Maple, mas menos famoso... e ele é software
livre - é gratuito.
E aqui tem um exemplo de como usar ele.
A maior parte das pessoas usam ele
com interfaces mais bonitas, gráficas e
não sei que, mas eu passei anos tentando
usar aquelas interfaces, e eu não conseguia
lembrar de tudo... e eu gosto mais dessa
interface feia porque ela me permite
criar links pra documentação, pra
exemplos, e coisas assim.
Então... eu tou dentro do Emacs, e quando eu
rodei essas três linhas daqui ele dividiu a
janela em duas subjanelas, e aqui na
janela da direita ele abriu uma sessão
do Maxima.
Eu tanto posso dar comandos aqui
explicitamente, como posso bater F8 aqui...
e aí ele manda a linha em que eu tou pro
Maxima como se o usuário tivesse
digitando aquela linha toda de uma vez.
E aí quando eu mandei esse comando aqui,
plot2d, o Maxima chamou um programa
externo, GNUPlot, para fazer o gráfico de
uma função, e quando eu mando esse
comando daqui, plot3d, ele faz esse
gráfico 3D da função, que eu posso até rodar.
Agora um segundo exemplo, tá... uma
das utilidades do Maxima é fazer contas
que são chatas. Então ao invés da gente
ter que fazer páginas e páginas de contas na
mão o Maxima faz elas pra gente.
Deixa eu dar um exemplo. Eu tou dando Cálculo 2,
e uma das questões da prova que eu dei
outro dia era uma integral bem chata de
fazer... essa daqui, ó.
Eu ainda não fiz o
gabarito LaTeXado dessa questão mas
eu fiz uma espécie de gabarito em Maxima
dela. Quando eu rodo ele em Maxima - ele tá
aqui, desculpa pela letra pequenininha...
repara, aqui eu dou a função
original, que é x vezes essa raiz
quadrada daqui, e aí eu boto ela dentro
de uma integral, e aí depois vou
transformando essa integral de vários
jeitos diferentes... e em todos os passos
em que eu chego em um resultado que
merece ser guardado eu guardo esse
resultado dentro de uma variável.
E aí nesse último passo daqui eu crio uma
matriz, que nós, que somos humanos, vamos
ver ela com uma série de igualdades,
que diz que essa integral daqui é igual
a essa integral, que é igual a essa, que é
igual a essa, etc, até a gente voltar para
essa expressão aqui, que não tem sinal de
integral e já tá de volta na variável
original. Pro Maxima iso é simplesmente
uma matriz em que em algumas
entradas dela tem
expressões matemáticas, outras entradas
não tem nada, e outras têm um sinal de
igual.
Deixa dar um exemplo de como eu
botei isso na prova, no gabarito...
pouquíssima coisa que eu faço é feita pra
ser impressa, em geral os alunos acessam
os pdfs nos celulares deles, e aí eu
posso botar coisas bem pequenininhas,
eles não têm problema nenhum para dar
zoom nessas coisas... então aquele passo
final que gerou aquela matriz que eu
interpreto como uma série de igualdades
gera isso daqui, tá... e os outros passos
estão aqui para quem quiser ver o
passo a passo sem ter que rodar Maxima
na sua própria casa.
Então, voltando, eu ainda não expliquei
pra que que é o convite. Deixa eu
explicar isso em duas partes. A primeira
é uma introdução.
Eu trabalho num campus pequeno
da UFF. A sede da UFF é em Niterói, lá no
estado do Rio, e esse Campus pequeno
é no interior, numa cidade chamada Rio
das Ostras. O campus em que eu trabalho é
um lixo. A gente tem dois cursos de exatas,
que são Ciência da Computação e
Engenharia de Produção, e eles não têm
nenhuma disciplina que use Linux, os
nossos únicos laboratórios com Linux são
no Instituto de Humanidades e Saúde, não
no Instituto de Ciência e Tecnologia...
e, resumindo muito, mas deixa eu já avisar
que vai ser naquele esquema de
"resumiu tanto que ficou quase errado"...
Durante a greve, em que eu dei umas
oficinas de Software Livre, eu descobri
que os nossos estudantes de Psicologia e
Produção Cultural têm muito mais
curiosidade por programação do que os
nossos estudantes de exatas... Parece que
toda vez que eles vêem uma
interface estranha ou uma
linguagem exótica ao invés deles ficarem
curiosos eles ficam com cara de: Ai meu
Deus, ai meu Deus, será que eu vou ter que
aprender isso???...
Então, bom, voltando. Segunda parte do
"O convite é pra quê?". É o seguinte: eu
tou trabalhando num modo de instalar
tudo isso no Windows em que a gente
primeiro instala o WSL, que é o Windows
Subsystem for Linux,
que é uma espécie de emulador ou
virtualizador de Linux que é feito pela
própria Microsoft...
E aí depois a gente instala uma versão
do Linux - o Debian - instala o Emacs,
instala o eev, instala o Maxima... e em
algum momento essas minhas instruções de
instalação vão ficar melhores ainda do
que já estão agora e vão caber em uma
hora... alguns meses atrás elas
levavam duas horas tinham pedaços
horríveis, agora já têm uma hora e
pouquinho, e eu já consegui tirar quase
todas as partes chatas... e aqui nessa
página tem um mapinha da parte
inicial das instruções. Esse mapinha é
uma das coisas que eu quero melhorar.
Nesse diagrama 2D daqui várias coisas
são links... então se eu clico aqui eu vou
pro meu tutorial chamado
find-windows-beginner-intro,
aí aqui tem uma introdução que
não interessa agora, depois tem as
instruções para instalar o WSL, o Debian
e o Emacs...
lembrem que isso é ajustado pra pessoas
que nunca viram um terminal na vida...
e aí a partir desse momento daqui, em que
a gente inicia o Emacs, todo o resto é
feito no Emacs, inclusive... lembrem dessa
interface daqui, em que eu rodo terminais
dentro do Emacs, tá... então em vez de rodar
um terminal externo e ter que decorar
coisas e copiar e colar coisas
complicadas a gente basicamente manda
coisas pro terminal com F8.
Então, aqui tem links pras outras
instruções, e em algumas coisas aqui
que têm instruções um pouco mais
complicadas eu aponto para vídeos...
por exemplo, assim que a gente entra
no Emacs a gente tem que instalar o eev,
e o package manager do Emacs tem
uma interface que eu acho meio
esquisita... então eu preparei um vídeo
explicando isso, e esse link daqui... ele
vai para uma determinada posição do
vídeo - 00:39, aqui...
essa página aqui tem as legendas
do vídeo - repara que a gente já pulou
pra cá... e se a gente clicar nesses links
daqui a gente abre o vídeo no YouTube.
Só que ninguém tem paciência para isso, né,
porque leva 30 segundos pra abrir o vídeo
no YouTube, é chatérrimo... então a gente
precisa de alternativas melhores para isso.
Esse esquema do link pro YouTube até
funciona, mas ele é precário...
e o esquema melhor
usa coisas tipo isso aqui pra
apontar direto para vídeos... então...
Tem um exemplo aqui, ó.
Esse link daqui é parecido com o
link que eu mostrei agora há pouco, que é
pras legendas de um vídeo - ele abre o
vídeo, a página das legendas, no browser.
esse link aqui ele baixa uma cópia local
do vídeo... isso às vezes demora um
pouquinho, porque são, sei lá, 30MB...
E a partir do momento em que a gente já tem
uma cópia local tocar a cópia local é muito
rápido. Então quando eu rodo esse link
daqui ele começa a tocar esse vídeo
a partir dessa posição - 10:54.
Então, voltando... deixa eu voltar aqui
pro mapa...
A ideia é que a gente instala o eev
com a interface estranha que tá
explicada no vídeo, depois a gente roda
um comando chamado eev-beginner, e esse
comando vai abrir pra gente o tutorial
principal do eev...
e o tutorial principal ele tem essa
cara daqui...
e as pessoas vão poder pular a seção 1,
que é sobre instalação, vão começar na
seção 2, e nessa seção 2 elas
aprendem que o Emacs
na verdade ele é um ambiente Lisp...
Lisp é essa linguagem em que as
expressões são cercadas de parênteses,
e é sempre o nome do comando e
depois os argumentos do comando... e aí a
gente aprende a executar expressões, a
executar subexpressões, e não sei quê...
e na seção seguinte a gente aprende a
lidar com hiperlinks de vários tipos.
Agora, se a gente tá instalando
isso pela primeira vez e a gente ainda
não instalou o browser, a gente só seguiu
essa parte daqui da instalação,
tem alguns hiperlinks
que não vão funcionar nessa seção 3,
onde eu explico como usar hyperlinks que
abrem o Google Chrome ou abrem outro
browser, e se a gente ainda não tiver o
browser instalado esses links só vão
funcionar na versão htmlizada da página.
Repara, isso que eu tou mostrando aqui...
repara que começa com "Installing eev"...
é muito parecido com que tá aqui... então
isso aqui é como a gente acessa esse
tutorial dentro do Emacs, e isso aqui é a
versão que a gente acessa dentro do browser.
Então num primeiro momento
muitos tipos de links vão funcionar no
browser e nem todos vão funcionar dentro
do Emacs - a gente precisa configurar
algumas coisas pra eles funcionarem...
por exemplo, a gente precisa
instalar o Google Chrome, precisa
configurar o eev pra usar o Google
Chrome, e precisa depois instalar o MPV,
que é um player de vídeos.
Então, pra quem tá começando agora
se as pessoas se perderem no meio dessas
instruções e começarem a rodar aquele
tutorial elas não vão ter rodado esse
trecho daqui, que usa aquele truque de
rodar um terminal dentro do próprio Emacs...
e esses trechos daqui são os trechos
que instalam um monte de pacotes
que estão faltando - instalam o Maxima,
instalam o Google Chrome, coisas assim...
se elas conseguirem instalar isso beleza,
um monte de coisas vão funcionar...
Então, voltando, o lance é que
tem uma primeira parte das instruções
que é praticamente linear - as pessoas têm
que chegar até aqui, e aí elas começam a
rodar o tutorial, e a partir daí cada
pessoa começa a querer ir para uma
direção completamente diferente...
isso acaba funcionando que nem aqueles
livros que têm um mapa dos capítulos,
tipo isso aqui, dizendo que as
dependências dos Capítulos são tipo essas,
se você quer seguir esse caminho daqui
você provavelmente até consegue
passar direto do Capítulo 5 pro Capítulo
8 mas talvez você precise desses outros
capítulos daqui... e sei lá, várias coisas
assim...
e basicamente...
nas últimas semanas eu comecei a dar
um tutorial de um proof assistant chamado
Lean, que as pessoas usam pra formalizar
provas, e é um tutorial também feito
pra pessoas que nunca usaram nada
parecido com isso antes, então eu fui
limpando as instruções de instalação do
Lean de um jeito muito parecido com as
instruções de instalação daqui do
Maxima... e aí com o feedback das pessoas
eu consegui melhorar muito a documentação
de algumas partes que as pessoas achavam
difíceis...
o Emacs usa algumas teclas estranhas,
então como é que você faz quando você
ainda não decorou essas teclas estranhas?
Um exemplo é o seguinte, aqui... ao invés
de você decorar as teclas você simplesmente
lembra que aqui no Emacs se você estiver no
modo principiante você vai ver essas coisas
aqui em cima, a menu bar e a tool bar,
e você pode entrar em submenus daqui e
ele vai te dizer algumas opções comuns...
ações comuns e as teclas pra elas, então
você não precisa decorar as teclas, basta
você lembrar onde procurar elas aqui...
e algumas coisas como copiar, cortar e
colar tem aqui nessa segunda barra
também...
Então isso é um truque. O outro truque
que eu usei é que depois que as pessoas
aprendem a copiar e colar elas podem
pegar um determinado uma determinada
seção que tem um monte de coisas que
elas deveriam aprender, aqui... e elas
podem marcar essa coisa daqui e copiar
pro arquivo de anotações delas...
o meu arquivo tá cheio de lixo então
deixa eu copiar para um lugar qualquer...
bom, e aí a partir daí a gente fica com
anotações executáveis, em que a gente pode
deletar as linhas que não interessam mais,
pode adicionar comentários, pode
acrescentar links novos e coisas assim...
o outro truque é que enquanto a
gente não sabe quase nada o melhor é a
gente abrir vários links em abas do
browser... então em cada tab desses a gente
vai ter um link com informações
importantes - por exemplo, se a gente
precisar lembrar das teclas pra copiar
e colar a gente pode vir pra cá, e se a
gente precisar lembrar do outro jeito
de aprender isso ele tá nessa seção 3...
se a gente precisar das teclas
que dividem uma janela em duas, ou em
três, ou desdividem, ou dividem desse
jeito, ou mudam pra outra janela, ou
sei, lá coisas assim, a gente pode ver
esses comandos aqui, e a gente pode
seguir esses links daqui, que vão pro
manual do Emacs, que é gigantesco...
então isso aqui vai pra uma determinada
seção do manual do Emacs.
Então, eu tou tentando organizar essa
coisa daqui pra que as pessoas possam
seguir vários caminhos diferentes
sem se perder, e eu tô inventando alguns
truques novos e fazendo páginas com
esses truques para principiantes, em que
eu tou botando um monte de screenshots...
por exemplo, isso aqui é uma coisa que
as pessoas têm que aprender bem no início...
aí eu explico com um pouquinho de texto e
boto um screenshot...
e agora eu... eu vi que quando eu
converso com alguém, quando eu ajudo
alguém a entender essas coisas e
eu vou vendo as dúvidas da pessoa eu
consigo produzir documentação muito
melhor e muito mais rápido do que se se
eu tiver que fazer tudo sozinho...
então, voltando. O convite que eu
tou fazendo é o seguinte: se vocês acharem
essa história interessante, se vocês
acharem que vale a pena aprender Maxima,
e se vocês acharem que essas instruções
não estão muito apavorantes, por favor
falem comigo, e aí eu ajudo vocês
por, sei lá, WhatsApp, Telegram... e eu
vou tirando todas as dúvidas e as
dúvidas de vocês vão me ajudar muito a
melhorar as próximas versões da
documentação.
Então, se vocês acharem isso legal, pelo amor de
Deus falem comigo, e quando vocês tiverem
uma hora e pouco livres a gente instala
isso no computador, vocês já aprendem
um monte de truques bacanas, e pra
próxima pessoa isso vai levar menos do
que uma hora e pouco, talvez leve só uma
hora, sei lá...
e ainda tem um outro truque,
que eu ainda não mostrei e que eu acho
que é muito bacana, que é o seguinte...
quando eu executo esse link daqui ele
abre um arquivo que tá no meu computador
e ele procura a primeira ocorrência
dessa coisinha daqui nele... que é o string
"eev-demo" dentro desses
double angle brackets verdes daqui.
Quando as pessoas instalam isso eu
sugiro que elas façam uma determinada
configuração que vai fazer essa função
daqui agir de um jeito diferente...
ao invés dela abrir um arquivo que tá no
seu computador ela vai baixar um arquivo
que tá na rede, que é a cópia
pública dessas anotações daqui...
lembrem, são as anotações que criam
esses diagraminhas...
elas não vão gravar isso no disco,
isso vai ficar só na memória, e elas vão
procurar o bloquinho que tem isso, e aí
vocês vão poder executar o bloquinho
mesmo sem ter que fazer uma cópia do
arquivo.
E eu tô usando isso muito com os meus
alunos - quer dizer, com os quatro ou cinco
alunos que já se interessaram em
aprender essas coisas - quando eles têm
alguma dúvida... por exemplo, eles perguntam
como é que eu crio uma tabela no Maxima,
que tenham um header e depois
várias linhas parecidas?...
eu digo: vá pro lugar tal! E eu mando um link
tipo esse daqui pra pessoa, possivelmente por
Telegram, a pessoa copia pro Emacs, executa
ele, e aí ela vê as minhas anotações...
Então, a graça é a seguinte...
repara, aqui eu tou no meio do meu arquivo
de anotações, em 49% dele, na linha
8000 e muito dele... esse arquivo
atualmente tem 18000 linhas.
Tem alguns tipos de links aqui que eu não
expliquei, mas vários desses tipos de link vão
funcionar automaticamente assim que a
pessoa instala o básico no computador dela.
Então, por exemplo...
esse link daqui vai pro manual do Maxima
na seção que explica a função "depends",
que eu uso nesse bloquinho daqui...
E aí com isso as pessoas conseguem
consultar o manual... e esses links também
funcionam na na versão htmlizada, mas eu não
quero mostrar isso agora...
tem uns links que apontam pra mailing list
do Maxima, deixa eu ver se se eu encontro
algum aqui...
sim! Deixa eu abrir isso aqui, ó...
isso aqui abre uma mensagem da
lista de discussão do Maxima no browser...
aqui tem uma pergunta que eu fiz, e
a gente pode seguir as respostas das
pessoas, e coisas assim...
então, voltando. Eu não consegui usar as
interfaces padrão do Maxima porque elas
parecem ser feitas para pessoas que têm
uma memória incrível, que lêem manuais
enormes e conseguem decorar tudo... mas
para mim essa interface funcionou muito
bem, porque eu consigo guardar links
pra tudo que me interessa, pra onde
tem outras anotações sobre uma
determinada função que eu tô usando,
pros exemplos, e coisas assim...
e agora eu tou adaptando isso para isso
ficar muito fácil de usar. Já tem
alguns casos de sucesso de pessoas que
com uma hora e pouco usando isso ficaram
empolgadíssimas...
e, gente, por favor, não é 100% garantido
que vocês vão gostar disso, talvez vocês
achem a pior coisa do mundo...
mas se vocês acharem legal por favor
falem comigo, porque tem bastante
gente - bastante assim, tipo, sei lá,
seis ou sete pessoas -
que instalaram isso, acharam super legal
e ajudar essas pessoas me ajudou muito.
Então, o convite é esse: pra vocês
aprenderem Maxima e para eu conseguir
melhorar muito a documentação à medida
que eu ajudo vocês.
É isso! Tchau!