Sintaxe e erros
Sintaxe
Assim como idiomas tem a sintaxe deles, que determina de que forma as palavras devem ser organizadas, as linguagens de programação também tem as suas sintaxes, que definem as suas regras.
Assim como existem vários idiomas, tais como Português, Inglês, Espanhol e Japonês, e algumas pessoas falam apenas um idioma, enquanto outras falam dois ou mais, o mesmo ocorre com linguagens de programação. Há programadores que sabem programar apenas em C++, outros sabem programar apenas em Javascript, outros sabem programar em PHP, Javascript e Python, e assim por diante.
Depois que você aprende o seu primeiro idioma, você pode aprender outros com muito mais facilidade. Da mesma forma, depois que você aprende uma linguagem de programação, é muito mais fácil aprender outras.
Erros
Quando as regras da sintaxe de uma linguagem de programação são violadas, um ou mais erros ocorrem e o programa ou script que escrevemos em uma linguagem de programação não é executado. As linguagens de programação são muito sensíveis quanto à essas regras. Um ponto e vírgula que você esquece, um espaço que você não dá, podem fazer toda a diferença.
Às vezes pode acontecer de você corrigir alguns erros e ver um grupo de erros novos que não existiam antes, talvez até mais do que o número de erros original.
O processo de procurar e corrigir erros de programas é chamado de debugging (depuração). Existe uma ferramenta que ajuda a encontrar erros em programas ou scripts. Essa ferramenta se chamada debugger.
Erros lógicos
Além dos erros de sintaxe, que impedem que o seu programa ou script possa ser executado, existem também os erros lógicos. Esses erros não impedem a execução do programa. O compilador ou o interpreter não tem como detectá-los. Por isso, é o programador que identifica esses erros. Isso torna a eliminação desses erros mais complicada. Como eles não impedem a execução do programa, eles podem passar completamente despercebidos.
Pra facilitar, entenda que a principal diferença de conceito entre o erro de sintaxe e o erro lógico é que o erro de sintaxe é uma violação às regras da linguagem de programação, e o erro lógico não. Ele é um erro de lógica. Por exemplo: quando você quer fazer um algoritmo que conte de 1 até 10, mas você conta apenas até o 9 porque usou o operador relacional errado, seu programa tem um erro lógico. Já quando você esquece um ponto e vírgula em uma instrução, seu programa tem um erro de sintaxe.
Considere os passos de um algoritmo para assistir a um jogo de tênis na TV:
- Ir até o cômodo da TV
- Pegar o controle remoto
- Se a TV estiver desligada, ligá-la
- Mudar para o canal do jogo de tênis
As instruções acima estão logicamente corretas. Por que? Porque não está faltando nenhuma instrução, as instruções presentes são exatamente as necessárias para assistir ao jogo de tênis e as instruções estão descritas na ordem correta.
Agora, eu vou mostrar um algoritmo com erros lógicos que tem as mesmas instruções do algoritmo anterior, só que em outra ordem:
- Pegar o controle remoto
- Mudar para o canal do jogo de tênis
- Se a TV estiver desligada, ligá-la
- Ir até o cômodo da TV
As instruções continuam sendo as corretas. Não há instruções a mais nem a menos. No entanto, há erros lógicos no meu algoritmo porque as instruções estão fora da ordem certa.
Vou mostrar abaixo um exemplo de um algoritmo, que também tem como objetivo descrever os passos para assistir a um jogo de tênis, mas também tem erros lógicos, porém por outro motivo:
- Pegar o controle remoto
- Enxugar o dedão do pé
- Mudar para o canal do jogo de tênis
- Se a TV estiver desligada, ligá-la
- Colocar o leite na geladeira
- Ir até o cômodo da TV
As instruções corretas continuam aí, porém há instruções a mais, que não pertencem ao algoritmo de assistir ao jogo de tênis.
Esse foi um exemplo bem simples. Se você se tornar um programador, você vai lidar com erros muito mais complexos que esse. E, como eu já disse, erros de lógica são mais difíceis de se identificar do que erros de sintaxe, porque o compilador não te ajuda a identificar esse tipo de erro.
Uma das vantagens dos testes no processo de desenvolvimento de software é ajudar a identificar erros lógicos. Eu não vou abordar testes aqui, mas é importante que você saiba que eles são muito importantes no desenvolvimento de software por várias razões e se lembre deles quando for programar.