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.

Avatar for Camilo de Azevedo

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.