Personajes prominentes, evolución y conceptos relacionados a la programación

Get Started. It's Free
or sign up with your email address
Rocket clouds
Personajes prominentes, evolución y conceptos relacionados a la programación by Mind Map: Personajes prominentes, evolución y conceptos relacionados a la programación

1. Frances Elizabeth Allen

1.1. Informática americana y pionera en el campo de optimizar compiladores

1.2. Sus logros incluyen trabajo en compiladores, optimización de código, y computación paralela.

2. • Charles Babbage (1791-1871)

2.1. Matemático Inglés

2.1.1. Biografía

2.2. Creó una máquina de Diferencias en 1822

2.3. Usó tecnología para relojes

2.4. Para resolver ecuaciones polinomiales

2.5. Nunca se terminó

2.6. • Datos curiosos Charles Babbage

2.6.1. Inventó el "apartavacas"

2.6.2. – Prolífico inventor

2.6.3. – Aficionado a lo sobrenatural

2.6.4. – Odiaba a los músicos callejeros (lo interrumpían, siempre los corria de la calle de su casa)

2.6.5. – Fue candidato al Parlamento Británico en dos ocasiones (en ambas perdió)

2.6.6. – Se expuso en una ocasión a una temperatura de 130° C para ver lo que se sentía ser horneado

2.7. • Máquina Analítica

2.7.1. Babbage (1933) diseñó la máquina analítica

2.7.2. Vapor como fuente de energía

2.7.3. Máquina programable de propósito general

2.7.4. Diseñada para almacenar 1000 números con 50 decimales cada uno. Las instrucciones almacenadas en tarjetas perforadas

2.7.5. La máquina analítica de Babbage, como se puede apreciar en el Science Museum de Londres.

2.7.6. Tipos de dificultades para terminar esta obra

2.7.6.1. Algunos piensan que las limitaciones tecnológicas de la época eran un obstáculo que habría impedido su construcción; otros piensan que la tecnología de la época no alcanzaba para construir la máquina de haberse obtenido financiación y apoyo político al proyecto.

2.7.6.2. La máquina analítica debía funcionar con un motor a vapor y habría tenido 30 metros de largo por 10 de ancho.

2.8. Considerado el padre de las computadoras

2.8.1. Diseñó y parcialmente implementó una máquina para calcular, de diferencias mecánicas para calcular tablas de números. También diseñó, pero nunca construyó, la máquina analítica para ejecutar programas de tabulación o computación; por estos inventos se le considera como una de las primeras personas en concebir la idea de lo que hoy llamaríamos una computadora, por lo que se le considera como «El Padre de la Computación».

3. ADA Condesa de Lovelace (1815-1852)

3.1. Ayudante de Babbage

3.2. Diseñó un lenguaje para la máquina analítica

3.3. Es considerada la primera programadora de la historia

3.4. Se creó el lenguaje de programación “Ada”

3.5. Ada Lovelace

4. • Konrad Zuse

4.1. Ingeniero Alemán

4.2. Construyó el primer computador digital programable en los años 30

4.3. Usó retardos electromecánicos para realizar conmutación

4.4. Primera máquina en la que se utilizó el sistema numérico binario

4.5. Falta de recursos

5. • Alan Turing (1912-1954)

5.1. Matemático inglés y primer científico de computación

5.2. Creó modelos matemáticos de computadores (Máquina de Turing) 1936

5.3. Demostró teoremas fundamentales acerca de las limites de la computabilidad (Teoría de la Computación)

5.4. Ayudó a decifrar (criptoanálisis) los códigos secretos “Enigma” durante la 2° guerra mundial

5.5. Trabajó en la construcción de un computador electrónico británico (Colossus) para decifrar códigos

5.6. Perseguido por ser Homosexual.

5.7. Se suicidó en 1954

5.8. Pelicula ENIGMA actualmente en cines

6. Grace Murray Hopper

6.1. Fue la primera programadora que utilizó el Mark I

6.2. Desarrolló el primer compilador de la historia, el A-0

6.3. Realizó el primer compilador para procesamiento de datos que usaba órdenes en inglés, el B-0 (FLOW-MATIC)

6.4. Participó en los comités de estandarización de los lenguajes de programación COBOL y FORTRAN.

7. Lenguajes de Programacion

7.1. Clasificación

7.1.1. Lenguaje Máquina

7.1.1.1. Lo entiende directamente la computadora.

7.1.1.2. Utiliza el alfabeto binario, es decir, el 0 y el 1.

7.1.1.3. Difícil de programar

7.1.2. Lenguajes de programación de bajo nivel

7.1.2.1. Son mucho mas fáciles de utilizar que el lenguaje máquina, pero dependen mucho de la máquina o computadora como sucedía con el lenguaje máquina.

7.1.2.2. El lenguaje ensamblador fue el primer lenguaje de programación que trato de sustituir el lenguaje máquina por otro lenguaje que fuese más parecido al de los seres humanos.

7.1.2.2.1. Programa fuente: traduce las instruciones a un programa escrito en lenguaje ensamblador por el programador.

7.1.2.2.2. Programa objeto: es la traducción a lenguaje máquina del programa fuente.

7.1.2.3. Los lenguajes de este tipo pueden crear programas muy rápidos, pero son difíciles de aprender.

7.1.2.4. Son específicos de cada procesador (de cada máquina), si nos llevamos el programa a otro computador será preciso reescribir el programa desde el comienzo.

7.1.3. Lenguajes de programación de alto nivel

7.1.3.1. Este tipo de lenguajes de programación son independientes de la máquina, los podemos usar en cualquier computador con muy pocas modificaciones o sin ellas, son muy similares al lenguaje humano.

7.1.3.2. Precisan de un programa interprete o compilador que traduzca este lenguaje de programación de alto nivel a uno de bajo nivel como el lenguaje de máquina que la computadora pueda entender

7.1.3.3. Otra clasificación de los lenguajes de programación de alto nivel, es teniendo en cuenta el desarrollo de las computadoras según sus diferentes generaciones

7.1.3.3.1. Lenguajes de programación de primera generación: el lenguaje máquina y el ensamblador.

7.1.3.3.2. Lenguajes de programación de segunda generación : los primeros lenguajes de programación de alto nivel imperativo (FROTRAN, COBOL).

7.1.3.3.3. Lenguajes de programación de tercera generación: son lenguajes de programación de alto nivel imperativo pero mucho más utilizados y vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA).

7.1.3.3.4. Lenguajes de programación de cuarta generación: usados en aplicaciones de gestión y manejo de bases de dados (NATURAL, SQL).

7.1.3.3.5. Lenguajes de programación de quinta generación: creados para la inteligencia artificial y para el procesamiento de lenguajes naturales (LISP, PROLOG).

7.2. Paradigmas

7.2.1. Paradigma Imperativo

7.2.1.1. Describe la programación como una secuencia instrucciones o comandos que cambian el estado de un programa.

7.2.1.2. El código máquina en general está basado en el paradigma imperativo.

7.2.2. Paradigma Declarativo

7.2.2.1. Se enfoca en describir las propiedades de la solución buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solución.

7.2.2.2. Es más complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución de determinados problemas.

7.2.2.3. Existen varios tipos de lenguajes declarativos:

7.2.2.3.1. Los lenguajes algebraicos, como Maude y SQL

7.2.2.3.2. Los lenguajes lógicos, como Prolog.

7.2.2.3.3. Los lenguajes funcionales, como Haskell y Erlang

7.2.2.4. Paradigma Funcional

7.2.2.4.1. Concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos.

7.2.2.4.2. Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones.

7.2.2.5. Paradigma lógico

7.2.2.5.1. Se basa en la definición de reglas lógicas para luego, a través de un motor de inferencias lógicas, responder preguntas planteadas al sistema y así resolver los problemas.

7.2.3. Paradigma Estructurado

7.2.3.1. La programación se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre sí.

7.2.3.2. Permite reutilizar código programado y otorga una mejor compresión de la programación.

7.2.3.3. Algunos de los lenguajes usados en la programación estructurada

7.2.3.3.1. ALGOL

7.2.3.3.2. Pascal

7.2.3.3.3. PL/I

7.2.3.3.4. ADA

7.2.4. Paradigma Orientado a Objetos

7.2.4.1. Está basado en la idea de encapsular estado y operaciones en objetos. En general, la programación se resuelve comunicando dichos objetos a través de mensajes (programación orientada a mensajes).

7.2.4.2. Su principal ventaja es la reutilización de códigos y su facilidad para pensar soluciones a determinados problemas.

7.2.4.3. Lenguajes orientados a objetos

7.2.4.3.1. Fortran 90/95

7.2.4.3.2. Java

7.2.4.3.3. JavaScript5

7.2.4.3.4. C++

7.2.4.3.5. Ocaml

7.2.4.3.6. R

7.2.4.3.7. Perl7 8

7.2.4.3.8. PHP9

7.2.4.3.9. PowerBuilder

7.2.4.3.10. Python

7.2.4.3.11. Ruby

7.2.4.3.12. Self

7.2.4.3.13. Smalltalk10

7.2.4.3.14. VB.NET

7.2.4.3.15. Visual FoxPro11

7.2.4.3.16. Visual Basic 6.0

8. Programas

8.1. Es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales.

8.2. Ciclo de Vida del software

8.2.1. Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.

8.2.2. Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.

8.2.3. Diseño general: requisitos generales de la arquitectura de la aplicación.

8.2.4. Diseño en detalle: definición precisa de cada subconjunto de la aplicación.

8.2.5. Programación (programación e implementación): es la implementación en un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.

8.2.6. Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.

8.2.7. Integración: para garantizar que los diferentes módulos y subprogramas se integren con la aplicación. Éste es el propósito de la prueba de integración que debe estar cuidadosamente documentada.

8.2.8. Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.

8.2.9. Documentación: se documenta con toda la información necesaria, sea funcional final para los usuarios del software (manual del usuario), y de desarrollo para futuras adaptaciones, ampliaciones y correcciones.

8.2.10. Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

9. Estructura y Funcionamiento de una computadora

9.1. El Modelo Von Neuman

9.1.1. Dispositivo de operación (DO)

9.1.2. Unidad de control (UC)

9.1.3. Memoria del dispositivo

9.1.4. Dispositivo de E/S (DES)

10. Alan Kay

10.1. pionero en la programación orientada a objetos

10.2. diseño de sistemas de interfaz gráfica de usuario (GUI, en inglés)

10.3. desarrolló prototipos de estaciones de trabajo en red, usando el lenguaje de programación Smalltalk.

11. Douglas Engelbart

11.1. Inventor del ratón

11.2. Pionero de la interacción humana con las computadoras, incluyendo el hipertexto y las computadoras en red.

12. Programadoras de la ENIAC

12.1. Betty Snyder Holberton, Betty Jean Jennings Bartik, Ruth Lichterman Teitelbaum, Kathleen McNulty Mauchly Antonelli, Frances Bilas Spence y Marlyn Wescoff Meltzer.

12.2. Todas ellas eran matemáticas. Habían sido contratadas por el gobierno de los EEUU para pensar y escribir los programas de cálculo de trayectoria balística que debía realizar ENIAC.

12.3. Su tarea consistió no solo en “inventar” los programas, sino, cuando ya lo tenían resuelto, entrar a la sala donde estaba ENIAC, y proceder a la programación propiamente dicha. Es decir, a conectar y desconectar los cables que llegaban a las 6000 clavijas, de la misma manera que se hacía en las centrales telefónicas de entonces.

12.4. De hecho, antes de la existencia del ENIAC, los cálculos de las tablas de balística eran realizados a mano por 80 mujeres matemáticas que trabajaban en la Universidad de Pensilvania. A estas mujeres, que resolvían a mano las ecuaciones diferenciales, la Armada de EEUU las llamaba “computadoras”. (O sea que... las primeras computadoras fueron.... ¡mujeres!)

12.5. Programadoras ENIAC

12.6. En el año 1997, fueron incluidas en el Women in Technology International Hall of Fame.

13. Linus Torvalds

13.1. Ingeniero de software finlandés estadounidense

13.2. Desarrollo del "kernel" (en español, núcleo) Linux, basándose en el sistema operativo libre Minix creado por Andrew S. Tanenbaum

13.3. My first line of code

14. Andrew S. Tanenbaum

14.1. Profesor de ciencias de la computación de la Universidad Libre de Ámsterdam, Países Bajos

14.2. Creador de Minix, una réplica gratuita del sistema operativo UNIX con propósitos educativos, y por sus libros sobre ciencias de la computación.

15. Ángela Ruiz Robles

15.1. La base fundamental de su trabajo radicó siempre en su necesidad vital de innovar los ámbitos de la pedagogía y la didáctica.

15.2. Desarrolló en 1949 la enciclopedia mecánica,

15.2.1. La enciclopedia mecánica era necesaria según sus explicaciones porque: «aligera el peso de las carteras de los alumnos, hace más atractivo el aprendizaje y adapta la enseñanza al nivel de cada estudiante. Portátil, que pese poco, de uso en casa y en el colegio, con la posibilidad de adaptarse a alumnos de todos los niveles y a los que tengan problemas de visión. Apoya al aprendizaje con sonidos. Enseña varios idiomas. Facilita el aprendizaje en la oscuridad incorporando luz. Da soporte para que otros maestros añadan sus propios materiales y aminorar costes.

15.3. Precursora del libro digital e-book.

16. Carol Shaw

16.1. Es una de las primeras mujeres desarrolladoras de video juegos.

16.1.1. Empezó trabajando para Atari, para luego pasar a formar parte del equipo de Activision en donde programó su juego más famoso River Raid el cual es considerado un clásico.

16.1.2. Super Breakout (1978)

16.1.3. Happy Trails (1984) para el Atari 2600.

16.1.4. Creadora del 3D-Tic Tac Toe (1979)