Tradicionalmente, o ensino de programação de computadores tem se confundido com o ensino de uma linguagem de programação. Embora as linguagens de programação sejam instrumentos possíveis para se expressar o raciocínio algorítmico e para a sua execução automática por um computador, sua utilização geralmente é uma condição limitante para os que se iniciam na arte da programação.
As primeiras linguagens de uso generalizado foram projetadas com o principal objetivo de viabilizarem a expressão, em um nível mais elevado, dos programas a serem executados em computador. Isto conduziu a linguagens que devem obedecer a um conjunto amplo de regras extremamente rígidas. Mesmo as linguagens projetadas segundo os conceitos da programação estruturada ainda limitam muito a forma de expressão do raciocínio lógico.
A arte de programar consiste na arte de organizar e dominar a complexidade. Para alcançar esse objetivo, o programador deve servir-se de sucessivas abstrações. A utilização das linguagens de programação expressar as várias etapas do raciocínio algorítmico força o iniciante a se preocupar excessivamente com aspectos pouco significativos para o desenvolvimento do raciocínio, por exemplo as regras de sintaxe da linguagem. Acrescente-se o fato de que o raciocínio apoiado em uma linguagem de programação molda e ao mesmo tempo limita a capacidade do iniciante. Por outro lado também, ela não facilita o uso de refinamentos sucessivos de forma a que se possa utilizar-se da regra áurea "dividir para reinar".
A tarefa de programação, em última análise, resume-se no desenvolvimento de um raciocínio lógico e, como tal, exige do programador uma boa dose de criatividade. A liberdade de expressão é essencial ao desenvolvimento da criatividade. A linguagem (notação) que utilizamos exerce forte e inegável influência nos processos do pensamento e efetivamente, define, limita e deforma o espaço abstrato no qual são formulados aqueles raciocínios lógicos.
Tudo isso leva a concluir que uma ferramenta mais adequada para o desenvolvimento de algoritmos deve ser livre e desprovida dos detalhes pouco significativos para a expressão do raciocínio lógico. Como este não é o caso das linguagens de programação, a solução é utilizar uma notação especial que sirva como instrumento intermediário no processo da elaboração de programas. Obviamente, o modelo lógico obtido através dessa notação deve ser transposto com facilidade para qualquer linguagem de programação, de maneira que sua utilização não seja um inconveniente para o programador. Uma vantagem adicional no uso da notação adequada ao desenvolvimento de algoritmos é conduzir o programador a expressar o seu raciocínio lógico independente da linguagem de programação.
Resumindo, simplicidade, poder de expressão e coerência são importantes aspectos de uma notação cujo objetivo principal é tornar-se um instrumento para o desenvolvimento e expressão do raciocínio lógico. A quantidade de estruturas de controle deve ser restringida a um mínimo que seja compatível com a potencialidade da notação. Esse conjunto mínimo deve ser, na medida do possível, implementado sem esforço em uma linguagem de programação. Por fim, a notação deve incorporar os conceitos da programação estruturada.