Evolución de Software
Autor: Mg. Mauricio Galvez Legua
(
[email protected])
Introducción
• Entender como apareció, creció y se
diversificó el software.
Introducción
• El acercamiento a la que conocemos como software
empezó con la programación y es por ello que
pensamos que son lo mismo.
• El software tiene varias “etapas” y una de ellas es la
programación, la cual fue lo primero que el hombre
desarrolló.
Programación mediante lógica cableada
(hardware)
• Computadoras como el ENIAC (Electronic Numerical
Integrator And Computer) desarrollada en 1946 se
programaban mediante puentes con cables (lógica
cableada).
• Era un trabajo que solían realizar mujeres, por lo cual
se les considera como las primeras programadoras
de la historia.
Programación mediante lógica cableada
Programación mediante lógica cableada
• La ENIAC fue una de las primeras computadoras de
propósito general construida en la universidad de
Pensilvania por los ingenieros John Presper Eckert y
John William Mauchly.
Programación mediante lógica cableada
• Inicialmente sirvió para calcular tablas de tiro de
artillería destinadas al Laboratorio de Investigación
Balística del Ejército de los Estados Unidos.
• Posteriormente, se pasó a las tarjetas perforadas y
las cintas de papel pero seguían siendo soportes en
los que era muy costoso realizar una modificación en
las "líneas de código".
Las computadoras
eran de propósito
específico.
Programación mediante programa
almacenado
• El concepto del programa almacenado fue
establecido por el matemático John Von Neumann
en 1945 en un borrador sobre el diseño de la EDVAC.
– El programa y los datos debían ser almacenados en la
“memoria” del computador. Esto simplificaba la labor de
programación al no tener que llevar a cabo el recableado
del computador.
– Generalizaba el diseño del hardware para hacerlo
independiente de cualquier problema y enfocaba su
diseño al control y ejecución del programa.
Programación mediante programa
almacenado
• Según Von Neumann, la clave para construir una
computador de propósito general es poder
almacenar no sólo los datos y los resultados
intermedios de una computadora, sino también las
instrucciones que definen el procedimiento de
computación.
– En una computadora de propósito especifico, el
procedimiento (programa) puede ser parte de la máquina.
– En una computadora de propósito general, cambiar las
instrucciones tiene que ser tan fácil como cambiar los
datos sobre los que actúan.
Programación mediante programa
almacenado
• La solución es codificar las instrucciones de forma
numérica (opcode) y guardarlas junto con los datos
en la misma memoria. Este es el concepto de
programa almacenado.
• Ejemplo: Supongamos que tenemos un procesador
que tiene solamente 4 instrucciones, las cuales están
codificadas de la siguiente manera:
Instrucción Opcode Queremos que el procesador realice la
Sumar 00 siguiente operación: 1 + 2
Restar 01 El código binario sería:
Multiplicar 10 Instrucción operando1 operando2
Dividir 11 00 01 10
Programación mediante programa
almacenado
• Esto dio lugar al concepto de la Arquitectura de Von
Neumann, aún presente en nuestros días.
Primer computador con programa
almacenado
• En 1948 en Inglaterra se construyó la Manchester
Small-Scale Experimental Machine (SSEM) apodada
como "Manchester Baby", el cual fue el primer
computador del mundo con programa almacenado.
Primer computador con programa
almacenado
• Fue desarrollado en la Universidad de Mánchester
por Frederic C. Williams, Tom Kilburn y Geoff Tootill,
y ejecutó su primer programa el 21 de julio de 1948.
Primer computador con programa
almacenado
• La computadora no fue diseñada como un
computador práctico, sino como un prototipo de los
tubos Williams-Kilburn, uno de los primeros tipos de
memorias aleatoria de computador.
• Los tubos Williams-Kilburn eran tubos de rayos
catódicos que podían almacenar datos binarios y se
crearon para mejorar los sistemas de radar.
Primer computador con programa
almacenado
• Se desarrollaron tres programas para la “Manchester
Baby” con los que se comprobaron que era viable
almacenar en memoria un programa y ejecutarlo en
un computador. Estos programas fueron escritos en
binario.
– El primer programa, escrito por Tom Kilburn calculaba el
divisor más alto del número 2 elevado a la 18.
– El segundo programa fue una mejora del primer programa
realizado por Geoff Tootill.
– El tercer programa tenía como objetivo realizar cálculos de
divisiones largas y fue realizado por Alan Turing.
Comienza la programación
• A raíz del éxito del diseño de la “Manchester Baby”,
se creó la Manchester Mark I, la cual entre en
funcionamiento en el año 1949 cuando se ejecutó un
programa que buscaba números primos de
Mersenne. Dicho programa se ejecutó durante 9
horas sin fallar.
• Alan Turing trabajó en el desarrollo de un lenguaje
de programación para esta computadora y diseño un
algoritmo para jugar ajedrez.
Comienza la programación
Segundo computador con programa
almacenado
• En 1949 Maurice Wilkes construye la computadora
electrónica digital EDSAC (Electronic Delay Storage
Automatic Calculator) en el Laboratorio de
Matemáticas la Universidad de Cambridge en
Inglaterra.
Segundo computador con programa
almacenado
• Empleo líneas de retardo de
mercurio para la memoria y
tubos de vacío reducidos para
la lógica.
• EDSAC fue la segunda
computadora electrónica digital
con programa almacenado en
entrar en servicio regular.
Aparece la microprogramación
• Maurice Wilkes inventó el concepto de la
microprogramación, un método para usar la lógica
del programa almacenado para operar la unidad de
control de los circuitos de una unidad central de
procesamiento.
• Fue la segunda persona en recibir el premio Alan
Turing en el año 1967.
– Es conocido como el “Premio Nobel de la Informática”
https://en.wikipedia.org/wiki/Turing_Award
Aparece la microprogramación
• Una CPU
microprogramada es
esencialmente un
"microprocesador
dentro del
microprocesador“.
Pronóstico exitoso
• En 1951, John Presper Eckert y John William Mauchly
fabricaron la UNIVAC I (UNIVersal Automatic
Computer I) que fue la primera computadora
comercial fabricada en Estados Unidos para la Oficina
de Censos de los Estados Unidos.
• La UNIVAC I pronosticó con éxito para la cadena de
televisión CBS (Columbia Broadcasting System) el
resultado de la elección presidencial en EE.UU. del
año 1952 con solo una muestra del 1% de los
votantes, cuando los sondeos de opinión
tradicionales la daban ganador al otro candidato.
Pronóstico exitoso
Inicios del software
• Inicialmente la programación se realizaba de forma
binaria o lenguaje de máquina.
• En el año 1952 en el desarrollo del IBM 701 (primera
computadora científica comercial de IBM) Nathaniel
Rochester escribió el primer programa en
ensamblador.
• Se les atribuye a Maurice V. Wilkes, David John
Wheeler y Stanley J. Gill de la Universidad de
Cambridge el empleo de dicho termino. Ellos
inventaron la primera subrutina informática.
Aparece el lenguaje assembler
• El lenguaje ensamblador es la primera abstracción
del lenguaje máquina que consiste en asociar los
opcode (código de una instrucción) con palabras
clave que sean fáciles de recordar para el
programador. A estas palabras clave se les llama
nemónicos.
Aparece el lenguaje assembler
• Ejemplo: empleo de nemónicos para representar
instrucciones.
Instrucción Opcode Nemónico
Sumar 000 ADD
Restar 001 SUB
Multiplicar 010 MUL
Dividir 011 DIV
ADD 1,2
Incrementar en uno 100 INC
Decrementar en uno 101 DEC
Desplazamiento izquierda 110 SHL
Desplazamiento derecha 111 SHR
Aparece el lenguaje assembler
• Un programa ensamblador traduce o convierte
código fuente (ensamblador) a código máquina o
binario.
• Assembler es considerado un lenguaje de bajo nivel.
Aparece el término “bug”
• En agosto de 1947, mientras Grace Murray Hopper
estaba trabajando con algunos colegas en el Mark I
en Harvard, un circuito comenzó a funcionar mal y se
detectó el problema: una polilla.
• Hopper anotó al bicho en su libro de registros,
indicando que “desde entonces, cada vez que algo
salía mal con un computador, decíamos que tenía
bugs (bichos) dentro”.
Aparece el término “bug”
Primer compilador
• En 1952, Grace Murray Hopper desarrolla el primer
compilador para un lenguaje de programación que
permitía convertir un código fuente en código
máquina o binario.
Nacen las instrucciones en ingles
• Grace Murray Hopper se unió al equipo de desarrollo
de la UNIVAC I y recomendó el desarrollo de un
nuevo lenguaje de programación que usase
solamente palabras en inglés.
– “Es mucho más sencillo para la mayoría de las personas
escribir en inglés que usar símbolos, por lo cual los
programadores tienen que ser capaces de escribir sus
programas en inglés, y los computadores deberán
traducirlo al lenguaje máquina".
• Ejemplo: for, if, while, printf, etc.
Nacen las instrucciones en ingles
Primer lenguaje de programación con
instrucciones en ingles
• En el año 1954 Grace Murray Hopper junto a Robert
William Berber crean Flow-Matic para la UNIVAC II, el
primer lenguaje de programación donde las
instrucciones se expresaban con palabras en ingles.
Segundo lenguaje de programación con
instrucciones en ingles
• En 1955 nace el segundo
lenguaje de programación
lenguaje denominado Fortran
(FORmula TRANslation)
desarrollado por John W.
Backus que trabajaba para IBM
y que propuso una alternativa
más práctica al lenguaje
ensamblador para programar el
Mainframe IBM 704.
Aparecen más lenguajes de programación
• En 1958 a raíz de una conferencia entre Americanos
y Europeos se lanza la idea de un lenguaje
normalizado universal denominado ALGOL
(ALGOrithmic Language) que fue muy popular en las
universidades pero no llegó a usar de forma
comercial.
• Edsger W. Dijkstra participó en su desarrollo.
• ALGOL influyó fuertemente en lenguajes posteriores
como Pascal, C y ADA.
Aparecen más lenguajes de programación
Aparece “las raíces” del POO
• En el año 1958, John McCarthy crea el lenguaje de
programación denominado LISP (LISt Procesamiento)
en el departamento de Inteligencia Artificial del MIT.
• Este lenguaje tuvo una gran influencia sobre el
desarrollo de la programación orientada a objetos.
• Se desarrolló inicialmente sobre un IBM 7090.
• El obtuvo el premio Alan Turing en el año 1971.
Aparecen “las raíces” del POO
Aparece el lenguaje de programación
transaccional y multiplataforma
• En 1959 Grace Murray Hopper presentó su primera
versión del lenguaje COBOL (Common Business-
Oriented Language).
• Cobol se posicionó como un lenguaje “universal”
orientado a aplicaciones empresariales como el
control de inventario, cálculos, débitos y créditos.
• Fue el primer lenguaje de alto nivel multiplataforma.
Aparece el lenguaje de programación
transaccional y multiplataforma
Aparece el primer lenguaje de
programación POO
• En 1962, Ole Johan Dahl y Kristen Nygaard
desarrollan el primer lenguaje de programación
orientada a objetos (POO) denominado Simula,
donde aparecieron conceptos como clases, objetos,
instancias, herencia, polimorfismo, etc.
Las computadoras se acercan a las
matemáticas
• En el año 1962, Kenneth E. Iverson crea el lenguaje
de programación APL (A Programming Language) en
IBM. Esta basado en la notación matemática que
desarrolló Kenneth en el año 1957.
• “Con la computadora y los lenguajes de
programación, las matemáticas cuentan con
herramientas recién adquiridas, y su notación debe
revisarse a la luz de ellas. La computadora puede, en
efecto, ser utilizada como un "hablante nativo"
paciente, preciso y conocedor de la notación
matemática”
Las computadoras se acercan a las
matemáticas
• Esto sienta las bases de los programas de cálculo
numérico. Ejemplo. MathLab.
• Ejemplo: series de taylor
Se masifica el lenguaje de programación
• En el año 1964, Thomas Kurtz y John Kemeny crean
el lenguaje BASIC (Beginner' s All-purpose Symbolic
Instruction Code) en el Dartmouth College en New
Hampshire, Estados Unidos, como un medio para
facilitar la programación en computadores a
estudiantes y profesores que no fueran de ciencias.
Se masifica el lenguaje de programación
• BASIC fue desarrollado originalmente como una
herramienta de enseñanza, a diferencia de FORTRAN
que estaba orientado al desarrollo de aplicaciones de
cálculo o procesamiento de fórmulas y de COBOL
que se diseñó para la programación en
administración o gestión de información.
La programación irrumpe en las escuelas
• BASIC fue implementando en diversas
microcomputadoras como: Altair, Commodore, e
inclusive en las primeras versiones de PC venia
grabado en una memoria ROM.
Malas influencias
• En 1968 Edsger W. Dijkstra publicó
una carta con una famosa crítica en
la que consideraba que los lenguajes
de programación que usaban
sentencias GOTO para estructurar
un programa eran nocivos para la
productividad del programador, y
para la calidad del código resultante.
• La instrucción break es
“descendiente” del GOTO.
Aparecen más lenguajes de programación
• En el año 1968 se crea el lenguaje de programación
PASCAL por Niklaus Wirth cuyo objetivo era crear un
lenguaje que facilitara el aprendizaje de
programación a sus estudiantes.
• PASCAL se volvió un estándar en la industria.
Los sistemas operativos
• Los sistemas operativos son uno de los programas
más complejos de desarrollar. Estos programas
requieren de CPU muy potentes.
– Maninframe ($1,000,000)
• Aparece el sistema operativo
– Minicomputadores ($50,000)
• UNIX
– Minicomputadores ($4,000)
• Computadora Personal:
– Sistema Operativo: DOS (uP 8088)
– Sistema Operativo: Windows 3.1 (uP 80286)
– Sistema Operativo: UNIX (80386)
Las microcomputadoras “maduran”
• En 1969, Ken Thompson y Dennis Ritchie crean el
sistema operativo UNIX (minicomputadora PDP/11)
primer sistema operativo portable, multitarea y
multiusuario.
– Inicialmente fue desarrollado en assembler y
posteriormente re-escrito en lenguaje C.
• UNIX es un sistema operativo propietario.
• Hoy en día UNIX se refiere a una familia de sistemas
operativos.
– Ejemplo: AIX es el Unix de IBM, Solaris de Oracle, etc.
Las microcomputadoras “maduran”
Aparece un estándar “defacto”
• En el año 1972, Dennis Ritchie y Ken Thompson
crean el lenguaje de programación C, el cual se
ejecutó por primera vez en una minicomputadora
PDP/11 en el cual habían instalado el sistema
operativo UNIX.
• Posteriormente Dennis Ritchie reescribe el kernel
(núcleo) UNIX en C (1973) y lo vuelve portable. A
partir de ese momento el lenguaje C y el UNIX tienen
una vinculación muy estrecha.
Aparece el segundo lenguaje de
programación POO
• En el año 1972, Alan Kay en Xerox PARC crea el
segundo lenguaje de programación orientado a
objetos denominado SmallTalk, el cual fue diseñado
para uso educativo.
Aparecen los lenguajes de programación
“seguros”
• En 1980 Jean Ichbiah crea el lenguaje de
programación orientado a objetos ADA por encargo
del Departamento de Defensa de los Estados Unidos.
• Su sintaxis está basada en Pascal, es bastante legible
incluso para personas que no conozcan el lenguaje.
• ADA se emplea principalmente en entornos en los
que se necesita una gran seguridad y fiabilidad como
defensa, la aeronáutica (Boeing o Airbus), la gestión
del tráfico aéreo (como Indra en España) y la
industria aeroespacial entre otros.
“Cextiende”
• En 1983 Bjarn Stroustrup desarrolla una extensión
orientada objeto al lenguaje C denominado C ++.
– Simula tenía características que eran muy útiles para el
desarrollo de software grande, pero el lenguaje era
demasiado lento para el uso práctico.
– BCPL era rápido pero de demasiado bajo nivel para ser
adecuado para un gran desarrollo de software.
• Stroustrup se dispuso a mejorar el lenguaje C con
características similares a Simula y lo eligió porque
era de propósito general, rápido, portable y
ampliamente utilizado.
• Microsoft lanzó su propia versión denominado C#.
Autor: Mauricio Galvez Legua (
[email protected]) 55
Nuevos lenguajes de programación
“específicos”
• En 1984 surge la primera versión del programa
MathLab creado por Cleve Barry Moler (matemático
especialista en análisis numérico) el cual tiene su
propio lenguaje de programación M.
– Cleve fue uno de los autores de las bibliotecas de Fortran
LINPACK y EISPACK orientadas a la informática numérica,
las cuales fueron la base para la creación de MathLab.
Nuevos lenguajes de programación
“específicos”
• MathLab es una plataforma de programación, cálculo
y análisis numérico.
Nuevos lenguajes de programación
“específicos”
• En el año 1986 IBM lanza SQL (Structured Query
Language), que fue creado por Donald D. Chamberlin
y Raymond F. Boyce.
• SQL es un lenguaje de programación que sirve para
comunicarse con base de datos.
Las bases de datos son soluciones de software para
guardar datos de forma segura.
Nuevos lenguajes de programación
“específicos”
• SQL consiste en un lenguaje de definición de datos,
un lenguaje de manipulación de datos y un lenguaje
de control de datos.
• SQL es un lenguaje de “consultas” a la base de datos.
Sirve para grabar datos o extraer datos.
• Ejemplo: Oracle, MySQL, Microsoft SQL, etc.
Nuevos lenguajes de programación
“específicos”
• Es un lenguaje de dominio específico, diseñado para
administrar, y recuperar información de sistemas de
gestión de bases de datos relacionales.
Aparece el “benjamín”
• En 1991, Linus Torvalds crea el sistema operativo
GNU/Linux es un sistema operativo de software libre
y de código abierto.
– GNU/Linux surge de las contribuciones de varios proyectos
de software, entre los cuales destacan GNU, iniciado por
Richard Stallman en 1983.
• El kernel de Linux esta desarrollado en C con una
parte en assembler.
Nuevos lenguajes de programación
“específicos”
• En 1993 Robert Gentleman y Ross Ihaka del
Departamento de Estadística de la Universidad de
Auckland crean el lenguaje de programación R, el
cual tiene un enfoque al análisis estadístico.
• R proporciona un amplio abanico de herramientas
estadísticas (modelos lineales y no lineales, tests
estadísticos, análisis de series temporales, algoritmos
de clasificación y agrupamiento, etc.) y gráficas.
Nuevos lenguajes de programación
“específicos”
• Es muy utilizado en investigación científica, siendo
muy popular en los campos de aprendizaje
automático (machine learning), minería de datos,
investigación biomédica, bioinformática y
matemáticas financieras.
• Aparece el concepto de Científico de Datos.
Aparece el “mesías”?
• En el año 1994 Guido van Rossum en el Centro para
las Matemáticas y la Informática CWI (Centrum
Wiskunde & Informática) crea Python.
• Python es un lenguaje de programación que en vez
de forzar a los programadores a adoptar un estilo
particular de programación, permite varios estilos:
– Programación orientada a objetos.
– Programación imperativa
– Etc.
Aparece el “mesías”?
• Python actualmente es el lenguaje de programación
más popular a nivel mundial.
• Empresas como Instagram, Facebook, Google,
Spotify, Netflix y la NASA, la están usando.
Aparece el “mesías”?
• Python tiene una sintaxis simple y un código legible
que permite que niños, estudiantes, profesores,
investigadores, ingenieros, desarrolladores, analistas
o científicos de datos lo aprendan fácilmente y lo
utilicen en sus campos de interés.
“El código escrito en Python sería tan comprensible
como cualquier texto”.
Guido Van Rossum
Un “viejo conocido”
• En 1995 James Gosling de la empresa Sun
Microsystems desarrolló el lenguaje de programación
Java.
• Su sintaxis deriva en gran medida de C y C++, pero
tiene menos utilidades de bajo nivel que cualquiera
de ellos.
• Las aplicaciones de Java son compiladas a bytecode
(clase Java), que puede ejecutarse en cualquier
máquina virtual Java (JVM) sin importar la
arquitectura de la computadora subyacente.
El “cliente universal” madura
• El lenguaje de programación Javascript fue creado
por Brendan Eich de la empresa Netscape en el año
1995.
• Se utiliza principalmente del lado del cliente,
implementado como parte de un navegador web
permitiendo mejoras en la interfaz de usuario y
páginas web dinámicas.
El “cliente universal” madura
• JavaScript se diseñó con una sintaxis similar a C
aunque adopta nombres y convenciones del lenguaje
de programación Java.
• Java y JavaScript tienen semánticas y propósitos
diferentes.
• Hoy en día es muy conocido gracias a HTML 5.
Fin !!!
Autor: Mg. Mauricio Galvez Legua
(
[email protected])