From fe3d311c82e4f089fa1ee58c48c22bf198990e90 Mon Sep 17 00:00:00 2001 From: Ekaitz Zárraga Date: Fri, 12 Jul 2019 14:18:36 +0200 Subject: First official commit --- es/01_informatics.md | 973 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 973 insertions(+) create mode 100644 es/01_informatics.md (limited to 'es/01_informatics.md') 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] + + +[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. + + +[^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í: + + +[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] + + +### 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] + +[^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: + + + +## 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: + + + +### 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: + + +[^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: + + +[^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: + + + 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: + + + +## 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. -- cgit v1.2.3