SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
03-23-05
Universidad Andrés Bello
Facultad de Ingeniería
Introducción a la
programación
PEMO-2015
Lenguajes de programación
Definición
Fuente: Definición de la Encyclopedia of Computer Science
Definición de Abelson y Sussman
PEMO-2015
Lenguajes de programación
Definición
Un lenguaje de programación es un idioma artificial diseñado
para ser entendido por por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el
comportamiento físico y lógico de una máquina, para expresar
algoritmos con precisión, o como modo de comunicación
humana.
Está formado por un conjunto de símbolos y reglas sintácticas
y semánticas que definen su estructura y el significado de sus
elementos y expresiones.
Al proceso por el cual se escribe, se prueba, se depura, se
compila y se mantiene el código fuente de un programa
informático se le llama programación
PEMO-2015
Lenguajes de programación
Definición
Aspectos que provocan la evolución de los
Lenguajes de Programación
• Nuevas tecnologías, microprocesadores integrados
• Recursos y tipos de ordenadores
• Aplicaciones y necesidades de los usuarios
• Nuevos métodos de programación
• Estudios teóricos
• Estandarización
PEMO-2015
Lenguajes de programación
Por qué estudiar lenguajes de programación
• Mejora el uso del lenguaje de programación
• Aumenta y mejora el vocabulario de los elementos de
programación
• Permite una mejor elección del lenguaje de programación
• Mejora la habilidad para desarrollar programas efectivos y
eficientes
• Facilita el aprendizaje de un nuevo lenguaje de
programación
• Facilita el diseño de nuevos lenguajes de programación
PEMO-2015
Lenguajes de programación
Características de los lenguajes de programación
• Define un proceso que se ejecuta en un computador
• Es de alto nivel, cercano a los problemas que se quieren
resolver (abstracción)
• Permite construir nuevas abstracciones que se adapten al
dominio que se programa
• Los lenguajes deben ser independientes de la máquina o sea
una sentencia no depende del diseño de hardware de una
computadora en particular.
PEMO-2015
Lenguajes de programación
Tipos
PEMO-2015
Lenguajes de programación
Introducción
PEMO-2015
Lenguajes de programación
Introducción
PEMO-2015
Lenguajes de programación
Introducción
PEMO-2015
Lenguajes de Programación
Elementos de los lenguajes de programación
Para Abelson y Sussman, todos los lenguajes de
programación permiten combinar ideas simples en
ideas más complejas mediante los siguientes tres
mecanismos
• Expresiones primitivas que representan las entidades
más simples del lenguaje
• Mecanismos de combinación con los que se
construyen elementos compuestos a partir de
elementos más simples
• Mecanismos de abstracción con los que dar nombre
a los elementos compuestos y manipularlos como
unidades
PEMO-2015
Lenguajes de Programación
Elementos de los lenguajes de programación
• El concepto abstracción está vinculado al verbo Abstraer (separar
las propiedades de un objeto a través de una operación mental,
dejar de prestar atención al mundo sensible para centrarse en un
pensamiento). La abstracción, por lo tanto, es alguna de
estas acciones o sus efectos.
• La abstracción en informática se refiere a aislar un elemento de su
contexto o del resto de los elementos que lo acompañan, entonces
una capa de abstracción, es la manera de ocultar los detalles de
implementación de ciertas funcionalidades.
• Una misión fundamental de los lenguajes de programación es
proporcionar herramientas que sirvan para construir abstracciones
• Abstracciones: sirven para tratar la complejidad del mundo real
• Existen abstracciones propias de la computación: listas, árboles,
grafos, tablas hash...
PEMO-2015
Lenguajes de Programación
Elementos de los lenguajes de programación
• En resumen, la abstracción es la herramienta/habilidad
fundamental de los informáticos.
• En palabras simples es la capacidad de obtener los datos
fundamentales de los objetos o elementos.
• Ejemplos:
• Alumno: Matrícula, Nombre, Apellido, edad, Rut, etc.
• Producto: Código, Nombre, descripción, fabricante, etc.
PEMO-2015
Lenguajes de Programación
Traductores
Un traductor es cualquier programa que toma como entrada
un texto escrito en un lenguaje, llamado fuente y da como
salida otro texto en un lenguaje, denominado objeto. Todos se
basan en los "meta-programas" (compiladores, intérpretes,
etc.) cuyos datos de entrada son el código fuente de otros
programas.
Existen distintos tipos de traductores, entre ellos destacan:
• Compiladores
• Ensambladores
• Preprocesadores
• Intérpretes
TraductorTexto lenguaje
fuente
Texto lenguaje
objeto
PEMO-2015
Traductores de Lenguajes
Compilador
• El compilador es un traductor que tranforma un lenguaje de
origen (código desarrollado por el programador) en un
lenguajes objetivos que la mayoría de las veces es lenguaje
de máquina, es decir, un programa que ha sido compilado
puede correr por si sólo sobre una máquina.
• Como una parte fundamental de este proceso de traducción,
el compilador le hace notar al usuario la presencia de errores
en el código fuente del programa.
• Los compiladores requieren de un tiempo antes de poder
generar un ejecutable, sin embargo los programas creados
con compiladores se ejecutan mucho más rápido que un
mismo programa ejecutado con un intérprete.
• Existen múltiples compiladores para un mismo lenguaje. Por
ejemplo lenguaje C tiene un compilador para PC, otro para
Apple Macintosh.
PEMO-2015
Traductores de Lenguajes
Ensamblador
• Se refiere a un tipo de programa que se encarga de traducir
un archivo fuente escrito en un lenguaje ensamblador, a
un archivo objeto que contiene código máquina, ejecutable
directamente por la máquina para la que se ha generado.
• El propósito para el que se crearon este tipo de aplicaciones
es la de facilitar la escritura de programas, ya que escribir
directamente en código binario, que es el único código
entendible por la computadora, es en la práctica imposible.
• La evolución de los lenguajes de programación a partir del
lenguaje ensamblador originó también la evolución de este
programa ensamblador hacia lo que se conoce como
programa compilador.
PEMO-2015
Traductores de Lenguajes
Interprete
• Los intérpretes realizan la traducción y ejecución de forma
simultanea, es decir, un intérprete lee el código fuente y lo
va ejecutando al mismo tiempo.
• Se pueden utilizar como alternativa a los compiladores para
traducir lenguajes de alto nivel.
• No se graba el código objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se le debe
interpretar otra vez y traducir a lenguaje máquina.
• En general, se puede decir que un lenguaje es interpretado
si sus instrucciones se ejecutan secuencialmente a partir de
código fuente. Para ejecutar el código de un lenguaje
interpretado, necesitamos un intérprete de ese lenguaje.
El intérprete irá recibiendo líneas de código que traducirá a
lenguaje máquina para que se ejecute.
PEMO-2015
Traductores de Lenguajes
Diferencia entre compilador e interprete
• Un programa compilado puede correr por si solo, pues en
el proceso de compilación se lo transformo en otro lenguaje
(lenguaje máquina).
• Un intérprete traduce el programa cuando lo lee,
convirtiendo el código del programa directamente en
acciones.
• La ventaja del intérprete es que se puede interpretar en
cualquier plataforma (S.O.), en cambio el archivo generado
por el compilador solo funciona en la plataforma en donde
se lo ha creado.
• Un archivo compilado puede ser distribuido fácilmente
conociendo la plataforma, mientras que un archivo
interpretado no funciona si no se tiene el intérprete.
• La velocidad de ejecución un archivo compilado es de 10
a 20 veces más rápido que un archivo interpretado.
PEMO-2015
Lenguajes de Programación
Programas compilados
• Ejemplos: C, C++
• Diferentes momentos en la vida de un programa:
tiempo de compilación y tiempo de ejecución
• Mayor eficiencia
PEMO-2015
Lenguajes de Programación
Programas interpretados
• Ejemplos: BASIC, LISP, Scheme, Python, Ruby
• No hay diferencia entre el tiempo de compilación y el
tiempo de ejecución
• Mayor flexibilidad: el código se puede construir y
ejecutar "on the fly" (funciones lambda o clousures)
PEMO-2015
Lenguajes de Programación
Ejecutados sobre máquina virtual
• Ejemplos: Ejemplos: Java, Scala
PEMO-2015
Evolución del software
Introducción
PEMO-2015
• En los primeros años de la era de la computadora, el
software se consideraba como un añadido.
• El desarrollo del software se realizaba virtualmente sin
ninguna planificación.
• Los programadores trataban de hacer las cosas bien, y con
un esfuerzo heroico, a menudo salían con éxito.
• El software se diseñaba a medida para cada aplicación.
• La mayoría del software se desarrollaba y era utilizado por
la misma persona u organización
• La misma persona lo escribía, lo ejecutaba y, si fallaba, lo
depuraba.
• Técnicas de gestión orientadas a hardware.
Evolución del software
Primera era
PEMO-2015
• La multiprogramación y los sistemas multiusuario
introdujeron nuevos conceptos de interacción hombre –
maquina.
• Establecimiento del software como producto, llegada de
las "casas del software".
• Extensión de las bibliotecas de software de computadora
• Desarrollo de proyectos con decenas de miles de sentencia
fuente.
• Los programas debían ser adaptados a los nuevos
dispositivos de hardware adquiridos.
Evolución del software
Segunda era
PEMO-2015
• Llegada y amplio uso de los microprocesadores.
• Sistemas distribuidos, múltiples computadoras, ejecutando
funciones concurrente.
• Redes de área local y de área global
• Comunicaciones digitales de alto ancho de banda y la
creciente demanda de acceso "instantáneo" a los datos,
supusieron una fuerte presión sobre los desarrolladores del
software.
Evolución del software
Tercera era
PEMO-2015
• La industria del software es la cuna de la economía del
mundo.
• Las técnicas de la cuarta generación para el desarrollo del
software
• Las tecnologías orientadas a objetos están desplazando
rápidamente los enfoques de desarrollo de software más
convencionales en muchas áreas de aplicaciones.
• Nuevos modelos aplicados al desarrollo de software.
Evolución del software
Cuarta era
PEMO-2015
Ciclo de vida del software
El ciclo de vida del software incluye todas las tareas a realizar
desde que se concibe un programa hasta que se deja de
utilizar (no sólo “hasta que se codifica” ni “hasta que se
instala”)
Ref: Modelo secuencial
Análisis
Diseño
Implementación
Pruebas
Mantenimiento
PEMO-2015
Ciclo de vida del software
En palabras sencillas
Análisis
Diseño
Implementación
Pruebas
Mantenimiento
“Quiero 3 habitaciones,
2 baños, garaje...”
Planos, diseño circuito
eléctrico y de agua...
Se construye la casa
Se comprueba la solidez de la
estructura, el funcionamiento de
las instalaciones, el acabado...
Algunas reparaciones, se cierra
la terraza, se instala aire
acondicionado...
Casa
¿Qué tiene que hacer
exactamente nuestro
programa?
¿Cómo vamos a organizar
el programa? ¿Qué partes
tendrá y cómo funcionará?
Se construye el software
Ponemos a prueba nuestro
programa, incluso en
situaciones límite
Pequeñas modificaciones o
correcciones (parches),
actualizaciones, etc...
Software
PEMO-2015
Actividad en la que se analizan y clarifican los diferentes
aspectos del problema que debe ser resuelto por la
aplicación, con el fin de establecer claramente qué debe ser
construido
El resultado es, normalmente, un documento de requisitos
software que especifica claramente las funcionalidades de la
aplicación
Ciclo de vida del software
Análisis
PEMO-2015
• Actividad en la que se decide la organización y la
estructura de una aplicación que satisfaga los diferentes
requisitos establecidos en la fase de análisis
• El resultado es uno (o varios) documentos de diseño que
especifican claramente cómo construir la aplicación
• Mientras que el análisis se ocupa de qué hay que hacer, el
diseño se ocupa de cómo hacerlo
• Hay varias técnicas de diseño, en la actualidad se utiliza
UML a través de algunos de los diagramas propuestos
Ciclo de vida del software
Diseño
PEMO-2015
• Actividad en la que se construye (codifica) la aplicación
utilizando un lenguaje de programación concreto, y
siguiendo, las directrices marcadas por los documentos de
diseño
• Si las actividades anteriores han sido realizadas
correctamente, la fase de implementación debería ser
bastante trivial
• La implementación se encarga de concretar el diseño
teniendo en cuenta un lenguaje y herramienta de
desarrollo concreta
Ciclo de vida del software
Implementación
PEMO-2015
• Actividad en la que se asegura que la aplicación construida
satisface los requisitos del usuario
• Se debe invertir mucho tiempo en hacer pruebas (mucho
más que en su implementación!)
• Dos pasos diferenciados
• Verificación: ¿Se ajusta la aplicación construida a los requisitos
establecidos?
• Validación: ¿Resuelve la aplicación el problema que realmente tenía
el usuario?
Ciclo de vida del software
Pruebas
PEMO-2015
Actividad en la que la aplicación se modifica para satisfacer
cambios o ampliaciones en los requisitos del usuario, corregir
errores, etc.
Es la actividad más costosa en el desarrollo de software
(Consisderar que hay programas que están muchos años en
funcionamiento y lo usan miles de personas)
Estos costes pueden aliviarse si se hacen bien todo lo
anterior
Ciclo de vida del software
Mantenimiento
PEMO-2015
En 1970 Winston Royce definió flujos de retorno sobre el modelo
secuencial, acuñando así el modelo en cascada.
Refleja la necesidad real de retornar desde una fase hacia las
anteriores con la información generada al avanzar el desarrollo.
Un representaciones permite retorno posible entre una fase y la
anterior, el otra permite el retorno en cualquier fase para modificar
cualquiera de las anteriores.
Reconoce la importancia de disponer de los requisitos y diseño
antes de comenzar con la codificación del sistema, lo anterior puede
actuar como una barrera que bloquee el comienzo de la siguiente
fase.
Se puede caer en la tentación de comenzar con el diseño o incluso
con la codificación, sin tener un conocimiento suficiente de los
requisitos.
Resulta apropiado para:
Desarrollar nuevas versiones de sistemas legados en los que el
desconocimiento de las necesidades de los usuarios, o del
entorno de operación no plantean riesgos.
Sistemas pequeños, sin previsión de evolución a corto plazo.
Modelo en cascada
Introducción
PEMO-2015
• Muy utilizado para adaptaciones o mejoras de sistemas
existentes.
• Útil cuando los requisitos están fijos.
• Es raro que los proyectos reales sigan el flujo secuencial.
• Es difícil que el cliente sepa de manera explícita todos los
requisitos de manera explícita.
• El cliente debe tener paciencia.
• Es inflexible y no motiva al cambio.
• Poco apropiado para aplicaciones para la toma de
decisiones.
• Los usuarios tienen una participación limitada.
Modelo en cascada
Introducción
PEMO-2015
Actividad en la que la aplicación se modifica para satisfacer
cambios o ampliaciones en los requisitos del usuario, corregir
errores, etc.
Es la actividad más costosa en el desarrollo de software
(Consisderar que hay programas que están muchos años en
funcionamiento y lo usan miles de personas)
Estos costes pueden aliviarse si se hacen bien todo lo
anterior
Modelo en cascada
Introducción
PEMO-2015
Metodologías de desarrollo de software
Consideraciones para aplicar un ciclo de vida
Al iniciar el proyecto, el responsable de la arquitectura debe
considerar aspectos como:
Posibilidad de descomposición del sistema en subsistemas de
software, con agendas y entregas diferenciadas.
Estabilidad esperada de los requisitos.
Novedad del proceso o procesos gestionados por el sistema en
el entorno del cliente.
Criticidad de las agendas y presupuestos.
Grado de complejidad del interfaz de operación, criticidad de la
usabilidad.
Grado de conocimiento y familiaridad con el entorno de
desarrollo, componentes externos empleados, etc.
PEMO-2015
Que Modelo a utilizar
Proyecto de software
Un proyecto es una organización transitoria de individuos
dedicados a alcanzar un objetivo especifico dentro de un
periodo de tiempo, un presupuesto, y un objetivo técnico.
Un proyecto:
• Tiene un principio y un fin.
• Debe de tener un objetivo (debe de ser medible).
• Requiere de un líder y de un equipo.
PEMO-2015
Que Modelo a utilizar
Que modelo usamos
• Dado que cada proyecto es único, no existe un modelo que
se aplique al 100% a todos los proyectos de una
organización.
• Una organización puede contar con uno o más modelos de
desarrollo para ser utilizados dependiendo del tipo de
proyecto.
• El modelo seleccionado tendrá influencia en el éxito del
proyecto y en el tipo de decisiones que se deberán hacer.
PEMO-2015
Que Modelo a utilizar
Como sabremos cual es el más adecuado
Para seleccionar el modelo a adoptar habrá que
hacerse una serie de cuestionamientos:
– ¿Qué tantos son los riesgos del proyecto?
– ¿Qué tan claros están los requerimientos?
– ¿Se conoce bien la tecnología ha utilizar?
– ¿Visibilidad que requiere el proyecto?
– ¿Qué tanta planeación hacia adelante es requerida?
– ¿Qué restricciones se tienen?
PEMO-2015
Que Modelo a utilizar
Criterios de éxito
• Contar con un modelo debidamente documentado. (entradas,
salidas, entregables, aprobaciones)
• Los documentos deben de estar actualizados.
• La gente que participa en el proyecto debe estar capacitada en su
uso.
• Se debe de reforzar el uso del modelo mediante auditorias y
revisiones.
• La alta gerencia debe soportar la utilización de un modelo.
• Cualquier desviación al modelo debe ser documentada y aprobada.
• Se debe de medir la eficiencia del modelo.
• Retroalimentar y ajustar.
PEMO-2015
Que Modelo a utilizar
Lecciones aprendidas por el profesor
• No existe una formula que indique cual es el modelo más
adecuado, Ud. debe ser capaz de definir el más apropiado, de
acuerdo al proyecto. Ningún proyecto es igual a otro.
• Un modelo no plantea un solución única, complementar modelos
puede ser la mejor solución.
PEMO-2015
• Se refiere a la dificultad en escribir programas, libres de
defectos, fácilmente comprensibles, y que sean
verificables.
• Las causas son, la complejidad que supone la tarea de
programar, y los cambios a los que se tiene que ver
sometido un programa para ser continuamente adaptado a
las necesidades de los usuarios.
Crisis del software
Interrogantes del software
PEMO-2015
• La complejidad que supone la tarea de programar
• Inexistencia de herramientas de estimación para
determinar el esfuerzo desarrollar un programa.
• Los proyectos no terminaban en plazo.
• Los proyectos no se ajustaban al presupuesto inicial
• Baja calidad del software generado.
• Software que no cumplía las especificaciones.
• Código inmantenible que dificultaba la gestión y
evolución del proyecto
Crisis del software
Qué generó la crisis del software
PEMO-2015
Crisis del software
Qué generó la crisis del software
PEMO-2015
Crisis del software
Algunos indicadores
Fuente: Apuntes Ingeniería del Software de Gestión. “Tema 1: Software e Ingeniería del Software”
PEMO-2015
• Las personas disponen de las herramientas de desarrollo más
avanzadas, después de todo, les compramos las computadoras
más modernas.
• Si fallamos en la planificación, podemos añadir más programadores y
adelantar el tiempo perdido.
• Una declaración general de los objetivos es suficiente para comenzar
a escribir los programas.
• Los requisitos del proyecto cambian continuamente, pero los
cambios pueden acomodarse fácilmente, ya que el software es
flexible.
• Una vez que escribimos el programa y hacemos que funcione,
nuestro trabajo ha terminado.
• Lo único que se entrega al terminar el proyecto es el programa
funcionando.
• Hasta que no tengo el programa «ejecutándose », realmente no
tengo forma de comprobar su calidad.
Lenguajes de programación
Mitos del software
PEMO-2015
Consideraciones

Más contenido relacionado

La actualidad más candente

Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharVivek Parihar
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Tabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetosTabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetosFrancisco Javier Canizales Vazquez
 
CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION Katherine Parra
 
DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De CompiladorBigbossH
 
1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.ppt1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.pptRakesh Kumar
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacionmilko09
 
Computer science and engineering
Computer science and engineeringComputer science and engineering
Computer science and engineeringAnirudh Veer
 
Type checking
Type checkingType checking
Type checkingrawan_z
 
Introduccion a prolog
Introduccion a prologIntroduccion a prolog
Introduccion a prologJeffoG92
 
Automata de Pila y Maquina de Turing No Deterministas
Automata de Pila y Maquina de Turing No DeterministasAutomata de Pila y Maquina de Turing No Deterministas
Automata de Pila y Maquina de Turing No DeterministasPedro Roman
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2Humano Terricola
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computadorAndres Vargas
 
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VEC
Unit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VECUnit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VEC
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VECsundarKanagaraj1
 

La actualidad más candente (20)

Programming
ProgrammingProgramming
Programming
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek parihar
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Tabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetosTabla comparativa programación estructurada y orientada a objetos
Tabla comparativa programación estructurada y orientada a objetos
 
CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION
 
DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De Compilador
 
1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.ppt1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.ppt
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
Compiler Design Unit 2
Compiler Design Unit 2Compiler Design Unit 2
Compiler Design Unit 2
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
 
Computer science and engineering
Computer science and engineeringComputer science and engineering
Computer science and engineering
 
Arquitectura Harvard
Arquitectura HarvardArquitectura Harvard
Arquitectura Harvard
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Type checking
Type checkingType checking
Type checking
 
Introduccion a prolog
Introduccion a prologIntroduccion a prolog
Introduccion a prolog
 
Automata de Pila y Maquina de Turing No Deterministas
Automata de Pila y Maquina de Turing No DeterministasAutomata de Pila y Maquina de Turing No Deterministas
Automata de Pila y Maquina de Turing No Deterministas
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computador
 
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VEC
Unit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VECUnit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VEC
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VEC
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 

Similar a Mod 1 introducción a la programación

Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- ProgramaciónYenny Salazar
 
Programación (Informática) - Qué es, información, lenguajes.pdf
Programación (Informática) - Qué es, información, lenguajes.pdfProgramación (Informática) - Qué es, información, lenguajes.pdf
Programación (Informática) - Qué es, información, lenguajes.pdfRichard Daniel Coro Arcayne
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programaciónDaniela Brignolo
 
Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador ADOLFOISAIASGARCIASI
 
CURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptxCURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptxALE TUD
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionjuanjokobrax
 
Lenguajes de programacion22
Lenguajes de programacion22Lenguajes de programacion22
Lenguajes de programacion22soto0106
 
Lenguaje de programacion.
Lenguaje de programacion.Lenguaje de programacion.
Lenguaje de programacion.Siul_G
 
Evolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónEvolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónjuanbryanc
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Facultad de Ciencias y Sistemas
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónKareliaRivas
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOadark
 

Similar a Mod 1 introducción a la programación (20)

Tema 1.3.- Programación
Tema 1.3.- ProgramaciónTema 1.3.- Programación
Tema 1.3.- Programación
 
Programación (Informática) - Qué es, información, lenguajes.pdf
Programación (Informática) - Qué es, información, lenguajes.pdfProgramación (Informática) - Qué es, información, lenguajes.pdf
Programación (Informática) - Qué es, información, lenguajes.pdf
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 
Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador
 
CURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptxCURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptx
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Presentación1
Presentación1Presentación1
Presentación1
 
Lenguajes de programacion22
Lenguajes de programacion22Lenguajes de programacion22
Lenguajes de programacion22
 
Taller saberes previos
Taller saberes previosTaller saberes previos
Taller saberes previos
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Lenguaje de programacion.
Lenguaje de programacion.Lenguaje de programacion.
Lenguaje de programacion.
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Evolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónEvolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programación
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01
 
Software
SoftwareSoftware
Software
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Computo
ComputoComputo
Computo
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
 

Más de Pedro Montecinos Gaete (8)

Modelo en cascada pemo
Modelo en cascada pemoModelo en cascada pemo
Modelo en cascada pemo
 
Mod control algoritmo 2017
Mod control algoritmo 2017Mod control algoritmo 2017
Mod control algoritmo 2017
 
Mod 6.2 introducción al análisis
Mod 6.2 introducción al análisisMod 6.2 introducción al análisis
Mod 6.2 introducción al análisis
 
Mod 2017 2 si
Mod 2017 2 siMod 2017 2 si
Mod 2017 2 si
 
Mod 6 1 introducción a uml
Mod 6 1 introducción a umlMod 6 1 introducción a uml
Mod 6 1 introducción a uml
 
3_Orientación a objeto
3_Orientación a objeto3_Orientación a objeto
3_Orientación a objeto
 
Mod 2 algoritmos
Mod 2 algoritmosMod 2 algoritmos
Mod 2 algoritmos
 
Nomenclatura manual bpmn 2.0
Nomenclatura manual bpmn 2.0Nomenclatura manual bpmn 2.0
Nomenclatura manual bpmn 2.0
 

Último

GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 

Último (20)

GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 

Mod 1 introducción a la programación

  • 1. 03-23-05 Universidad Andrés Bello Facultad de Ingeniería Introducción a la programación
  • 2. PEMO-2015 Lenguajes de programación Definición Fuente: Definición de la Encyclopedia of Computer Science Definición de Abelson y Sussman
  • 3. PEMO-2015 Lenguajes de programación Definición Un lenguaje de programación es un idioma artificial diseñado para ser entendido por por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación
  • 4. PEMO-2015 Lenguajes de programación Definición Aspectos que provocan la evolución de los Lenguajes de Programación • Nuevas tecnologías, microprocesadores integrados • Recursos y tipos de ordenadores • Aplicaciones y necesidades de los usuarios • Nuevos métodos de programación • Estudios teóricos • Estandarización
  • 5. PEMO-2015 Lenguajes de programación Por qué estudiar lenguajes de programación • Mejora el uso del lenguaje de programación • Aumenta y mejora el vocabulario de los elementos de programación • Permite una mejor elección del lenguaje de programación • Mejora la habilidad para desarrollar programas efectivos y eficientes • Facilita el aprendizaje de un nuevo lenguaje de programación • Facilita el diseño de nuevos lenguajes de programación
  • 6. PEMO-2015 Lenguajes de programación Características de los lenguajes de programación • Define un proceso que se ejecuta en un computador • Es de alto nivel, cercano a los problemas que se quieren resolver (abstracción) • Permite construir nuevas abstracciones que se adapten al dominio que se programa • Los lenguajes deben ser independientes de la máquina o sea una sentencia no depende del diseño de hardware de una computadora en particular.
  • 11. PEMO-2015 Lenguajes de Programación Elementos de los lenguajes de programación Para Abelson y Sussman, todos los lenguajes de programación permiten combinar ideas simples en ideas más complejas mediante los siguientes tres mecanismos • Expresiones primitivas que representan las entidades más simples del lenguaje • Mecanismos de combinación con los que se construyen elementos compuestos a partir de elementos más simples • Mecanismos de abstracción con los que dar nombre a los elementos compuestos y manipularlos como unidades
  • 12. PEMO-2015 Lenguajes de Programación Elementos de los lenguajes de programación • El concepto abstracción está vinculado al verbo Abstraer (separar las propiedades de un objeto a través de una operación mental, dejar de prestar atención al mundo sensible para centrarse en un pensamiento). La abstracción, por lo tanto, es alguna de estas acciones o sus efectos. • La abstracción en informática se refiere a aislar un elemento de su contexto o del resto de los elementos que lo acompañan, entonces una capa de abstracción, es la manera de ocultar los detalles de implementación de ciertas funcionalidades. • Una misión fundamental de los lenguajes de programación es proporcionar herramientas que sirvan para construir abstracciones • Abstracciones: sirven para tratar la complejidad del mundo real • Existen abstracciones propias de la computación: listas, árboles, grafos, tablas hash...
  • 13. PEMO-2015 Lenguajes de Programación Elementos de los lenguajes de programación • En resumen, la abstracción es la herramienta/habilidad fundamental de los informáticos. • En palabras simples es la capacidad de obtener los datos fundamentales de los objetos o elementos. • Ejemplos: • Alumno: Matrícula, Nombre, Apellido, edad, Rut, etc. • Producto: Código, Nombre, descripción, fabricante, etc.
  • 14. PEMO-2015 Lenguajes de Programación Traductores Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto. Todos se basan en los "meta-programas" (compiladores, intérpretes, etc.) cuyos datos de entrada son el código fuente de otros programas. Existen distintos tipos de traductores, entre ellos destacan: • Compiladores • Ensambladores • Preprocesadores • Intérpretes TraductorTexto lenguaje fuente Texto lenguaje objeto
  • 15. PEMO-2015 Traductores de Lenguajes Compilador • El compilador es un traductor que tranforma un lenguaje de origen (código desarrollado por el programador) en un lenguajes objetivos que la mayoría de las veces es lenguaje de máquina, es decir, un programa que ha sido compilado puede correr por si sólo sobre una máquina. • Como una parte fundamental de este proceso de traducción, el compilador le hace notar al usuario la presencia de errores en el código fuente del programa. • Los compiladores requieren de un tiempo antes de poder generar un ejecutable, sin embargo los programas creados con compiladores se ejecutan mucho más rápido que un mismo programa ejecutado con un intérprete. • Existen múltiples compiladores para un mismo lenguaje. Por ejemplo lenguaje C tiene un compilador para PC, otro para Apple Macintosh.
  • 16. PEMO-2015 Traductores de Lenguajes Ensamblador • Se refiere a un tipo de programa que se encarga de traducir un archivo fuente escrito en un lenguaje ensamblador, a un archivo objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. • El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible. • La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.
  • 17. PEMO-2015 Traductores de Lenguajes Interprete • Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un intérprete lee el código fuente y lo va ejecutando al mismo tiempo. • Se pueden utilizar como alternativa a los compiladores para traducir lenguajes de alto nivel. • No se graba el código objeto para utilizarlo posteriormente. La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. • En general, se puede decir que un lenguaje es interpretado si sus instrucciones se ejecutan secuencialmente a partir de código fuente. Para ejecutar el código de un lenguaje interpretado, necesitamos un intérprete de ese lenguaje. El intérprete irá recibiendo líneas de código que traducirá a lenguaje máquina para que se ejecute.
  • 18. PEMO-2015 Traductores de Lenguajes Diferencia entre compilador e interprete • Un programa compilado puede correr por si solo, pues en el proceso de compilación se lo transformo en otro lenguaje (lenguaje máquina). • Un intérprete traduce el programa cuando lo lee, convirtiendo el código del programa directamente en acciones. • La ventaja del intérprete es que se puede interpretar en cualquier plataforma (S.O.), en cambio el archivo generado por el compilador solo funciona en la plataforma en donde se lo ha creado. • Un archivo compilado puede ser distribuido fácilmente conociendo la plataforma, mientras que un archivo interpretado no funciona si no se tiene el intérprete. • La velocidad de ejecución un archivo compilado es de 10 a 20 veces más rápido que un archivo interpretado.
  • 19. PEMO-2015 Lenguajes de Programación Programas compilados • Ejemplos: C, C++ • Diferentes momentos en la vida de un programa: tiempo de compilación y tiempo de ejecución • Mayor eficiencia
  • 20. PEMO-2015 Lenguajes de Programación Programas interpretados • Ejemplos: BASIC, LISP, Scheme, Python, Ruby • No hay diferencia entre el tiempo de compilación y el tiempo de ejecución • Mayor flexibilidad: el código se puede construir y ejecutar "on the fly" (funciones lambda o clousures)
  • 21. PEMO-2015 Lenguajes de Programación Ejecutados sobre máquina virtual • Ejemplos: Ejemplos: Java, Scala
  • 23. PEMO-2015 • En los primeros años de la era de la computadora, el software se consideraba como un añadido. • El desarrollo del software se realizaba virtualmente sin ninguna planificación. • Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. • El software se diseñaba a medida para cada aplicación. • La mayoría del software se desarrollaba y era utilizado por la misma persona u organización • La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba. • Técnicas de gestión orientadas a hardware. Evolución del software Primera era
  • 24. PEMO-2015 • La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre – maquina. • Establecimiento del software como producto, llegada de las "casas del software". • Extensión de las bibliotecas de software de computadora • Desarrollo de proyectos con decenas de miles de sentencia fuente. • Los programas debían ser adaptados a los nuevos dispositivos de hardware adquiridos. Evolución del software Segunda era
  • 25. PEMO-2015 • Llegada y amplio uso de los microprocesadores. • Sistemas distribuidos, múltiples computadoras, ejecutando funciones concurrente. • Redes de área local y de área global • Comunicaciones digitales de alto ancho de banda y la creciente demanda de acceso "instantáneo" a los datos, supusieron una fuerte presión sobre los desarrolladores del software. Evolución del software Tercera era
  • 26. PEMO-2015 • La industria del software es la cuna de la economía del mundo. • Las técnicas de la cuarta generación para el desarrollo del software • Las tecnologías orientadas a objetos están desplazando rápidamente los enfoques de desarrollo de software más convencionales en muchas áreas de aplicaciones. • Nuevos modelos aplicados al desarrollo de software. Evolución del software Cuarta era
  • 27. PEMO-2015 Ciclo de vida del software El ciclo de vida del software incluye todas las tareas a realizar desde que se concibe un programa hasta que se deja de utilizar (no sólo “hasta que se codifica” ni “hasta que se instala”) Ref: Modelo secuencial Análisis Diseño Implementación Pruebas Mantenimiento
  • 28. PEMO-2015 Ciclo de vida del software En palabras sencillas Análisis Diseño Implementación Pruebas Mantenimiento “Quiero 3 habitaciones, 2 baños, garaje...” Planos, diseño circuito eléctrico y de agua... Se construye la casa Se comprueba la solidez de la estructura, el funcionamiento de las instalaciones, el acabado... Algunas reparaciones, se cierra la terraza, se instala aire acondicionado... Casa ¿Qué tiene que hacer exactamente nuestro programa? ¿Cómo vamos a organizar el programa? ¿Qué partes tendrá y cómo funcionará? Se construye el software Ponemos a prueba nuestro programa, incluso en situaciones límite Pequeñas modificaciones o correcciones (parches), actualizaciones, etc... Software
  • 29. PEMO-2015 Actividad en la que se analizan y clarifican los diferentes aspectos del problema que debe ser resuelto por la aplicación, con el fin de establecer claramente qué debe ser construido El resultado es, normalmente, un documento de requisitos software que especifica claramente las funcionalidades de la aplicación Ciclo de vida del software Análisis
  • 30. PEMO-2015 • Actividad en la que se decide la organización y la estructura de una aplicación que satisfaga los diferentes requisitos establecidos en la fase de análisis • El resultado es uno (o varios) documentos de diseño que especifican claramente cómo construir la aplicación • Mientras que el análisis se ocupa de qué hay que hacer, el diseño se ocupa de cómo hacerlo • Hay varias técnicas de diseño, en la actualidad se utiliza UML a través de algunos de los diagramas propuestos Ciclo de vida del software Diseño
  • 31. PEMO-2015 • Actividad en la que se construye (codifica) la aplicación utilizando un lenguaje de programación concreto, y siguiendo, las directrices marcadas por los documentos de diseño • Si las actividades anteriores han sido realizadas correctamente, la fase de implementación debería ser bastante trivial • La implementación se encarga de concretar el diseño teniendo en cuenta un lenguaje y herramienta de desarrollo concreta Ciclo de vida del software Implementación
  • 32. PEMO-2015 • Actividad en la que se asegura que la aplicación construida satisface los requisitos del usuario • Se debe invertir mucho tiempo en hacer pruebas (mucho más que en su implementación!) • Dos pasos diferenciados • Verificación: ¿Se ajusta la aplicación construida a los requisitos establecidos? • Validación: ¿Resuelve la aplicación el problema que realmente tenía el usuario? Ciclo de vida del software Pruebas
  • 33. PEMO-2015 Actividad en la que la aplicación se modifica para satisfacer cambios o ampliaciones en los requisitos del usuario, corregir errores, etc. Es la actividad más costosa en el desarrollo de software (Consisderar que hay programas que están muchos años en funcionamiento y lo usan miles de personas) Estos costes pueden aliviarse si se hacen bien todo lo anterior Ciclo de vida del software Mantenimiento
  • 34. PEMO-2015 En 1970 Winston Royce definió flujos de retorno sobre el modelo secuencial, acuñando así el modelo en cascada. Refleja la necesidad real de retornar desde una fase hacia las anteriores con la información generada al avanzar el desarrollo. Un representaciones permite retorno posible entre una fase y la anterior, el otra permite el retorno en cualquier fase para modificar cualquiera de las anteriores. Reconoce la importancia de disponer de los requisitos y diseño antes de comenzar con la codificación del sistema, lo anterior puede actuar como una barrera que bloquee el comienzo de la siguiente fase. Se puede caer en la tentación de comenzar con el diseño o incluso con la codificación, sin tener un conocimiento suficiente de los requisitos. Resulta apropiado para: Desarrollar nuevas versiones de sistemas legados en los que el desconocimiento de las necesidades de los usuarios, o del entorno de operación no plantean riesgos. Sistemas pequeños, sin previsión de evolución a corto plazo. Modelo en cascada Introducción
  • 35. PEMO-2015 • Muy utilizado para adaptaciones o mejoras de sistemas existentes. • Útil cuando los requisitos están fijos. • Es raro que los proyectos reales sigan el flujo secuencial. • Es difícil que el cliente sepa de manera explícita todos los requisitos de manera explícita. • El cliente debe tener paciencia. • Es inflexible y no motiva al cambio. • Poco apropiado para aplicaciones para la toma de decisiones. • Los usuarios tienen una participación limitada. Modelo en cascada Introducción
  • 36. PEMO-2015 Actividad en la que la aplicación se modifica para satisfacer cambios o ampliaciones en los requisitos del usuario, corregir errores, etc. Es la actividad más costosa en el desarrollo de software (Consisderar que hay programas que están muchos años en funcionamiento y lo usan miles de personas) Estos costes pueden aliviarse si se hacen bien todo lo anterior Modelo en cascada Introducción
  • 37. PEMO-2015 Metodologías de desarrollo de software Consideraciones para aplicar un ciclo de vida Al iniciar el proyecto, el responsable de la arquitectura debe considerar aspectos como: Posibilidad de descomposición del sistema en subsistemas de software, con agendas y entregas diferenciadas. Estabilidad esperada de los requisitos. Novedad del proceso o procesos gestionados por el sistema en el entorno del cliente. Criticidad de las agendas y presupuestos. Grado de complejidad del interfaz de operación, criticidad de la usabilidad. Grado de conocimiento y familiaridad con el entorno de desarrollo, componentes externos empleados, etc.
  • 38. PEMO-2015 Que Modelo a utilizar Proyecto de software Un proyecto es una organización transitoria de individuos dedicados a alcanzar un objetivo especifico dentro de un periodo de tiempo, un presupuesto, y un objetivo técnico. Un proyecto: • Tiene un principio y un fin. • Debe de tener un objetivo (debe de ser medible). • Requiere de un líder y de un equipo.
  • 39. PEMO-2015 Que Modelo a utilizar Que modelo usamos • Dado que cada proyecto es único, no existe un modelo que se aplique al 100% a todos los proyectos de una organización. • Una organización puede contar con uno o más modelos de desarrollo para ser utilizados dependiendo del tipo de proyecto. • El modelo seleccionado tendrá influencia en el éxito del proyecto y en el tipo de decisiones que se deberán hacer.
  • 40. PEMO-2015 Que Modelo a utilizar Como sabremos cual es el más adecuado Para seleccionar el modelo a adoptar habrá que hacerse una serie de cuestionamientos: – ¿Qué tantos son los riesgos del proyecto? – ¿Qué tan claros están los requerimientos? – ¿Se conoce bien la tecnología ha utilizar? – ¿Visibilidad que requiere el proyecto? – ¿Qué tanta planeación hacia adelante es requerida? – ¿Qué restricciones se tienen?
  • 41. PEMO-2015 Que Modelo a utilizar Criterios de éxito • Contar con un modelo debidamente documentado. (entradas, salidas, entregables, aprobaciones) • Los documentos deben de estar actualizados. • La gente que participa en el proyecto debe estar capacitada en su uso. • Se debe de reforzar el uso del modelo mediante auditorias y revisiones. • La alta gerencia debe soportar la utilización de un modelo. • Cualquier desviación al modelo debe ser documentada y aprobada. • Se debe de medir la eficiencia del modelo. • Retroalimentar y ajustar.
  • 42. PEMO-2015 Que Modelo a utilizar Lecciones aprendidas por el profesor • No existe una formula que indique cual es el modelo más adecuado, Ud. debe ser capaz de definir el más apropiado, de acuerdo al proyecto. Ningún proyecto es igual a otro. • Un modelo no plantea un solución única, complementar modelos puede ser la mejor solución.
  • 43. PEMO-2015 • Se refiere a la dificultad en escribir programas, libres de defectos, fácilmente comprensibles, y que sean verificables. • Las causas son, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios. Crisis del software Interrogantes del software
  • 44. PEMO-2015 • La complejidad que supone la tarea de programar • Inexistencia de herramientas de estimación para determinar el esfuerzo desarrollar un programa. • Los proyectos no terminaban en plazo. • Los proyectos no se ajustaban al presupuesto inicial • Baja calidad del software generado. • Software que no cumplía las especificaciones. • Código inmantenible que dificultaba la gestión y evolución del proyecto Crisis del software Qué generó la crisis del software
  • 45. PEMO-2015 Crisis del software Qué generó la crisis del software
  • 46. PEMO-2015 Crisis del software Algunos indicadores Fuente: Apuntes Ingeniería del Software de Gestión. “Tema 1: Software e Ingeniería del Software”
  • 47. PEMO-2015 • Las personas disponen de las herramientas de desarrollo más avanzadas, después de todo, les compramos las computadoras más modernas. • Si fallamos en la planificación, podemos añadir más programadores y adelantar el tiempo perdido. • Una declaración general de los objetivos es suficiente para comenzar a escribir los programas. • Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente, ya que el software es flexible. • Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado. • Lo único que se entrega al terminar el proyecto es el programa funcionando. • Hasta que no tengo el programa «ejecutándose », realmente no tengo forma de comprobar su calidad. Lenguajes de programación Mitos del software