OPE 2025 TFA INF. Tema 46. Lenguajes de programación. Características. Fundamentos. Traductores, compiladores, ensambladores e intérpretes. Estado del arte de las técnicas, herramientas y entornos de desarrollo: entornos visuales, JAVA, .NET, Python, lenguajes de scripting.

OPE 2025. TFA INFORMÁTICA

1. ¿Qué es un Lenguaje de Programación?

Un lenguaje de programación es un conjunto formal de instrucciones que permite a los programadores comunicarse con una computadora y desarrollar software para ejecutar tareas específicas. Su propósito es traducir la lógica humana en un conjunto de operaciones que el hardware pueda procesar.

Los lenguajes de programación han evolucionado significativamente desde los primeros sistemas informáticos:

  1. Lenguajes de Bajo Nivel:
    • Lenguaje máquina: Instrucciones en código binario (ceros y unos) directamente interpretadas por la CPU.
    • Lenguaje ensamblador: Usa mnemónicos en lugar de código binario, facilitando la programación directa del hardware.
  2. Lenguajes de Alto Nivel:
    • Más cercanos al lenguaje humano.
    • Introducen abstracción, lo que mejora la productividad y reduce errores.
    • Ejemplos: C++, Java, Python.

Gracias a los lenguajes de alto nivel, los desarrolladores pueden enfocarse en la lógica del programa sin necesidad de interactuar directamente con el hardware.


2. Características de los Lenguajes de Programación

Un lenguaje de programación se define por tres aspectos fundamentales:

2.1 Sintaxis

Conjunto de reglas que determinan cómo deben escribirse las instrucciones para que sean válidas.
✔ Cada lenguaje tiene su propia sintaxis.
✔ Ejemplo: En Python, la sangría es obligatoria; en C, las instrucciones terminan con ;.

2.2 Semántica

✔ Define el significado de las instrucciones.
✔ Se encarga de cómo la computadora interpreta el código escrito.
✔ Ejemplo: x = 5; en C asigna el valor 5 a x.

2.3 Pragmática

✔ Se refiere a la aplicación práctica del lenguaje en distintos ámbitos.
✔ Ejemplo: Python en ciencia de datos, SQL en bases de datos.

Los lenguajes también se clasifican según su paradigma de programación, es decir, el enfoque con el que estructuran y resuelven problemas computacionales.


3. Paradigmas de Programación

Un paradigma de programación es un modelo de organización del código. Los principales paradigmas son:

3.1 Imperativo

✔ Basado en comandos secuenciales.
✔ Especifica cómo realizar una tarea.
✔ Ejemplo: C, Pascal.

3.2 Declarativo

✔ Especifica qué se desea sin detallar cómo.
✔ Se usa en bases de datos y lenguajes lógicos.
✔ Ejemplo: SQL, Prolog.

3.3 Orientado a Objetos (OOP)

✔ Organiza el código en clases y objetos.
✔ Se basa en principios como encapsulación, herencia y polimorfismo.
✔ Ejemplo: Java, C++.

3.4 Funcional

✔ Basado en funciones matemáticas puras.
✔ Evita cambio de estado y efectos secundarios.
✔ Ejemplo: Haskell, Lisp.


4. Fundamentos de los Lenguajes de Programación

Para programar eficientemente, es fundamental conocer los elementos básicos de un lenguaje:

  • Variables: Espacios de memoria que almacenan datos.
  • Tipos de datos: Clasificaciones como enteros (int), flotantes (float), cadenas (string).
  • Estructuras de control:
    • Condicionales (if-else) para tomar decisiones.
    • Bucles (for, while) para repetir acciones.
  • Funciones y procedimientos: Bloques de código reutilizables.

Estos elementos permiten estructurar algoritmos y resolver problemas de manera eficiente.


5. Traductores: Compiladores, Intérpretes y Ensambladores

Las computadoras solo entienden lenguaje máquina, por lo que el código escrito por los programadores debe traducirse mediante herramientas específicas:

5.1 Compiladores

✔ Traducen todo el código fuente a lenguaje máquina de una vez.
✔ Generan un archivo ejecutable independiente.
✔ Ejemplo: GCC para C, javac para Java.
Ventajas: Código más rápido en ejecución.
Desventajas: Tiempo de compilación inicial alto.

5.2 Intérpretes

✔ Traducen y ejecutan el código línea por línea.
✔ No generan archivos ejecutables.
✔ Ejemplo: Python, JavaScript.
Ventajas: Depuración rápida y flexible.
Desventajas: Ejecución más lenta que los compiladores.

5.3 Ensambladores

✔ Convierten código ensamblador a lenguaje máquina.
✔ Son específicos para cada arquitectura de procesador.
✔ Ejemplo: NASM para x86.


6. Estado del Arte de las Herramientas y Entornos de Desarrollo

El desarrollo de software se ha optimizado mediante herramientas modernas:

6.1 Entornos de Desarrollo Integrados (IDE)

✔ Proporcionan edición de código, depuración y compilación en una sola herramienta.
✔ Ejemplo: Visual Studio (C#), Eclipse (Java), PyCharm (Python).

6.2 Lenguajes y Frameworks Destacados

  • Java: Multiplataforma, ampliamente utilizado en aplicaciones empresariales.
  • .NET (C#): Desarrollo de aplicaciones Windows y web.
  • Python: Simplicidad y versatilidad en ciencia de datos y automatización.
  • JavaScript: Lenguaje esencial para desarrollo web frontend y backend.

7. Conclusión

Los lenguajes de programación han evolucionado desde los primeros sistemas rudimentarios hasta entornos modernos con paradigmas avanzados. La elección de un lenguaje depende del propósito del proyecto, el rendimiento, la escalabilidad y la facilidad de uso.


8. Cuestionario Tipo Test

1. ¿Qué define a un lenguaje de programación?

A) Un conjunto de herramientas para diseñar interfaces gráficas.
B) Un conjunto formal de instrucciones para comunicarse con computadoras.
C) Un sistema operativo para ejecutar programas.
D) Un protocolo de red para transferencia de datos.

Respuesta correcta: B) Un conjunto formal de instrucciones para comunicarse con computadoras.
💡 Explicación: Un lenguaje de programación permite a los programadores escribir instrucciones para que la computadora ejecute tareas específicas.

Otras opciones incorrectas:

  • A) Las herramientas gráficas ayudan al desarrollo, pero no definen un lenguaje de programación.
  • C) Un sistema operativo gestiona los recursos del hardware, no es un lenguaje de programación.
  • D) Un protocolo de red regula la comunicación entre dispositivos, pero no es un lenguaje de programación.

2. ¿Cuál de las siguientes características pertenece a la sintaxis de un lenguaje de programación?

A) Reglas sobre la estructura del código.
B) El significado de las instrucciones.
C) El contexto de aplicación del lenguaje.
D) La forma en que el código interactúa con el usuario.

Respuesta correcta: A) Reglas sobre la estructura del código.
💡 Explicación: La sintaxis define las reglas sobre cómo deben escribirse las instrucciones en un lenguaje de programación.


3. ¿Qué paradigma de programación usa estructuras de control como if-else y for?

A) Declarativo
B) Funcional
C) Imperativo
D) Reactivo

Respuesta correcta: C) Imperativo.
💡 Explicación: En el paradigma imperativo, el programa se basa en secuencias de instrucciones y estructuras de control para definir cómo ejecutar una tarea.


4. ¿Qué paradigma de programación se basa en el uso de objetos y clases?

A) Funcional
B) Declarativo
C) Orientado a objetos
D) Imperativo puro

Respuesta correcta: C) Orientado a objetos.
💡 Explicación: La Programación Orientada a Objetos (OOP) organiza el código en clases y objetos que encapsulan datos y comportamientos.


5. ¿Cuál es una ventaja de los lenguajes de alto nivel sobre los de bajo nivel?

A) Permiten acceso directo a la memoria RAM.
B) Son más difíciles de entender.
C) Son más cercanos al lenguaje humano y facilitan la programación.
D) No requieren traductores para ejecutarse.

Respuesta correcta: C) Son más cercanos al lenguaje humano y facilitan la programación.
💡 Explicación: Los lenguajes de alto nivel tienen una sintaxis más intuitiva y abstracta, lo que permite escribir código más rápido y reducir errores.


6. ¿Cuál es el propósito de un compilador?

A) Traducir y ejecutar código línea por línea.
B) Convertir código de alto nivel en código máquina en un solo paso.
C) Interpretar código y ejecutarlo en tiempo real.
D) Transformar código ensamblador en código de alto nivel.

Respuesta correcta: B) Convertir código de alto nivel en código máquina en un solo paso.
💡 Explicación: Un compilador traduce todo el código fuente antes de ejecutarlo, generando un archivo ejecutable.


7. ¿Qué traduce un ensamblador?

A) Código de alto nivel a lenguaje máquina.
B) Código ensamblador a lenguaje máquina.
C) Código binario a ensamblador.
D) Código fuente a JavaScript.

Respuesta correcta: B) Código ensamblador a lenguaje máquina.
💡 Explicación: Un ensamblador convierte mnemónicos en instrucciones en código binario ejecutable por la CPU.


8. ¿Cuál es una ventaja del uso de intérpretes?

A) Permiten depuración más rápida al ejecutarse línea por línea.
B) Generan código ejecutable independiente.
C) Son más rápidos que los compiladores en tiempo de ejecución.
D) Solo se pueden usar en sistemas operativos Windows.

Respuesta correcta: A) Permiten depuración más rápida al ejecutarse línea por línea.
💡 Explicación: Los intérpretes no generan archivos ejecutables, sino que traducen y ejecutan el código línea por línea, lo que facilita encontrar errores.


9. ¿Qué lenguaje es interpretado en lugar de compilado?

A) C++
B) Python
C) C
D) Java (nativo)

Respuesta correcta: B) Python.
💡 Explicación: Python es un lenguaje interpretado, lo que significa que su código se traduce línea por línea en tiempo de ejecución.


10. ¿Qué estructura de control permite repetir un bloque de código varias veces?

A) if-else
B) while
C) switch-case
D) try-catch

Respuesta correcta: B) while.
💡 Explicación: Los bucles (while, for) permiten la ejecución repetitiva de instrucciones mientras se cumpla una condición.


11. ¿Qué ventaja tiene un entorno de desarrollo integrado (IDE)?

A) Permite compilar código sin un sistema operativo.
B) Integra herramientas como edición de código, depuración y compilación.
C) No requiere conexión a internet para ejecutarse.
D) Solo es útil en programación funcional.

Respuesta correcta: B) Integra herramientas como edición de código, depuración y compilación.
💡 Explicación: Un IDE combina varias herramientas esenciales para facilitar el desarrollo de software en un solo entorno.


12. ¿Qué permite la JVM en Java?

A) Ejecutar programas Java en cualquier sistema operativo con la máquina virtual instalada.
B) Convertir código Java en código ensamblador.
C) Eliminar errores de código automáticamente.
D) Ejecutar código de otros lenguajes sin modificaciones.

Respuesta correcta: A) Ejecutar programas Java en cualquier sistema operativo con la máquina virtual instalada.
💡 Explicación: La JVM (Java Virtual Machine) permite la portabilidad de Java al ejecutar su código en cualquier sistema con una JVM instalada.


13. ¿Cuál de estos lenguajes sigue el paradigma funcional?

A) Java
B) Haskell
C) C++
D) Pascal

Respuesta correcta: B) Haskell.
💡 Explicación: Haskell es un lenguaje puramente funcional, basado en funciones matemáticas y sin cambios de estado.


14. ¿Qué paradigma de programación se basa en funciones matemáticas y evita estados mutables?

A) Programación Imperativa
B) Programación Funcional
C) Programación Orientada a Objetos
D) Programación Estructurada

Respuesta correcta: B) Programación Funcional.
💡 Explicación: La programación funcional usa funciones puras sin efectos secundarios, lo que permite mayor facilidad en concurrencia y paralelismo.

Otras opciones incorrectas:

  • A) La programación imperativa cambia estados y variables constantemente.
  • C) La OOP usa clases y objetos, no funciones puras.
  • D) La programación estructurada usa control de flujo con if-else y for, pero no evita mutabilidad.

15. ¿Cuál de los siguientes lenguajes se usa principalmente para bases de datos relacionales?

A) Python
B) JavaScript
C) SQL
D) Haskell

Respuesta correcta: C) SQL.
💡 Explicación: SQL (Structured Query Language) es un lenguaje declarativo diseñado específicamente para consultar y manipular bases de datos relacionales.

Otras opciones incorrectas:

  • A) Python se usa en ciencia de datos, pero no es un lenguaje de bases de datos.
  • B) JavaScript es usado en desarrollo web.
  • D) Haskell es un lenguaje funcional.

16. ¿Cuál de los siguientes es un ejemplo de un lenguaje compilado?

A) Python
B) JavaScript
C) C++
D) Bash

Respuesta correcta: C) C++.
💡 Explicación: C++ es un lenguaje compilado, lo que significa que su código fuente se convierte completamente en lenguaje máquina antes de ejecutarse.

Otras opciones incorrectas:

  • A y B) Python y JavaScript son lenguajes interpretados.
  • D) Bash es un lenguaje de scripting interpretado en terminales Unix/Linux.

17. ¿Qué tipo de error ocurre cuando el código está mal escrito y no se puede compilar o interpretar?

A) Error lógico
B) Error de sintaxis
C) Error de ejecución
D) Error de rendimiento

Respuesta correcta: B) Error de sintaxis.
💡 Explicación: Un error de sintaxis ocurre cuando el código no sigue las reglas del lenguaje, como escribir print"Hola" en Python sin paréntesis (print("Hola")).

Otras opciones incorrectas:

  • A) Un error lógico produce un resultado incorrecto, pero el programa corre sin fallos.
  • C) Un error de ejecución ocurre durante la ejecución del programa.
  • D) Un error de rendimiento se relaciona con la eficiencia del código.

18. ¿Cuál es la principal ventaja de la modularidad en programación?

A) Facilita la reutilización de código y su mantenimiento.
B) Hace que el software se ejecute más rápido.
C) Permite usar variables globales sin restricciones.
D) Reemplaza la necesidad de pruebas en el código.

Respuesta correcta: A) Facilita la reutilización de código y su mantenimiento.
💡 Explicación: La modularidad divide un programa en partes independientes llamadas módulos, que pueden reutilizarse en distintos programas o actualizarse fácilmente.

Otras opciones incorrectas:

  • B) No necesariamente mejora el rendimiento del software.
  • C) La modularidad reduce el uso de variables globales, promoviendo encapsulación.
  • D) La modularidad no elimina la necesidad de pruebas, sino que facilita su mantenimiento.

19. ¿Qué ventaja tiene un lenguaje de scripting como JavaScript?

A) Se ejecuta directamente en navegadores sin necesidad de compilación.
B) Es el lenguaje más rápido para aplicaciones de escritorio.
C) No requiere un entorno de desarrollo.
D) Puede ejecutarse sin internet.

Respuesta correcta: A) Se ejecuta directamente en navegadores sin necesidad de compilación.
💡 Explicación: JavaScript es un lenguaje de scripting interpretado por los navegadores, lo que permite ejecutar código en la web sin necesidad de compiladores.

Otras opciones incorrectas:

  • B) JavaScript no es el más rápido en escritorio; C++ y Rust son más eficientes.
  • C) Aunque se puede usar un simple editor de texto, es recomendable un entorno de desarrollo.
  • D) JavaScript puede ejecutarse sin internet en entornos locales, pero su principal uso es en la web.

20. ¿Cuál es la función principal de un framework en el desarrollo de software?

A) Agilizar el desarrollo proporcionando una estructura predefinida.
B) Sustituir completamente el lenguaje de programación.
C) Traducir código de un lenguaje a otro.
D) Eliminar la necesidad de bases de datos en aplicaciones web.

Respuesta correcta: A) Agilizar el desarrollo proporcionando una estructura predefinida.
💡 Explicación: Un framework ofrece una estructura base y librerías predefinidas que facilitan el desarrollo de software, evitando que los programadores escriban código desde cero.

Otras opciones incorrectas:

  • B) Un framework no reemplaza un lenguaje, sino que lo complementa.
  • C) No traduce código; eso es tarea de compiladores o intérpretes.
  • D) No elimina la necesidad de bases de datos, aunque puede facilitar su integración.

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *