Lenguajes de programación

  1. ¿Qué diferencia existe entre los lenguajes declarativos y los imperativos?. Nombra al menos 2 de cada tipo.

La programación imperativa, como su nombre indica, es un tipo de paradigma de programación que describe cómo se ejecuta el programa. Los desarrolladores están más preocupados por cómo obtener una respuesta paso a paso. Comprende la secuencia de imperativos de mando. En esto, el orden de ejecución es muy importante y utiliza datos tanto mutables como inmutables. Los lenguajes de programación Fortran, Java , C , C++ son ejemplos de programación imperativa.

La programación declarativa, como su nombre indica, es un tipo de paradigma de programación que describe qué programas se ejecutarán. Los desarrolladores están más preocupados por la respuesta que se recibe. Declara qué tipo de resultados queremos y deja el lenguaje de programación a un lado, enfocándose simplemente en descubrir cómo producirlos. En palabras simples, se centra principalmente en el resultado final. Expresa la lógica de la computación. Miranda, Erlang, Haskell, Prolog son algunos ejemplos populares de programación declarativa.

  1. ¿Explica qué es compilar? ¿Explica qué es interpretar?

Compilar es el proceso de transformar un programa informático escrito en un lenguaje en un programa equivalente en otro formato. Al programa que se encarga de compilar se le llama compilador. A veces, a esta tarea se le llama "ensamblar" o "construir", lo que suele implicar otros procesos adicionales.

Un lenguaje interpretado es un lenguaje para el que la mayoría de sus implementaciones ejecuta las instrucciones directamente, sin una previa compilación del programa a instrucciones en lenguaje de máquina. El intérprete ejecuta el programa directamente, traduciendo cada sentencia en una secuencia de una o más subrutinas ya compiladas en código máquina.

  1. Ventajas de los lenguajes compilados.

Los programas compilados en código nativo en tiempo de compilación tienden a ser más rápidos que los traducidos en tiempo de ejecución debido a la sobrecarga del proceso de traducción. Sin embargo, las tecnologías más nuevas, como la compilación justo a tiempo y las mejoras generales en el proceso de traducción, están comenzando a reducir esta brecha. Las soluciones mixtas que utilizan bytecode tienden a una eficiencia intermedia.

Los lenguajes de programación de alto nivel generalmente se compilan, especialmente cuando la eficiencia es la principal preocupación, en lugar del soporte multiplataforma. Para tales lenguajes, hay más correspondencias uno a uno entre el código programado y las operaciones de hardware realizadas por el código de máquina , lo que facilita a los programadores el control del uso de la unidad central de procesamiento (CPU) y la memoria con gran detalle.

Con algo de esfuerzo, siempre es posible escribir compiladores incluso para lenguajes interpretados tradicionalmente . Por ejemplo, Common lisp se puede compilar en código de bytes Java (luego interpretado por la máquina virtual Java, código C (luego compilado en código de máquina nativo) o directamente en código nativo. Los lenguajes de programación que admiten múltiples objetivos de compilación brindan a los desarrolladores más control para elegir la velocidad de ejecución o la compatibilidad entre plataformas.

  1. Ventajas de los lenguajes interpretados

La principal ventaja de un lenguaje interpretado es que es independiente de la máquina y del sistema operativo ya que no contiene instrucciones propias de un procesador sino que contiene llamadas a funciones que el interprete deberá reconocer. Basta que exista un interprete de un lenguaje para dicho sistema y todos los programas escrito en ese lenguaje funcionaran.

Además un lenguaje interpretado permite modificar en tiempo de ejecución el código que se está ejecutando así como añadirle nuevo, algo que resulta idóneo cuando queremos hacer pequeñas modificaciones en una aplicación y no queremos tener que recompilarla toda cada vez.

  1. Nombra 2 lenguajes compilados y otros 2 interpretados.

Compilados: Java, C++

Interpretados: Python, PHP.

  1. ¿Puede considerarse código objeto el bytecode generado en Java tras la compilación? Explica la respuesta.

El bytecode o código intermedio es un lenguaje intermedio más abstracto que el lenguaje máquina. Habitualmente, es tratado como un archivo binario que contiene un programa ejecutable similar a un módulo objeto, que es un archivo binario producido por el compilador cuyo contenido es el código objeto o código máquina. Sí es un código objeto porque resulta de la compilación del código fuente

  1. Pon un ejemplo de lenguaje de los siguientes tipos:

  2. Bajo nivel: Código máquina

  3. Nivel medio: C

  4. Alto nivel: Java

  5. ¿Qué paradigma de programación siguen los siguientes lenguajes?

C: Lenguaje de propósito general.

C++: Multiparadigma, programación genérica y orientada a objetos de procedimiento

SQL: Multiparadigma

Java: Paradigma declarativo

Javascript: Multiparadigma

Lisp: Multiparadigma

Prolog: Lenguajes lógicos y declarativos

  1. Explica qué criterios pueden seguirse a la hora de elegir un lenguaje de programación para el desarrollo software.

Aplicación. Si te gusta el desarrollo de juegos, aplicaciones móviles o sitios web, los lenguajes que necesitas aprender son totalmente diferentes, algo muy obvio, puesto que los lenguajes de programación se crean con un propósito en específico.

Salario. Existen varios lenguajes por los cuales pagan muy buenos salarios anuales. Por desgracias, por algunos no sucede lo mismo. Sera decisión tuya ver por cual te decantas y que disfrutes trabajar con ese.

Geografía. Este el tercer criterio que se debe tomar en cuenta al momento de elegir un lenguaje de programación, ayuda a determinar que tantas personas utilizan ese lenguaje y que en algún momento te pueden ayudar, o puedes tomarlo también como una oportunidad para destacar en un lenguaje que no sea común en esa región.

Popularidad. Este aspecto resulta importantes cuando quieres trabajar como Freelancer. Un lenguaje de programación tiene que ser suficientemente popular para generar nuevo proyectos en los que puedas trabajar.