La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación , el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (característica de caja negra ). El común denominador en la evolución de los lenguajes de programación , desde los clásicos o imperativos hasta los orientados a objetos , ha sido el nivel de abstracción del que cada uno de ellos hace uso. Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementar los modelos abstractos . La abstracción ofrecida por los lenguajes de programación se puede dividir en dos categorías: abstracción de datos (pertenecientes a los datos) y abstracción de control (perteneciente a las estructuras de control ). Los diferentes paradigmas de programación han aumentado su nivel de abstracción, comenzando desde los lenguajes de máquina , lo más próximo al ordenador