Abstracción
Abstract
Es difícil escribir sobre niveles de abstracción. Es un concepto fundamental en la ciencia de la computación porque está directamente ligado con el concepto de modelado. Sin embargo, es difícil de explicar y es difícil de ejemplificar. Para el ingeniero de software saber lidiar con diferentes niveles de abstracción es al mismo tiempo un requisito de la profesión y, al mismo tiempo, un desafío siempre presente.
¿Cuál es el nivel correcto de abstracción que debo usar en este caso? Esa es una pregunta recurrente para el profesional consciente de que lidiar con niveles de abstracción es importante.
Al final ¿qué es abstracción? Pura y simplemente es la substracción de detalles, o sea, es la capacidad de expresar algo de manera concisa, abstracta, sin que se muestren los detalles. En cualquier disciplina que lidie con complejidad, abstraer detalles es de fundamental importancia. Por eso en ingeniería de software el concepto y su uso son importantes.
En una clase usé el ejemplo de la palabra árbol en el sentido natural. Mi argumento es que cuando pensamos en un árbol, abstraemos varios detalles y pensamos en una idea general, lo mismo sabiendo que existen diferentes tipos de árboles. No siendo coincidencia, la estructura de datos árbol es fundamental en la ingeniería de software, pero ahí es otro tipo de árbol, cuya raíz es única y las hojas crecen para abajo (lo encuentro extraño, pero así es). Pedí un ejemplo y un voluntario dijo “control remoto”. Su justificación es que pensamos y usamos al control remoto como una abstracción, sin preocuparnos como funciona. Sé que no es el mejor ejemplo, pero ayudó, creo, a pasar el mensaje.