De subordinadas y negaciones traicioneras

Ayer por la tarde, hacia la hora de comer, la cuenta de Twitter del Partido Popular reflejaba la siguiente cita:

Confieso que a mí me la pasaron, la leí y no vi nada raro. Así que me sorprendió la ristra de respuestas que en poco tiempo acumulaba señalando la falta de pericia del autor: mucha gente sostenía que el PP acababa de admitir, con ese comentario, que se han cometido irregularidades (no caerá esa breva…). Lo primero que pensé, por tanto, es que yo había cometido algún error al leer rápido, que tal vez esa acumulación de negaciones (tres, en concreto: el primer «no», la propia «duda» y el segundo «no») escondiese un significado no deseado —porque el deseado lo da el contexto que todos conocemos—. Y tras un análisis pormenorizado (varios en realidad, por si acaso), concluí que mi primera impresión era acertada: está perfectamente escrito y dice lo que quiere decir. Así lo expresé en Twitter, no falto de énfasis:

Además del despiporre generalizado, no faltó la gente que aprovechó para insultar directamente (que no digo que no se lo merezcan, pero cuidado con escupir hacia el cielo, que ya se sabe…):

Muchos han atribuido el supuesto error al esquema de doble negación típico del castellano. Pues bien: no existe tal doble negación. Podemos consultar en la RAE cuándo se da esta construcción, como en el uso de adverbios que expresan negación («nadie», «tampoco», etc.) cuando van pospuestos al verbo. Este caso no tiene nada que ver. Yo atribuyo la confusión a la acumulación de negaciones en forma de subordinación y a las ganas que les tiene la gente.

Como el mío, fueron apareciendo mensajes, poco a poco, que avisaban de la corrección de la cita. Entre las discusiones ajenas que he ojeado y las propias, he visto desde gente que afirma que es incorrecta hasta quien afirma que es correcta gramaticalmente pero resulta ambigua, luego incorrecta; también la evolución de una postura a otra. Por ello, quiero exponer aquí algunos procedimientos que he empleado yo para analizar dicha cita y llegar a la conclusión de que es correcta y no hay posible ambigüedad.

[Nota: mientras escribo estas líneas, veo que @chusop ya ha publicado una explicación sobre la que tengo poco que añadir, la verdad].

La primera aproximación es la obvia: empezar de atrás hacia adelante, dado que tenemos una cadena de subordinadas.

  • El PP sostiene que no ha habido prácticas irregulares.
  • La gente duda de lo anterior.
  • El PP no tolera esa duda.

Aprovecho para hacer notar que no hay otra forma de entender las subordinadas ni queriendo y con esfuerzo: está claro que «dudar que» va dentro de «tolerar que». Segunda aproximación: si las negaciones nos molestan, expresemos las mismas proposiciones de forma afirmativa (y si nos salen otras negaciones, les damos la vuelta también; la negación sobre «tolerar» la dejo porque resulta trivial).

  • El PP sostiene que no ha habido prácticas irregulares, ergo el PP afirma su integridad.
  • La gente duda de la integridad del PP, ergo la gente cree en la falta de integridad del PP, ergo la gente cree que son unos mangantes.
  • El PP no tolera que se dude de su integridad, ergo el PP no tolera que la gente crea que no tienen integridad, ergo el PP no tolera que la gente crea que son unos mangantes.

Cristalino. Ante la claridad de este último paso, puedo admitir que la acumulación de negaciones enmaraña el significado, pero en ningún caso se comete incorrección o ambigüedad. De hecho, ¿hasta qué punto da lugar a confusión? Estoy convencido de que si se hubiese tratado de otro tema y otro autor, nadie le habría buscado la vuelta (o «no le habría buscado la vuelta nadie», esta vez sí, con doble negación): se habría entendido perfectamente y a la primera —aunque esto nunca lo sabremos—.

Llegados a este punto, he de confesar que todo lo anterior no es más que una excusa para lo que viene ahora. En mi discusión particular de ayer tarde, un twittero me dijo lo siguiente:

A lo que yo contesté: CHALLENGE ACCEPTED. ¿De qué nos serviría el lenguaje si no fuese formalmente lógico? Por supuesto que hay matemáticas ahí detrás: podemos analizar la cita mediante lógica de predicados [¡peligro, matemáticas!]. Empezamos.

Sean los siguientes predicados:

\begin{array}{rcl} I(x) & : & x \text{ tiene irregularidades} \\ D(x) & : & x \text{ se pone en duda} \\ T(x, y) & : & x \text{ tolera } y \end{array}

Nuestra cita queda formalizada en la siguiente expresión: \neg{T(x, D(\neg{ I(x)}))}, donde x = \text{"el PP"}. Ahora bien, la Ley de la doble negación nos dice que dos negaciones equivalen a una afirmación. Asimismo, las Leyes de Morgan nos dicen, básicamente, que podemos mover una negación a través de los predicados sin modificar la proposición. Así que, en primer lugar, vamos a obtener todas las proposiciones equivalentes que se obtienen aplicando dos negaciones en distinto predicado (la primera es la original):

\neg{T(x, D(\neg{I(x)}))} \Leftrightarrow \neg{T(x, \neg{D(I(x))})} \Leftrightarrow T(x, \neg{D(\neg{I(x)})}) \Leftrightarrow T(x, D(I(x)))

Esto quiere decir que deberían ser equivalentes las siguientes proposiciones:

  • [Original] El PP no tolera que se ponga en duda que el PP no tiene irregularidades.
  • El PP no tolera que no se ponga en duda que el PP tiene irregularidades.
  • El PP tolera que no se ponga en duda que el PP no tiene irregularidades.
  • El PP tolera que se ponga en duda que el PP tiene irregularidades.

Queda como ejercicio para el lector comprobar que, efectivamente, es así. De la misma forma, la negación de la proposición generará otras tres equivalentes (o, lo que es lo mismo, aplicamos a la original un número impar de negaciones):

T(x, D(\neg{ I(x)})) \Leftrightarrow \neg{T(x, D(I(x)))} \Leftrightarrow \neg{T(x, \neg{D(\neg{I(x)})})} \Leftrightarrow T(x, \neg{D(I(x))})

Esto quiere decir que deberían ser equivalentes las siguientes proposiciones:

  • [Original negada] El PP tolera que se ponga en duda que el PP no tiene irregularidades.
  • El PP no tolera que se ponga en duda que el PP tiene irregularidades.
  • El PP no tolera que no se ponga en duda que el PP no tiene irregularidades.
  • El PP tolera que no se ponga en duda que el PP tiene irregularidades.

Más tarea para el lector. Ahora definamos el siguiente predicado:

A(x, y) : x \text{ cree verdadero } y

Estaremos de acuerdo en que si x cree verdadero y, es más que razonable decir que x no tolerará que se dude de y, y lo mismo se sigue en sentido inverso:

A(x, y) \Leftrightarrow \neg{T(x, D(y))}

Entonces, ¿qué cree verdadero el PP? Basta con sustituir y por «el PP tiene irregularidades» o «el PP no tiene irregularidades».

\begin{array}{rcl} A(x, I(x)) & \Leftrightarrow & \neg{T(x, D(I(x)))} \\ A(x, \neg{I(x)}) & \Leftrightarrow & \neg{T(x, D(\neg{I(x)}))} \end{array}

De esta manera, si el PP afirma que no tiene irregularidades, obtenemos justamente la cita original, mientras que, si el PP afirma que tiene irregularidades, obtenemos una proposición equivalente a la negación de la cita original. QED.

Problemas de usabilidad

El comando tar es un archivador, una herramienta GNU/Linux que sirve para empaquetar archivos y carpetas y, opcionalmente, comprimirlos. Una especie de WinZip o WinRaR, para que nos entendamos, pero por línea de comandos. El inconveniente es que tiene serios problemas de usabilidad. Y alguien se preguntará, ¿cómo demonios se mide la usabilidad de un programa por línea de comandos? Fácil: depende de lo que se parezca su sintaxis al resto de programas, a ciertas convenciones existentes. El comando tar, en ese sentido, es bastante diferente; en parte porque es viejo, lo que no es excusa para que no se haya actualizado.

¿tar –help?

Y el autor de xkcd añade:

I don’t know what’s worse–the fact that after 15 years of using tar I still can’t keep the flags straight, or that after 15 years of technological advancement I’m still mucking with tar flags that were 15 years old when I started.

[Traducción muy libre] No sé qué es peor: el hecho de que, tras 15 años utilizando tar, sigo sin saber poner sus opciones en orden o que, tras 15 años de avance tecnológico, sigo lidiando con unas opciones que ya tenían 15 años cuando yo empecé.

Yo me siento exactamente igual. Lo he utilizado docenas de veces para comprimir y descomprimir, pero siempre necesito mirar el manual o buscar algún ejemplo. Invariablemente. Dada la enorme cantidad de gente que ha compartido el cómic, debe ser algo generalizado. Me quedo más tranquilo.

BONUS: la bomba del cómic probablemente haga referencia a tarbomb, el nombre que se le pone a aquellos archivos que no están comprimidos dentro de una carpeta y, por tanto, si no te fijas y descomprimes sin más, pueden sobreescribir ficheros preexistentes con el mismo nombre. Pero eso pasa igual con todos los archivadores y compresores del mundo: la culpa es del usuario. Yo siempre tengo por costumbre mirar qué hay dentro antes de descomprimir nada.

¡Hackeada la web del PP!

O no. Como parece que tienen el tinglado bastante protegido contra ataques Cross-Site Scripting, aquí tenéis un apaño en local, más cutre pero más personalizable [AVISO: el siguiente enlace solo funciona en navegadores modernos con soporte para HTML5]:

VISITA LA WEB DEL PP

Os animo a que modifiquéis el enlace para crear vuestras propias versiones (iba a crear un formulario y tal para modificarlo, pero he pensado que no es tan difícil buscar una cadena de texto y cambiarla; vagos). Si me mandáis nuevos «diseños», los iré recopilando aquí. Los únicos límites son vuestra imaginación y los dos mil y pico caracteres que suelen imponer como máximo los navegadores en las URL.

Corrección, adecuación y simplicidad de un modelo científico

El pasado jueves, leí en Microsiervos La velocidad del Sol, una anotación donde aparece un curioso vídeo sobre el sistema solar. En dicho vídeo, básicamente se argumenta que el modelo heliocéntrico (aquel que todos tenemos en la cabeza cuando pensamos en el sistema solar), con los planetas dando vueltas alrededor del Sol, es incorrecto porque la realidad no es tal. En su lugar, propone un modelo que añade la velocidad con la que el propio sistema solar en su conjunto se mueve alrededor del centro de nuestra galaxia. Veamos el vídeo (basta con los dos primeros minutos):

De acuerdo, el modelo propuesto es precioso al ser animado en 3D, pero ¿cómo que el modelo heliocéntrico es incorrecto? La única diferencia entre ellos es que el primero omite la velocidad orbital del sistema solar, o dicho de otro modo, el modelo heliocéntrico fija como punto de referencia el centro de masas del sistema. ¿Qué tiene eso de incorrecto? De acuerdo que hay un sistema más grande que podemos considerar, pero, de la misma forma, nuestra galaxia se mueve con respecto a sus vecinas. ¿Dónde ponemos el punto de referencia entonces? Porque en algún lugar hay que ponerlo…

Hay que tener mucho cuidado al hacer modelos (Carlos Chordá lo cuenta muy bien), eso es indudable, porque un mal modelo puede llegar a cargarse nuestra percepción de la realidad. Según mi modo de ver, un buen modelo debe cumplir tres condiciones fundamentales que se adivinan en el título de esta entrada:

  1. Debe ser correcto, para empezar.
  2. Debe ser adecuado para el propósito para el que se concibe.
  3. No debe caer en simplificaciones excesivas que acaben por distorsionar la realidad.

Por ejemplo, podemos discutir si el modelo geocéntrico —el que tiene la Tierra como centro del sistema solar— es correcto o no. En realidad, podemos escoger el punto que nos dé la gana como referencia de nuestro modelo. Desde el punto de vista estrictamente matemático, será más complejo, pero correcto al fin y al cabo: se trata de una simple traslación del eje de coordenadas. Ahora bien, desde el punto de vista físico, no tiene ningún sentido: solo tiene sentido escoger el centro de masas del propio sistema (o, si acaso, de un sistema mayor, como hace en el vídeo). Para mí, esto es lo que cuenta (recordemos que estamos hablando de física), por eso afirmo tajantemente que el modelo geocéntrico se puede tachar directamente como incorrecto. Pero, aun asumiendo como correcto el modelo geocéntrico —aunque solo sea matemáticamente—, cualquiera puede darse cuenta de que es absolutamente inadecuado para satisfacer su misión: facilitar la comprensión del movimiento de los planetas.

¿Qué hay del sistema heliocéntrico? Resulta matemáticamente y físicamente correcto. No veo qué duda puede haber al respecto. Y no solo eso, sino que es muy adecuado para su propósito; mucho más, opino, que el modelo propuesto en el vídeo. Este último sirve muy bien al propósito de visualizar el movimiento global del sistema solar a través de la galaxia, pero no puede competir con el modelo heliocéntrico a la hora de comprender el comportamiento de los planetas.

Si hay algo que se le puede achacar al modelo heliocéntrico —y no menos al propuesto en el vídeo—, precisamente tiene que ver con mi tercera condición. Y es que ambos cometen una simplificación que a menudo lastra nuestra concepción del sistema solar: las diferencias relativas, tanto del tamaño de los planetas como de las distancias que los separan. Ese sí es un problema y no la omisión de la velocidad orbital alrededor del centro de nuestra galaxia.

Repito: hay que tener mucho cuidado con los modelos. Pero no solo al implantarlos, sino también al desecharlos; la simplicidad no tiene por qué ser sinónimo de incorrección.

Perversiones del método científico

Como muchos sabréis, la ciencia tiene un sistema de transmisión del conocimiento que funciona al mismo tiempo como mecanismo de reconocimiento del mérito investigador. Ampliamente conocidas son sus ventajas, pero menos sus miserias. Yo pertenezco a una rama de la ciencia relativamente joven: las ciencias de la computación. Y no sé si es porque tengo demasiado idealizada la ciencia en general, o las demás ramas en particular; no sé si mi visión parte de un desconocimiento de los otros campos; pero me da la sensación de que en mi área, en general, se pisotea el método científico más a menudo de lo esperable, por decirlo de una manera suave.

Hace unas semanas, charlando con el gran @Sonicando en Madrid precisamente sobre las miserias de este sistema que tenemos en ciencia, yo le comentaba: «Lo que envidio de vuestro campo [la biología molecular en su caso] es la reproducibilidad de los resultados». Y conforme lo decía, él me miraba como sorprendido y negaba con la cabeza de forma tajante: «Ya no me fío de nada de lo que lea en un paper hasta que no lo haga yo mismo», replicó él. De acuerdo, es cierto que en muchas ocasiones no se obtendrá lo que afirmaba el paper en cuestión al realizar tú mismo el experimento (por negligencia del tipo que sea, más o menos grave, en eso ya no me meto), pero también es cierto que en biología, y en otros campos, son muy estrictos —en general— detallando la metodología de sus experimentos. Y a eso iba yo: podrá salir bien o  podrá salir una cosa completamente distinta, pero tienes en tus manos la información necesaria para repetir ese experimento y confirmarlo o refutarlo en un momento dado.

En ciencias de la computación, por alguna razón —y de nuevo, en general—, todo es mucho más difuso. Lo más normal es encontrarse con trabajos que afirman haber aplicado este o aquel nuevo método en un determinado campo y que ha conseguido una mejora determinada con respecto a los métodos anteriores. De acuerdo. ¿Y cómo se ha implementado ese nuevo método? ¿Cómo se ha aplicado? En definitiva, ¿dónde está el código para que yo mismo pueda verificar que lo que dices es verdad?

Es algo básico y tremendamente sencillo en nuestro campo: es solo un programa, un pedazo de código; así de simple. Y sin embargo, hay cientos y cientos de papers publicados en revistas de prestigio que adolecen de este principio tan elemental, lo cual me resulta increíble. En el mejor de los casos, tal código existe y se puede tener acceso a él, pero está lleno de errores y ¡ni siquiera compila! (uno de mis compañeros y troll, oficial y oficioso, de este blog tiene mucho que contar acerca de esto). ¿Cómo demonios se supone que han llevado a cabo la investigación asociada entonces?

Todo esto viene a colación de un fantástico artículo del blog de Jeff Leek, bioestadístico de la Johns Hopkins Bloomberg School of Public Health, titulado Statisticians and computer scientists – if there is no code, there is no paper. En él, comenta que, a partir de ahora, va a tener en cuenta un nuevo criterio a la hora de revisar los papers o CV de candidatos que pasen por sus manos: la presencia o no de código que soporte los supuestos logros. Aplaudo desde aquí su determinación. La investigación en ciencias de la computación no podría sino mejorar si esta práctica se extendiese.