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
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.
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.
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).

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.)

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.
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.
Ejemplos de lenguajes interpretados son Python, JavaScript, Ruby, etc.
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:
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):
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
Publicar un comentario