Uma poderosa linguagem de programação é mais do que apenas um meio para instruir um computador a executar tarefas. A linguagem também serve com um quadro dentro do qual organizamos nossas idéias sobre processos. Assim, quando descrevemos uma linguagem, devemos prestar atenção especial aos meios que a linguagem fornece para combinar ideias simples para formar ideias mais complexas. Toda linguagem poderosa tem três mecanimsmos para realizar isso:
- expressões primitivas, que representam as entidades mais simples com as quais a linguagem se preocupa,
- meios de combinação, pelo qual elementos compostos são construídos a partir de elementos mais simples, e
- meios de abstração, pelo qual elementos compostos podem ser nomeados e manipulados como unidades.
Na programação, lidamos com dois tipos de elementos: procedimentos e dados. (Mais tarde, descobriremos que eles não são tão distintos.) Informalmente, os dados são "coisas" que queremos manipular, e procedimentos são descrições das regras para manipular os dados. Assim, qualquer linguagem de programação poderosa deve ser capaz de descrever dados e procedimentos primitivos e ter métodos para combinar e abstrai-los.
Neste capítulo, trataremos apenas de dados numéricos simples, para que possamos nos concentrar nas regras para a construção de procedimentos.
1.1.1. Expressões
1.1.2. Nomeando e o Ambiente
1.1.3. Avaliando Combinações
1.1.4. Procedimentos Compostos
1.1.5. O Modelo de Substituição para a Aplicação do Procedimento
1.1.6 Expressões Condicionais e Predicados