Vamos começar do zero. Primeiro de tudo, o que de fato é abstração?
O Problema / Motivo
Quando você programa, geralmente precisa resolver problemas detalhados de maneira muito específica.
O motivo principal da abstração é quando você se encontra em uma situação em que seu programa lida com todo o problema como uma única unidade, com muitas peculiaridades discretas que requerem atenção e compreensão. O problema aqui é que é difícil para os seres humanos manipular quantidades tão grandes de dados de uma só vez.
A Solução: Abstração
Para que você possa entender exatamente o que precisa para implementar sua ideia , extraia soluções detalhadas em abstrações simplificadas .
Por exemplo, vejamos ORM (Mapeamento Relacional Objeto), onde o SQL é abstraído em objetos.
Para inserir um novo item em um banco de dados sem abstrações, um programador precisa conhecer o SQL. Portanto, para inserir um novo item, o programador precisa se lembrar da sintaxe SQL para inserir um novo item em uma tabela:
INSERT INTO Items (field1, field2) VALUES (value1, value2)
Mas com abstrações, o programador precisa apenas estar ciente da idéia do que ele deseja fazer. Uma abstração orientada a objetos pode se parecer com:
Item item = new Item(value1, value2)
Você pode ir um pouco além e pensar no fato de que o próprio SQL é uma grande abstração para toneladas de sofisticadas estruturas e algoritmos de armazenamento de dados, que estão ao seu alcance pelo preço de aprender uma linguagem declarativa simples.
O oposto da abstração
Com base no que agora definimos que abstração é realmente tornar suficiente conhecer apenas o conceito essencial em questão, podemos deduzir facilmente que o oposto da abstração é de fato esotérico , onde o uso ou o entendimento implica ter algum tipo de conhecimento especializado de peculiaridades do sujeito.