O que é Ortogonalidade?
"Ortogonalidade é quando cada recurso da linguagem funciona de forma independente, e qualquer combinação desses recursos é válida e previsível." GPT, CHAT.
O livro Conceitos de Linguagens de Programação, de Robert W. Sebesta, remete bastante ao conceito de ortogonalidade. Aparentemente, essa grande palavra se refere à forma como é possível correlacionar os tipos de dados e as estruturas de controle de maneira previsível, ou seja, não se faz necessário decorar regras específicas daquela linguagem (exceções). Assim sendo, uma linguagem com alta ortogonalidade permite que o programador a utilize de maneira intuitiva, sem precisar se apegar a detalhes específicos e situacionais da linguagem em questão.
A ortogonalidade está intrinsecamente ligada ao custo da linguagem, já que, quanto menos intuitiva ela for, e quanto mais exceções e regras situacionais possuir, mais complicado e lento se torna o processo de treinar programadores para trabalharem com ela.
Ortogonalidade nem sempre é sinônimo de algo positivo. Geralmente, faz-se necessário abrir mão de parte da performance visando aumentar a ortogonalidade, já que a possibilidade de realizar diversos tipos de combinações de maneira livre se reflete em mais trabalho para o compilador.
Quanto mais específico for o problema que o seu programa resolve, mais performático ele será, pois não precisará lidar com uma grande variedade de casos. Se a função do seu programa for apenas mostrar a string "Hello World" no terminal, ele será extremamente eficiente e rápido. Note que, ao utilizar uma linguagem de tipagem forte, você estará abrindo mão de estar mais “livre” para estar mais restrito, o que reduz o trabalho do compilador em ter que “adivinhar” os tipos.
Alta Ortogonalidade:
- Python
- Ruby
- Haskell
Baixa Ortogonalidade:
- C
- C++
- Assembly