Recently in Paradigmas Category

Lógico y Razonable

| No Comments | No TrackBacks
Que algo sea lógico no significa que sea razonable, ni tampoco lo inverso. Muchos confunden lo lógico con lo razonable, ese es un error bastante común.

Mr_Spock.jpg
Una de las cosas que no podemos perdonarle a Gene Rodenberry y al Señor Spock es el sentido que le dan a la palabra lógica.

El problema es que cuando Mr. Spock dice "eso no sería lógico", en realidad quiere decir que es "eso no sería razonable". Este es un ejemplo más de como la televisión, incluso la de calidad, estropea la cultura de las personas.

Casi siempre cuando se dice que un hecho es lógico, en realidad quieren expresar lo contrario, que ese hecho parece correcto basado en la intuición y el sentido común.

Siendo estrictos, cuando decimos que algo es lógico por si mismo estamos diciendo un sinsentido. Por que lo que significa que una sentencia sea lógica es que esa afirmación se infiere de un conjunto de axiomas mediante un sistema de racionamiento formal. Si no conoces el sistema formal, ni los axiomas, entonces no puedes afirmar si la sentencia es lógica, y decir que algo es lógico carece de sentido.

Además, las cosas que la gente llama "lógicas" ni siquiera son inferibles a partir de ningún axioma.

Pueden ser cosas razonables, pero no son lógicas, a menos que te muestren la cadena de inferencias y razonamientos previos.

La lógica no es una cosa, sino una forma de nombrar a una familias de sistemas de pruebas formarles con sus reglas de inferencia.



Hay muchas lógicas, como lo expone Mark Chu Carroll, en "Mr. Spock no es lógico"

Hay muchas lógicas, y un sentencia que es una inferencia válida (es decir, es lógica) en un sistema puede no serlo en otro. Para darles un ejemplo simple, piensen en una sentencia como "La casa de la esquina es roja". Mucha gente dirá que es lógico que esa sentencia ya sea verdadera o falsa: después de todo, la casa es roja o la casa no es roja. De hecho, la mayoría estaría de acuerdo en que la sentencia "La casa es roja o no es roja" debe ser verdadera.
 
En la lógica más común, llamada la lógica de predicados, esto es absolutamente correcto. La sentencia original es verdadera o falsa, la sentencia con un "o" entre medio debe ser verdadera. Pero en otra lógica común, llamada lógica intuicionista, esto no es verdad. En lógic intuicionista, hay tres posibles valores de verdad: algo puede ser verdad (lo que significa que hay una prueba de que es verdad); algo puede ser falso (lo que significa que hay una prueba de que es falso); y algo puede ser desconocido hasta el momento (lo que significa que no hay prueba en ningún sentido).

Adicionalmente a tener distintas maneras de definir lo que es verdad o demostrable, las lógicas pueden describir diferentes cosas. Nuestra buena, vieja y familiar lógica de predicados es inútils para describir cosas que involucren el tiempo, realmente no hay una buena manera en la lógica de predicados de decir "Estoy siempre hambriento a las 6pm". Pero hay otras lógicas, llamadas lógicas temporales que están diseñadas específicamente para construir sentencias sobre el tiempo.

Ahora, lo interesante de la lógica es que es totalmente mecanizable. No necesitas entender las sentencias dentro de un razonamiento para poder realizar inferencias. Eso es importante entenderlo, porque muchas personas se enredan y no notan que sus razonamientos no siguen una cadena lógica, y es fácil demostrarles que están equivocados, sin tener que emitir ningún jucio de valor a sus palabras. Eso se puede hacer, pero no necesariamente sería algo razonable, sobretodo si estás discutiendo con tus amigos.




Control de Versiones Distribuido

| No Comments | No TrackBacks
Mi anterior apunte sobre contol de versiones tuvo buena aceptación, y recibí comentarios de gente que no es desarrolladora de software, lo que es bueno. Insisto en que el control de versiones es una herramienta que tiene aplicaciones fuera del mundo de la programación.

Pero la vez anterior hablamos de sistemas centralizados, como Subversion (SVN) o CVS, los más populares. Pero esta vez les quiero invitar a que prueben los sistemas de control distribuidos, o DCVS por sus siglas en inglés.

Si ustedes no tienen la mente dañada con sistemas como Subversion o CVS, no tendrán problemas en adoptar estos sistemas, y les sugiero explorar entre los dos más populares en la actualidad Mercurial (hg) y GIT.http://git-scm.com/.

Cuando uno se enfrenta por primera vez a un DCVS viniendo del mundo de los sistemas centralizados, cuesta adoptar este modelo. Hay que reaprender algunas cosas.

Sugiero leer este tutorial de Joel Spolsky, donde explica muy bien los cambios que debemos adoptar cuando entramos desde un sistema centralizado como Subversion a un DCVS, como Mercurial en su caso.

Lo principal es la libertad que podemos ganar como desarrolladores.

Subversion no nos deja beneficiarnos del control de versiones porque siempre nos obliga a hacer commit cuando el código está completamente probado y libre de errores, o de lo contrario estamos arruinando el trabajo de los demás.
Esta viñeta de Geek and Poke expone el problema:

problemas_con_svn2.jpg
Con un DVCS los programadores trabajan en sus copias particulares del repositorio sin interferir en el código central.

Los DCVS tienen muy buenos sistemas que permiten mezclar (merge) el código que viene desde distintas ramas.

En este sentido GIT es un ejemplo destacado, puesto que el mismo Linus Torvalds es capaz de hacer un merge desde 12 distintas ramas casi sin ningún problema.

Yo he evaluado 4 herramientas, usándolas bastante tiempo para mi trabajo personal. 

La primera herramienta que ocupé fue Bazaarr, hace unos 3 años. Bzr es la herramienta usada por Canonical, en el desarrollo de Ubuntu. Está desarrollada en Python, y es bastante simple de usar.

La segunda fue Darcs, es una herramienta interesante, desarrollada por un físico cuántico y que tiene un modelo matemático (algebra de parches), y está escrita en Haskell. Recomendable para el que tenga inclinaciones más académicas.

La tercera y cuarta son Mercurial y GIT.

Como dijo alguien por ahí, GIT es McGyver, Mercurial es James Bond, ambos tienen sus pro y contras.

A mi me gusta GIT, y es lo que uso en la actualidad en forma personal, llevar el cambio al ambiente corporativo donde trabajo creo que tomará tiempo, pero puedo seguir interoperando con Subversion gracias a GIT.

Lo que más me gusta de GIT es que es una herramienta muy rápida, es probablemente el controlador de versiones más rápido que he usado, incluso cuando hago un push a un servidor central en internet.

Pero la decisión es de ustedes. Si nunca han usado Subversion o CVS, es mejor elijan una herramienta DCVS. Si me preguntan a mi, les recomiendo GIT, o Mercurial, probablemente la última es más simple de usar, pero la primera es más flexible y rápida.

Lecciones del mundo de la moda

| No Comments | No TrackBacks
El gráfico de más abajo muestra las ventas, en miles de millones de dolares, para el 2007 en diversas industrias, la principal diferencia es el grado de protección a la propiedad intelectual entre ellas. A la izquierda están las que tienen muy baja, o casi ninguna protección a la propiedad intelectual, y a la derecha las industrias con alto grado de protección a la propiedad intelectual:

ventas-ip.png
La gráfica es parte de la presentación que Johanna Blakley dió en TEDxUSC este año.

La presentación es brillante, y cuando llega a este gráfico recibe aplausos. Al fin y al cabo, la moda tiene su base en la imitación, como complementa (sincronía otra vez) muy bien La Valentina (los énfasis son míos):

[...] la imitación se transforma en un instrumento clave de navegación social, imitar al otro implica necesariamente, primero, un reconocimiento de sus señales diferenciadoras y luego una identificación con ellas, constituyéndose en el primer paso en la generación de comunidad la cual termina de constituirse cuando unos y otros hacen suyas y consolidan esas señales como un código compartido o las rechazan estableciendo la diferencia. Es la imitación la que nos otorga esa seguridad de que no estamos equivocados, de que no nos hemos salido erróneamente de los márgenes delimitados por el grupo al cual pertenecemos, o bien no nos alejamos aun más de ese grupo de personas al cual queremos que nos relacionen. Es por tanto la imitación la manera más segura de sentirse parte de algo, y por tanto de sentirse especial y distinguido respecto de quienes aún no logran alcanzar este carácter de especial. Es también desde aquí desde donde buscamos la diferencia, aquello que no nos hace como esos, pero que indefectiblemente busca encontrar su sentido en otros, otros.


La imitación es la base para empezar a innovar. Creo que estas lecciones son importantes, y debemos reflexionar sobre esto, es gratificante escuchar estas lecciones.

Les dejo el video:

Qué es Cloud Computing

| No Comments | No TrackBacks
Cloud computing icon

Imagen via Wikipedia

Hemos hablado bastante de cloud computing en este blog,  pero creo que no hemos precisado mucho que significa esto de la computación en la nube.

Tener una definición clara de lo que significa este término es importante para tomar decisiones. Hay un video que me sugirieron, que es bastante bueno como introducción, pero se necesita algo más preciso desde el punto de vista técnico.


El NIST tiene una guía bastante útil que contiene definiciones precisas sobre el tema y que voy a compartir con ustedes.

Lo primero que hay que entender que el cloud computing es un paradigma en evolución. Las definiciones van a cambiar en el tiempo. La industria del cloud computing representa un vasto grupo de empresas, modelos, oferentes, y nichos de mercado. La definición del NIST trata de cubrir todo estos temas.

Cloud Computing

Según el NIST, el Cloud Computing es un modelo para habilitar un acceso conveniente, en demanda y a través de la red, a un conjunto de recursos computacionales compartidos (por ejemplo, redes, servidores, almacenamiento, aplicaciones y servicios), los que pueden ser provisionados y liberados rápidamente con un mínimo esfuerzo administrativo o con poca interacción con el proveedor de servicios. Este modelo de nube promueve la disponibilidad y se compone de cinco características esenciales, tres modelos de servicio y cuatro modelos de implementación.

Características Esenciales

Auto servicio a demanda. Un consumidor puede unilateralmente provisionar capacidades computacionales, tales como tiempo de servidor y almacenamiento en red, de acuerdo a la necesidad y en forma automática sin requerir de una interacción humana con cada proveedor de servicio.

Amplio acceso a través de la red. Las capacidades están disponibles  a través de la red y se accesan a través de mecanismos estándares que promueven el uso desde plataformas clientes diversasa (por ejemplo, teléfonos móviles, laptops, PDAs).

Disponibilidad de recursos. Los recursos computacionales del proveedor se agrupan para servir a múltiples consumidores usando un modelo de arriendo múltiple, con diferentes recursos físicos y virutales asignados dinámicamente y reasignados de acuerdo a la demanda del consumidor. Hay un sentido de independencia de la localización en que el consumidor generalmente no tiene control o conocimiento de la localización exacta de los recursos provistos, pero puede  especificar la localización a un nivel más alto de abstracción (por ejemplo, un país, estado o datacenter). Ejemplos de estos recursos incluyen el almacenamiento, procesadores, memoria, ancho de banda y máquinas virtuales.

Rápida Elasticidad. Las capacidades pueden ser rápida y elasticamente provisionadas, en algunos casos automáticamente, para escalar rápidamente y ser liberadas rápidamente para reducir la escala de operación. Para el consumidor, las capacidades disponibles para el provisionamient a menudo parecen ser ilimitadas y pueden ser compradas en cualquier cantidad en cualquier momento.

Servicio Medido. Los sistemas en nube automáticamente controlan y optimizan el uso de recursos al aprovechar las capacidades de medición en cierto nivel de abstracción apropiado para el tipo de servicio (p.ej. almacenamiento usado, procesamiento, ancho de banda, cuentas de usuario activas). El uso de recursos puede ser monitoreado, controlado y reportado, proveyendo transparencia para ambos, el proveedor y el consumidor del servicio utilizado.


Modelos de Servicio

Los modelos de servicio son tres:

Nube tipo Software como un Servicio(SaaS). La capacidad provista para el consumidor es usar las aplicaciones del proveedor corriendo en una infraestructura en la nube. Las aplicaciones son accesibles desde varios dispositivos clientes a través de una interfaz de cliente "delgada" como un navegador web (p.ej. correo electrónico en la web). El consumidor no administra o controla la infraestructura de nube subyacente que incluye redes, servidores, sistemas operativos, almacenamiento o incluso las capacidades individuales de la aplicación, con la posible excepción de ciertas configuraciones específicas para el usuario en la aplicación.

Nube tipo Plataforma como un Servivio (PaaS). La capacidad que se le provee al consumidor es la de desplegar en la infraestructura en la nube las aplicaciones, propias o adquiridas, creadas usando lenguajes de programación y herramientes soportadas por el proveedor. El consumidor no administra o controla la infraestructura de nube subyacente, incluyendo redes, servidores, sistemas operativos o almacenamiento, pero tiene control sobre las aplicaciones desplegadas y posiblemente sobre las configuraciones del entorno de alojamiento.

Nube tipo Infraestructura como un Servicio (IaaS). La capacidad provista al consumidor es provisionar procesamiento, almacenamiento, y otros recursos computacionales fundamentales donde el consumidor es capaz de desplegar y ejecutar software arbitrario, el que puede incluir sistemas operativos y aplicaciones. El consumidor no administra o controla la infraestructura de nube subyacente pero tiene control sobre los sistemas operativos, almacenamiento, aplicaciones desplegadas y posiblemente un control limitado sobre componentes selectas de las redes (p.ej. los firewalls de sus hosts).

Modelos de Implementación

Nube Privada. La infraestructura de nube es operada solamente por una organización. Puede ser manejadas por la organización o una tercera parte y puede existir siempre, o ante una situación específica.

Nube Comunitaria. La infraestructura es compartida por varias organizaciones  y soporta a una comunidad específica que tiene preocupaciones compartidas (p.ej. misión, requerimientos de seguridad, políticas, y consideraciones de conformidad). Puede ser administradas por las organizaciones o una tercera parte y puede existir permanentemente o ante situaciones específicas.

Nube Pública. La infraestructura es provista al público general o a un grupo de industria grande y es propiedad de una organización que vende servicios en nube.

Nube Híbrida. La infraestructura de nube es la composición de dos o más nubes (privadas, comunitarias o públicas) que permanecen como entidades únicas pero están enlazadas juntas por una tecnología estandarizada o propietaria que permite la portabilidad de datos y aplicaciones. (ej. cloud bursting (ruptura de nubes) para permitir el balanceo de carga entre nubes).





Los Grandes Principios de la Computación

| No Comments | No TrackBacks
GP_graphic.jpg
¿Qué es Información?
¿Qué es la computación?
¿Qué podemos saber a través de la computación?
¿Qué no podemos saber?

Estas preguntas una vez eran sólo del interés de los especialistas en computación, pero estas preguntas ahora son preocupación de gente en todos los campos de la ciencia, ingeniería y aún en la política (menos en Chile, claro).

La computación es la ciencia de los procesos de información. Se han descubierto procesos de información en las estructuras profundas de todos estos campos. 

Descifrar los misterios de estos procesos permitirá lograr grandes avances en estos campos. Los principsio de la computación están ayudando en esta tarea.

La computación necesita un nuevo lenguaje para sus principios básicos. La forma tradicional de enfocar las ideas en las tecnologías de computación coloca al computador, mas que a la computación, en el centro. El computador es la herramienta, la computación el principio.

El proyecto Great Principles of Computing está desarrollando un lenguaje para discutir los principios fundamentales de la computación. Este marco de referencia está ayudando a fomentar la colaboración entre la computación y otros campos. Está ayudando a las innovaciones exponiendo las conexiones antes no vistas entre las tecnologías. Está ayudando a comunicar la alegría, el placer de la computación a la gente jóven, quienes pueden ver ahora como estos principios les sirven en su vida diaria, aún cuando se encuentren desconectados de sus computadores.

El texto anterior viene del sitio Great Principles of Computing, una 
Peter Denning

Peter Denning, Image via Wikipedia

iniciativa liderada por Peter Denning.

Cuando entendemos los principios de la computación no nos enredamos más con terminologías erróneas, y tenemos claros los conceptos (por qué hablamos de TI y no de TIC, por ejemplo). Entendemos por qué es importante entender el poder de la computación, y por qué ésta es una ciencia fundamental.

Denning y su equipo han desarrollado un marco conceptual, tras analizar varias tecnologías de la computación para identificar los principios en que están basadas, y estudiando cómo los aspectos de la computación están influenciando otros campos. De este análisis han conluido que los principios de la computación pueden ser agrupados en siete categorías:

Computación (sentido y límites de la computación)
Comunicación (transmisión confiables de los datos)
Coordinación (cooperación entre las entidades en red)
Recolección (almacenamiento y recuperación de la información)
Automatización (sentido y límites de la automatización)
Evaluación (predicción del desempeño y planificación de la capacidad)
Diseño (construcción de sistemas de software confiables)

Estas categorías son el resultado de un anáñisis funcional de muchas tecnologías y aplicaciones de la computación.

  1. Los sistemas computacionales se construyen de "elementos de procesamiento" que procesas y almacenan información (computación, recolección).
  2. Los elementos de procesamiento intercambian información (comunicación).
  3. Los elementos de procesamiento cooperan hacia una meta común (coordinación)
  4. Los humanos delegan las tareas a los sistemas de elementos de procesamiento (automatización).
  5. Los humanos predicen la velocidad y capacidad de los sistemas (evaluación) y
  6. Los humanos descomponen los sistemas en elementos de procesamiento y organizan su construcción (diseño).
Estas categorías son ventanas para observar el espacio de conocimiento de la computación, más que zonas o separaciones. Cada ventana ve el espacio de una manera distintiva, pero la misma cosa puede ser observada por más de una ventana. Por ejemplos, los protocolos de internet, a veces son vistos como comunicación de datos, a veces como mecanismos de coordinación y a veces como medios para la recolección.

Cuando estudié el ramo de física moderna en la escuela de ingeniería, me contaron una historia, que partió con el intento de Planck de explicar la radiación de cuerpo negro con un modelo más adecuado, compatible con lo observado y que no llevara a los absurdos predichos por el modelo clásico, esta historia seguía con el trabajo de Einstein y la confirmación de la existencia de los cuantos de energía.

La ciencia explica sus principios de esta manera, mediante historías, donde en una narrativa se cuenta como el pincipio evolucionó y alcanzó una mayor aceptación con el tiempo. Se nombran los principales contribuyentes a esta ideas. Se explican los errores iniciales, y finalmente como operan estos principios, y cómo afectan a todo el resto. En computación las historias que narren los principios de nuestra ciencia son relativamente poco comunes.

Lamentablemente en la formación de los ingenieros de la computación, estas narrativas los principios, de cómo evolucionaron las principales ideas de nuestro campo, no están presentes. He visto ingenieros de computación que ignoran totalmente quién fue Alan Turing, Knuth, Parnas, o el mismo Denning, cuales son los principios que ellos aportaron al campo.

 Esas narrativas son las que debemos recoger, difundir, entre los especialistas, y los jóvenes que queremos formar, y entre los que no son especialistas, pero se ven afectados por nuestro trabajo. Esa es otra misión de este blog difundir estas narrativas, y estos principios de la computación.

Ser protagonista

| 1 Comment | No TrackBacks
Según una encuesta entre los menores de 30 la sensación de que a la selección chilena le va a ir bien es mucho mayor que entre nosotros, los más viejos.
Puede ser porque nos acostumbramos a tener desilusiones deportivas.

No soy futbolero, pero me emociona ver a la selección jugando este tipo de partidos, quien haya visto un partido de la roja en el extranjero me puede entender, no sé porque, pero a mí es experiencia me cambió, para bien. Me hizo querer más a mi país.

Fue cuando dejé de decir "este país" y empecé a decir mí país, o nuestro país.

Este equipo tiene otra actitud, una actitud positiva, profesional, y ese ejemplo hay que aprovecharlo, en nuestra vida personal y profesiona, y destacarlo a los que trabajan con nosotros.
No más actuar en forma ratonil, hay que intentar protagonizar nuestra historia, como dice Bielsa.

Basta de buscar el empate, de sacarse el cuatro, de aprobar con el 3.95, ¡hay que salir al ataque!

Mejor perder luchando, que ratoneando.

La única forma de lograr cambios es protagonizando la historia, la vida.

¡¡Ce Hache I !!

sanchez-gonzalez.jpg


Linus Torvalds on GIT

| 2 Comments | No TrackBacks
Hace tiempo que no escribo artículos más técnicos, así que voy a retomar algunos temas que me interesa profundizar (que es una excusa para aprender nuevos tópicos). Y un tema que me interesa, desde hace un par de años al menos, es el desarrollo de los DCVS, los sistemas de administración de código distribuidos. En este tema estoy más o menos convencido de que GIT es el camino, pero antes de explicarles por qué, quiero dejarlos con este video de Linus Torvalds, en que habla de este DCVS. El video además es muy interesante, porque pocas veces se ve a Linus exponiendo, y expresando sus opiniones en vivo con tanta fuerza como lo hace por escrito.

Les dejo el video, está en inglés, sin sub títulos, pero si se van a dedicar a desarrollar software supongo que saben inglés, y son capaces de escuchar una charla en inglés sin traductores, right?


Dictaduras, internet y el iPod-Liberalismo

| 1 Comment | No TrackBacks
Evgeny Morozov pensaba que el uso de la tecnología y los nuevos medios ayudaría a su natal Bielorusia a ser más democrática. Pero cuando se enfrentó a la realidad abandonó la ONG en que trabajaba y empezó a investigar una tesis impopular: internet no es la gran herramienta para combatir a los gobiernos tiránicos, y al contrario, ayuda a las dictaduras a ser más efectivas.

Esa es una herejía, y tengo debilidad por las herejías.

green-twitter.jpg
¿Recuerdan la famosa revolución twitter en Irán? Para una dictadura, permitir las redes sociales es una gran oportunidad de obtener información de inteligencia. Antes la KGB torturaba gente para saber quienes pertenecían a una organización, o cómo se coordinaban, ahora no hay necesidad, ¡todo está en facebook!, ¿quien necesita agentes de seguridad y torturadores?

Supongo que si las redes sociales entregan a los servicios de seguridad lo que necesitan, con los nuevos servicios de geo-referenciación (como 4square) esto agentes de lentes oscuros estarán babeando.

Los argumentos de Morozov se encuentran expuestos en este video de TED.

Morozov cuestiona la idea de que introducir tecnología en las sociedades oprimidas terminará por derrocar a las dictaduras. A esto el lo llama el iPod-liberalismo, "la gente que ama sus iPods termina siendo liberal y democrática", lo que es una soberana estupidez, pero hay gente que lo cree, así que es bueno explicitar los errores de este tipo de pensamiento.

El problema es confundir la intención con el verdadero uso de la tecnología.

Por cada "nativo digital" que se manifiesta hay dos que se encuentran atrapados en World of Warcraft. Internet es usado principalmente para el ciber hedonismo, y esto es algo que hay que asumir, y agregar al análisis.

La verdad es que varios gobiernos han logrado dominar la amenaza de internet, mediante un mecanismo que Morozov llama spiniternet, la combinación de spin + internet, es decir, dar vuelta la situación y convertir la amenaza en una oportunidad.

Las dictaduras en vez de bloquear a los blogs o wikis, le pagan a gente para que comente o posteé comentarios en esos mismos blogs. Cuando alguien acusa al regimen, un bloguero se encarga de acusarlo de agente de la CIA!

Vean el caso de Chavez, en algún momento parecía que iba a censurar a Twitter, y que hizo? Se creó una cuenta y ahora tiene sobre 500.000 seguidores, pero no faltará el idealista que sueñe que esto le hace daño a su dictadura.

Internet y la tecnología no son una amenaza para los gobiernos opresivos, una dictadura astuta da vuelta las posibles amenazas de internet y las aprovecha en su favor, ¿cómo? Vean el video de Morozov:


 
(como siempre, hay sub títulos en español).


Las ideas de Morozov no son populares, conozco muchos ciber utópicos  que creen que desde sus teclados, o haciendo click en el mouse están haciendo una revolución, haciendo ciudadanía, y activismo (hasta le dan lindos nombres, como activismo digita o, ciber activismo). La verdad es que eso es un engaño, es activismo virtual (virtual significa que en realidad no existe). Les sugiero constrastar las ideas de Morozov con el desafío del nuevo ludita.

Todo esto que aplican las dictaduras también puede ser usado efectivamente en nuestras "democracias participativas".
Los políticos se están dando cuenta de estas cosas, y usan las redes sociales para explotar y mantener el inmovilismo de los ciudadanos, hacerlos creer que participan, dejarlos postear en sus blogs o foros, o invitar a sus followers a participar con sus clicks y visitas. Esto genera un grado de legitimidad del político, y deja a los ciber ciudadanos tranquilos tras sus pantallas. Todos creen que están participando, cuando en realidad lo que construyen una democracia virtual (ya saben, una democracía que en realidad no existe). 

¿Llegará internet a ser el nuevo opio del pueblo?

(imágen TwitterIsForGreen tomada desde flickr)

Todo es software

| No Comments | No TrackBacks
Como vimos Leibniz plantea que la naturaleza ha de obedecer leyes simples, bellas y elegantes, es decir, leyes comprensibles, sino la ciencia no es posible. El problema filosófico es saber qué entendemos por leyes simples, ¿la simplicidad de las ecuaciones que las describen? y ¿qué pasa con todo el conocimiento previo que hay que tener para comprender esas ecuaciones?

Gregory Chaitin propone una respuesta desde el punto de vista de la Teoría Algoritmica de la Información (TAI).

Chaitin.jpg
En la década de 1960 tres matemáticos, Solomonoff, Kolmogorov, y Chaitin propusieron esta teoría (Chaitin era adolescente cuando formulo estas teorías).

Para Chaitin la TAI da una  respuesta  precisa a la definición de ley, exigida por los filósofos de la ciencia. Esta respuesta se obtiene cambiando el contexto. En vez de considerar que los datos experimentales son puntos, y las leyes deban ser ecuaciones, en la TAI se hace todo digital, todo pasa a ser combinaciones de 0s y 1s. Para la TAI una ley de la naturaleza es una pieza de software, un algoritmo de computador, y en vez de tratar de medir la complejidad de la ley por el tamaño de las ecuaciones, consideramos el tamaño de los programas, el número de bits en el software que implementan nuestra teoría.

Esto se expresa en el siguiente diagrama:

Ley: Ecuación → Software,

Complejidad: Tamaño de las ecuaciones → Tamaño del programa, Bits de software.

Para la Teoría Algorítmica de la Información la labor científica se modela así:

Teoría (01100...11) → COMPUTADOR → Datos Experimentales (110...0).


En este modelo, ambas la teoría y la data son cadenas finitas de bits. Una teoría es el software para explicar la data, y esto significa que el software produce o calcula la data en forma exacta, sin errores. En otras palabras, en este modelo una teoría científica es un programa cuya salida (output) es la data, software auto contenido, sin ningúna entrada (input).

Comparado con las observaciones de Leibniz, en que siempre había la posibilidad de obtener una ecuación complicada para cualquier conjunto arbitrario de datos, con este modelo siempre hay una teoría con el mismo conjunto de bits que la data que explica, porque el software siempre contiene la data que está tratando de calcular como constante, evitando cualquier cálculo. En ese caso no hay una ley, no es una teoría real. En este modelo decimos que la data sigue una ley, puede ser entendidad, sólo si el programa para calcularla es más pequeño que la data que este explica.

En palabras de Chaitin: "entendimiento es compresión, comprensión es compresión, una teoría científica unifica muchos fenómenos que parecen disparatados y muestra que estos reflejan un mecanismo interno común".

Si el mundo que observamos, la complejidad que observamos, es producto de las leyes de la naturaleza, y estas son software, entonces todo es producto del software, esa es una idea que me agrada mucho, ¿qué les puedo decir?, ¡creo que elegí la carrera ideal! :)

Bueno, si esto es así, entonces la mejor teoría es aquella con el programa más corto que produzca, en forma precisa, la data observada. Esta sería la versión en términos de la teor{ia algoritmica de la información, de la Navaja de Ockham. Con estas nociones se puede  definir la complejidad en términos matemáticos, y empezar a probar cosas con respecto a las leyes de la naturaleza. 

Lo primero que se nota es que las cadenas más finitas de bits no tienen leyes, son irreducibles algorítmicamente, son aleatorios en sentido algorítmico, porque no hay una teoría substancialmente más pequeña que la data en si misma. Es decir, el programa más pequeño que produce la salida es del mismo tamaño que la salida. 

Lo segundo que se nota, es que no se puede estar seguro de que se ha encontrado la mejor teoría. Para entender esto último necesitamos conocer mejor uno de los grandes logros del pensamiento lógico, y eso lo dejaremos para un próximo artículo. Creo que con estas ideas les he dejado bastante para reflexionar.

sheep2.png

Una última cosa, creo que lo he expresado más de una vez, aprender a programar es más fácil que aprender matemáticas, y además programando podemos aprender mucho mejor matemáticas, y quizás con mayor profundidad, así que el camino de Chaitin nos abre las puertas para entender las leyes de la naturaleza mediante la programación. 

Alrededor del minuto 4 de este videoRicardo Galli expresa que en el código del compresor de sonido se sintetiza todo lo que sabemos sobre la audición humana, y tiene mucha razón. En ese código está la física del audio y la biología de nuestro oido unidas.

La computación, no sólo es una ciencia natural, es una ciencia fundamental.


(*) La imagen es una electric sheep y fue tomada desde acá.
Leibniz.jpg
Sans les mathématiques on ne pénètre point au fond de la philosophie. 
Sans la philosophie on ne pénètre point au fond des mathématiques. 
Sans les deux on ne pénètre au fond de rien. 
-- Leibniz

(Sin las matemáticas no podemos penetrar en profundidad en la filosofía. Sin la filosofía no podemos penetrar en profundidad en las matemáticas. Sin ambas no podemos penetrar profundamente en nada.)


Guiados por el matemático Gregory Chaitin, nos aventuraremos en las ideas de complejidad gran filósofo y matemático  Gotfried Leibniz. Este artículo está basado en la charla de Chaitin titulada "Leibniz, Complexity and Incompleteness".

La primera consideración sobre la complejidad que Chaitin encuentra en Leibniz está en los "Discursos sobre la metafísica", donde considera los "datos experimentales" correspondientes a manchas de tinta sobre una pieza de papel, obtenidos al agitar una pluma por encima. Consideremos el conjunto finito de puntos obtenidos de esta forma, y preguntémonos si este obedece una ley natural. Bien, para Leibniz no basta con que exista una ecuación matemática que pase por todos los puntos, porque siempre existe esa ecuación. El conjunto de puntos obedece una ley sólo si hay una ecuación simple que pase por todos los puntos.

El segundo ejemplo de la preocupación del filósofo por la complejidad está cuando este se pregunta "¿por qué hay algo, en vez de la nada, si la nada es más simple que algo?",  en 1714. en sus "Principios de la naturaleza y la Gracia." En términos modernos lo que el filósofo racionalista quiere saber es de donde viene la complejidad observada en el mundo. Para Liebniz la respuesta es Dios. Dios ha creado el mejor mundo posible y que toda la riqueza y diversidad que observamos en el universo es el producto de un conjunto simple, bello y elegante de ideas. Dios maximiza la riqueza del mundo, al tiempo que minimiza la complejidad de las leyes que lo determinan. En términos científicos modernos, el mundo es entendible, comprehensible y la ciencia es posible, porque existe una ley que puede ser entendida. 

El cosmólogo Max Tegmark argumenta que es más simple considerar un ensamblaje de todas las leyes posibles y todos los posibles universo que considerar un universo en particular. En otras palabara, el multiverso es más fundamental que la pregunta sobre las leyes de nuestro universo particular. Para ilustrar la idea, el conjunto de todos los números positivos 1,2,3,... es muy simple, aunque un positivo particular, como 12478329212991232 puede ser arbitrariamente complejo.

Quiero que reflexionen bien esta idea, es más simple pensar en el multiverso que en tratar de justificar la complejidad de nuestro universo. Todos los universos posibles existen, y el nuestro no tiene nada de particular si lo vemos desde esa perspectiva, aparece como complejo, y especial, simplemente porque vivimos en él.

En la  Monadologia Liebniz discute los medios para realizar una prueba matemática. Allí él anota que para probar una sentencia complicada  se divide en sentencias más simple, hasta alcanzar proposiciones que son tan simples que se hacen evidentes en si mismas  y no requieren ser probadas. 

Epistemólogos han analizado las ideas de Leibniz, y han observado que esta idea crucial de complejidad de Leibniz es algo muy difícil de clarificar.¿Cómo medimos la complejidad de una ecuación y por lo tanto la complejidad de las leyes naturales?

Si proponemos que el largo de la ecuación es una medida, eso es algo que cambiacon el tiempo. Además, cuales son los elementos básicos que debe tener una ecuación? ¿se considenar las funciones de Bessel como parte una notación estándar?

Si la naturaleza ha de regirse por leyes simples, como exige Leibniz, tenemos que saber cómo podemos medir la  simplicidad de estas leyes, bueno, Chaitin tiene una propuesta, pero de esa hablaremos en el siguiente artículo.

Ingresa tu dirección de correo electrónico:

Despachado por FeedBurner

<

Distribución

Sobre este archivo

This page is an archive of recent entries in the Paradigmas category.

Opensource is the previous category.

Personajes is the next category.

Contenido reciente en el indice principal o busque en los archivos para encontrar todo el contenido.

 

Blogalaxia
OpenID accepted here Learn more about OpenID