Blog do Ramalho.org

Posts

PEG Parsing Series Overview

by Guido van Rossum

My series of blog posts about PEG parsing keeps expanding. Instead of updating each part to link to all other parts, here’s the table of content:

Érico e o novo Papa

Érico Andrei Ă© um grande amigo meu e da comunidade Python mundial.

Em outubro teremos a Python Brasil em SĂŁo Paulo pela 2ÂȘ vez; em 2024 tivemos a Plone Conference (mundial) em BrasĂ­lia pela 2ÂȘ vez, todas organizadas pelo Érico—alĂ©m de N outros eventos pelo Brasil e pelo mundo. Ele tambĂ©m contribui cĂłdigo e trabalho voluntĂĄrio para a comunidade Plone hĂĄ uns 20 anos.

Dadoware

Dadoware Ă© um mĂ©todo para criar senhas aleatĂłrias fortes e fĂĄceis de lembrar usando dados ⚂ ⚃ ⚅ ⚅ ⚁, papel e lĂĄpis para sortear palavras e formar uma frase-senha (passphrase). Se jĂĄ sabe como usar, vĂĄ direto para dadoware-palavras.

O mĂ©todo original Dicewareℱ foi inventado por Arnold G. Reinhold. A parte mais complicada Ă© ter uma lista de palavras para sortear lançando 5 dados. A lista precisa ter exatamente 65 (7.776) palavras familiares. No site original nĂŁo havia uma lista de palavras em portuguĂȘs, entĂŁo eu e colegas da Thoughtworks Brasil criamos a lista dadoware-palavras.

Passdrill: para praticar senhas fortes

VocĂȘ pode usar o Dadoware para criar uma frase-senha forte, mas para usĂĄ-la no dia-a-dia ainda vai precisar:

Com Passdrill, vocĂȘ pratica a digitação de uma senha longa em um ambiente seguro: seu console local.

O passdrill nĂŁo salva a senha digitada, mas sim uma assinatura digital (hash) derivada da senha, atravĂ©s dos algoritmos scrypt ou pbkdf2—projetados para tornar os ataques de força-bruta mais difĂ­ceis.

O Grande Dalmuti (jogo)

Um jogo de cartas simples, rĂĄpido e inteligente criado por Richard Garfield (inventor do Magic).

O jogo foi lançado originalmente com o tĂ­tulo “The Great Dalmuti”, com uma temĂĄtica medieval e um baralho com 78 cartas de 1 a 12, mais 2 curingas, bom para atĂ© 6 jogadores.

Depois foi relançado como “Dilbert Corporate Shuffle”, ilustrado com personagens de Scott Adams, e um baralho com 55 cartas de 1 a 10, mais 2 curingas e 3 cartas especiais, limitado a 4 jogadores.

Eleusis: um jogo de raciocĂ­nio indutivo

Eleusis Ă© um jogo de cartas que exercita o mĂ©todo indutivo caracterĂ­stico da ciĂȘncia. A partir de experimentos e observaçÔes, os jogadores precisam formular hipĂłteses sobre uma Regra Divina.

O jogo foi criado pelo inventor de jogos Robert Abott em 1956, e depois aperfeiçoado em colaboração com Martin D. Kruskal e John Jaworski até a versão descrita aqui, chamada Novo Eleusis, publicada em 1977.

Minha referĂȘncia foi o livro Jogos de Cartas, da coleção Todos os Jogos da Abril, de onde vieram muitas frases neste texto.

BĂĄnffy e o hash criptogrĂĄfico

Ricardo BĂĄnffy e Luciano Ramalho em Dublin, durante a EuroPython 2022, 26 anos depois desse causo.

Entre os primeiros usuĂĄrios do Brasil Online em 1996 havia uns tantos “VIPs”: executivos de mĂ­dia, publicitĂĄrios, polĂ­ticos, celebridades, pessoas que a Abril queria agradar. Um desses VIPs esqueceu a senha e pediu para sua assistente ligar para a Abril para recuperĂĄ-la. O recado chegou atĂ© o meu chefe, Antonio Machado—diretor do Grupo Exame—que pediu para eu resolver.

O grande ataque ao MetaLouvre

Turistas fotografando a moldura da Mona Lisa, com o emoji 'FACE SCREAMING IN FEAR' no lugar da pintura de Leonardo Da Vinci

Após enfrentar longas filas para entrar no MetaLouvre, turistas do Metaverso ficaram chocados quando viram centenas de pinturas nas galerias renascentistas sendo trocadas por emojis. Na moldura da Mona Lisa apareceu o emoji Unicode U+1F631, “Rosto Gritando de Medo”, inspirado na pintura “O Grito” de Edvard Munch.

O erro fatal das applets Java

Em 1995 eu e um time excelente de jornalistas, designers e programadores na Abril S/A eståvamos criando o Brasil Online, o bol.com.br na sua primeira fase (eu registrei esse domínio para a Abril; 5 anos depois foi reutilizado para o serviço de e-mail grauito do UOL).

A tecnologia de applets Java era novidade. Era tentador usar, porque o JavaScript e a API do DOM eram muito limitadas para fazer componentes interativos na pĂĄgina.

Porque cada pessoa deve ter seu site na Web

A Web (e a prĂłpria Internet) sĂŁo construçÔes maravilhosas porque tĂȘm arquiteturas descentralizadas: qualquer pessoa que tem acesso Ă  Internet pode ter seu prĂłprio site na Web. E eu acredito que cada pessoa deve ter seu prĂłprio site.

É muito mais saudĂĄvel politicamente e seguro tecnicamente se cada pessoa tem o seu site, em vez de termos a maioria do conteĂșdo novo colocado dentro de plataformas centralizadas como Facebook, Medium, Blogger etc.

Left-recursive PEG Grammars

by Guido van Rossum

I’ve alluded to left-recursion as a stumbling block a few times, and it’s time to tackle it. The basic problem is that with a recursive descent parser, left-recursion causes instant death by stack overflow.

Consider this hypothetical grammar rule:

expr: expr '+' term | term

Visualizing PEG Parsing

by Guido van Rossum

Last week I showed a simple PEG parser generator. This week I’ll show what the generated parser actually does when it’s parsing a program. I took a dive into the retro world of ASCII art, in particular a library named “curses” which is available in the Python standard library for Linux and Mac, and as an add-on for Windows.

[This is part 4 of my PEG series. See the Series Overview for the rest.]

Generating a PEG Parser

by Guido van Rossum

Now that I’ve sketched the infrastructure for a parser and a simple hand-written parser in part 2, let’s turn to generating a parser from a grammar, as promised. I’ll also show how to implement packrat parsing using a @memoize decorator.

Building a PEG Parser

by Guido van Rossum

Inspired by only a partial understanding of PEG parsing I decided to build one. The result may not be a great general-purpose PEG parser generator — there are already many of those (e.g. TatSu is written in Python and generates Python code) — but it was a good way to learn about PEG, and it furthers my goal of replacing CPython’s parser with one built from a PEG grammar.

PEG Parsers

by Guido van Rossum

Some years ago someone asked whether it would make sense to switch Python to a PEG parser. (Or a PEG grammar; I don’t recall exactly what was said by whom, or when.) I looked into it a bit and wasn’t sure what to think, so I dropped the subject. Recently I’ve learned more about PEG (Parsing Expression Grammars), and I now think it’s an interesting alternative to the home-grown parser generator that I developed 30 years ago when I started working on Python. (That parser generator, dubbed “pgen”, was just about the first piece of code I wrote for Python.)

Language Creators Panel 2019

Transcript of «A Language Creators’ Conversation» recorded April 2, 2019, with Anders Hejsberg (Turbo Pascal, Delphi, C#, TypeScript), James Gosling (Java), Guido Van Rossum (Python) and Larry Wall (Perl), hosted by Carol Willing (Jupyter Project).