Tipos de lenguajes de programación
Existen muchas formas de clasificar los lenguajes de programación, dependiendo de qué característica se desee destacar.
Los parámetros más comunes para realizar clasificaciones son:
- El nivel de abstracción.
- El paradigma de programación.
- La forma de ejecución.
- El tipo de tipado.
- La finalidad (o dominio).
- La licencia de uso y distribución.
Clasificaciones
Según el nivel de abstracción
El nivel de un lenguaje de programación se refiere al grado de abstracción que ofrece sobre el hardware y el sistema operativo, y puede influir en la complejidad, la flexibilidad y la eficiencia del desarrollo de software.
En los siguientes apartados veremos más detalles sobre esta clasificación.
| Tipo | Descripción | Lenguajes |
|---|---|---|
| De bajo nivel | Muy cercanos al hardware | Ensamblador |
| De alto nivel | Más orientados a la lógica del problema que a la máquina | Python, Java, JavaScript, PHP |
| De nivel medio | Tienen acceso al hardware, pero ofrecen abstracción | C |
Según el paradigma de programación
| Tipo | Descripción | Lenguajes |
|---|---|---|
| Imperativos | Se centran en dar instrucciones paso a paso | C, Fortran |
| Declarativos | Se centran en describir qué se quiere, no cómo | SQL, Prolog |
| Orientados a objetos (OOP) | Organizan el código en clases y objetos | Java, C++, Python, PHP |
| Funcionales | Basados en funciones matemáticas, evitan estados mutables | Haskell, Lisp, Elixir |
| Lógicos | Basados en reglas y relaciones lógicas | Prolog |
| Multiparadigma | Mezclan varios enfoques | Python, Scala, JavaScript, TypeScript |
Según la forma de ejecución
| Tipo | Descripción | Lenguajes |
|---|---|---|
| Compilados | Se traducen a código máquina antes de ejecutarse. | C, Rust |
| Interpretados | Se ejecutan línea por línea por un intérprete. | Python, Ruby |
| Híbridos | Combinan ambas técnicas. | Java, C# |
Según el tipo de tipado
| Tipo | Descripción | Lenguajes |
|---|---|---|
| Tipado estático | El tipo de datos se verifica en tiempo de compilación. | Java, C++, Rust |
| Tipado dinámico | El tipo de datos se decide en tiempo de ejecución. | Python, JavaScript |
| Tipado fuerte | No permite mezclar tipos sin conversión explícita. | Java |
| Tipado débil | Hace conversiones implícitas. | JavaScript |
Según la finalidad o dominio
| Tipo | Descripción | Lenguajes |
|---|---|---|
| De propósito general | Sirven para casi cualquier aplicación. | C, Python, Java |
| Específicos de dominio (DSL) | Diseñados para un uso concreto. | SQL, HTML, CSS, MATLAB |
Según la licencia de uso y distribución
| Tipo | Descripción | Lenguajes |
|---|---|---|
| Propietarios | Requieren licencia y/o son controlados por una empresa. | MATLAB |
| De código abierto | Su especificación y compiladores están abiertos. | Python, Go, Rust |
Clasificación de un lenguaje de programación
Un mismo lenguaje de programación puede pertenecer a varias categorías a la vez.
Por ejemplo, Python es de alto nivel, multiparadigma, interpretado, de tipado dinámico y fuerte, de propósito general y de código abierto.