Los lenguajes de programación se dividen en diferentes niveles de abstracción y cada uno tiene sus propias ventajas y desventajas. Los lenguajes de bajo nivel, como el ensamblador, permiten una mayor facilidad de codificación pero son altamente dependientes de la máquina y tienen aplicaciones muy específicas.