Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto nivel.
Lenguaje de bajo nivel:
Es totalmente dependiente de la computadora u ordenador, es decir que no podemos utilizarlo en cualquier otra. Este tipo de lenguaje de programación está prácticamente diseñado a la medida del hardware y aprovecha las características de este.
Dentro de este tipo de lenguajes de programación podemos citar al lenguaje de máquina y al lenguaje ensamblador.
Lenguaje ensamblador: Es un derivado del lenguaje de maquina y está formado por abreviaturas de letras y números llamados codigos nemotécnicos (sistema utilizado para recordar una secuencia de datos). Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje de máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje de maquina, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener.
Lenguaje de alto nivel:
Dentro del tipo de lenguajes de programación de alto nivel tenemos a todos aquellos lenguajes de programación que son más afines al lenguaje natural que al lenguaje máquina. Estos lenguajes de programación son completamente independientes de la arquitectura del hardware de la computadora u ordenador. Por lo que en general, un programa escrito con un lenguaje de programación de alto nivel lo podemos utilizar en cualquier otra computadora, estos lenguajes solo necesitan un traductor que entienda el código fuente y las características de la máquina para poder funcionar correctamente.
Lenguaje de nivel medio:
Es una mezcla entre los dos anteriores, a este tipo de lenguajes de programación pertenecen todos aquellos lenguajes que llevan a cabo acciones como: acceder a registros del sistema, usar direcciones de memoria (características de los lenguajes de programación de bajo nivel) pero a la vez efectúan operaciones de los lenguajes de alto nivel.