Margaret Hamilton, la primera ingeniera de software

Coincidiendo con el Día internacional de Ada Lovelace, que este año se celebra el 10 de octubre para conmemorar los logros de las mujeres en ciencia, tecnología, ingeniería y matemáticas (STEM – del inglés “science, technology, engineering and maths”), tal como os explicamos en esta entrada, hoy queremos hablaros de Margaret Hamilton. Margaret Hamilton (Estados Unidos, 1936), licenciada en matemáticas y diplomada en filosofía, es considerada la primera ingeniera de software. Y no solo eso, también es la mujer que llevó al hombre a la luna! ¿Queréis conocer su historia? En 1959 comenzó a trabajar en el proyecto MAC (Mathematics And Computers) del MIT, desarrollando programas para hacer predicciones meteorológicas. Más adelante, trabajó en el proyecto SAGE, que permitía controlar el espacio aéreo de los Estados Unidos. En 1963 se incorporó en el laboratorio Charles Stark Draper, también del MIT, donde debían desarrollar el software de navegación “a bordo” para el Programa Espacial Apolo. En 1965 se hizo cargo de la dirección del equipo de desarrollo, que en 1968 estaba formado por más de 400 personas. Hamilton planteó la misión como un sistema que debía integrar tres componentes (el software, el hardware y las personas que lo iban a usar), teniendo en cuenta la interacción entre estos componentes y cómo esa interacción podría afectar al funcionamiento del sistema. Hamilton defendía la necesidad de diseñar programas a prueba de errores. Esta forma de pensar la llevó a crear un sistema que permitiera dar prioridad a las funciones imprescindibles, descartando las que no lo eran. Gracias a este hecho, el Apolo 11 pudo evitar una crisis en el momento del alunizaje, cuando...

Evolución del desarrollo web del lado del cliente

En los últimos años ha habido una gran demanda de desarrolladores de software debido a la inclusión de los sistemas informáticos en prácticamente todo los aspectos del día a día de las personas. A las clásicas demandas de tecnologías tales como C, C++, JAVA, .NET, SQL han surgido un nuevo elenco de nuevas tecnologías tales como JavaScript, ECMAScript, nodeJS, AngularJS, React, Angular 2.0+, VueJS, ember, gulp, webpack, TDD, BDD, CI, CD, etc. El nuevo conjunto de tecnologías que se solicitan como puestos de trabajo pertenecen al desarrollo de aplicaciones web. Una de las mayores críticas de los profesionales del sector (Ingenieros y desarrolladores en general) es el rápido cambio de tecnologías que sufre el desarrollo Web en el lado del cliente (o front-end). Historia del lenguaje de programación JavaScript Antes de poder afrontar los últimos avances en el desarrollo de aplicaciones Web hay que comprender por qué y cómo se ha llegado a esta situación, y para ello se va a presentar la evolución que ha sufrido el desarrollo del lado del cliente hasta llegar a nuestros días (Julio 2017). Hay que retomarse a los orígenes de la Web cuando existían principalmente dos navegadores Web populares para los usuarios: Internet Explorer y Netscape. Internet Explorer hasta hace poco ha sido el navegador por excelencia de la compañía Microsoft y es sobradamente conocido por la mayoría de los lectores, hoy en día ha sido sustituido por Microsoft Edge. Menos conocido es el navegador Netscape, el cual fue el primero que plantó cara al dominio de Internet Explorer y del cual deriva hoy en día Mozilla Firefox. Para el desarrollo de scripts...

Ciberfeminismo

(Trobareu versió en català més avall) El ciberfeminismo, usualmente asociado al activismo feminista en la red, ha caminado de la mano del desarrollo de Internet y el llamado ciberespacio, para generar nuevos espacios de participación y activismo feminista. El término surge de la fusión de “ciberespacio” y “feminismo” y su aparición, en 1991, es de la mano de Sadie Plant, teórica inglesa, y, en 1992 del grupo de artistas y activistas australianas VNS Matrix. En su principal trabajo sobre el tema, Ceros + Unos, Plant argumenta cómo las mujeres han estado históricamente unidas a la tecnología y que el cero, la nada del código binario, siempre ha sido considerado el “0-tro”, lo femenino. VNS Matrix (leído como VeNuS Matrix) denuncia de manera provocativa los discursos de dominación sexualizantes que controlaban el espacio cibernético (Internet) recién creado y en expansión. Las teorías feministas de la tecnología, que son un conglomerado de reflexiones sociales, filosóficas y políticas sobre la relación género-tecnología han estado influenciadas por las teorías feministas, y cada vez más por la reflexión sobre el sexismo y el androcentrismo, una vez desterrada la supuesta neutralidad de la ciencia, en las innovaciones tecnológicas del siglo XX y XXI. Durante la década de 1990 el ciberfeminismo se expande gracias al auge de las TIC (entonces llamadas “nuevas tecnologías”) y, sobre todo, del impulso de la conocida como tercera ola feminista, y especialmente de la filósofa Donna Haraway y su Manifiesto Cyborg, publicado en 1987, y donde esta autora propone una nueva identidad cyborg que superaría la identidad de género y que es considerada como origen del pensamiento ciberfeminista. El cyborg (cybernetic...

¿Cómo está hoy la enseñanza de la programación en la infancia?

Ya hemos hablado en este blog del aprendizaje de la programación en la infancia. En este artículo vamos a hacer un poco de historia de la enseñanza de la programación en la escuela en España, después daremos una visión general de la situación actual, tanto en España como en Europa, y acabaremos centrándonos en lo que pasa en Cataluña, como botón de muestra de cuál es la realidad. La enseñanza de la programación en las escuelas no es algo nuevo. A mediados de los 80, el proyecto Atenea del gobierno español dotaba a los centros escolares de equipos y programas para introducir la informática en la educación. Entre estos programas estaban los lenguajes de programación Logo y Basic. En aquellos momentos muchas escuelas aprovecharon los equipos y los lenguajes que tenían disponibles para dar clases de programación a sus alumnos. Sin embargo, en los 90 se puso en duda la utilidad de la programación en el aula y en años posteriores se introdujo la ofimática y se dejó de lado la programación. Esta situación se mantuvo así hasta bien entrada la primera década del 2000, cuando la aparición de programas como Scratch (2005) y la popularización de la expresión pensamiento computacional (2006) volvieron a dar valor al aprendizaje de la programación en la escuela. En Europa, la European Schoolnet, una institución compuesta por los 31 ministerios de educación de la Unión Europea, publicó un informe en el 20141 donde puede leerse que la programación formaba parte del currículum de 12 países: Bulgaria, Chipre, República Checa, Dinamarca, Estonia, Grecia, Irlanda, Italia, Lituania, Polonia, Portugal y Reino Unido. La mayoría de estos países incluyen...

Computación cuántica (II): un nuevo paradigma

El modelo actual de ordenador no es el único posible. Existen otros paradigmas para diseñar un ordenador que son radicalmente diferentes al modelo “convencional”. Un potencial cambio de paradigma se refiere a la electrónica digital: los ordenadores representan la información de forma discreta, usualmente con los valores 0 o 1. Para hacerlo, se consideran dos niveles de voltaje: el nivel “tierra” (0) y el voltaje proporcionado por la fuente de alimentación (1), con un cierto margen de tolerancia para cada nivel. A partir de estos valores pueden realizarse operaciones lógicas (las definidas en el álgebra de Boole, como AND, OR o NOT), que en la práctica se implementan como puertas lógicas mediante transistores que transmiten o bloquean el voltaje para reflejar el resultado de la operación. Pero también hay dispositivos que utilizan un modelo de computación analógica, donde la información se almacena como una magnitud continua: no hay rangos de valores discretos (entre A y B, el valor es X), sino que se utiliza el valor completo de una magnitud. El uso de valores continuos introduce el problema del ruido: fluctuaciones imprevistas que pueden distorsionar este valor y que limitan el rango de valores observables y la precisión. Este problema también aparece en la electrónica digital, pero se resuelve con los márgenes de tolerancia definidos para cada nivel de voltaje. Cabe destacar que esta magnitud puede ser el voltaje en un cable, pero también podrían ser magnitudes mecánicas (p.ej. la contracción de un muelle elástico) o hidráulicas. Así pues, no es necesario limitarse a propiedades electrónicas para implementar un ordenador: es posible cambiar a un paradigma basado en otras...

Computación cuántica (I): el fin de los ordenadores clásicos

Los ordenadores actuales son descendientes de la Máquina de Turing. Este modelo matemático fue creado por Alan Turing para dar respuesta al Entscheidungsproblem (en alemán, “problema de decisión”), una de las cuestiones centrales de la informática teórica. Las Máquinas de Turing utilizan como memoria una cinta con un número infinito de posiciones y un cursor que puede leer una posición de la cinta, modificar su contenido o desplazarse una posición a la izquierda o a la derecha. El “código” de la máquina de Turing es el conjunto de reglas predefinidas que indican qué acciones debe realizar el cursor según el contenido de la cinta, mientras que los “datos de entrada” sería el contenido inicial de la cinta. También es posible definir una Máquina de Turing Universal que recibe como entrada el código de una máquina de Turing y unos datos de entrada y simula la ejecución de dicha máquina de Turing. Esta Máquina de Turing Universal es uno de los antecesores del concepto de “programa almacenado”: pensar en el programa como un dato más que puede leerse (para ejecutarse) o incluso modificarse. Puede parecer un concepto evidente, pero hasta ese momento la mayoría de máquinas tenían un propósito específico (un problema, una herramienta). Esta idea de máquina “programable y de propósito general” se había utilizado en el campo de las máquinas de tejer (para coser patrones complejos definidos mediante una tarjeta perforada), pero aquí se aplicaba a la realización de cálculos. Aunque excelente como modelo teórico, la Máquina de Turing tiene una arquitectura poco útil desde un punto de vista práctico y existen formas de diseñar una máquina más...