summaryrefslogtreecommitdiff
path: root/es/01_informatics.md
diff options
context:
space:
mode:
Diffstat (limited to 'es/01_informatics.md')
-rw-r--r--es/01_informatics.md973
1 files changed, 973 insertions, 0 deletions
diff --git a/es/01_informatics.md b/es/01_informatics.md
new file mode 100644
index 0000000..19585a7
--- /dev/null
+++ b/es/01_informatics.md
@@ -0,0 +1,973 @@
+# ¿Qué es la Informática? {-}
+
+¿Qué es la informática? ¿Por qué algunos le llaman «Ciencias de la
+Computación»[^1]? ¿Por qué los programadores son incapaces hacer bien su
+trabajo tal y como los ingenieros civiles hacen con los puentes?
+
+Dada la ingente cantidad de computadoras a nuestro alrededor, se piensa que en
+la Informática como un campo muy avanzado de la tecnología, un campo que
+siempre está al filo del conocimiento humano. Se piensa que programar es una
+habilidad especializada, únicamente necesaria si se pretende seguir una carrera
+profesional concreta.
+
+Nada más lejos de la realidad.
+
+[^1]: Del inglés *Computer Science*.
+
+## Un poco de historia
+
+En 1957, Karl Steinbuch[^karl-steinbuch] acuñó el término «*Informatik*» en su
+ensayo «*Informatik: Automatische Informationsverarbeitung*», *Informática:
+Procesado de información automático*.
+
+En marzo de 1962, Philippe Dreyfus[^philipe-dreyfus] utiliza por primera vez
+el término «*Informatique*» para denominar a su nueva compañía: *Société
+d’informatique appliquée*.
+
+El mismo mes Walter Bauer funda la empresa estadounidense «*Informatics Inc.*»,
+registra su marca y toma medidas jurídicas contra las universidades que
+utilizan la palabra para referirse al nuevo campo de estudio, forzándolas a
+renombrarlo a «*Computer Science*», Ciencias de la Computación, a pesar de que
+la materia no se restringe a las computadoras y de que sus practicantes no usan
+necesariamente el método científico.
+
+Incluso la ACM[^acm] intenta conseguir permiso para utilizar el nombre pero la
+compañía rechaza la petición.
+
+Cabe destacar que, según Donald Knuth[^donald-knuth] la elección del término
+«*Computer Science*» por las universidades americanas no se debe a un problema
+de marca comercial sino a razones semánticas: Las computadoras tratan con
+*datos*, no con *información*.
+
+Por muy pragmático que esto pueda parecer, esta elección describe, de forma
+deliberada, únicamente el *cómo* de la informática sin prestar atención al
+*porqué*.
+
+Por supuesto, es cierto que los ordenadores tratan datos, pero nuestro objetivo
+con ellos es tratar información.
+
+[^karl-steinbuch]: **Dr. Karl W. Steinbuch** fue un científico informático
+ alemán, cibernético, e ingeniero eléctrico. Es uno de los pioneros de la
+ informática alemán, así como, con la Lernmatrix, uno de los pioneros de las
+ redes neuronales artificiales. Steinbuch también escribió acerca de las
+ implicaciones sociales de los medios de comunicación modernos. —*Karl
+ Steinbuch^`W`^ [28-07-2019]*
+
+[^philipe-dreyfus]: **Philippe Dreyfus** es un pionero de la informática en
+ Francia. Después de obtener su Licenciatura en Física en 1950, se convirtió
+ en profesor en la facultad de Informática en la Universidad Harvard usando
+ Mark I, el primer ordenador automatizado jamás construido. En 1958 fue
+ nombrado director del Centro de Cálculo Bol. —*Philippe Dreyfus^`W`^
+ [28-07-2019]*
+
+[^acm]: **ACM** acrónimo de *Association for Computing Machinery* (Asociación
+ de Maquinaria Computacional). Fue fundada en 1947 como la primera sociedad
+ científica y educativa para educar acerca de la Computación. Publica varias
+ revistas y periódicos científicos relacionados con la computación; patrocina
+ conferencias en varias áreas del campo y otros eventos relacionados con las
+ ciencias de la computación como por ejemplo el internacional Competición
+ Internacional Universitaria ACM de Programación (ICPC). Publica una extensiva
+ biblioteca digital y una referencia de la literatura de la computación.
+ —*Association for Computing Machinery^`W`^ [30-07-2019]*
+
+[^donald-knuth]: **Donald Ervin Knuth** es uno de los más reconocidos expertos
+ en ciencias de la computación por su fructífera investigación dentro del
+ análisis de algoritmos y compiladores. Es Profesor Emérito de la Universidad
+ de Stanford. —*Donald Knuth^`W`^ [30-07-2019]*
+
+
+
+## Algunas definiciones
+
+A pesar de ser un campo erigido sobre valores binarios[^binary-values], la
+informática está llena de dicotomías interesantes. La fundamental, que suele
+ser ignorada, es la diferencia entre *datos* e *información*:
+
+> **Información**, del Latín *informo*, «Yo construyo dentro (de mí mismo)»:
+> Una idea, un constructo de la mente humana que puede ser compartida con
+> otros.
+
+> **Dato**, del Latín *datum*, «lo que se da»:
+> Una de las posibles representaciones de una pieza de información que puede
+> ser transferida e interpretada como información por humanos.
+
+La información sólo existe en la mente humana.
+
+No todas las construcciones de la mente humana son información, sólo aquellas
+que pueden ser transferidas a otro ser humano de forma precisa. Por ejemplo,
+las experiencias místicas no pueden ser consideradas información por la
+imposibilidad de transmitirlas.
+
+Sin embargo, la información es la pieza fundamental del conocimiento humano. En
+realidad, todo lo relacionado con el campo de las matemáticas[^mathematics] es
+información, hasta el punto que ninguna conjetura puede ser considerada válida
+hasta que otras personas puedan estar de acuerdo con ella tras leer la
+[descripción de la prueba][proof] formada en la mente del autor.
+
+Los datos, en cambio, son meras representaciones.
+
+Cualquier representación de información es un conjunto de datos.
+
+Las palabras que estás leyendo, ya sean impresas en un papel o proyectadas en
+una pantalla, representan el mensaje que trato de comunicar, una reflexión
+construida tras años de experiencia en el sector.
+
+Pero podría haber grabado un vídeo o un disco de vinilo.
+
+Todos esos soportes hubiesen representado la misma información, pero no serían
+equivalentes.
+
+[^binary-values]: El sistema binario es un sistema de numeración en el que los
+ números se representan utilizando solamente dos cifras: cero y uno (0 y 1).
+ A pesar de que existen máquinas que utilizan otros sistemas, el sistema
+ binario es, por su sencillez el más usado en las máquinas de computación.
+
+[^mathematics]: «*Matemáticas*, del griego Μαθημα-τικὴ, «el arte de aprender».
+ La matemática estudia la estructura de los constructos de la mente humana
+ (conceptos, patrones, percepciones...) que pueden ser comunicados con
+ precisión a través de un lenguaje. [...]
+ - La matemática sólo trata de nuestra mente.» — Giacomo Tesio [Consultado
+ 17-08-2019]
+ <http://www.tesio.it/2018/10/11/math-science-and-technology.html>
+
+[proof]: https://mathbabe.org/2012/08/06/what-is-a-proof/
+
+### Una relación complicada
+
+La información y los datos tienen una relación muy compleja.
+
+Escribiendo estas palabras estoy convirtiendo la información de mi mente en
+datos. Al leerlas, estás convirtiendo estos datos en información de nuevo.
+
+Ambas frases están expresadas en presente, pero ocurren en diferentes puntos
+del espacio y del tiempo.
+
+Los datos suelen acarrear más información que el mensaje que se pretende
+transmitir. Por ejemplo, este mismo texto aporta más información que su propio
+contenido: el lenguaje utilizado, su longitud, etc. Esta información se suele
+denominar, impropiamente, «*metadatos*[^metadata]». Pero incluso gran cantidad
+de información puede embeberse dentro de estos metadatos, como el estilo de mi
+escritura puede revelar.
+
+Si en lugar de un mensaje en forma de texto, esta información hubiese sido
+compartida mediante un vídeo la cantidad de información adicional compartida
+hubiese sido mucho mayor. Mi raza, mi género, mi edad, incluso algunas posibles
+enfermedades podrían haberse dejado entrever por el soporte elegido. Mi voz y
+mucho, mucho, más.
+
+Entonces, podemos ver que **la información puede convertirse en datos** y los
+**datos pueden convertirse de nuevo a información** por la mente humana, pero
+no existe ninguna función matemática que pueda describir esta relación: existe
+una pérdida y una ganancia de información en cada paso.
+
+Y las personas pueden malinterpretar los datos creando información
+completamente diferente a lo que quien creó el mensaje pretendía compartir.
+
+Aun así, los humanos somos tan buenos convirtiendo información en datos y datos
+en información que ni siquiera somos conscientes del proceso. Y esto nos ha
+llevado a montones de desafortunados y dramáticos[^lethal] malentendidos en la
+informática.
+
+[^metadata]: Los **metadatos** (del griego μετα, meta, 'después de, más allá
+ de' y latín datum, 'lo que se da', «dato»), literalmente «sobre datos», son
+ datos que describen otros datos. —*Metadatos^`W`^ [28-07-2019]*
+
+
+[^lethal]: El 9 de abril de 2019 «CNN Business» publica que tras los accidentes
+ sufridos por el «Boeing 737 Max» en Etiopía, donde todos los pasajeros y la
+ tripulación murieron, las ventas de este modelo han caído en picado hasta
+ rozar la desaparición.
+ [Consultado 16-08-2019]
+ [`https://edition.cnn.com/2019/04/09/business/boeing-737-max-deliveries/
+ index.html`](https://edition.cnn.com/2019/04/09/business/boeing-737-max-deliveries/index.html)
+
+ El 18 de abril de 2019 el IEEE-Spectrum publica que todo apunta a que un
+ fallo de software ha provocado los accidentes. Según el artículo, los cambios
+ del 737 que llevaron a la creación del 737 Max supusieron alteraciones en el
+ modo de vuelo de los aviones, que dejaron de volar con la naturalidad a la que
+ los pilotos estaban acostumbrados. Para solventar estas diferencias, en lugar
+ de editar el diseño físico del 737 Max, lo que acarreaba unos costes de
+ producción muy altos, Boeing produjo su sistema «Maneuvering Characteristics
+ Augmentation System» o MCAS. Este sistema *software* facilita el pilotaje del
+ 737 Max haciéndolo parecer un 737, corrigiendo la posición de la nariz del
+ avión para suplir el desplazamiento provocado por tener unos motores de mayor
+ tamaño.
+
+ Este cambio de percepción reduce la capacidad para sentir la respuesta que
+ el piloto obtiene del avión en tiempo real. El sistema MCAS se basa además
+ en tomar datos de sensores con una propensión a fallos importante e,
+ incluso con el piloto automático apagado, no permiten al piloto tener el
+ control total del vuelo.
+
+ El artículo propone que el MCAS, nacido como un sistema de seguridad para
+ reducir costes acaba matando más gente (346 personas) que la que nunca habría
+ salvado y añade que en lugar de añadir más complejidad de software sobre éste
+ la solución parte de eliminarlo por completo.
+ [Consultado 16-08-2019]
+ [`https://spectrum.ieee.org/aerospace/aviation/how-the-boeing-737-max-
+ disaster-looks-to-a-software-developer`](https://spectrum.ieee.org/aerospace/aviation/how-the-boeing-737-max-disaster-looks-to-a-software-developer)
+
+
+
+## Entonces, ¿Qué es la informática?
+
+> **Informática**, del francés *informatique*, «information automatique»:
+> Campo del conocimiento humano que estudia cómo la información puede ser
+> transferida, almacenada, representada, interpretada y transformada, así como
+> el conjunto de herramientas que se relacionan con dicho conocimiento.
+
+La informática trata sobre información.
+
+Trata sobre humanos y no sobre máquinas. Las computadoras son meros reflejos de
+nuestra mente.
+
+Como ocurre habitualmente, esta perspectiva europea es diametralmente opuesta a
+la americana atribuida a Knuth.
+
+Incluso en un conocido ensayo[^knuth-essay] Knuth define la *Ciencia de la
+Computación* como el «estudio de los algoritmos» siendo estos tan ajenos a las
+computadoras que incluso llega a usar el clásico juego de las sillas para
+explicar el funcionamiento interno de una tabla hash[^hash-table] en ese mismo
+artículo.
+
+![Juego de las sillas usado por Knuth en «Computer Science and Its Relation to
+Mathematics»][chairs]
+
+[chairs]: img/chairs.png
+
+El problema de la nomenclatura no es *sólo* filosófico: Tras miles de años de
+historia, sabemos que las palabras que usamos forjan nuestro entendimiento de
+la realidad. Centrándonos en las computadoras y lo que somos capaces de hacer
+con ellas, nos negamos la posibilidad de entender la amplitud del campo la
+informática.
+
+Los algoritmos son información en la mente de las personas que los conocen.
+
+Si la informática sólo tratara de algoritmos, la vida de los programadores
+sería mucho más fácil y aburrida. Desgraciadamente **los programas informáticos
+no son información sino datos**. Los programas no existen en la mente humana,
+sino en un soporte físico **reproducible** por una computadora, del mismo modo
+que un gramófono reproduce un disco de vinilo.
+
+[^knuth-essay]: Ciencias de la computación y su relación con las matemáticas
+ («Computer Science and Its Relation to Mathematics») (Abril de 1974).
+ [`http://www.maa.org/programs/maa-awards/writing-awards/computer-science-
+ and-its-relation-to-mathematics`](http://www.maa.org/programs/maa-awards/writing-awards/computer-science-and-its-relation-to-mathematics)
+
+[^hash-table]: Una tabla hash [...] es una estructura de datos que asocia
+ llaves o claves con valores. La operación principal que soporta de manera
+ eficiente es la búsqueda: permite el acceso a los elementos (teléfono y
+ dirección, por ejemplo) almacenados a partir de una clave generada (usando el
+ nombre o número de cuenta, por ejemplo). Funciona transformando la clave
+ [...] en un hash, un número que identifica la posición (casilla o cubeta)
+ donde la tabla hash localiza el valor deseado. —*Tabla Hash^`W`^
+ [28-07-2019]*
+
+
+### Los errores pertenecen al mundo real
+
+[Como datos que son][as-data], los programas informáticos pueden tener errores
+cuando tratan de representar un algoritmo correcto por la mera razón de que
+*errar es humano*[^errare-humanum-est].
+
+Cada programa no es más que una de las posibles representaciones de un
+algoritmo y, junto con el propio algoritmo, acarrea gran cantidad de
+información añadida[^de-anonymizing-programmers].
+
+Además, si el programador no conoce el algoritmo **completo** que pretende
+implementar con anterioridad, los errores son otro ejemplo más del concepto
+conocido como «Garbage In, Garbage Out[^garbage]».
+
+Los errores, conocidos como *bug* (bicho en inglés), son tan inherentes a la
+informática que los programadores han creado un amplísimo conjunto de
+herramientas y técnicas para cazarlos y eliminarlos[^tools-to-hunt-and-kill]
+sin demasiado éxito.
+
+Pero este fracaso absoluto desde la perspectiva de la ingeniería puede suponer
+un sustento sólido sobre el que construir la democracia.
+
+[as-data]: http://wiki.c2.com/?DataAndCodeAreTheSameThing
+
+[^errare-humanum-est]: Referencia a «Errare humanum est, sed perseverare
+ diabolicum.», frase atribuida a Séneca que significa literalmente: *Errar es
+ humano, perseverar [en el error] diabólico*.
+
+[^de-anonymizing-programmers]: Como muestra, investigadores de varias
+ universidades junto con investigadores del laboratorio de investigación de la
+ armada estadounidense publicaron el siguiente artículo, en el que se analizan
+ métodos para de-anonimizar a los programadores. Esto es, conocer la identidad
+ de programadores anónimos a través del estilo de programación de sus autores.
+ El artículo muestra que los programadores más experimentados, que están
+ capacitados para realizar tareas más complejas, son más fáciles de
+ identificar que los novatos debido a que desarrollan un estilo personal que
+ se ve reflejado en su código fuente.
+ <https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-caliskan-islam.pdf>
+
+[^garbage]: En informática, el concepto **Garbage in, garbage out (GIGO)**
+ describe que si se alimenta un proceso con datos absurdos o defectuosos los
+ datos resultantes del proceso son también absurdos o «basura» (en inglés
+ «garbage») —*Garbage in, garbage out^`W`^ [28-07-2019] (traducción propia)*
+
+
+[^tools-to-hunt-and-kill]: Existen herramientas de verificación de software,
+ como Adacore o TLA+, técnicas, como la programación por pares y el desarrollo
+ guiado por pruebas, cuya intención es prevenir la aparición de errores en el
+ software. También se han desarrollado herramientas de corrección y análisis
+ de éstos, conocidas como debuggers, como GDB (The GNU Debugger). A pesar de
+ su existencia y de su amplio uso, el software sigue teniendo fallos.
+ Además, la existencia de muchas herramientas para una misma labor suele ser
+ una muestra de su falta de efectividad.
+
+## Mucho más que computadoras
+
+Mientras que la matemática pertenece al dominio de la mente humana y es
+comunicable (o no es matemática aún) cualquier concepto que pertenece a ésta es
+información. Como tal, también pertenece al campo de la informática.
+
+Lo contrario no es cierto: los errores (*bugs*) están muy presentes en la
+informática mientras que no se dejan ver en el mundo de las matemáticas.
+
+Como consecuencia, **las matemáticas son parte de la informática**.
+
+Podría decirse que es al contrario o que son hermanas como la física y la
+matemática. Pero una mirada más minuciosa nos muestra que para que esta
+relación se cumpla es necesario descartar artificialmente la criptografía, la
+estadística y el diseño de interacción humana de la
+informática[^crypto-stats-ux].
+
+Mientras que esta afirmación puede parecer una herejía al principio, no debería
+sorprendernos demasiado ya que podemos observar a la informática cambiar cada
+aspecto de la vida humana, desde la medicina hasta la agricultura, desde la
+reproducción a las finanzas, desde la ingeniería a la cocina, desde la
+democracia hasta la guerra.
+
+Y aunque ningún programa necesita medicina, muchos médicos usan programas.
+Y aunque ningún programa necesita matar, la mayoría de las guerras necesitan
+software.
+
+Y así, sucesivamente.
+
+Este fenómeno tiene una explicación sencilla: La informática transforma todos
+los aspectos de la vida humana porque **transforma la forma en la que los
+humanos piensan colectivamente**. La información pertenece al dominio de la
+mente humana y, al compartirse con otros miembros de la comunidad, construye la
+cultura de dicha comunidad. Y la cultura vuelve a la mente de los nuevos
+miembros de la comunidad a modo de información en un bucle infinito.
+
+La informática es hoy en día lo que la matemática en tiempo de
+Pitágoras[^pythagoras]. Es filosofía disfrazada. Filosofía aplicada, si lo
+prefieres.
+
+[^crypto-stats-ux]: El autor enlaza varios conceptos o técnicas de cada uno de
+ los campos que menciona con el objetivo de probar su afirmación.
+
+ En referencia a la criptografía menciona el concepto «Side-channel attack»,
+ ataque de canal lateral en español, cuyo fundamento es el de encontrar
+ vulnerabilidades en la propia implementación física (electromagnetismo,
+ consumo energético, acceso físico, acústico o visual al sistema,
+ sincronización, etc.) de un sistema informático en lugar de tratar de atacar
+ el algoritmo mismo.
+
+ En referencia a la estadística, enlaza el concepto de «Machine Learning»,
+ aprendizaje automático en español, que implica que una máquina sea capaz, sin
+ supervisión humana, de aprender. Esto es, que, de forma autónoma, su
+ desempeño en una tarea mejore con su experiencia. El campo del aprendizaje
+ autónomo está relacionado de forma muy directa con la estadística
+ computacional y con la optimización matemática.
+
+ En referencia al diseño de interacción humana, el autor menciona el campo de
+ la interacción persona-computadora, «Human-computer interaction» en inglés,
+ donde se estudia la relación entre las personas usuarias y los sistemas
+ informáticos. Este campo de estudio se sitúa en la intersección de la
+ informática con las ciencias del comportamiento, el diseño y las ciencias de
+ la información, entre otros.
+
+[^pythagoras]: **Pitágoras de Samos** fue un filósofo y matemático griego del
+ siglo `V`a.C. Famoso por el teorema que lleva su nombre.
+
+## Un sector político
+
+Muchos practicantes negarían la descripción de la informática como una forma de
+filosofía moderna. Esto no se debe sólo a una falta de conocimiento sobre la
+propia filosofía (donde nace la lógica), se trata de un mal sentimiento acerca
+de esta conexión. Después de todo, analizando la historia, desde Confucio hasta
+Platón, desde Kant hasta Nietzshe, **los filósofos siempre han tenido el
+incómodo hábito de meterse en política** de una forma u otra.
+
+Esto es molesto. Los ingenieros de software intentan ser sólo ingenieros para
+poder dedicarse **únicamente** a la parte técnica del trabajo. Se sienten
+responsables de crear el artefacto que mejor cumpla el objetivo, pero no
+quieren responsabilizarse de la elección del objetivo en sí mismo.
+
+Ser filósofo implica posicionarse. Ser ingeniero, en cambio, implica
+simplemente crear cosas de modo que puedes justificar no estar de acuerdo con
+los valores de tu cliente mientras que sirves a sus propósitos.
+
+Los ingenieros pueden fingir ser «neutrales», los filósofos no.
+
+### La tecnología es la persecución de la política por otros caminos
+
+Si miras a la historia, puedes ver cómo la tecnología es la mayor fuerza
+política en el mundo.
+
+Desde el fuego a la rueda, los barcos, los molinos: toda nueva tecnología crea
+nuevos modos de vida que permiten la aparición de nuevas organizaciones
+humanas.
+
+Uno puede preguntarse: ¿Cómo algo que trabaja con información puede alterar de
+forma tan profunda el mundo físico en el que vivimos? ¡La información no es más
+que pensamientos que podemos comunicar, al fin y al cabo!
+
+Mientras que se habla de que «el software se está adueñando del mundo», no se
+plantea **cómo** está ocurriendo.
+
+Resulta que la explicación es la maravilla de la electrónica: la computadora
+programable de uso general. Las computadoras de uso general no están diseñadas
+para resolver un problema concreto sino para ejecutar una serie de
+instrucciones entregadas por un programador en un formato binario.
+
+De esta forma, mientras que las computadoras reproducen el software, lo que
+ocurre es que un acto de mera imaginación expresado en un lenguaje concreto es
+invocado como una suerte de demonio[^daemon] que actúa en el mundo físico.
+
+Como ha pasado con anterioridad, cada progreso en la tecnología aporta una
+ventaja estratégica a quien tiene acceso al mismo. No necesitamos remontarnos a
+la edad de piedra para encontrar evidencias de esto, ni siquiera necesitamos
+conocer la máquina Enigma[^enigma]. Una Guerra Informática Mundial está
+teniendo lugar ahora mismo. Una guerra por la total dominación del ser humano
+mediante la tecnología.
+
+[^daemon]: Juego de palabras intraducible. En sistemas POSIX se utiliza el
+ término «daemon», demonio en inglés, para referirse a programas que se
+ ejecutan en segundo plano. En español el término no ha sido traducido y se
+ usa el original en inglés.
+
+[^enigma]: Enigma era el nombre de una máquina de cifrado mecánico creada y
+ comercializada a principios del siglo `XX`. Durante la Segunda Guerra
+ mundial, el ejército alemán utilizó versiones alteradas de estas máquinas. El
+ ejército aliado, a pesar de las alteraciones, fue capaz de descifrar las
+ comunicaciones en cantidad de ocasiones, siendo ésta una gran fuente de
+ inteligencia durante la guerra.
+
+### La programación entrena la racionalidad
+
+En sí misma, una computadora de uso general es inútil. Pero los programas
+pueden especializarla para hacerla útil para una gran variedad de problemas
+específicos.
+
+Esta especialización **limita** lo que la computadora puede hacer. **Reduce**
+su potencial. Esto puede parecer contra-intuitivo para el no versado en la
+programación (e incluso para los propios programadores), pero, en realidad,
+todo lo que hacemos con lenguajes de programación es **reducir** lo que la
+máquina es **capaz de hacer** decidiendo lo que **hará en realidad**.
+
+¿Pero trata esto sólo sobre computadoras?
+
+Si todo lo que dispusiéramos fuera [ensamblador][assembly] podría ser así. La
+programación no sería muy diferente al diseño de circuitos.
+
+Sin embargo, se crearon [lenguajes de programación de alto
+nivel][high-level-programming-languages] para acelerar el desarrollo de
+software y, al hacerlo, se redujo el [acoplamiento][coupling] entre el hardware
+y el software.
+
+Los lenguajes de programación de alto nivel reducen la carga cognitiva de los
+programadores. Gracias a ellos no necesitamos conocer los detalles internos de
+un procesador o dispositivo (al menos, [la mayor parte de las
+veces][meltdown]). Una vez liberados de los límites de la máquina, los
+programadores se encuentran con otro límite: el de su propia mente.
+
+Hay muchas formas de expresar un programa. La mayor parte incorrectas.
+
+Por tanto, la práctica de la programación evolucionó hacia herramientas cada
+vez más complejas constriñendo la forma en la que los programadores pueden
+expresar lo que tienen en mente, ayudándoles a escribir código que su mente
+pueda manejar.
+
+Sin embargo, como el hardware subyacente sigue estrictamente las normas de la
+lógica y la matemática, cualquier lenguaje de programación debe hacerlas
+cumplir también tarde o temprano.
+
+Esto significa que **para programar** necesitas aprender a **pensar
+racionalmente** y a ser capaz de explicarlo.
+
+En otras palabras, programar fuerza a las personas a describir complejas
+dinámicas y sistemas en constante evolución a alguien tan **tonto** como es un
+ordenador. Algunas [técnicas][techniques-ii] son tan cercanas a la filosofía que
+sus practicantes hablan más de lo que programan.
+
+El lenguaje de programación que eliges influencia también tu forma de pensar en
+un modo mucho más profundo que el que experimentas al aprender un lenguaje
+humano. Los patrones de pensamiento que aprendes programando resultan útiles en
+todos los aspectos de la vida. Igual que la matemática, pero con esteroides.
+
+Además, la forma clave de entender el potencial político de la informática es
+la **depuración del código** (proceso conocido en inglés como «debugging»).
+Durante el proceso de depuración **buscas un error en la elaboración cultural
+colectiva de miles de personas** de todo el mundo.
+
+[assembly]: https://en.wikipedia.org/wiki/Assembly_language
+[high-level-programming-languages]: https://en.wikipedia.org/wiki/High-level_programming_language
+[coupling]: https://en.wikipedia.org/wiki/Coupling_(computer_programming)
+[meltdown]: https://meltdownattack.com/
+[techniques-ii]: https://en.wikipedia.org/wiki/Domain-driven_design
+
+### La depuración de código entrena el pensamiento crítico
+
+No existe nada en la tierra que pueda entrenar el [pensamiento
+crítico][critical-thinking] tanto como un par de décadas de [depuración de
+software][debugging].
+
+Ves a la computadora ejecutar billones de líneas de código y tienes que
+adivinar dónde ocurre el error que genera el fallo en el comportamiento del
+programa. Es una tarea tan difícil y tediosa que las personas y empresas
+intentan evitarla por todos los medios, normalmente intentando evitar el
+problema. Pero cuando **tienes que** arreglarlo, es una experiencia muy
+**educativa**.
+
+En primer lugar porque, la mayor parte de las veces, es culpa tuya.
+
+Pero otras veces es el compilador, otras el sistema operativo, otras el
+navegador web y otras veces ves el [efecto mariposa][butterfly-effect] ocurrir
+frente a tus ojos y tú tienes que encontrar (y matar) la mariposa correcta a
+kilómetros de distancia, sólo para parar el tornado en el que te encuentras.
+
+Comparado a esto, **destapar fake-news (noticias falsas) es un juego de
+niños**.
+
+¡Comparado a esto, destapar las afirmaciones de los poderosos es un juego de
+niños!
+
+Esto ocurre porque estás entrenado en pensar sobre lo que miles de personas
+pensaron antes que tú, entender sus suposiciones, para vislumbrar no sólo lo
+que sabían o malentendieron, también lo que no conocían en absoluto.
+
+Lo desconocido es parte fundamental de la informática.
+
+Los buenos programadores [saben que no saben nada][socratic-method] por la
+propia experiencia. Y los verdaderos hackers saben que **nadie sabe nada**.
+¡Por eso somos tan curiosos!
+
+[critical-thinking]:https://en.wikipedia.org/wiki/Critical_thinking
+[debugging]: https://en.wikipedia.org/wiki/Debugging
+[butterfly-effect]: https://en.wikipedia.org/wiki/Butterfly_effect
+[socratic-method]: https://en.wikipedia.org/wiki/Socratic_method
+
+## Un derecho humano universal
+
+En la declaración universal de los derechos humanos[^human-rights] se recogen
+tres artículos que tratan accidentalmente sobre la informática.
+
+> **Artículo 12**:
+>
+> Nadie será objeto de injerencias arbitrarias en su vida privada, su familia,
+> su domicilio o su correspondencia, ni de ataques a su honra o a su
+> reputación. Toda persona tiene derecho a la protección de la ley contra tales
+> injerencias o ataques.
+>
+> **Artículo 19**:
+>
+> Todo individuo tiene derecho a la libertad de opinión y de expresión; este
+> derecho incluye el no ser molestado a causa de sus opiniones, el de
+> investigar y recibir informaciones y opiniones, y el de difundirlas, sin
+> limitación de fronteras, por cualquier medio de expresión.
+>
+> **Artículo 27**:
+>
+> 1. Toda persona tiene derecho a tomar parte libremente en la vida cultural
+> de la comunidad, a gozar de las artes y a participar en el progreso
+> científico y en los beneficios que de él resulten.
+>
+> 2. Toda persona tiene derecho a la protección de los intereses morales y
+> materiales que le correspondan por razón de las producciones científicas,
+> literarias o artísticas de que sea autora.
+
+Incluso sin considerar las grandes multinacionales que constituyen el núcleo
+del [Capitalismo de la Vigilancia][surveillance-capitalism] podemos ver estos
+artículos ser violados sistemáticamente en la mayor parte de los dispositivos
+que «poseemos».
+
+Quienes sean incapaces de configurar su propio servidor de correo electrónico
+no pueden dar por cumplido el artículo 12. Quien no sepa programar está
+incapacitado para «difundir \[informaciones\], sin limitación de fronteras, por
+cualquier medio de expresión» y por tanto no puede dar por cumplido el artículo
+19. Quienes no sepan depurar una librería de criptografía no pueden dar por
+cumplido el artículo 19. Como los programas son cultura (y teoremas, ver [la
+correspondencia entre Curry y Howard][curry-howard]), las personas incapaces de
+programar no pueden dar por cumplido el 27.1.
+
+Así que **saber informática es un derecho humano**.
+
+[^human-rights]: La declaración completa puede leerse aquí:
+ <https://www.un.org/es/universal-declaration-human-rights/index.html>
+
+[surveillance-capitalism]: https://thebaffler.com/latest/capitalisms-new-clothes-morozov
+[curry-howard]: https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence
+
+
+## Un derecho fundamental
+
+¿Quieres vivir en un mundo donde necesites un escriba para leer y enviar **tu**
+correo?
+
+Sí, asumamos que son profesionales bien entrenados. Asumamos que tienen un
+Código de Conducta, un juramento y todo eso.
+
+Asumamos que es un servicio **gratuito**, como Gmail, Facebook o WeChat, y que
+todos los escribas tienen trabajos bien pagados.
+
+¿Qué puede ir mal?
+
+
+### Libertad como en el Software Libre
+
+Vivimos en una distopía que hemos sido entrenados para ignorar.
+
+Nunca deberíamos aceptar que un extraño leyera o escribiera nuestro correo. Ni
+siquiera gratuitamente.
+
+Pero aceptamos que, sin ninguna supervisión, un software escrito por extraños
+controle nuestros dispositivos. Que actúe por nosotros. Pueden leer lo que
+escribimos. Escuchar lo que decimos. Ver lo que hacemos. Deciden lo que debemos
+o no debemos saber.
+
+A principios de [los años ochenta][talking-to-the-mailman] del pasado siglo,
+Richard Stallman de algún modo previó lo que ocurriría y fundó el movimiento
+[político][political-movement] del Software Libre para combatirlo. Concibió las
+[cuatro libertades del software libre][four-freedoms] para: usar, **estudiar**,
+compartir y **mejorar** el software que recibes.
+
+Más tarde, la iniciativa Open Source convirtió esos valores en [herramientas de
+marketing][open-source].
+
+[Vaciadas de sus valores éticos][emptied-of-values], las cuatro libertades se
+convirtieron en una herramienta para ganar participación en el mercado y valor
+para los accionistas.
+
+Google fue probablemente el primero en darse cuenta de que es posible publicar
+software que cumple **formalmente** las cuatro libertades mientras se mantiene
+total control del mismo. El truco es aumentar **la complejidad técnica** hasta
+tal punto que nadie es capaz de poner en cuestión tu control del proyecto.
+
+Así que te disfrazas de cumplir los valores de los hackers mientras que los
+**marginas**. Mediante esos valores consigues que los usuarios confíen en ti.
+Usuarios que usan tu software **gratis** pero a cambio de **su propia
+[libertad][mass-surveillance] y [seguridad][safety]**.
+
+Hoy en día hasta Microsoft[^linux-is-cancer] distribuye
+[GNU/Linux][gnu-linux-in-windows].
+
+¿[Gano Richard Stalman][open-source-2]?
+
+
+[talking-to-the-mailman]: https://newleftreview.org/issues/II113/articles/richard-stallman-talking-to-the-mailman
+[political-movement]: https://www.gnu.org/gnu/initial-announcement.en.html
+[four-freedoms]: https://fsfe.org/freesoftware/basics/4freedoms.en.html
+[open-source]: https://thebaffler.com/salvos/the-meme-hustler
+[emptied-of-values]: https://www.gnu.org/philosophy/open-source-misses-the-point.en.html
+[mass-surveillance]: https://en.wikipedia.org/wiki/Mass_surveillance_industry
+[safety]: https://bugzilla.mozilla.org/show_bug.cgi?id=1487081#c16
+[gnu-linux-in-windows]: https://docs.microsoft.com/en-us/windows/wsl/install-win10
+[open-source-2]: https://abhas.io/open-source-still-misses-the-point/
+
+[^linux-is-cancer]: En 2001, el entonces CEO de Microsoft, Steve Ballmer,
+ declaró que «Linux es un cáncer» y «contamina todo el software con su basura
+ hippie GPL».
+ [Consultado 16-08-2019]
+ <https://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer/>
+
+### Más allá de la libertad para unos pocos
+
+¿Podemos llamar «libertad» a un derecho que pocos pueden practicar? ¿No
+deberíamos, en su lugar, llamarlo «privilegio»?
+
+Como la mayor parte de las personas no es capaz de programar y depurar
+programas son incapaces de leer y modificar Software Libre. No pueden practicar
+dos de las Cuatro Libertades. Están forzadas a **confiar** en otras. Y no
+tienen forma de saber si los demás son confiables.
+
+La disponibilidad del código fuente hace que el software libre sea
+**teóricamente** más seguro que el software privativo, pero su complejidad
+puede contrarrestar esto en gran medida. Una pieza de código maliciosa puede
+mantenerse oculta durante meses[^malicious-piece] a pesar de la retórica Open
+Source[^os-rethoric] del número de ojos.
+
+Los usuarios **están obligados** a confiar en el sistema. No tienen opción. No
+tienen libertad.
+
+Entonces tenemos que ir más allá del Software libre. Tenemos que convertir sus
+libertades en derechos **universales**.
+
+[^malicious-piece]: el 23 de marzo de 2016 The Register publicó:
+ «Cómo un programador ha roto Node.js, Babel y miles de proyectos con
+ al retirar de NPM 11 líneas de JavaScript que todo el mundo estaba usando»
+ [Consultado 16-08-2019]
+ <https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/>
+[^os-rethoric]: El autor enlaza aquí al capítulo quinto del texto «La catedral
+ y el bazar» escrito por Eric S. Raymond, impulsor del concepto Open Source, a
+ finales de los años 90. Pueden encontrarse traducciones del texto a otros
+ idiomas con relativa facilidad.
+ Éste es el texto original, publicado en la web de Eric S. Raymond:
+ <http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s05.html>
+
+
+## La tecnología de la información debe progresar
+
+Para convertir la informática de una herramienta de poder a una herramienta de
+libertad tenemos que mejorarla drásticamente.
+
+Tal y como los escribas hicieron con los jeroglíficos en el antiguo Egipto, los
+programadores ganan su poder usando herramientas **primitivas** que lleva años
+aprender a manejar.
+
+E, igual que los escribas, no son conscientes de su propio poder y siguen
+sirviendo al faraón[^capitalism] que los oprime.
+
+Al entender que la informática es sobre información y la información reside
+dentro de sus propias cabezas, los programadores se darán cuenta de que son
+*únicos*[^2] en la historia de la economía.
+
+[^2]: En la versión original, debido a la influencia del italiano, el autor usa
+ el término latino «unicum» que, a pesar de que la palabra latina se traduce
+ como «único» al español, en italiano este término hace referencia a piezas
+ únicas de colecciones o eventos históricos que son irrepetibles.
+
+**Los programadores son los primeros trabajadores que controlan los medios de
+producción**. Los tienen sólidamente unidos a su cuello y no pueden
+eliminárselos sin destruir el Capital.
+
+Si tu trabajo es programar, piensa en ello.
+No es tu IDE el que escribe el programa. No es tu escritorio. No es tu jefe.
+Eso sólo son herramientas que «facilitan» lo que haces. Son útiles, pero
+secundarias.
+Aun así: ¿Quién decide lo que haces?
+
+Ahora piensa lo que podrías hacer por este mundo en lugar de [aumentar el valor
+de los accionistas][shareholders-value].
+
+[^capitalism]: En el texto original en la palabra «faraón» se encuentra, como
+ en otros casos, un enlace a la Wikipedia, la enciclopedia libre. En este
+ caso, para la sorpresa del lector, el enlace no es a la página «faraón» sino
+ a «capitalismo».
+
+[shareholders-value]: https://puri.sm/posts/the-future-of-computing-and-why-you-should-care/
+
+
+### Evita el moralismo
+
+Desde [hace años][years-moralism], ha habido mucho ruido acerca ~~del
+moralismo~~ la ética en la tecnología de la información.
+
+En el campo de la [inteligencia artificial][ia-desilusion],tras varias muertes
+causadas porque los [coches autónomos][self-driving-car] son incapaces de
+resolver un [«dilema del tranvía»][trolley-problem] [que no debería estar
+ahí][shouldnt-be-there], los investigadores [tratan de enseñar ética a las
+máquinas][machine-morality].
+
+Es muy inteligente, si lo piensas.
+Desde la perspectiva práctica es como enseñar sexo a los condones. Deberías
+empezar por las personas.
+Pero desde el punto de vista político es un intento sutil de [reducir la
+responsabilidad corporativa][corporate-acountability] del daño causado por sus
+productos «autónomos».
+
+No es ética, es moralismo: una perversión de la moralidad para servir los
+intereses individuales.
+
+Debemos rechazar esta hipocresía como la cortina de humo que es.
+
+[years-moralism]: https://theconversation.com/a-code-of-ethics-in-it-just-lip-service-or-something-with-bite-32807
+[ia-desilusion]: http://www.tesio.it/documents/2018_Milano_The-Delusions-of-Neural-Networks.pdf
+[self-driving-cars]: http://www.tesio.it/2018/10/06/the-intelligent-symbiosis.html
+[trolley-problem]: http://moralmachine.mit.edu/
+[shouldnt-be-there]: https://github.com/daviddao/awful-ai/issues/14
+[machine-morality]: https://en.wikipedia.org/wiki/Machine_morality
+[corporate-acountability]: https://en.wikipedia.org/wiki/Death_of_Elaine_Herzberg
+
+### Sé humano
+
+Los programadores suelen mirar a los usuarios desde la limitada perspectiva de
+la aplicación que están desarrollando.
+
+Quien programa decide con gran grado de libertad lo que los usuarios de la
+aplicación resultante pueden o no pueden hacer. De esta forma, los
+programadores deciden lo que los usuarios deben entender y lo que no. Lo que
+probablemente pensarán y lo que no.
+
+Esto va más allá que los problemas de la vigilancia y es la base de la
+interacción humano-máquina[^human-machine-interaction] y es... **inevitable**.
+
+Pero en lugar de pensar en el usuario desde la limitada perspectiva del ámbito
+de nuestra aplicación, debemos considerarlos seres humanos, debemos
+considerarlos personas.
+
+Si piensas en el software como en una carta que le envías a otra persona en
+lugar de en una herramienta para ganar dinero, empiezas a fijarte en sus
+problemas de otra forma.
+
+¿Y si las personas al otro lado están cansadas?
+¿Y si necesitan resolver problemas inesperados con nuestro programa?
+¿Realmente entienden lo que hacen con tu software?
+¿Realmente entienden los riesgos de seguridad a los que se exponen?
+¿Les da miedo el software?
+¿Pueden configurarlo para cumplir sus necesidades?
+
+**Llamar a la gente «usuario» es una forma de usarlos sin remordimiento**.
+No hagas eso.
+
+[^human-machine-interaction]: La **interacción persona-computadora o
+ interacción persona-ordenador (IPO)** se podría definir formalmente como: "La
+ disciplina dedicada a diseñar, evaluar e implementar sistemas informáticos
+ interactivos para el uso humano, y a estudiar los fenómenos relacionados más
+ significativos" —*Interacción persona-computadora^`W`^ [28-07-2019]*
+
+
+### Sé político
+
+Siendo la tecnología una persecución de la política por medios que **tenemos
+bajo control**, debemos considerar qué responsabilidad viene con ellos.
+
+Como programadores liberados debemos manifestar qué objetivos políticos
+queremos conseguir con cada programa que hacemos.
+
+Desde ahora, todos mis programas de Software Libre contendrán un nuevo archivo,
+junto al `LICENSE.txt` y al `README.txt`: **`POLITICS.txt`**
+
+**`POLITICS.txt`** debe ser un manifiesto **corto** pero **inequívoco** sobre
+los efectos políticos que el autor del proyecto pretende conseguir con su
+software.
+
+Esa descripción **no** incluye una bonita lista de principios
+éticos[^google-principles] que los autores quieren seguir en el fondo de su
+corazón simplemente para evitar el riesgo de caer en la hipocresía.
+
+Debe ser una lista de **efectos sociales** específicos que los autores quieren
+producir **en la sociedad** con **este software en particular**. Y debe listar
+también los efectos sociales que pretende evitar o minimizar.
+
+Pueden ser de alto nivel o muy específicos, pero la gente debe ser capaz de
+decir si el software es un **fracaso político o un éxito** sólo leyendo esos
+objetivos y comparándolos con el efecto del software producido.
+
+El éxito político puede ser un fracaso tecnológico y viceversa.
+Y el documento `POLITICS.txt` puede evolucionar con el proyecto.
+Y los proyectos pueden bifurcarse (fork) por desacuerdos sobre éste.
+
+Y no pasa nada.
+
+Pero el hecho de **tener un `POLITICS.txt` significa que te haces responsable**
+de los demonios que invocas.
+
+[^google-principles]: El autor hace burla de la reciente moda de que las
+ grandes corporaciones tengan una carta de principios éticos que sólo se
+ utilizan como herramienta de marketing. En este caso enlaza a la de google:
+ <https://ai.google/principles>
+
+
+### Sé educativo
+
+La ética hacker que subyace al Software Libre está erigida sobre la curiosidad.
+Todo trata sobre el deseo de aprender, explorar nuevas soluciones y poner a
+prueba suposiciones generalmente aceptadas por válidas.
+
+Pero nuestro tiempo es limitado y también lo es nuestra mente.
+
+Por lo que una estrategia muy efectiva para conseguir nuevo conocimiento es
+maximizar el número de personas buscándolo.
+
+Escribir buen código no es tan efectivo como escribir código
+simple[^simple-code].
+
+Leer el código fuente no debería de requerir una licenciatura o años de
+experiencia en el sector.
+
+Es necesario que reorientemos la investigación en los lenguajes de programación
+hacia la **simpleza**. Las lecciones del profesor Niklaus Wirth[^wirth] aún
+están esperando a una nueva vida[^wirth-lessons].
+
+Necesitamos herramientas simples que encajen fácilmente en lugar de
+herramientas complejas que puedan hacerlo todo.
+
+No será fácil, ya que **la informática es aún un campo muy primitivo**. Igual
+que los antiguos egipcios vivieron sin número cero durante cientos de años, aún
+nos faltan muchos conceptos fundamentales. Pero tenemos que descubriros.
+Tenemos que crear un alfabeto de la informática.
+
+Con este alfabeto debemos liberar a la siguiente generación de esclavos.
+
+[^simple-code]: Referencia a un projecto que él mismo mantiene llamado Jehanne,
+ un sistema operativo *simple* y a un texto que describe el funcionamiento de
+ Jehanne para demostrar su simpleza:
+ <http://jehanne.io/2018/11/15/simplicity-awakes.html>
+
+[^wirth]: El profesor Niklaus Emil Wirth es un informático nacido en
+ Winterthur, Suiza, en 1934, que diseñó muchos lenguajes de programación,
+ entre ellos Pascal. En 1984 obtuvo el premio Turing, premio otorgado por la
+ ACM que se considera el premio más prestigioso de la informática. Se puede
+ saber más sobre él y acceder libremente a sus publicaciones en su página
+ web:
+ <https://inf.ethz.ch/personal/wirth/>
+
+[^wirth-lessons]: El profesor Wirth aún tiene disponibles unas lecciones sobre
+ el lenguaje de programación Oberon, en cuyo diseño participó activamente, así
+ como en el de sus predecesores Modula y Pascal. Las lecciones pueden
+ visitarse en el siguiente enlace:
+ <https://miasap.se/obnc/oberon-report.html>
+
+ Pero Oberon es algo más que un lenguaje de programación, es el diseño
+ completo de una computadora de escritorio pensado para que cualquier
+ persona pueda implementar el sistema completo y mantenerlo en un entorno de
+ producción. En su página web puede encontrarse más información:
+ <http://www.projectoberon.com/>
+
+
+## La humanidad debe evolucionar
+
+Esto no trata sólo de desarrolladores de software.
+
+Un médico no puede curar a un enfermo que se niega a ser tratado.
+
+Si queremos preservar la democracia **tenemos** que hacerla evolucionar. No es
+la democracia la que debe ser [automatizada][automated-democracy], la gente
+debe ser educada.
+
+Las personas deben darse cuenta de que son marionetas en las manos de grupos de
+poder que deciden qué deben saber y pensar.
+
+Algunos rechazarán ganar esa conciencia ya que muchas veces los oprimidos
+interiorizan la opresión como parte de su propia
+identidad[^oppression-as-identity]. Pero si les damos la oportunidad, puede que
+permitan a sus hijos descubrir su camino hacia la libertad.
+Otros verán la realidad tal y como es, y lucharán... Estudiando.
+
+Independientemente de lo que hagamos, la informática va a ser una
+revolución[^revolution] de todas formas.
+
+[automated-democracy]: https://motherboard.vice.com/en_us/article/yw84q7/darpa-is-building-a-dollar10-million-open-source-secure-voting-system
+
+[^oppression-as-identity]: «Pedagogía del Oprimido» Paulo Freire, 1970.
+
+[^revolution]: Una **revolución** (del latín *revolutio*, "una vuelta") es un
+ cambio social fundamental en la estructura de poder o la organización que
+ toma lugar en un periodo relativamente corto o largo dependiendo la
+ estructura de la misma —*Revolución^`W`^ [30-07-2019]*
+
+
+> **Morfeo**: Matrix nos rodea, está por todas partes. Incluso ahora en esta
+> misma habitación. Puedes verla si miras por la ventana, o al encender la
+> televisión. Puedes sentirla cuando vas a trabajar, cuando vas a la iglesia,
+> cuando pagas tus impuestos. Es el mundo que ha sido puesto ante tus ojos para
+> ocultarte la verdad.
+>
+> **Neo**: ¿Qué verdad?
+>
+> **Morfeo**: Que eres un esclavo, Neo. Igual que los demás naciste en
+> cautiverio. Naciste en una prisión que no puedes ni saborear, ni oler, ni
+> tocar. Una prisión para tu mente.
+
+**La informática** es la pastilla roja[^matrix].
+
+[^matrix]: Referencia a la película «Matrix», dirigida por las Hermanas
+ Wachowski, en 1999. Esta conversación Morfeo ofrece a Neo dos pastillas, con
+ la azul vuelve a su vida normal y se olvida de lo que sabe sobre Matrix, con
+ la roja sigue en su búsqueda de la verdad y la libertad.