Porque é que a C ++ tão exigente?

Você vai chegar rapidamente a perceber que C ++ é tão exigente como um juiz em um concurso de soletração. Tudo tem que ser tão, ou o compilador não vai aceitá-lo.

Curiosamente, ele não tem que ser assim: Algumas línguas escolher para tentar dar sentido a tudo o que você dá a ele. A versão mais extrema desta era uma língua promulgada pela IBM para seus mainframes na década de 1970 conhecido como PL / 1 (isto representava Nº 147-A Linguagem de Programação 1 # 148-). Uma versão deste compilador iria tentar dar sentido a tudo o que você jogou para ele.


Alguns nerds (que deve permanecer anônimo) usados ​​para obter imensa diversão durante tarde da noite no centro de computador por torturar o compilador com um programa que consiste em nada mais do que a palavra # 147-SE # 148- ou # 147-AO. # 148- Através alguma lógica torturada, PL / 1 iria construir um programa inteiro fora de um presente de comando.

O outro campo em linguagens de programação, o campo para o qual C ++ pertence, é da opinião oposta: Estas línguas obrigar o programador para indicar exatamente o que ela pretende. Tudo deve ser explicitada. Cada declaração é verificada em relação a cada utilização para se certificar de que tudo combina. No ponto e vírgula em falta ou o rótulo declarado incorretamente fica impune.

Acontece que o # 147-tough love # 148- abordagem adoptada pelo C ++ é realmente mais eficiente. O problema com o PL / 1 # 147 livre de amor # 148- abordagem é que ela foi quase sempre erradas em sua compreensão do que se pretende. PL / 1 acabou criando um programa que compilado, mas fez algo diferente do que se pretendia quando executado. C ++ gera um erro do compilador se algo não check out - para forçá-lo a expressar suas intenções de forma clara e inequívoca.

É realmente muito mais fácil de encontrar e corrigir os erros de tempo de compilação geradas pelo C ++ do que os chamados erros de execução criados por um compilador que assume que entende o que você quer, mas erra.

» » » » Porque é que a C ++ tão exigente?