Skip to content

Instantly share code, notes, and snippets.

@onlurking
Last active December 20, 2017 17:26
Show Gist options
  • Save onlurking/46858f9bf7aa0b4625083040cf7c5f94 to your computer and use it in GitHub Desktop.
Save onlurking/46858f9bf7aa0b4625083040cf7c5f94 to your computer and use it in GitHub Desktop.
Errata: Cara tem um Lisp no seu Python..? (Ou uma introdução sobre Hy)

ERRATA, Cara tem um Lisp no seu Python..?

Ou uma introdução sobre Hy

Eu submeti a proposta de fazer uma palestra no Lambda I/O Sampa Meetup falando um pouco sobre Hy (Um Lisp embedded no Python), uma linguagem que eu vinha brincando um pouco nos finais de semana, é meu primeiro contato com Lisp, e vinha sendo bem confortável já que eu conseguia fazer algumas coisas úteis com ela, é interop com Python, e eu estava reescrevendo alguns de meus código que usam BeautifulSoup e Requests com sintaxe Lisp.

O que deu bom

Esta foi a primeira palestra que eu dei e foi uma experiência absurda, eu nunca aprendi tanto em tão pouco tempo com meus próprios erros.

Conheci muita gente pessoalmente que só conhecia pela internet, pensa numa galera gente boa.. na moral, vocês são fera! Obrigado por tudo.

Bem, eu usei um frontend feito em Electron para o Jupyter/IPython Notebook chamado Nteract, usando um kernel de Hy, o que é uma abordagem bem interessante para se usar em um Live Coding.

O que eu acho que deu ruim

Dar uma palestra com Live Coding em uma linguagem que você não escreve de maneira hábil.. é um convite para o caos.

Sem querer(querendo) você faz propaganda da linguagem, e fazer propaganda de uma linguagem que você não escreve código todo dia, não possui código em produção e você só a explorou apenas por curiosidade.. é hipocrisia, embora eu tenha dado a talk no sentido de deixar a galera ciente que assim como existe Clojure no mundo Java, e LFE na Erlanglandia, também existe Hy no mundo Python, e sinto que fiz um péssimo trabalho apresentando ela pra galera.

O que deu muito ruim

Live Coding demanda muito estudo e tempo para ser preparado com excelência, nem de longe eu dediquei o tempo necessário para tudo dar certo com segurança.

Eu não me preparei para o caso que algo desse errado no Live Coding, e muita coisa deu errada.

Perdi a conta de quantas vezes eu confundi .strip() com .split(), tamanho nervosismo eu esqueci de como se programa Python na hora.

Fui criado com leite com pera Comecei usando Parinfer logo de inicio escrevendo código Lisp, eu nem me preocupava com parenteses, e.. o Nteract não tinha, muito dos erros de sintaxe que ocorreram foi por conta de parenteses no lugar errado.

Não tinha syntax highlight pra Lisp(Hy) no Nteract, foi complicado ver o escopo quando eu errava.

Os erros que ocorreram mais pro final, como a sintaxe de sets #{} e Fraction Literal tentando (como colocar 1/2 no REPL), foi porque a versão do Hy instalada no notebook era desatualizada, o Hy do Pypi (instalado pelo pip) não possui esses recursos, o Hy que eu uso é da branch master direto do Github, instalada usando pip install git+https://github.com/hylang/hy, isso porque eu uso Python 3.6.0b e o Hy stable do Pypi estava quebrado nessa versão.
Apesar do Pypi marcar a versão como hy 0.11.1 e o Github como hy 0.11.0+313, muita coisa mudou, enfim, o erro foi meu pois fui eu que mandei as instruções de instalação para meu colega que emprestou seu notebook.

Quando o notebook não é seu, tudo é mais complicado.

Slides

Você pode encontrar os slides aqui.

Contexto Histórico

Bem, esses foram os dois links que usei para fazer essa parte.

Fortran I
History of Lisp, John McCarthy - 12 February 1979

Eu abordei mais a história do lado do John Mccarthy, porém de forma superficial dando detalhes sem ligar os pontos, como falar da experiência prévia dele com FORTRAN, no fim, eu não falei a motivação real dele criar Lisp, faltou estudo pela minha parte, e eu peço desculpas.

Se você quer ler ótimas fontes que falam não somente da história de Lisp, mas como programação funcional no geral e conseguem explicar a grande real motivação através de Lisp: Expressões Simbólicas (S-Expressions), eu recomendo fortemente a leitura dessas fontes:

A galera do Lisp Flavoured Erlang (um dialeto de Lisp que roda na VM do Erlang), adaptou o livro SICP e adicionou esse capítulo extra(na verdade, baseado em uma série de posts do blog deles) falando da história de programação no geral, das raízes matemáticas até a criação de Lisp, é compreensivo, completo e definitivamente a melhor fonte que conheço quando o assunto é a história de programação funcional.

Na real, eu cometi o maior erro do mundo em não tornar esse documento o pilar da minha palestra, ele consegue explicar de forma absurdamente simples os conceitos que servem de fundação para os Lisps: 6 páginas, pouco texto, e possui mais conteúdo que minha palestra de 50 minutos.

Infelizmente, eu só lembrei dessas fontes depois que dei a palestra, eu deveria ter dedicado mais tempo pra essa parte, mas de qualquer maneira, valeu o aprendizado.

A verdade é que eu recomendo você ignorar tudo o que falei na palestra a respeito do contexto histórico e o começo do Live Coding e fazer uma leitura rápida desse último link, e Hidden Origins of Lisp caso tenha curiosidade.

Se você leu o último link, agora eu posso explicar o que é realmente Hy da melhor forma possível:

Hy é um front-end de S-Expressions para Python.

Como os exemplos que passei são bem fracos, prefiro passar links de talks com melhores exemplos caso você tenha curiosidade:

Links sobre Hy

O usuário Eleonore9 fez um Poster sobre Hy para a PyCon 2016 e tem um Repo cheio de informações sobre a linguagem também: https://github.com/Eleonore9/hy-python-lisp

Tem um episódio no Podcast.init sobre Hy: https://www.podcastinit.com/episode-23-hylang-core-developers/

Tem umas coletâneas de links no gist.github de uma galera:

Hylang Sources, by Foxboron

Hylang Blog Posts, by Foxboron

Hylang Sources, by Eleonore9

Hylang Blog Posts, by Protonk

Talks

Agora sim, se você quiser aprender Hy mesmo eu sugiro assistir essas palestras:

A Talk About Hy - Chris McCormick
Essa talk aconteceu em Outubro em um Meetup, ela é bem recente e é a melhor talk introdutória de Hy IMHO, ela foi feita pelo Chris McCormick, o cara que usou Hy no Blender.

Hy: A Lisp that transforms itself into the Python AST
Não, essa talk, essa talk cara, é uma das talks mais divertidas que eu já assisti, ela foi feita pelo Christopher Webber, ele contribuiu bastante com a documentação de Hy e ele passa por diversos conceitos, ela é bem técnica e divertida, geekness level: ele dá a talk usando o Emacs Orgmode.

Paul Tagliamonte: Getting Hy on Python: How to implement a Lisp front-end to Python - PyCon 2014
A talk que o criador da linguagem Hy deu na PyCon 2014 dando detalhes da implementação da linguagem.

É isso

Você é muito bem vindo para dar feedback comentando através deste gist, ou até mesmo mandando uma mensagem pra mim, qualquer coisa eu atualizo esse documento sobre a demanda.

Bem, gostaria de parabenizar toda a galera da Pagar.me, da Stone, todos os palestrantes e todo mundo que foi no evento e compartilhou um pouco de suas opiniões, e experiências, um abraço especial pro Allan que me emprestou o notebook para realizar minha palestra, e para o Thales que recebeu a galera pra fazer um Hackathon pós Meetup no apartamento dele.

Vocês são incríveis :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment