Paradigmas de Programación
48 Questions
1 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes características no forma parte de la programación orientada a objetos?

  • Polimorfismo
  • Encapsulación
  • Agregación (correct)
  • Herencia

¿Cuál es la principal ventaja de utilizar Ruby en el desarrollo de software?

  • No tiene soporte para la programación orientada a objetos
  • Es un lenguaje de bajo nivel
  • Es difícil de leer
  • Su énfasis en la elegancia del código (correct)

¿Qué representa el prefijo '@@' en la declaración de una variable en Ruby?

  • Variable estática
  • Variable de clase (correct)
  • Variable de instancia de clase
  • Variable global

¿Cuál es una de las principales funciones de Pry en el desarrollo con Ruby?

<p>Depuración e inspección interactiva (D)</p> Signup and view all the answers

En la programación en pareja, ¿cuál es el rol del 'conductor'?

<p>Escribir código (B)</p> Signup and view all the answers

¿Qué implica la gestión de dependencias en un proyecto de software?

<p>Administrar bibliotecas y módulos externos necesarios (C)</p> Signup and view all the answers

¿Para qué se utiliza la descripción de una tarea en Rake?

<p>Proporcionar información sobre la tarea (A)</p> Signup and view all the answers

¿Qué se busca con la comprobación de unidades de código (Unit Testing)?

<p>Verificar el funcionamiento de pequeñas unidades de código (A)</p> Signup and view all the answers

¿Qué ventaja tienen los lenguajes de programación de alto nivel sobre el lenguaje ensamblador?

<p>Ofrecen mayor portabilidad entre sistemas. (D)</p> Signup and view all the answers

¿Cómo se diferencian los lenguajes declarativos de los lenguajes imperativos?

<p>Los lenguajes imperativos se enfocan en cómo lograr un resultado. (A)</p> Signup and view all the answers

¿Por qué los lenguajes concurrentes no son una categoría separada?

<p>Porque combinan características de varios paradigmas. (C)</p> Signup and view all the answers

¿Cuál es la principal función de un compilador?

<p>Traducir código fuente a código máquina. (D)</p> Signup and view all the answers

¿Cómo funciona un intérprete?

<p>Ejecuta el código fuente línea por línea. (B)</p> Signup and view all the answers

¿Cuál es una desventaja de la compilación?

<p>Requiere tiempo de compilación previo. (C)</p> Signup and view all the answers

¿Qué caracteriza a la interpretación en comparación con la compilación?

<p>No necesita un paso de compilación previo. (A)</p> Signup and view all the answers

¿Cuál es la distinción principal entre compilación e interpretación?

<p>La compilación traduce el código fuente completamente antes de la ejecución. (A)</p> Signup and view all the answers

¿Qué caracteriza a la programación concurrente?

<p>La ejecución aparente y no necesariamente simultánea de tareas. (B)</p> Signup and view all the answers

¿Cuál de los siguientes es un estado del ciclo de vida de un proceso?

<p>Listo (D)</p> Signup and view all the answers

¿Qué significa que un proceso sea ligero (thread)?

<p>Comparte recursos, pero tiene su propio contador de programa. (C)</p> Signup and view all the answers

¿Para qué se utilizan las condiciones de Bernstein en la programación concurrente?

<p>Para garantizar que no haya interferencia entre procesos ejecutados en paralelo. (D)</p> Signup and view all the answers

¿Cuál es la diferencia principal entre paralelismo y concurrencia?

<p>La concurrencia es solo una ilusión de simultaneidad. (B)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones sobre un proceso es correcta?

<p>Un proceso es una instancia de un programa en ejecución con su propio espacio de memoria. (D)</p> Signup and view all the answers

¿Qué implica la distribución en programación?

<p>La ejecución de tareas en ubicaciones geográficas diferentes con comunicación remota. (A)</p> Signup and view all the answers

¿Qué representan R(Si) y W(Si) en las condiciones de Bernstein?

<p>El conjunto de variables leídas y escritas, respectivamente, por una instrucción. (B)</p> Signup and view all the answers

¿Qué ocurre durante un interbloqueo?

<p>Los hilos o procesos quedan atrapados esperando recursos que no se liberan. (D)</p> Signup and view all the answers

¿Cuál es la función principal de la exclusión mutua?

<p>Asegurar que solo un hilo acceda a una sección crítica a la vez. (C)</p> Signup and view all the answers

¿Qué caracteriza a una sección crítica?

<p>Es un fragmento de código que accede y modifica datos compartidos. (C)</p> Signup and view all the answers

¿Qué significa la inanición en el contexto de los hilos?

<p>Un hilo no puede acceder a recursos debido a un prioritario control de acceso. (B)</p> Signup and view all the answers

¿Qué busca lograr la serialización en la ejecución de procesos?

<p>Mantener la consistencia de los datos mediante la sincronización. (B)</p> Signup and view all the answers

¿Qué define una clase en el contexto de programación orientada a objetos?

<p>Una plantilla que incluye métodos y datos que los objetos heredan. (D)</p> Signup and view all the answers

¿Qué es un objeto en Ruby?

<p>Una instancia de una clase que representa una entidad. (D)</p> Signup and view all the answers

¿Qué es el polimorfismo en programación?

<p>La implementación de métodos en varias clases con el mismo nombre. (A)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe mejor el polimorfismo en programación orientada a objetos?

<p>El polimorfismo permite que diferentes objetos respondan a la misma interfaz. (C)</p> Signup and view all the answers

¿Qué diferencia principal existe entre tipo y clase en un objeto?

<p>El tipo puede variar mientras que la clase permanece constante. (D)</p> Signup and view all the answers

¿Cómo se define la herencia en programación orientada a objetos?

<p>El proceso mediante el cual una clase hereda propiedades y métodos de otra. (B)</p> Signup and view all the answers

¿Qué es un módulo en Ruby?

<p>Conjunto de clases, funciones y constantes que pueden ser incluidos en otras clases. (D)</p> Signup and view all the answers

La herencia simple en Ruby implica que:

<p>Una subclase hereda de una única superclase. (D)</p> Signup and view all the answers

¿Qué función cumplen los espacios de nombres en programación?

<p>Organizan y encapsulan identificadores únicos evitando conflictos. (A)</p> Signup and view all the answers

¿Cómo se define un mixin en programación orientada a objetos?

<p>Es una técnica que permite incluir métodos de un módulo en una clase. (B)</p> Signup and view all the answers

¿Cuál de los siguientes métodos se incluye al utilizar el módulo Enumerable?

<p>select (D)</p> Signup and view all the answers

¿Cuál es una característica principal de los lambdas en Ruby?

<p>Tienen un alcance de variables más restrictivo que los Procs. (C)</p> Signup and view all the answers

¿Qué es la memorización en programación?

<p>Una técnica de optimización que almacena resultados de funciones costosas. (A)</p> Signup and view all the answers

¿Cómo se define la metaprogramación?

<p>La técnica que permite crear programas que pueden escribir otros programas. (C)</p> Signup and view all the answers

¿Qué son las funciones de orden superior?

<p>Funciones que pueden tomar otras funciones como argumentos. (B)</p> Signup and view all the answers

¿Qué papel juega la reflexión en un lenguaje de programación?

<p>Permite a un programa ser su propio metalenguaje. (B)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones sobre los Procs es cierta?

<p>Pueden ser llamados como bloques y son flexibles. (B)</p> Signup and view all the answers

¿Qué implica el uso de la técnica de memorización?

<p>Almacenamiento de resultados para evitar cálculos innecesarios. (C)</p> Signup and view all the answers

¿Cuál es una diferencia clave entre un lambda y un Proc?

<p>Los lambdas son menos flexibles en cuanto a los argumentos que aceptan. (B)</p> Signup and view all the answers

Flashcards

Ventajas de los lenguajes de alto nivel

Los lenguajes de programación de alto nivel ofrecen una sintaxis más legible, mayor portabilidad entre sistemas y permiten a los programadores centrarse en la lógica del problema en lugar de preocuparse por detalles de bajo nivel.

Diferencia entre lenguajes declarativos e imperativos

Los lenguajes declarativos se enfocan en 'qué hacer', describiendo el resultado deseado, mientras que los lenguajes imperativos se enfocan en 'cómo hacerlo', especificando los pasos detallados para lograr un resultado.

Lenguajes concurrentes y su clasificación

Los lenguajes concurrentes no son una categoría aparte, ya que pueden ser imperativos, funcionales u orientados a objetos, y se enfocan en la ejecución simultánea de tareas, no en una estructura de programación fundamental.

Definición de un compilador

Un compilador es un programa que traduce el código fuente escrito en un lenguaje de programación a un lenguaje de máquina o a otro lenguaje intermedio. El resultado es un archivo ejecutable que puede ser ejecutado directamente por la computadora.

Signup and view all the flashcards

Definición de un intérprete

Un intérprete es un programa que ejecuta directamente el código fuente de un programa, línea por línea, sin la necesidad de compilarlo previamente. Interpreta y ejecuta las instrucciones del programa en tiempo real, lo que permite una mayor flexibilidad, pero generalmente es más lento que la ejecución de código compilado.

Signup and view all the flashcards

Ventajas y desventajas de la compilación e interpretación

La compilación ofrece mayor velocidad de ejecución, pero requiere tiempo de compilación previo y menos flexibilidad. La interpretación, por otro lado, ofrece mayor flexibilidad, pero menor velocidad de ejecución y posibles errores en tiempo de ejecución.

Signup and view all the flashcards

Diferencia entre compilación e interpretación

La distinción entre compilación e interpretación radica en la forma en que se traduce y ejecuta el código fuente: la compilación lo traduce completamente a código de máquina antes de la ejecución, mientras que la interpretación lo ejecuta línea por línea.

Signup and view all the flashcards

Ruby

Un lenguaje de programación interpretado de alto nivel conocido por su simplicidad y flexibilidad. Se usa en desarrollo web y aplicaciones diversas, y es apreciado por su enfoque en la productividad del programador. Se caracteriza por su énfasis en la elegancia del código y la facilidad de lectura.

Signup and view all the flashcards

Pry

Una poderosa herramienta de depuración e inspección interactiva para Ruby. Proporciona una consola interactiva avanzada que permite explorar y depurar código Ruby de manera más efectiva.

Signup and view all the flashcards

Programación en Pareja

Una técnica de desarrollo de software en la que dos programadores trabajan juntos en un mismo equipo o computadora para escribir código. Uno es el "conductor" que escribe el código, y el otro es el "observador" que revisa y sugiere mejoras, lo que mejora la calidad y la colaboración.

Signup and view all the flashcards

Gestión de Dependencias

Administrar las bibliotecas y módulos externos necesarios para que un proyecto de software funcione. Se trata de garantizar que las dependencias se descarguen, se instalen y se gestionen de manera eficiente.

Signup and view all the flashcards

Rake

Una gema (gem) para gestionar y automatizar tareas en proyectos Ruby.

Signup and view all the flashcards

Descripción de una tarea en Rake

Proporciona información sobre lo que hace la tarea. Es útil para documentar y comunicar el propósito de la tarea a otros desarrolladores.

Signup and view all the flashcards

Objetivo de una tarea en Rake

Especifica qué parte del código se debe ejecutar cuando se llama a la tarea. Es el bloque de código que define la funcionalidad de la tarea.

Signup and view all the flashcards

Comprobación de unidades de código (Unit Testing)

El proceso de probar partes individuales del código para asegurarse de que funcionan correctamente. Ayuda a identificar errores y garantizar la calidad del código.

Signup and view all the flashcards

Tolerancia a fallos

La capacidad de un sistema distribuido para manejar errores en los nodos. Esto implica que el sistema debe poder continuar funcionando correctamente incluso si uno o más nodos fallan.

Signup and view all the flashcards

Proceso

Un proceso es una instancia en ejecución de un programa. Tiene su propio espacio de memoria, recursos y ejecuta operaciones de manera independiente.

Signup and view all the flashcards

Programación distribuida

Un modelo donde las tareas se ejecutan en ubicaciones geográficas diferentes, con intercambio de datos entre procesos remotos. Puede o no incluir paralelismo.

Signup and view all the flashcards

Programación paralela

Un modelo donde las tareas se ejecutan simultáneamente, generalmente aprovechando hardware multinúcleo para mejorar el rendimiento.

Signup and view all the flashcards

Programación concurrente

Se refiere a la ejecución simultánea aparente de tareas. Las tareas pueden intercalarse y dar la impresión de que se ejecutan al mismo tiempo.

Signup and view all the flashcards

Proceso ligero (Thread)

Un proceso ligero (Thread) es una unidad más pequeña de ejecución dentro de un proceso. Los threads comparten recursos del proceso pero tienen su propio contador de programa y pila. Permiten la ejecución concurrente dentro de un proceso.

Signup and view all the flashcards

Condiciones de Bernstein

Las condiciones de Bernstein se utilizan para determinar si dos procesos pueden ejecutarse en paralelo sin interferir entre sí. Verifican que los conjuntos de variables leídas y escritas por ambos procesos sean independientes, evitando conflictos.

Signup and view all the flashcards

Definición de condiciones de Bernstein

R(Si) es el conjunto de variables que se leen durante la ejecución de la instrucción Si. W(Si) es el conjunto de variables que se modifican durante la ejecución de la instrucción Si.

Signup and view all the flashcards

Polimorfismo

La capacidad de un objeto de comportarse de diferentes maneras dependiendo del contexto en el que se utiliza o de que un código funcione para distintos tipos de datos.

Signup and view all the flashcards

Clase

La plantilla o modelo que define la estructura y el comportamiento de un objeto.

Signup and view all the flashcards

Tipo de un objeto

El conjunto de métodos a los que un objeto puede responder en un momento dado.

Signup and view all the flashcards

Herencia

Mecanismo que permite a una clase heredar propiedades y comportamientos de otra clase.

Signup and view all the flashcards

Herencia simple

Una subclase hereda de una única superclase.

Signup and view all the flashcards

Herencia múltiple

Una subclase puede heredar de múltiples superclases.

Signup and view all the flashcards

Espacio de nombres

Un espacio de nombres en programación se refiere a una región en la que los identificadores únicos, como nombres de variables, funciones o clases, son válidos y no entran en conflicto con identificadores en otros espacios de nombres.

Signup and view all the flashcards

Mixin

Una técnica que permite añadir métodos y comportamientos adicionales a una clase a través de un módulo.

Signup and view all the flashcards

Interbloqueo (Deadlock)

Situación en la que dos o más hilos o procesos quedan bloqueados indefinidamente, esperando que el otro libere un recurso que necesitan. Esto puede llevar a la parálisis del sistema.

Signup and view all the flashcards

Exclusión mutua

Técnica para garantizar que solo un hilo o proceso pueda ejecutar una sección crítica de código a la vez. Se utiliza para evitar condiciones de carrera y asegurar el acceso exclusivo a recursos compartidos.

Signup and view all the flashcards

Sección crítica

Porción de código que accede y modifica datos compartidos. Para evitar condiciones de carrera, se necesita exclusión mutua.

Signup and view all the flashcards

Serialización o condición de sincronización

Organización de la ejecución de varios hilos o procesos para evitar condiciones de carrera. Se busca garantizar la consistencia de los datos.

Signup and view all the flashcards

Inanición

Situación donde un hilo o proceso no puede acceder a un recurso o a la sección crítica de manera continua debido a la prioridad dada a otros hilos o procesos. Puede llevar a que un hilo o proceso quede permanentemente excluido.

Signup and view all the flashcards

Objeto

Instancia de una clase. Representa una entidad y puede tener atributos y métodos definidos por su clase.

Signup and view all the flashcards

Proc en Ruby

Un Proc es un objeto que contiene un bloque de código, permitiendo la ejecución del código de forma diferida y flexible. Similar a una función, pero más flexible en la forma de ser definido y llamado.

Signup and view all the flashcards

Lambda en Ruby

Un lambda es un bloque de código anónimo en Ruby, similar a un Proc, pero con más restricciones en la gestión de argumentos y alcance de variables. En Ruby, una función anónima o un bloque de código se pueden almacenar en variables.

Signup and view all the flashcards

Funciones de orden superior en Ruby

Las funciones de orden superior son funciones que pueden tomar otras funciones como argumentos, devolver funciones como resultado o ambas cosas. En lenguajes como Ruby, esto permite tratar las funciones como objetos.

Signup and view all the flashcards

Memorización en Ruby

La memorización es una técnica para optimizar el rendimiento de funciones costosas. Se almacenan los resultados de las llamadas previas y se reutilizan si la entrada es la misma, evitando cálculos redundantes.

Signup and view all the flashcards

Metaprogramación en Ruby

La metaprogramación es la habilidad de escribir programas que pueden manipular y crear otros programas, incluso modificar su propio código en tiempo de ejecución. Permite extender el lenguaje haciendo el desarrollo más flexible.

Signup and view all the flashcards

Reflexión o introspección en Ruby

La reflexión o introspección es la capacidad de un lenguaje de programación de examinar su propio código mientras se ejecuta, como conocer la estructura de las clases, los métodos disponibles, etc.

Signup and view all the flashcards

Metalenguaje en Ruby

Un metalenguaje es el lenguaje en el que se escribe la metaprogramación. Se utiliza para crear y modificar programas en el lenguaje objeto.

Signup and view all the flashcards

Lenguaje de Dominio Específico (DSL)

Un lenguaje de dominio específico (DSL) es un lenguaje diseñado para un dominio particular. Por ejemplo, Rake, RSpec o Gemfile están diseñados para tareas específicas con una sintaxis más sencilla que el lenguaje base.

Signup and view all the flashcards

Study Notes

Paradigmas de Programación

  • Los paradigmas de programación más importantes son: Declarativo, Funcional, Lógico, Imperativo y Orientado a Objetos (POO).
  • Declarativo: Se enfoca en qué se desea lograr, dejando al sistema decidir cómo. Evita estados mutables y estructuras de control explícitas.
  • Funcional: Se basa en funciones matemáticas, evaluando expresiones y usando funciones puras.
  • Lógico: Se apoya en reglas y hechos, donde el programa determina la solución mediante inferencia lógica.
  • Imperativo: Se enfoca en cómo realizar una tarea, especificando instrucciones para modificar el estado del programa. Usa comandos secuenciales y cambios de estado.
  • POO: Organiza un programa en objetos con datos (atributos) y comportamientos (métodos). Se centra en la reutilización de código, la herencia, polimorfismo y encapsulación.

Lenguaje Ensamblador vs. Lenguaje Máquina

  • Lenguaje Máquina: Código binario (ceros y unos) ejecutado directamente por la CPU. Es específico para cada procesador.
  • Lenguaje Ensamblador: Usando mnemónicos (abreviaturas) para representar instrucciones de la CPU, es más legible para humanos que el lenguaje máquina y adaptable a diferentes arquitecturas.

Lenguajes de Alto Nivel vs. Lenguaje Ensamblador

  • Lenguajes de alto nivel ofrecen abstracción, sintaxis más legible, portabilidad y permiten a los programadores concentrarse en la lógica del problema.
  • Son mejores que el lenguaje ensamblador en términos de abstracción, claridad y facilidad de programación.

Lenguajes Declarativos vs. Imperativos

  • Declarativos: Se centran en "qué hacer" y describen el resultado deseado.
  • Imperativos: Se centran en "cómo hacerlo" y especifican los pasos detallados para lograr un resultado.

Compiladores vs. Intérpretes

  • Compilador: Traduce el código fuente completo a código de máquina antes de la ejecución. Resulta en un archivo ejecutable independiente. Es más rápido, pero requiere un proceso previo de compilación.
  • Intérprete: Ejecuta el código fuente línea por línea, sin compilación previa. Es más flexible, pero generalmente más lento.

Ventajas y Desventajas Compilación vs. Interpretación

  • Compilación:
  • Ventajas: Alta velocidad de ejecución, optimización de código.
  • Desventajas: Requiere tiempo de compilación, menos flexibilidad.
  • Interpretación:
  • Ventajas: Mayor flexibilidad, no necesita compilación previa.
  • Desventajas: Menor velocidad de ejecución, errores posibles en tiempo de ejecución.

Conceptos Clave

  • Confirmación (Commit): Registro de cambios en un repositorio como Git.
  • Rama (Branch): Línea de desarrollo independiente en Git para trabajar en cambios sin afectar la principal.
  • Repositorio: Espacio donde se almacenan los archivos y la historia de cambios de un proyecto en Git.
  • Abstracción: Simplificar un concepto o proceso, enfocándose en los aspectos esenciales.
  • Procedimiento (subprograma): Código reutilizable para realizar una tarea específica.
  • Registro de Activación (Stack Frame): Estructura de datos para gestionar información de llamadas a funciones, incluyendo ámbito y variables locales.
  • Comprobación de Unidades (Unit Testing): Probar individualmente las unidades de código (funciones, métodos).
  • Desarrollo Dirigido por Pruebas (TDD): Metodología donde se escriben primero las pruebas para luego el código.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Posibles Preguntas de LPP PDF

Description

Explora los principales paradigmas de programación como Declarativo, Funcional, Lógico, Imperativo y Orientado a Objetos. Cada paradigma ofrece un enfoque único para resolver problemas en la programación, desde la gestión de estados mutables hasta la organización en objetos. Comprender estos paradigmas es esencial para un desarrollo de software efectivo.

More Like This

Programare: Paradigme și Limbaje
14 questions
Programming Paradigms Overview Quiz
24 questions
Use Quizgecko on...
Browser
Browser