Upgrade to Pro — share decks privately, control downloads, hide ads and more …

🐙 Hy, Python como LISP

🐙 Hy, Python como LISP

Nesta palestra, vamos falar sobre Hy, um dialeto Lisp que roda na máquina virtual do Python. Vamos apresentar as características e benefícios desta linguagem em relação ao desenvolvimento em Python. Vamos explicar como a sintaxe concisa e funcional do Hy pode ajudar os desenvolvedores a escreverem código mais expressivo e legível.

Camilo de Azevedo

March 11, 2023
Tweet

More Decks by Camilo de Azevedo

Other Decks in Technology

Transcript

  1. Camilo Cunha de Azevedo Faço bugs em Python, Clojure e

    outras linguagens desde 2012. https://www.linkedin.com/in/2cazevedo/ https://github.com/Camilotk
  2. O que é Hy? • Hy (abreviação de “Hylang”) é

    uma linguagem de programação criada em 2014 que utiliza a sintaxe LISP e roda na Máquina Virtual Python (Python Virtual Machine - PVM). • Ela permite aliar a expressividade, declaratividade e simplicidade da sintaxe de LISP com o ecossistema Python.
  3. LISP • LISP é uma família de linguagens de programação

    (assim como a família ALGOL ou a família C) que engloba diversas linguagens como Scheme, Clojure, Common LISP e Hy. • Todas elas se relacionam à linguagem LISP escrita por John McCarthy em 1958 sendo a segunda linguagem de alto nível (depois de FORTRAN), a primeira a ter garbage collector, a primeira linguagem interpretada e a primeira linguagem dinâmica.
  4. Sintaxe • Uma característica da linguagem é que todas as

    expressões são escritas em "formas", uma lista em que o primeiro argumento é uma operação (função) e os valores subsequentes parâmetros. Hy: Python:
  5. • Assim como LISP, Hy suporta Orientação a Objetos e

    Programação Funcional, sendo uma linguagem primeiramente pensada para ser utilizada com programação funcional e declarativa. Hy: Python: Paradigma
  6. Estruturas de Dados • As estruturas de dados e coleções

    de Hy são as mesmas de Python, porém com syntax sugar para serem declaradas.
  7. Declaração de Variáveis • Hy usa a palavra reservada setv

    para declarar variáveis. • Em Hy os valores são imutáveis, mas as variáveis não. • Em Hy pode-se usar alguns caracteres especiais no nome.
  8. Declaração de Funções • Funções são valores que são ligados

    a constantes. (Uma função é um valor de uma “variável” como arrow functions para const em JS). • Existe um syntax sugar que facilita a escrita de funções de uma forma mais legível.
  9. LISP é um processador de listas • A sintaxe de

    uma lista ser (1 2 3) não é por acaso parecido com a sintaxe de uma expressão (operação param params…) • Na verdade, quando programamos em LISP todo nosso código é uma árvore de listas que depois são interpretadas. (+ (* 8 8) (* 4 4)), vira:
  10. Quote, Quasiquote e Unquote • A função "quote" é usada

    para criar uma representação literal de uma expressão, ela pode ser usada com o syntatic sugar ‘. • A expressão não é avaliada, mas sim retornada como uma lista. • A função “quasiquote” é usada para criar uma represetação literal de uma expressão com valores (como uma f string f”” com interpolação), pode ser escrita com o sugar `. • O operador "unquote" é usado para inserir uma expressão em uma lista passada com “quasiquote” e retorná-la como literal como a função "quote", pode ser escrita com o sugar ~.
  11. Macros • Macros são funções especiais que permitem a criação

    de novas formas sintáticas na linguagem. • Quando uma macro é chamada, ela recebe como argumentos a lista que representa a expressão na qual a macro foi usada. • A macro retorna uma nova lista, que pode ser avaliada como uma expressão válida em Hy.
  12. Orientação a Objetos em Hy • Hy suporta a criação,

    instanciação e uso de Objetos. • Isso é muito útil para a interação com bibliotecas Python. • LISP é conhecida por ser multiparadigma e por ser uma das primeiras linguagens a implementar orientação a objetos com o CLOS (Common LISP Object System) sendo uma das primeiras linguagens OOP tendo implementado OOP na metade dos anos 80 (10 anos após a primeira).
  13. Hyrule • À medida que a linguagem cresceu, parte dos

    macros e funções que foram adicionados na linguagem para facilitar programação funcional foram separados em uma lib chamada “hyrule” que pode ser instalada pelo pip.
  14. • Possibilidade de utilizar sintaxe LISP com o ecossistema Python.

    • Flexibilidade para escolher o paradigma de programação. • Possibilidade de utilizar bibliotecas Python. • Facilidade para criação de DSLs. • Todas as vantagens de Python. Vantagens
  15. Problemas • Curva de aprendizado, principalmente para programadores acostumados com

    outras linguagens. • Alguns tipos como símbolos e chaves (keywords) não estão documentados e tendem a ter problemas de conversão. • Breaking changes ocasionais. • GIL do Python. • Todas as desvantagens do Python.