¡Resulta que ahora Java es socialista!

Bueno, hay ciertos temas que uno da por acabados (si, el enlace a mi articulo es del 2005), sobre todo cuando hay evidencias de sobra que indican que debería ser así, y sin embargo estos vuelven a aparecer. En este caso es el empeño de Satanizar al lenguaje (el cual ahora es Open Source y cuenta con una distribución completamente funcional en Fedora Core, llamada IceTea). El anuncio me llegó por el grupo de Yahoo SoftwareVen:

Como parte del trabajo de estudios de las tecnologías libres el Centro
Nacional de Desarrollo e Investigación en Tecnologías Libres –
CENDITEL [0] ha publicado un documento titulado “Pertinencia de la
tecnología Java por y para el Estado Venezolano” [1].

El mismo esta a disposición para el análisis y discusión sobre la
temática, sean bienvenidos a participar y compartir ideas en el foro
de discusión de CENDITEL [2] en la temática destinada para esto
llamada “Publicado documento tecnología Java” [3].

[0] http://www.cenditel.gob.ve/FundacionCenditel
[1] http://www.cenditel.gob.ve/files/u1/PertinenciaJavaVenezuela.pdf
[2] http://www.cenditel.gob.ve/foros/
[3] http://www.cenditel.gob.ve/foros/viewtopic.php?p=28#28

Atentamente

T.S.U. Leonardo Caballero
E-Mail: leonardocaballero at gmail.com, lcaballero at linuxmail.org

Debo comenzar diciendo que me fastidia de sobre manera el fanatismo de los programadores. No sólo Leonardo Caballero se empeña en pintar a Sun como la corporación que se va a encarga de quitarle a Venezuela su autonomía tecnológica sino que además ignora (a estas alturas) la existencia de implementaciones completamente funcionales como IceTea y Classpath en Linux.

Este trabajo insiste en mezclar nacionalismo, tendencias politicias como el socialismo pero sin llegar a proponer alternativas ya que sólo se limita a nombrar ciertos proyectos de software libre como Linux, Ruby, Subversion entre otros. Incluso se atreve a catalogar al lenguaje como mediocre en diseño:

El tema se planteó recientemente en la lista de discusión de SOLVE, y allí José Luis Rey (2008) argumentó que el lenguaje de programación Java “es un lenguaje
mediocre, que no permite implementar técnicas de programación, que todo programador debería conocer y dominar. Lo peor es que ahora estoy seguro de que eso es así por imposición”. Señala que aunque el diseñador de Scheme fue contratado en la concepción de Java, en el resultado final se eliminaron todas las capacidades poco convencionales como la herencia múltiple, para evitar que el lenguaje fuera demasiado avanzado. Así, Java la mediocridad de java no es casual sino intencionada5. Además, el lenguaje Java cuenta con un sistema de tipo de datos estático y simplista que no permite el manejo de características más
avanzadas como metaprogramación o programación funcional.

El pasaje está genial. Ignora completamente el hecho de que Java fué diseñado para simplificar el desarrollo de aplicaciones y que es una mejora sustancial sobre su predecesor, C++. Por ejemplo:

  • Java es un lenguaje mediocre: Seguro, soporte de un API completo como Swing para el desarrollo de interfaces gráficas (más completo que TK y más fácil de usar que Motiff), soporte de Threads, Networking y Garbage Collection dentro del mismo lenguaje. Ah, y que puede correr en cualquier dispositivo ya que todos los sistemas operativos importantes tienen una máquina virtual de Java. Si se refiere a que ciertas caracteristicas sintacticas del lenguaje no están allí (como Schema) es un asunto diferente. ¿Porqué caer en los excesos? La comparación no es objetiva, y eso es malo.
  • Datos de tipo estático: Creo que estos dos han pasado demasiado tiempo escribiendo scripts. Yo en particular me siento comodo sabiendo de antemano de que tipo de datos son mis variables y que el compilador me pueda decir que hay asignaciones equivocadas. Si quiero utilizar scripts con su sintaxis relajada, entonces tengo BeanShell (Java pero con sintaxis más relajada, sin declaración de variables), JRuby, Jython, etc. Si, mis “scripting languajes” corriendo sobre una máquina virtual conocida y probada 🙂
  • Herencia múltiple: ¿Usted realmente la necesita? Con un diseño cuidadoso y el uso de Interfaces se consigue lo mismo. Herencia múltiple no es mala (de hecho es muy útil) pero cuando se usa hay que ser cuidadoso, sabiendo que es lo que se quiere al final. También ignora el hecho de que utilizar herencia todo el tiempo para extender código es malo y que existen otros patrones de diseño que favorecen más la estabilidad del código en contra de cambios de la clase padre como la agregación (por ejemplo, el patrón de diseño Decorator).
  • No soporta programación funcional: Java no es un lenguaje de programación funcional, sin embargo hay implementaciones de lenguajes funcionales que corren sobre la máquina virtual de Java como Scala. En particular es irritante como los detractores de Java se empeñan es decir que “one size fits all” (un sólo tamaño para todo) cuando deberian ser más pragmaticos diciendo que hay herramientas para cada problema.

Si usted alguna vez ha desarrollado código del lado del servidor o cliente usando Java, se encontrará agradecido que el lenguaje tenga un manejo elegante de Threads, Networking (con varios protocolos), y sobre todo el manejo de memoria automático usando Garbage Collection.

Todo el mundo sabe que Java no es perfecto y la escogencia del lenguaje a la hora de resolver un problema sigue dependiendo de la tarea, presupuesto y nivel de experticia de quienes van a desarrollar la solución. También en las Universidades deberian seguirse enseñando no uno sino varios lenguajes de programación, entre ellos C y C++ (pueden decir lo que quieran de esos dos lenguajes pero Linux, manejadores de dispositivos y muchas otras cosas aún están escritas en esos lenguajes).

¿Pero que tiene que ver eso con la “muestra independencia tecnológica”? Si usted lee con cuidado el articulo, se dará cuenta que el escrito es un arroz con mango de tecnología, sazonada con politica. Nada le prohibe a Venezuela desarrollar su propio lenguaje de programación, e incluso su propia implementación del lenguaje Java, como hizo la gente de Kafee:

Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License.

El nuevo OpenJDK o Kafee no cuentan con ninguna restricción de exportación, ya que están protegidos por la licencia GPL. Entonces, ¿que es lo que detiene a Venezuela en el desarrollo de una máquina virtual o lenguaje de programación?

Esa es la pregunta incomoda que ninguna de estas personas quiere responder.

No importa si usted decide no utilizar Java. Pero al menos hagalo por las razones correctas, entre ellas porque no es la mejor herramienta para el problema que quiere resolver, no porque se lo dijeron en la escuela y usted se tomó el “cool aid” sin pensarlo dos veces.

Buscar en otros sitios:

Blogalaxia:, , , , ,
Technorati:, , , , ,
To2blogs:, , , , ,
Del.icio.us:, , , , ,

5 thoughts on “¡Resulta que ahora Java es socialista!

  1. Cuando leo titulos en ese PDF como

    “Construcción del tejido socioproductivo endógeno”

    Te das cuenta que este “TSU” es una de esas personas graduadas en pajisticas que no se han sentado a hacer un sistema de alta concurrencia, and I mean, alta concurrencia.

    Me parece una perdida de tiempo de pana que haya gente en el gobierno haciendo un analisis tan ridiculo…

    Es triste ver como todo es politica y jaladera de bola con los empleados del gobierno y de las empresas en las que el gobierno tiene sus garras.

    Me recuerdan mucho a los paises arabes que han ido despilfarrando millardos y millardos de dolares en estilos de vida extravagantes, o en alimentar ejercitos fundamentalistas, pq son todos una cuerda de ignorantes con mentes super cerradas y limitadas.

    De pana no puedo esperar a que se arme la de san quintin en esa mierda y salgamos del puto comunismo, socialismo, y pongamos gente apta a administrar los ingresos petroleros y relaciones internacionales para poner el pais en el ano actual, en la realidad actual.

    Como quisiera tener un death note

  2. Tal y como tu lo dices, existe mucha gente ignorante que piensa que es HORRIBLE Y MALIGNO usar software libre u open source que ha sido desarrollado por empresas privadas, no me extraña que esa misma gente diga que IceTea es malo porque lo hizo la compañia capitalista de RedHat, suena absurdo pero mucha gente piensa asi.

    Con respecto a Java mucha gente que no entiende bien el concepto de programacion orientada a objeto lo ve como inutil y por eso lo denigra.

  3. Al respecto de lo que dice el documento, y de este post, debo(ya que me detuve a leer mejor que ustedes) corregir varias cosas:

    – El documento fue hecho por CENDITEL, no por Leonardo Caballero solamente, puedo nombrar como autor de este documento tambien a Francisco Palm, profesor de la Universidad de los Andes(Sciences Degree anybody?).. No veo de cualquier forma la descalificación por el titulo, deberian saber que hay muchos que saben mas que ciertos graduados 😉

    – Icedtea es solo un packaging de OpenJDK, con componentes de classpath, so, classpath solo no es una alternativa por que necesitan los runtimes libres(que hay muchos). De cualquier forma, OpenJDK ya pasó todas las pruebas del TCK suite, o sea que es full compatible con OpenJDK.

    – Lo de mezclar idealismo y tendencias politicas con la tecnologia, por mas absurdo que parezca al inicio, SI tiene pertinencia en este caso, estamos hablando de la definición de las herramientas sobre las cuales se seguirá forjando la infraestructura del ESTADO. Creo que deberían cruzar algunos correos con Jose Luis Rey y Francisco Palm just for the sake of enlightment….

    – El decreto 3390 se aplica al estado, la empresa privada puede hacer lo que le de la gana, pueden usar .SHET si les da la gana. So, si leyeron el término “Endogeno” y “apropiación”, pueden deducir que parte de la política del estado es que el pais se “apropie” de , tanto las tecnologias como del conocimiento. Y obviamente, esto es mas facil con tecnologias alrededor de lenguajes como python, ruby, erlang etcetera, que con Java, tanto por su origén como por la forma archiconocida en la cual se llevan el JCP.

    -El post no deberia llamarse “Resulta que ahora Java NO es socialista” ?

    No tengo nada en contra de Java, mas bien, para muchos lo unico que hago es hablar en pro de Java, de manera que estoy totalmente de acuerdo en que el lenguaje, aún cuando no es perfecto, es NP-completo, asi que puedo resolver cualquier problema con él. Pero, fuera de cualquier argumento técnico(recomiendo este hilo, es muy interesante[0]), la realidad referida al estado es muy distinta, lo cual es dificil de apreciár y mucho mas opinar al respecto cuando no vives en el pais 😀 .

    Al respecto del hilo de leonardo, aún cuando entiendo las razónes del estado, abogaré con argumentos validos para encontrar un nivel sano en el cual pueda haber apropiación de tecnologías sin tener que recurrir a descartar algunas de ellas….

    [0] http://solve.net.ve/pipermail/softwarelibre/2008-January/032103.html

  4. Gubatron: Es lamentable ver esta retorica una y otra vez. Llevan años discutiendo como hacer algo, como protegerse, etc y sin embargo no se ven los resultados.

    Recuerdo haber preguntando en Concafe que era exactamente la migración de CANTV a software libre y cuales habian sido los logros, y nunca obtuve respuesta (espero que por falta de voluntad y no porque no hay nada que mostrar)

    Skatox: La idea de hacer dinero con software libre (compañias como RedHat que ofrece servicios) o IBM, SUN (te regalan los editores, lenguaje y si quieres soporte para sus servidores de aplicaciones te venden la consultoria) no le cabe en la cabeza a ciertos academicos. Es algo normal dentro del sistema capitalista 😀

    Gerardo: El autor del documento dice ser Leonardo Caballero; Estoy familiarizado con la postura de Francisco Palm y no comparto su necesidad de politizar la creación de una infraestructura de software nacional. Otros países SOCIALISTAS como Brasil y Chile compiten a nivel internacional con sus desarrolladores sin tanta habladera de pendejadas, es decir ellos se sentaron a hacer y punto (son más pragmaticos).

    Te voy a contar un par de anécdotas sobre el vecino Brasil, para que veas como si se puede hacer sin cegarse con ideales impuestos por otros:

    – Agosto 1998: Yo fui a Rio de Janeiro (no recuerdo el nombre de la Universidad, pero si recuerdo que era un evento en el cual participó ESLARED de la ULA) y ya para ese entonces ellos participaban en Internet 2 junto con otros paises “capitalistas”
    – Mayo 2008: Los Brasileños tiene varias compañias de software y desarrolladores haciendo demos en Java One de este año; Conocí a un par el cual hizo una demostración el cual controlaba una interfaz en JavFX desde un teléfono celular usando BlueTooth.
    – Y tengo más ejemplos y de otros países de Suramerica, no sólo de Brasil…

    ¿Entiendes el punto o todavía necesito escarbar más? Creo que la propuesta de “independizar” la industria de Software Venezolana está más enfocada en temas políticos que en como arrancar (asi sea lentamente) y movernos desde allí…

    Pragmatismo, palabra difícil de pronunciar estos días…

    En cuanto a no poder “apreciar” la realidad del estado por estar viviendo fuera del país: Te recomiendo que pases un tiempo fuera. El tratar con gente y cultura distintas abre los sentidos y te permite contrastar tu realidad con algo diferente. Te das cuenta entre otras cosas que la gente no es tan distinta en estos lares y que tienen problemas muy similares a los nuestros, pero lo más importante es como los solucionan; Viví bastante tiempo en el país como para darme cuenta de cuales son sus problemas y he viajado lo suficiente por el mundo (no sólo el norte 🙂 ) como para poder decirte que hay que mirar más allá de tus narices y aprender de las cosas buenas que hacen los vecinos 😀

  5. Ese artículo circuló hace un tiempo en la lista de correo de velug. Realmente fue muy gracioso leerlo, es decir, está plagado de una ingenuidad y una falta de espíritu práctico asombrosa, recuerdo en particular aquella parte en que se sataniza el uso de IDEs:

    “En lo que respecta a las herramientas de desarrollo viniendo desde el mundo de las aplicaciones privativas, existe una inclinación excesiva hacia la búsqueda de Entornos de Desarrollos Integrados, precisamente como los que ofrecen plataformas como Java y .Net.”

    Es decir, como los mejores IDEs en el mercado son probablemente para Java y .NET, entonces debe ser malo utilizar IDEs, de modo que vamos a restarle importancia al asunto. Espero verles escribiendo código en “vi”, que yo sinceramente, me quedo con eclipse (o cualquier otro IDE decente) en el que puedo ser unas 2000% veces más productivo que en cualquier otra editor.

    Personalmente uso Java porque es una plataforma extremadamente sólida, hace un año estuve evaluando la posibilidad de migrar a Ruby o Python (Buzzwords) y sinceramente no dan la talla. Traten de escribir un proyecto de más de 200k líneas de código con lenguajes como esos, dinámicamente tipados y donde los “espacios en blanco” y/o “tabuladores” son importantes, y luego hablamos. Y luego de escribir el proyecto, trate de escalarlo.

    Evidentemente, los autores vienen del mundo académico y no deben de haber tenido nunca proyectos serios de desarrollo de software, con tiempos de entrega y presupuestos ajustados y problemas técnicos serios que deben resolverse a como de lugar en tiempo record. Claro, con papá gobierno el presupuesto y los resultados, es decir, si funciona, o no, cuando se termina, entre otros, usualmente importan un comino, así que ni hablar.

    En cuanto a la realidad tecnológica del estado a nivel de desarrollo de software, es lamentable ver como ya años después del 3390, se está en la misma situación que al principio, casi en cero. Es triste ver como pequeñas empresas del ramo han sudado y desarrollado más tecnología a nivel de software que el mismo CENDITEL y FUNDACITE; y eso que esas instituciones tienen todo el presupuesto que han querido. La situación actual debería ser a la inversa, ellos deberían estar marcando la pauta.

    Sinceramente, dejen de hablar paja y comiencen a hacer algo serio, me importa un carrizo en que lenguaje, porque ni siquiera son capaces de escribir aplicaciones WEB usando MVC, y si no me creen, bajen la versión de SAID que anda publicada por ahí, que es PHP del plano con vista, modelo de negocios, código php, SQLs y HTML todo mezclado en el mismo script. Sinceramente, ver ese código me recordó viejos, pero muy viejos tiempos 😉

    Saludos y vuelvo a lo mio, y por favor, flames > /dev/null

Comments are closed.