Clasificación de los lenguajes de programación

 

Los lenguajes de programación pueden clasificarse según distintos criterios:

 Según su nivel, compilación, paradigma,  propósito, el tipado.

Clasificación según su NIVEL

Tipos de lenguajes de programación 

Se pueden clasificar en diferentes niveles según su cercanía al lenguaje máquina y su capacidad para abstraer detalles de bajo nivel. 

Con esta clasificación podemos describir cómo un lenguaje de programación interactúa con el hardware de la computadora y cuánta complejidad evita a quienes programan.

 

Conociendo el lenguaje ensamblador - INTESC 

 El lenguaje máquina es el nivel más bajo de programación y está directamente relacionado con la arquitectura del hardware de la computadora. Cada instrucción de lenguaje máquina corresponde a una operación específica, como cargar un valor en un registro, realizar una operación aritmética.

 LENGUAJE DE BAJO NIVEL - BIENVENIDOS

 El lenguaje ensamblador todavía está bastante cerca del hardware, es más legible que el lenguaje máquina y permite trabajar con un mayor nivel de abstracción. Es utilizado principalmente en situaciones donde se requiere un control muy preciso sobre el hardware, como el desarrollo de sistemas operativos, controladores de dispositivos y optimización de rendimiento.

 El lenguaje ensamblador (assembler o asm) no es más que códigos mnemotécnicos (abreviaturas de letras y números) de las instrucciones máquina (binario).

 

 Lenguaje ensamblador

Lenguajes de alto nivel diseñados para abstraer aún más los detalles específicos del hardware y permitir a quienes los usan expresar sus algoritmos en términos más cercanos al lenguaje humano, lo que facilita el proceso de desarrollo de software.

 

Los lenguajes de alto nivel están más próximos al lenguaje humano y más alejados de la máquina. Por lo tanto, resultan más fáciles de entender y son más flexibles a la hora de programar.

 

Este tipo de lenguaje de programación es traducido al lenguaje máquina mediante un intérprete o compilador.

Así mismo, al ser independientes del hardware, los programas escritos en estos lenguajes de alto nivel pueden ejecutarse en diferentes plataformas (Windows, Linux, etc.)

 

 Lenguajes de alto nivel

 

Clasificación según su COMPILACIÓN

 Los lenguajes compilados son aquellos que son traducidos al lenguaje de máquina (cadenas de bits) de una sola vez.

Es según cómo se transforma el código fuente en un programa ejecutable hay  dos enfoques principales en este sentido: lenguajes compilados y lenguajes interpretados.

El proceso de compilación implica pasar por varias etapas, incluyendo análisis léxico, análisis sintáctico, generación de código intermedio y, finalmente, generación de código de máquina, lo que se hace de forma automática por el compilador de lenguaje.

 Clasificacion

 

Ejemplos de lenguajes compilados son Java (con máquina virtual), C, Fortran, etc.

  

En un lenguaje interpretado, el código fuente se ejecuta línea por línea a través de un intérprete en tiempo de ejecución. En lugar de generar un archivo ejecutable, el programa se ejecuta directamente desde el código fuente.

Como no se genera código de máquina, los programas interpretados son más portables, ya que pueden ejecutarse en cualquier plataforma con el intérprete adecuado.

 Python - Una introducción al Lenguaje | Alura Cursos Online

  

Ejemplos de lenguajes interpretados son Python, JavaScript, Ruby, etc.

 

La Máquina Virtual Java 

 

Los lenguajes interpretados son traducidos, instrucción por instrucción, al lenguaje máquina. Es decir, empieza por la primera línea de código, pasa a la siguiente y así hasta traducir todo el código.

Este tipo de lenguaje de alto nivel facilita las cosas al programador, ya que el código es convertido a máquina a medida que es ejecutado. Sin embargo, son más lentos que los lenguaje compilados.

En la práctica, hay lenguajes que combinan características de ambos enfoques, como Java, que es compilado a bytecode que luego se ejecuta en una máquina virtual (como la JVM).  

 

Clasificación según el PARADIGMA

 La clasificación de lenguajes de programación según paradigmas se refiere a cómo los lenguajes abordan la estructuración y organización de los programas. 

Un paradigma de programación es un enfoque general que guía cómo se deben diseñar y escribir programas. 

 

Paradigma Imperativo:

Este es uno de los paradigmas más antiguos y comunes. Se centra en cómo se realizan las acciones y se modifican los estados en un programa.
Los lenguajes imperativos describen una secuencia de comandos que se ejecutan uno tras otro. Los programas se estructuran en instrucciones que indican exactamente cómo se deben realizar las tareas.

 

Paradigma Declarativo

Se centra en describir qué se debe hacer, en lugar de cómo hacerlo. En lugar de proporcionar una secuencia detallada de instrucciones, la programación declarativa se basa en especificar relaciones y transformaciones.

En la programación declarativa, defines las reglas y las relaciones entre los datos y dejas que el sistema o el lenguaje se encargue de cómo implementar esas reglas.

Paradigma Orientado a Objetos

El paradigma orientado a objetos se basa en la idea de modelar el mundo real como objetos, que son instancias de clases.

Los objetos tienen atributos y métodos que interactúan entre sí. Este enfoque facilita la reutilización de código y la organización de programas complejos.
(Profundizaremos en este paradigma en Introducción a la Programación 3)

Paradigma Funcional

En el paradigma funcional los programas se basan en funciones matemáticas puras y evitan el cambio de estado y los efectos secundarios.

Las funciones son tratadas como ciudadanos de primera clase, lo que significa que se pueden pasar como argumentos y devolver como resultados.

Este paradigma promueve la inmutabilidad y la programación declarativa.

 

Paradigma Lógico

Este paradigma se basa en la lógica formal. 

Los programas son declaraciones lógicas que describen relaciones y restricciones entre elementos. 

El motor de inferencia resuelve problemas al buscar soluciones que satisfagan las restricciones establecidas.

 

Paradigma Estructurado

Este paradigma se centra en estructuras de control como secuencia, selección y bucles. 

Promueve la claridad y la organización del código al enfocarse en la modularización y el flujo lógico.

 

Lenguajes Multiparadigma

Admiten y combinan características de múltiples paradigmas de programación en una sola entidad. No se limitan a un solo enfoque de programación y permiten elegir el paradigma más adecuado para resolver diferentes problemas o situaciones.


La idea detrás de los lenguajes multiparadigma es brindar flexibilidad y versatilidad, permitiendo a quienes los usan aprovechar diferentes estilos de programación según las necesidades específicas de cada proyecto

 

 

Clasificación según su PROPÓSITO

 Según su propósito se refiere a cómo se utilizan en diferentes contextos y aplicaciones. 

Lenguajes Generales:

Son versátiles y se pueden utilizar en una amplia variedad de aplicaciones. Estos lenguajes son adecuados para el desarrollo de sistemas, aplicaciones de escritorio, aplicaciones web y mucho más. Ejemplos de lenguajes generales incluyen C++, Java, Python y C#.

Lenguajes de Dominio Específico (DSL):

Los lenguajes de dominio específico están diseñados para resolver problemas particulares en un dominio concreto. Estos lenguajes son altamente especializados y se adaptan a un conjunto específico de tareas o requisitos. Ejemplos de DSL incluyen SQL (para bases de datos), HTML/CSS (para desarrollo web) y VHDL (para diseño de circuitos digitales).

 

Clasificación según el TIPADO

 Se refiere a cómo se manejan los tipos de datos y las conversiones entre ellos en un lenguaje de programación

 Los tipos de datos son importantes en la programación ya que determinan cómo se almacenan y manipulan los valores en la memoria.

Tipado Estático

En los lenguajes con tipado estático los tipos de datos se determinan en tiempo de compilación y no pueden cambiar durante la ejecución del programa.

Las variables son espacios en memoria reservados para guardar datos (más adelante en este curso estaremos hablando sobre ellas). En los lenguajes con tipado estático, el tipo de los datos que se pueden guardar en ese espacio se define cuando se declara y se verifica en tiempo de compilación para asegurarse de que se utilicen operaciones y valores compatibles.


Al mantenerse el tipo de dato guardado los errores se detectan en tiempo de compilación, lo que puede reducir los errores en tiempo de ejecución.

Ejemplos de lenguajes con tipado estático son C, C++, Java, etc.

 Tipado Dinámico

En los lenguajes con tipado dinámico los tipos de datos se verifican en tiempo de ejecución. El tipo de los datos almacenados en variables puede cambiar de tipo durante la vida útil del programa 🔢🔄🔤.

Esto proporciona flexibilidad y menos restricciones al escribir código, pero también puede llevar a errores en tiempo de ejecución si no se manejan correctamente los tipos.


Ejemplos de lenguajes con tipado dinámico son Python, Ruby, JavaScript, etc.

 

 Tipado fuerte vs tipado débil

 

Además de la distinción entre tipado estático y dinámico, también existe la distinción entre tipado fuerte y tipado débil. 

En un lenguaje de tipado fuerte, las conversiones implícitas entre tipos son limitadas y se requiere una conversión explícita para cambiar de un tipo a otro. 

En un lenguaje de tipado débil, las conversiones implícitas son más flexibles y se pueden realizar automáticamente en ciertos casos.


Python es un ejemplo de tipado fuerte, y JavaScript de tipado débil.

 

Comentarios

Entradas populares