- A notação (Notation) é uma ferramenta importante para auxiliar o pensamento, desempenhando um papel central tanto na matemática quanto nas linguagens de programação
- A linguagem APL foi desenvolvida como uma tentativa de combinar as vantagens da notação matemática com a executabilidade e a universalidade de uma linguagem de programação
- As características de uma boa notação incluem concisão, clareza, sugestividade, subordinação dos detalhes e possibilidade de prova formal
- É possível representar e transformar com eficiência em APL várias estruturas matemáticas, como polinômios, transformações e grafos
- A introdução e o aprendizado da notação devem ocorrer naturalmente dentro do contexto, e a estrutura e a generalidade da notação também são importantes
Notação como Ferramenta de Pensamento
- Em áreas científicas como química e botânica, sistemas de nomenclatura também impulsionaram o progresso acadêmico
- George Boole enfatizou que a própria linguagem é um meio de pensamento
- A notação matemática é um exemplo representativo de linguagem que apoia o pensamento, reduzindo sua carga e ampliando a capacidade de raciocínio
- A.N. Whitehead e Charles Babbage destacaram a importância da notação matemática
O potencial das linguagens de programação como ferramenta de pensamento
- Linguagens de programação têm como pontos fortes a universalidade e a clareza
- Elas permitem experimentar ideias por meio do computador e realizar experimentos mentais de forma precisa
- No entanto, a maioria das linguagens de programação ainda é menos eficaz como ferramenta de pensamento do que a notação matemática
- O APL foi projetado como uma notação voltada a apoiar o pensamento, buscando clareza e precisão
Principais características de uma boa notação
- Facilidade de expressão do problema: deve permitir representar com facilidade estruturas derivadas diretamente do problema
- Sugestividade: a forma expressa deve sugerir problemas semelhantes ou expansões possíveis
- Subordinação dos detalhes: deve oferecer uma estrutura que simplifique detalhes complexos e favoreça o raciocínio
- Concisão: deve possibilitar ampla expressividade com o mínimo de símbolos e regras
- Possibilidade de prova formal: a notação deve ser adequada para provas formais e raciocínio dedutivo
Introdução às técnicas básicas de notação do APL
- Uso natural de estruturas baseadas em arrays, como vetores e matrizes
- Funções e operadores são aplicados automaticamente elemento a elemento sobre vetores/matrizes
- Operadores como redução(
/), scan(\) e produto interno(.) expressam composição de funções
- Símbolos básicos como
⍳, ⌽, ⍴, +, ×, * permitem compor expressões ricas
- Todas as funções seguem a regra de precedência à direita, permitindo escrever expressões naturais sem parênteses
Exemplos de resolução de problemas e estímulo ao pensamento
- Sequências matemáticas como números triangulares e fatoriais podem ser expressas com fórmulas simples
- Representação de polinômios e operações como multiplicação e derivação são tratadas de forma concisa com regras consistentes
- Teoria dos grafos (árvores, fecho transitivo, árvores geradoras) também pode ser expressa com clareza por meio de operações sobre arrays
- Pode ser estendido a várias áreas, como permutações, álgebra booleana e conversão entre sistemas numéricos (fatoração em primos)
Prova formal e pensamento estruturado
- Como todas as operações e expressões são representadas em formas claramente executáveis, é possível fazer verificação automática com o computador
- São apresentados vários exemplos de prova formal por indução matemática, busca exaustiva e enumeração de identidades
- São formalmente demonstradas a partição (identity) de redução e scan, bem como associatividade e distributividade do produto interno
- São provadas diretamente funções simétricas de Newton, multiplicação de polinômios e fórmulas de derivação
Comparação entre APL e a notação matemática tradicional
- O APL oferece definição clara de funções, operações consistentes sobre arrays e um sistema rico de símbolos
- Em vez de regras de precedência para todas as operações, aplica-se a regra de execução da direita para a esquerda
- Reduz a complexidade do uso de símbolos matemáticos e apoia a manipulação formal (formal manipulation)
- A sintaxe é concisa e as regras são consistentes, beneficiando tanto iniciantes quanto usuários experientes
Introdução da notação e métodos de aprendizado
- Destaca-se a abordagem de introduzir naturalmente, no contexto, apenas a notação necessária, sem uma "aula de linguagem" separada
- Novos símbolos são aprendidos de forma intuitiva dentro de situações concretas de resolução de problemas
- Mais importante do que a dificuldade da notação em si é reconhecer as várias possibilidades e extensões que ela sugere
Possibilidades de expansão e propostas para o APL
- Propostas de expansão de funções, incluindo tratamento de números complexos
- Necessidade de padronizar funções de elementos únicos (unique elements) e resumo (summary)
- A introdução de operadores mais generalizados pode apoiar tópicos adicionais, como cálculo vetorial
- O objetivo é melhorar a clareza do design da linguagem e a capacidade de raciocínio
Equilíbrio entre eficiência e clareza
- Recomenda-se primeiro definir uma notação clara e analisável e depois aumentar a eficiência por meio de otimização
- Tornar o algoritmo mais claro também ajuda em otimizações posteriores e na otimização por compiladores
- Expressões básicas escritas em APL têm potencial para contribuir tanto para a investigação acadêmica quanto para aplicações industriais
1 comentários
Comentários do Hacker News
A notação tem um significado mais profundo do que simplesmente substituir uma expressão por outra
O declínio do APL ocorreu por causa do surgimento do Lotus 123 e do MS Excel
A hipótese de Sapir-Whorf sugere que a linguagem pode limitar o pensamento
Estou desenvolvendo um projeto usando APL
É uma pena não ter conseguido concluir um app de anotações freeform
Esta foi a palestra em que a expressão "ferramenta do pensamento" foi usada pela primeira vez
Como material relacionado, é mencionado "Notation as a Tool of Thought", de Iverson