Este material precisa las generalidades en torno a los enfoques y paradigmas que históricamente son reconocidos en el campo del diseño y desarrollo de programas de computadoras. Se ha elaborado esta presentación, como parte de los recursos para la unidad curricular de Ingeniería del Software.
Todos los derechos reservados.
1. GENERALIDADES SOBRE
DESARROLLO DE
SOFTWARE
Universidad del Zulia
Núcleo Costa Oriental del Lago
Programa de Humanidades y Educación
Licenciatura en Educación Mención Informática
Departamento de Ciencias Formales
Cabimas-Venezuela
Prof.: Norailith Polanco Padrón
2. ¿para qué estudiar programación e
ingeniería del software?
1. Planificar procesos/tareas de cualquier índole
2. Mantener el ejercicio mental permanente
3. Mejorar la habilidad para desarrollar algoritmos eficaces
4. Optimizar el uso del lenguaje de programación disponible o en uso
5. Acrecentar el propio vocabulario con construcciones útiles sobre programación
6. Posibilitar una mejor elección del lenguaje de programación ante la diversidad
7. Facilitar el aprendizaje de un nuevo lenguaje
8. Facilitar el diseño de un nuevo lenguaje (opcional)
9. Aplicar puntos de vista en áreas temáticas de la informática
10. Mejorar los procesos de toma de decisiones en la cotidianidad
11. Mantener en aceleramiento el desarrollo de la especie humana
12. Programar para hacer cosas que pareciesen sobrehumanas
3. Autores destacados en desarrollo de sistemas
•Alan Cooper, desarrollador de Visual Basic.
•Alan Kay, pionero en programación orientada a objetos, creador de Smalltalk.
•Anders Hejlsberg, desarrollador de Turbo Pascal, Delphi y C#.
•Bertrand Meyer, inventor de Eiffel.
•Bill Joy, inventor de vi, autor de BSD Unix, creador de SunOS, el cual se convirtió en Solaris.
•Bjarne Stroustrup, desarrollador de C++.
•Brian Kernighan, coautor del primer libro de programación en lenguaje C con Dennis Ritchie, y
coautor de los lenguajes de programación AWK y AMPL.
•Dennis Ritchie, inventor de C. Sistema Operativo Unix.
•Edsger W. Dijkstra, desarrolló la estructura para la programación estructurada.
•Grace Hopper, desarrolladora de Flow-Matic, influenciando el lenguaje COBOL.
•Guido van Rossum, creador de Python.
•James Gosling, desarrollador de Oak, precursor de Java.
•Joe Armstrong, creador de Erlang.
•John Backus, inventor de Fortran.
4. •John McCarthy, inventor de LISP.
•John von Neumann, creador del concepto de sistema operativo.
•Ken Thompson, inventor de B, desarrollador de Go, y coauthor del sistema operativo Unix.
•Kenneth E. Iverson, desarrollador de APL, y co-desarrollador de J junto a Roger Hui.
•Larry Wall, creador de Perl y Perl 6.
•Martin Odersky, creador de Scala, y previamente contribuyó en el diseño de Java
•Mitchel Resnick, creador del lenguaje visual Scratch
•Nathaniel Rochester, inventor del primer lenguaje en ensamblador simbólico (IBM 701).
•Niklaus Wirth, inventor de Pascal, Modula y Oberon.
•Robin Milner, inventor de ML, y compartió crédito en el método Hindley–Milner de inferencia
de tipo polimórfica.
•Seymour Papert, pionero de la inteligencia artificial, inventor del lenguaje de programación
Logo en 1968. .
•Stephen Wolfram, creador de Mathematica.
•Yukihiro Matsumoto, creador de Ruby.
Autores destacados en desarrollo de sistemas
5. Paradigmas de programación
-Enfoque particular o filosofía tecnológica adoptada
por personas a cargo de la programación, para
diseñar soluciones
-Difieren unos de otros, en conceptos, forma de
abstraer los elementos involucrados en un problema y
el cómputo.
-Estilo o forma de ver/hacer un programa
6. Paradigmas más usados
POO
(C++, C#, JAVA, PYTHON,
SMALLTALK )
Tipo imperativa, Usa
entidades llamadas
objetos con variables y
funciones
Objeto = Datos +
Procesamiento
P. Dinámica
(HASKELL y
funcionales)
Dividir problemas en
partes pequeñas
para analizar y
resolver de forma
cercana al óptimo
P. Lógica y P. Con
restricciones
(PROLOG y
variantes)
Definición de
relaciones lógicas.
Implementación de
ecuaciones
P. Por Eventos
(Visual Basic)
Estructura y
ejecución de
programas quedan
determinados por
los sucesos que
ocurran en el
sistema
P. Funcional
SCHEME, HASKELL,
(LISP), PYTHON
De corte
matemático. El
resultado de un
cálculo es la
entrada del
siguiente hasta la
solución
P. Declarativa
(LISP , PROLOG)
Describe el
problema
declarando
propiedades y
reglas a cumplir, en
lugar de
instrucciones
P. Imperativa
(C, BASIC, PASCAL)
Modelo más usado,
otorga instucciones
al computador en
forma de algoritmos.
Programa =
Algoritmos +
Estructura de datos
Específico del
Dominio: DSL
(SQL)
Categoría de
lenguajes
desarrollados para
resolver problemas
específicos, (entran
en cualquier grupo
anterior)
P. Multiparadigma
(LISP,
PYTHON)
Aplicación de dos (o
más) paradigmas
dentro de un
programa
7. El desarrollo de sistemas...
× Está íntimamente ligado a la vida cotidiana, y procedimientos que resuelven problemas
están presentes continuamente en el alrededor
× Las máquinas realizan procesos que los humanos no podemos lograr con gran facilidad e
incluso pueden llegar a ser imposibles
× Los procesos se dan gracias a la inserción de algoritmos a la máquina la cual realiza las
funciones que queremos, según las especificaciones de programación que deseemos
× A menudo los programas serán capaces de simular actividades realizadas por personas y
no por computadoras (Programa = Simulación de situación real)
Analogía: Preparar un platillo
Acto de cocinar un platillo siguiendo la receta = EJECUCIÓN
Persona que prepara el plato = COMPUTADOR
Receta = ALGORITMO
Redacción en castellano de la receta = PROGRAMA
Autor del libro de recetas = PROGRAMADOR
8. Bibliografía de referencia
• Pratt, T. y Zelkowitz, M. (1998). Lenguajes de Programación, Diseño e
Implementación. Prentice Hall Tercera Edición.
• Tucker, A. et al. Fundamentos de la Informática. Mc Graw Hill.
Recursos gratis disponibles en:
• Presentation template (plantilla) por SlidesCarnival
Esta presentación utilizó las siguientes tipografías:
• Títulos: Bangers
• Cuerpos de textos: Sniglet
Fuentes disponibles en:
https://www.google.com/fonts#UsePlace:use/Collection:Sniglet|Bangers
9. “No te preocupes si no funciona bien.
Si todo lo hiciera, no tendrías trabajo ”...
Ley de Mosher sobre la Ingeniería del Software