Otras maneras de ver la libertad del software

Me encanta la filosofía del software libre, siento que es lo más parecido al modelo de la ciencia teórica, en la que los descubrimientos son de todos (ojo no me refiero a una vacuna o a una metodología de fundir un acero para que tu auto sea más competente) bueno, quizas esté siendo un poco idealista, quizás la ciencia teórica no sea tan libre que digamos, quizás solo las matemáticas, quizas aquellas ramas de la física que no implican utilidades obvias, quizás solo hable de la ciencia del siglo XIX. En definitiva hablo de un conocimiento generado por todos y utilizado por todos (amen de las pequeñas miserias humanas de las que no se libra nadie, por muy genio que se sea).

Pero entonces, llamándome a conciencia, me puse a buscar un lenguaje que cumpliera estas condiciones, no debería parecer muy dificil, está c y c++ (hablo del compilador de gnu), está python, está perl y hay muchos más, pero ojo, que hay un lío con esto de la libertad legal, sí, son libres, pero, y en lo que a mi respecta hay un inmenso pero, o peor, varios.
Antes veamos lo que hemos aceptado por software libre:
según la pagina de gnu en español
"Software Libre" se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software:

* La libertad de usar el programa, con cualquier propósito (libertad 0).
* La libertad de estudiar el funcionamiento del programa, y adaptarlo a las necesidades (libertad 1). El acceso al código fuente es una condición previa para esto.
* La libertad de distribuir copias, con lo que puede ayudar a otros (libertad 2).
* La libertad de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie. (libertad 3). De igual forma que la libertad 1 el acceso al código fuente es un requisito previo.


Inmejorable no es cierto? No se me ocurre una letra que agregar, entonces, de qué me quejo? Pues de lo siguiente:
c : Dennis Ritchie, ANSI
c++ : Bjarne Stroustrup, ANSI
perl : Larry Wall
python: Guido van Rossum
java (si al final la licencian con GPL) : JCP, Sun , James Gosling, ya ni sé.

Y cual es el problema? No sé hasta que punto Ritchie sigue con c, pues su ultimo libro es del 78, y no sé hasta que punto c se sigue desarrollando. Así que de c no hablo.
Entonces c++, me consta que Stroustrup sigue con el desarrollo de c++, me imagino que se apoyará en la comunidad, pero en definitiva él es la locomotora que nos llevará a la futura versión
Larry Wall y Guido van Rossum están en activo en sus lenguajes, muchas noticias sobre perl y python estan dadas en primera persona, algo así como que ellos son los que halan el carro.
De java ni hablar, aunque es el lenguaje que me paga los frijoles, aunque lo licencien con GPL, ya tienen sobre sí la batuta del mundo empresarial, la comunidad se limita a sugerir y crear infinidad de bibliotecas, pero el lenguaje en sí lo lleva la Sun.
Entienden de lo que hablo? A lo mejor estoy siendo exagerado, pero todos estos lenguajes tienen atrás a una persona o a una empresa. Son libres pero que pasa si Guido se muere? python seguirá, es posible, pero durante cuanto tiempo? con qué impetu? y perl? y c++?
Pero indepedientemente de todo esto, que pienso que no es determinante, usar estos lenguajes me suena como a seguir la filosofía de alguien, no de usar avances de la ciencia sino simples herramientas de la tecnología.
La cosa es que intento ver a los lenguajes de computación como lenguajes formales, intento ver la computación como parte de la metemática, que lo es, pero que no se usa de esa manera.
Todos estos lenguajes son soluciones a un nicho de problemas específico, sí, son lenguajes de proposito general, pero cada uno fue concebido para algo particular en su momento. Ninguno fue creado solo para ser un lenguaje basado, exclusivamente, en una teoría matemática.

Ya voy acabando, como muchos habrán imaginado, toda sta perorata tiene como objetivo defender a algun lenguaje,así es, a haskell y a smalltalk.

Smalltalk
Segun wikipedia
Los orígenes de Smalltalk se encuentran en las investigaciones realizadas por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox Parc)...
Ah, carajo! pero aquí tambien hay autores, es que el conocimiento humano no nace por generación espontánea, la clave es lo que sigue diciendo la wiki:

...para la creación de un sistema informático orientado a la educación. El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios, proporcionando un entorno para la experimentación, creación e investigación.
Pues sí, smalltalk se inventó exclusivamente para la investigación y educación, lo cual implicó que se sintieran libres de hacer un lenguaje sin compromisos con la industria, es decir, buscaron la pureza de la POO.

Squeak
Home page
Pero de aquel smalltalk a la fecha ha llovido mucho y han surgido una gran cantidad de dialectos, de los cuales lo más parecido a mi idea inicial es el Squeak, del cual sé que Alan Kay es un gran impulsor, pero aún cuando también estuviera bajo la influencia de una persona, tiene una gran comunidad que lo apoya(sí como los lenguajes anteriores), pero en definitiva es smalltalk, y a mi entender cumple con lo de ser un lenguje que busca la pureza de la forma.

Haskell
Otra vez la wiki
En los años 1980 se constituyó un comité cuyo objetivo era crear un lenguaje funcional que reuniera las características de los múltiples lenguajes funcionales de la época, como Miranda, y resolviera la confusión creada por los múltiples lenguajes que seguían este paradigma.
Bien, ya esto suena mucho mejor, un comité, y ajustarse a la pureza de la forma, esta vez siguiendo el paradigma funcional. Y ya termino, no creo que haya más que decir, o más bien hay tanto que prefiero parar ahora, haré un análisis más profundo luego que experimente más con haskell y smalltalk.

Para terminar aclararé algo, cuando hablo de los autores no me refiero a garantizar la continuidad del lenguaje, pienso que si un lenguaje (siempre hablo de las especificaciones, no de las implementaciones) es libre, su perpetuidad está casi asegurada, así que no es eso.
Me refiero al hecho de estar atados a la visión inicial de alguien y no al común acuerdo de los interesados. Como es inevitable que toda creación humana se inicie por la visión de su o sus creadores, entonces lo ideal para mí es que esa creación esté basada, en el caso de los lenguajes de programación, en fundamentos matemáticos generales y no en las necesidades de un nicho de problemas.
Esa es la liberdad de la que hablo, de que los lenguajes se ciñan al conociminto, y si hay que hacer alguna innovación, pues hacerla, pero no a tontas y a locas, no utilizando la intuición, sino bien fundamentada en lo que es correcto, en lo que es científicamente correcto.

No hay comentarios: