1.3 Objetivos
Dentre os objetivos da Ciência da Computação, "[...] uma tarefa fundamental [...] é encontrar técnicas para computar as funções que se encontram subjacentes aos problemas que queremos solucionar." (BROOKSHEAR, 2013, p. 469).
1.4 Conceitos gerais importantes
1.4.1 Abstração [1]
Consiste na distinção das características extrínsecas e intrínsecas de uma entidade, de modo a torná-lo mais compreensível e possibilitar que seja manipulado como uma unidade, ignorando os detalhes internos e/ou de implementação (Brookshear, 2013). Noutras palavras, é um exercício imagético de simplificação que, em detrimento da complexidade inerente à construção, visa facilitar a compreensão e a interação com o objeto.
Nesse sentido, as estruturas de dados consubstanciam um exemplo de abstração, pois eximem o usuário — que pode ser humano ou outro sistema computacional, como um cliente no protocolo HTTP — do conhecimento dos detalhes inerentes ao acesso e manuseio dos dados armazenados em memória, pela simulação de um formato abstrato mais conveniente (Brookshear, 2013).
Os atributos comuns da entidade podem ser abstraídos, possibilitando o destaque daqueles que precisam ser detalhados porque diferenciam e/ou especificam um exemplar em particular, em relação aos demais (Sebesta, 2018). Aliás, processos[2] ou dados[3] podem ser abstraídos, nos dois casos, com o objetivo de reduzir a complexidade do programa (Sebesta, 2018).
1.4.1.1 Conceito formal
"O termo abstração [...] refere-se à distinção entre as propriedades externas de um entidade e os detalhes da composição interna da entidade. É a abstração que nos permite ignorar os detalhes internos de um dispositivo complexo [...] e usá-lo como uma unidade única, compreensível. Além disso, é por meio da abstração que tais sistemas complexos são projetados e fabricados. [...] Cada componente representa um nível de abstração no qual o uso do componente é isolado dos detalhes da composição interna do componente. [...] A cada nível de abstração, vemos o sistema em termos de componentes, chamados de ferramentas abstratas, cuja composição interna ignoramos. Isso permite nos concentrarmos em como cada componente interage com outro em um mesmo nível e em como o conjunto, como um todo, forma parte do sistema que é relevante para a tarefa desejada em vez de nos perdermos em um mar de detalhes." (BROOKSHEAR, 2013, p. 11/12).
"Uma abstração é uma visão ou representação de uma entidade que inclui apenas os atributos mais significativos. De um modo geral, a abstração permite que alguém colete exemplares de entidades em grupos nos quais seus atributos comuns não precisam ser considerados." (SEBESTA, 2018, p. 446).
1.5 Linguagens de programação
1.5.1 Sintaxe e semântica
Assim como nas linguagens naturais, a sintaxe diz respeito à estrutura das expressões, sentenças e unidades do programa, e a semântica, ao significado (Sebesta, 2018). "Em uma linguagem de programação bem projetada, a semântica deve seguir diretamente a partir da sintaxe; ou seja, a aparência de uma sentença deve sugerir o que ela realiza." (SEBESTA, 2018, p. 111).