Unixtopia

main/ artigos/

Abstração

É um conceito importante em programação, matemática, filosofia e arte, que em palavras simples pode ser descrito como ver um problema à distância, pensar em conceitos de nível alto, prestar menos atenção a detalhes finos para que se possa ver o quadro geral. Em programação, e.g, distinguimos linguagens de programação de alto e baixo nível de abstração, dependendo de quão próximas elas estão do hardware, como Assembly sendo low-level e Java$cript sendo high-level. Na arte, alta abstração significa retratar e capturar coisas como ideias, sentimentos e emoções com formas distantes, não se assemelhando a nada concreto ou familiar. Geralmente falamos sobre diferentes níveis de abstração, dependendo da distância que tomamos ao visualizar o problema. Esse conceito pode ser demonstrado em ciências, a física de partículas pesquisa o mundo no nível mais baixo de abstração, em close-up extremo, examinando átomos individuais que compõem nossos cérebros, enquanto a biologia reside em um nível alto de abstração, visualizando o cérebro no nível de células individuais e a psicologia mostra um nível muito alto de abstração porque observa o cérebro de uma grande distância e apenas estuda seu comportamento.

Na programação moderna, é ensinado a abstrair o máximo possível porque isso está alinhado com o modo industrial de tecnologia, alta abstração é fácil de lidar para programadores incompetentes, ajuda a evitar que eles causem danos ao empregar bilhões de mecanismos de segurança, e perpetua o culto de nunca parar de sobrepor a abstração, criando bloat, exagero, empregos de merda, computadores lentos, constantemente desatualizados e impulsiona o consumismo de software. Novas abstrações são produtos promovidos com base no benefício imediato, criar mais conforto, ser algo novo e moderno, aumentar a produtividade, diminuir as barreiras de entrada para que qualquer um possa agora ser um programador sem nem mesmo saber nada sobre computadores, na medicina isso seria péssimo. É claro, os efeitos negativos de longo prazo são completamente ignorados. É por isso que a tecnologia tem sofrido uma queda tão grande nas últimas décadas. Opondo-se a isso, o SMR defende empregar apenas mínima abstração, de modo a dar suporte ao minimalismo. Abstração demais é ruim. Uma linguagem de propósito geral amplamente usada deve ter a abstração necessária para permitir portabilidade, ela definitivamente não deve sucumbir à alta abstração, como a programação obcecada por objetos.

Abstração não é unidimensional, podemos abstrair em diferentes direções, olhar para a questão de ângulos diferentes, paradigmas funcionais, lógicos e de objetos são diferentes maneiras de abstrair do nível baixo. A questão da abstração é ainda mais complicada ao tentar escolher a abstração certa, um tipo de abstração pode funcionar bem para certos tipos de problemas, resolver esses problemas se tornará simples ao aplicar essa abstração, mas mal para outros tipos de problemas. Vamos dar uma olhada em uma possível divisão de um computador em diferentes níveis de abstração, do mais baixo ao mais alto:


Impulsionado por nada. Todo conteúdo é disponível sob CC0 1.0 domínio público. Envie comentários e correções para Mr. Unix em victor_hermian@disroot.org.