11 de agosto de 2004

¿Qué diferencias hay entre Sun y Microsoft?

A lo mejor estoy un poco desinformado, no lo sé.

Pero me parece que el excesivo énfasis que la Universidad Central de Venezuela, y en particular la Escuela de Computación, está haciendo con los productos de Sun y Oracle en un esfuerzo por demostrar cuan "anti-microsoftnianos" son, en realidad están causando el mismo efecto contra el cual luchaban los partidarios del software libre.

Hoy día, en la escuela de Computación se enseña Java a los estudiantes desde el mismísimo primer semestre. Y no está mal. Java es un lenguaje realmente atractivo para los programadores, muy completo y fácil de utilizar si lo comparamos con C++ y otros lenguajes de programación. Es ideal para aprender cosas como el manejo de multihilos, por ejemplo.

Pero luego seguimos viendo Java hasta la sopa. Tenemos tres materias donde se enseña programación web, y en las tres tenemos que hacer los proyectos con JSP y J2EE; alternativas como PHP o incluso ASP.NET (el cual detesto, pero es una opción válida y solicitada en las empresas) sólo se tocan en exposiciones. Visual C++ se ve sólo en algunas materias, como Computación Gráfica. C y C++ para Linux se ve en otras, como Sistemas Operativos.

Se critica mucho a Microsoft por su política cerrada, pero la realidad es que Java no es software libre (aún cuando tiene una comunidad open source a su alrededor). Es un lenguaje ligado a una empresa (Sun Microsystems), tal y como lo es Visual Basic o C-Sharp. La diferencia estriba en que Java cuenta con una preciosa máquina virtual, pesada y hambrienta de memoria, pero que corre en casi todas las plataformas existentes: desde teléfonos celulares hasta superservidores con 64 procesadores. En cambio, C-Sharp, Visual C++ o Visual Basic.Net no se separan de Intel.

Así, Sun tampoco es ninguna santa, ni la valiosa alternativa para quienes sueñan con un mundo sin Microsoft. Cuando pasamos a soluciones empresariales, Sun recomienda e incluso a veces te condiciona a utilizar no sólo sus soluciones de software sino de hardware. Exactamente lo mismo que vemos con las alianzas Microsoft+Intel+Compaq, sólo que nos enfrentamos a una sóla empresa, no a tres.

¿Y Latinoamérica? ¿Y Venezuela?
Peor aún es que ni Microsoft ni Sun tienen políticas creadas específicamente para países como el nuestro.

Por ejemplo, una solución típica de Sun y Oracle para crear un portal web es venderte una serie de productos que cuestan en total decenas de miles de dólares. Sumado a ello el costo del servidor que ellos recomiendan, ¡una solución para un portal web puede llegar a costar cientos de miles de dólares! Sin eincluir el entrenamiento o la recontratación del personal adecuado para hacer el desarrollo.

Microsoft también hace más o menos lo mismo. Una solución microsoftniana para portales web o de intranets cuesta unos 30 mil dólares, a los que hay que sumarle el costo de Microsoft SQL Server 2000 y los sistemas operativos, así como el entrenamiento para el uso de estas "soluciones". 70 mil dólares, ¡fácil perolito!, sin incluir hardware ni costos de desarrollo.

Dichas soluciones son justificadas para un portal bancario o para la página web de una corporación típica estadounidense, en un país donde el 60% de las personas tienen acceso a Internet y donde una empresa más o menos grande puede tener incluso un millón de visitantes diarios en días pico.

No todos tenemos Internet
Pero en Venezuela, país donde sólo 800 mil personas tienen acceso a Internet y donde la página más visitada tiene 50 mil visitantes diarios, parece que los gerentes de Informática no quieren darse cuenta de que un servidor Pentium III con 512 MB de memoria, cargado con Linux, PostgreSQL o MySQL, y software desarrollado en PHP o tal vez en JSP, puede hacer perfectamente el trabajo en la mayoría de los casos, a un costo inferior a los diez mil dólares, incluyendo hardware, licencias -si acaso- y costos de desarrollo.

En otros casos, sobre todo en empresas públicas, los negocios se hacen no por conveniencia técnica, sino por chanchullo. Yo te firmo tal contrato, pero tú me pasas "bajo cuerda" una comisioncita, tú sabes, porque este gobierno castrocomunista nos tiene pasando hambre. Y la comisioncita será mayor mientras mayor sea el contrato... así que, ¡vamos a pedir que jode! ¿Software libre? Coño, es que esos chamos apenas me están cobrando 6 millones, eso no sirve. Mejor me voy por acá... ¿Cuántas licencias de Oracle? ¿Tan poquitas? ¿Y ese servidor Sun Enterprise 10000 alcanzará? Bueno, no sé, el portal tendrá unos 200 visitantes diarios; lo usaremos para mostrar un catálogo de nuestros productos Topperware.

En Venezuela, no hay muchas empresas dedicadas a ofrecer soporte, cursos y certificaciones para software libre. La Universidad es el único espacio donde se formaría la base de conocimientos y experiencia necesaria para que se formen profesionales capacitados para desarrollar este tipo de soluciones, imprescindibles para que la pequeña y mediana empresa venezolana se lance a Internet y el comercio electrónico finalmente se desarrolle. Pero si las universidades públicas están aliadas a empresas como Sun o Microsoft, ¿dónde se formarán quienes soluciones los problemas informáticos del país?

Total que la UCV fracasa en identificar y resolver los problemas del país, gracias a su empeño de unirse a la empresa transnacional para hacer "business". Chévere, tenemos ahora los más poderosos servidores IBM, más grandes que una nevera, pero también estamos graduando estudiantes especialistas en vender productos Sun. Estudiantes encaminados en trabajar en las grandes corporaciones, que son las primeras en salir huyendo cuando nuestro país tiene el más mínimo problema, como se demostró durante el paro de 2002/2003.

La UCV no quiere contribuir con la educación
Observemos otro detalle: en 2003 en Venezuela se inició la Misión Robinson, programa cuyo objetivo era eliminar el analfabetismo de nuestro país. Para dar las clases, se formaron facilitadores quienes, auxiliándose en cursos grabados en cintas de VHS, impartieron los cursos.

Las cintas de VHS fueron desarrolladas por educadores cubanos, decisión justificada si aceptamos que Chávez quería lanzar las misiones lo antes posible, y no quería experimentar con soluciones ofrecidas por educadores venezolanos que no estaban probadas a gran escala (Cuba ha participado en grandes misiones de alfabetización no sólo en su propio país, sino en varias naciones de Centroamérica y otras partes del mundo).

Luego, las misiones continuaron con la educación primaria (Misión Robinson II) y bachillerato (Misión Ribas), así como con educación preuniversitaria y universitaria (Misión Sucre). Al mismo tiempo, tenemos 500 mil bachilleres sin cupo que desean ingresar a la educación superior, que apenas puede garantizar unos cuantos miles de cupos anuales.

Y la UCV, ¿qué? No sólo su rector se niega a que la universidad participe en las misiones sociales calificándolas de proselitistas, sino que tampoco es capaz de ofrecer soluciones para, por ejemplo, sustituir las cintas cubanas con material hecho en Venezuela. Y eso que contamos con profesores y estudiantes muy buenos y capacitados para realizar tal misión.

Conclusión: Tal vez esté siendo injusto o esté desinformado, pero lo que logro ver todos los días cuando voy y vengo a la UCV y veo los proyectos de tesis y las materias que se dan, es que la Escuela de Computación de la UCV continúa formando profesionales que solucionen los problemas del 4 por ciento de las empresas y del 8 por ciento de la población venezolana, pero descarta al 90 por ciento de los venezolanos que no tienen computadores ni Internet, así como a las empresas que no pueden pagar soluciones Sun+Oracle. ¿Es eso lo que queremos?

Por otro lado, es difícil cambiar la mentalidad de los profesores y de mis compañeros de clase, fascinados ante las bondades de Sun y Oracle. A mí tampoco me molestaría aprender Oracle ni Java, pero insisto: el énfasis debería estar en el software libre y en las soluciones a los problemas de nuestro país, no a solucionar los problemas de los estadounidenses o los europeos, o de las empresas de estos que tienen presencia en nuestro país.

De todas formas este artículo es un pelín hipócrita; el semestre que viene meteré una materia donde, según me cuentan, tendré que aprender a hablar, escribir, pensar y hasta comer en "idioma" J2EE. Cuando me le declare a una muchacha, terminaré diciéndole cosas como:

"Eres el javac que compila mis servlets, eres la máquina virtual que colapsa mi CPU y deja sin memoria a mis procesos"
Y ella me responderá:
"¡Ja! Seguro le dices lo mismo a las otras"
Y yo le diré:
"¡Claro que no! Las otras son sólo vulgar software libre. ¡Sólo tú me ralentizas!"
O cuando le vaya a pedir disculpas a alguna amiga por alguna estupidez cometida, terminaré diciéndole cosas como...
"Cometí un java.lang.FatalException... pero es que mi Tomcat, mi Resin o mi Orion no están configurados para debugging. ¿Podrás perdonarme y permitir que lo reinstale otra vez? Te aseguro que no se repetirá."

Tal vez la única frase medioentendible sea cuando vaya al cafetín y le diga al pana: "¿Me das un Java? Por favor, con java.utils.milk pero sin java.utils.sugar"

Así que no tengo más alternativas, por ahora, sino aprender Java. Pero que se sepa que no tengo más opciones.

13 comentarios:

vemeko dijo...

Desinformado e injusto.

Claro que tienes otra opción, no cursar esa materia :P

Cuando quieras, hablamos del tema.

luigino dijo...

En vez de no cursarla, preferiría verla junto a otra que también me enseñe php :-P y seguro habrán compañeros que quieran ver asp.net (asco! pero hay gente que piensa que es bueno) Pienso que la universidad es uno de los pocos espacios donde debe ampararse la diversidad de pensamiento, algo que todos debemos defender.

No acostumbro ir a reuniones de blogueros porque no me gustan las cacerolas :) de todas formas, si quieres hablamos por email.

Topocho dijo...

En mis épocas de estudiante no teníamos materias que fueran sobre un "lenguaje", se suponía que los estudiantes teníamos que arreglarnolas para resolver con el el lenguaje de programación adecuado (o sugerido) para el proyecto.

Pienso que lo importante no es aprender una lenguaje, sino entender los lenguajes de programación como herramientas que obedecen a un paradigma o metáfora en la que puedes apoyarte para implantar una solución óptima.

Por otra parte el complot político económico, realmente no lo entendí. Me parece que es ver fantasmas. Una base de datos relacional es una base de datos relacional, cueste miles de dólares o sea open source, el query es el mismo.

Si puedes hacer la solución con Java y Oracle, seguro que igualito puedes hacerla con PHP y MySQL, sin mucha diferencia.

egg dijo...

Una de las cosas más importantes que tenía la escuela era la formación "universal" que te daba, nunca eras un experto en un lenguaje, sin embargo eras capaz de entender el funcionamiento/comportamiento etc. de los lenguajes (procedurales, funcionales, lógicos), de las bases de datos (relacionales, jerárquicas, orientadas-a-objetos), de los sistemas operativos (unix, ibm/390, dos, windows). Al final cuando estabas en la "calle" lo que hacías era conseguir el manual de turno y listo!!, ya estabas resolviendo tu problema. En su momento esa visión "chocaba" por ejemplo con lo que se presentaba en otras instituciones (ej: USB).
Lo que pasa en teoría es que en la escuela sales en lo que es equivalente a un "Computer Science", es decir, estas relacionado con las ciencias de la computación, no tienes la visión de un ingeniero, como es en otras universidades, si eso es lo que se necesita o no en el pais, eso es otra discusión.
Por otro lado me parece que tienes una especie de "pasticho" entre lo tecnológico y el licenciamiento de los productos.
Veamos por ejemplo el caso de Java. Java es un lenguaje "propiedad" de Sun, sin embargo existe un movimiento "open-source" enorme en torno al lenguaje, a la arquitectura J2EE, tanto en la proposición, discusión e implementación de estándares.
En una carrera de computación debes elegir un lenguaje de programación para enseñar las estructuras de control básicas, etc. ¿Cual eliges? uno que cumpla con las condiciones del estado del arte (orientación-a-objetos, completitud, etc...) para el momento, en este caso una elección válida sería Java, nunca VisualBasic, ni PHP. Fijate que no te digo que la arquitectura válida para aplicaciones server-side sea J2EE, aqui me estoy limitando simplemente al lenguaje de programación.
En cuanto a tu comentario a Vemeko, estoy seguro que el se refería a una discusión netamente técnica, sino eres capaz de apartar la visión "política" de la "tecnológica" aunque sea por un momento cuando alguien te ofrece su tiempo y experticia (la cual al final puede que no consideres de valor) tendrás serios problemas para aprender.
Si quieres discutir a nivel "técnico" y "pedagógico" estoy a la orden. (me imagino que ya debes suponer que soy un egresado de la facultad, y me preocupa su evolución)

luigino dijo...

Hola egg,

Tal vez ni yo ni mis compañeros hemos sabido buscar, pero de verdad no encuentro ese gran movimiento open source en torno a jsp y j2ee. Por ejemplo, en el caso de php, he encontrado no menos de 30 o 40 sistemas manejadores de contenido (CMS) open source disponibles. En jsp, traté de hacer una búsqueda en Google y he encontrado unos 3 ó 4 que son free.

Me parece que es indudable que el movimiento open source es más fuerte en torno a PHP que en torno a JSP, tal vez porque --a diferencia de Java-- el código fuente de PHP sí está disponible en Internet, y eso genera confianza entre la comunidad open source.

En el caso de una materia que vi este semestre, llamada "Aplicaciones con tecnología Internet", tuve problemas encontrando soluciones a problemas comunes. Era más difícil conseguir información en Internet, de lo que lo es con PHP.

Por ejemplo, los parámetros para configurar el archivo web.xml (un archivo vital en la configuración de Resin, el servidor web que usamos para trabajar sobre PHP) apenas logré conseguirlo en una remotísima página web de un foro... por fortuna la preparadora me ayudó con el problema.

No hermano, nada que ver con lo abundante de la información que consigues casi siempre cuando tienes problemas con Apache o PHP.

En otra materia donde se ve J2EE, hablando con compañeros que están viendo la materia, me dicen con mucha molestia cuántos problemas tienen haciendo debugging, pues el servidor web no les da errores y no consiguen mucha información en Internet. Y no me lo ha dicho un compañero desubicado; me lo han dicho tres personas, de quienes me consta que son bastante dedicad@s en sus labores.

Uno termina suponiendo que, para tener buen soporte, uno tiene que tener algún contrato con Sun Microsystems; no sé si estoy equivocado, pero esa es la impresión que muchos nos estamos llevando.

luigino dijo...

egg,

Por otro lado, nota que no estoy atacando el uso de Java como lenguaje para aprender estructuras de datos, técnicas de programación o incluso programación inicial. Todo lo contrario, me parece un gran avance el hecho de que desde el primer semestre estemos aprendiendo Java en vez de aprender Turbo Pascal sólo desde el segundo semestre, como era antes (cuando yo entré a la escuela).

((Y sin embargo, tengo mis reservas sobre el hecho de que necesites tener nociones de programación para que la carrera no te impacte tan fuerte en el primer semestre, pues quienes entran desde las escuelas públicas no tienen esta formación))

El problema es que en las materias no te "sugieren" sino que __te exigen__ que uses "tal" lenguaje.

Insisto: en determinadas materias dicha obligatoriedad es justificada, pero me parece lamentable que en las tres materias dedicadas a Internet se nos obligue en las tres a hacer los proyectos en Java, desechando las otras alternativas.

Por otro lado, __nunca hablé de un complot__ en la UCV. Si así lo ves, creo que es tu interpretación sobre mi opinión... pero conozco a los profesores y no creo que ellos tengan algún interés económico o personal en que se formen "Javitos" en la universidad.

Tal vez fue algo que pasó inadvertidamente, o tal vez simplemente no había nadie con la iniciativa y el interés de llevar adelante la formación en software libre... y entonces llega Sun oportunamente, ofreciendo formación y cursos.

luigino dijo...

egg,

Otra cosa: he analizado sílaba por sílaba las tres líneas del mensaje de Vemeko. He intentado decriptarlas, decodificarlas, demultiplexarlas, desordenarlas, he buscado mensajes ocultos, la he tratado de traducir a otros idiomas, he buscado expertos en arameo antiguo...

... Y aún no veo dónde Vemeko está metiendo una "visión política" a un asunto netamente tecnológico. Lo cual tampoco me molestaría, porque mi artículo tiene, además de tecnología, política, y no tengo problemas en discutir de ambos temas, siempre y cuando lo hagamos tranquila y respetuosamente.

Es decir, lo único que me dijo Vemeko es que no meta cierta materia... no sé, ¿qué pasa con Vemeko? ¿Es chavista? ¿O él es escuálido y tú eres chavista? ¿Debo protegerme con ajo, agua bendita o algo así? :)

Todo en broma hermanos, paz y no dejemos que nuestras visiones políticas nos alteren como profesionales. Eso sí, recordemos que hay que trabajar para ayudar, más que a Sun o a Microsoft, ¡a Venezuela!

luigino dijo...

Fe de erratas:

- Resin lo usamos con JSP, no con PHP.

- Lo del complot no lo dijo egg sino Topocho.

De resto, estoy 100 por ciento contigo Topocho, excepto en una cosa: cuando estás recién graduado y vas a buscar trabajo, las empresas que ya tienen sistemas funcionales no buscan a un chamo con "conocimientos generales" sobre manejadores de base de datos o lenguajes de programación, sino a alguien que tenga al menos cierta experiencia en un producto determinado.

egg dijo...

Luigino:
Estoy de acuerdo en que las empresas siempre buscan personas con experiencias prácticas. Por eso era mi comentario acerca de cual debería ser la orientación que te dan en la carrera, ¿hacia las ciencias de la computación? o ¿hacia la ingeniería de la computación? no es un pregunta que tenga una respuesta sencilla. Insisto que de todas formas la carrera te da la posibilidad (dada la formación) de rápidamente ponerte en los palitos.
Los acuerdos para promocionar tecnologías en las carreras, favorecen a ambas partes (tanto a la escuela como al proveedor), el punto es que la escuela no debe por esto, perder su visión.
En cuanto al aspecto "técnico", la comparación J2EE con PHP, no aplica, puedes comparar Java con PHP, pero la arquitectura J2EE no es comparable directamente con PHP.
A pesar de que me gusta Java (como ya debes haberlo supuesto) estoy claro de sus deficiencias, por ejemplo no lo considero como una primera opción para el desarrollo de aplicaciones Desktop (en particular sobre Windows), sin embargo el "stack" de la arquitectura J2EE funciona muy bien en el server-side.
J2EE esta pensado para soluciones "enterprise-level", PHP por si solo no, PHP está orientado hacia la aplicación web sencilla, el CMS, etc.
A lo que voy es que creo que en tu materia de Aplicaciones en Internet (que me imagino la da Antonio Leal) te están dando una de las alternativas (la otra es .NET, y fijate que no ASP) que el estado del arte que existe para el momento. Las aplicaciones Web son complejas, está la parte de la base de datos, del browser, y del servidor de aplicaciones propiamente dicho, dar esa visión holística en un semestre no es fácil. Una vez que tienes claro cual es el problema que debes resolver, entonces puedes evaluar las distintas opciones existentes (y las que vengan).
Por otro lado creeme que el soporte Open-Source hacia J2EE y Java es enorme, dale un vistazo justamente a Apache Software Foundation (http://apache.org), en particular a Jakarta (http://jakarta.apache.org), fijate que de hecho la implementación de referencia para Servlets y JSP es Tomcat (el cual es un proyecto open-source), paro aqui, porque estos comentarios parecen más un post.

luigino dijo...

1) No voy a seguirle dando cuerda al asunto. Ya ayer me di cuenta de que este blog es leído por ex-alumnos y hasta profesores de la facultad, y aún cuando no tengo ningún temor de que ellos lean mis opiniones, particularmente me doy cuenta de que tengo que ser más cuidadoso con lo que escribo.

Por ejemplo, alguien podría entender que yo insinué que Sun es quien determina lo que se da las materias de computación, lo cual es falso; yo nunca insinué eso. Pero hay gente que lo entendió así...

2) Estoy consciente de que J2EE no es comparable con PHP; en todo caso se debe comparar con una plataforma como Microsoft .NET, y francamente, entre los dos, estoy de acuerdo en que la UCV haya escogido la solución de Sun.

Pero mi posición sigue siendo la misma: en las tres materias electivas relacionadas con Internet se nos exige hacer los proyectos en JSP. PHP es más apropiado como solución para empresas pequeñas y medianas, que son las que la UCV debería estar interesada en fortalecer; de hecho, es más complicado conseguir hostings venezolanos que soporten JSP en comparación a PHP o ASP.

Pero la UCV no da alternativas en ese sentido, y debería darlas.

Topocho dijo...

Te lo voy a explicar de esta forma:

Un día un compañero de trabajo me sorprendió con esta perla: "Es que ustedes lo que estudiaron en la Central son diferentes".

Después me explico que en una entrevista para un trabajo al que había postulado anteriormente le habían puesto un problema, que no pudo resolver. No recuero de que iba el problema pero era _interesante_, y EGG y yo lo pudimos resolver sin mayor dificultad.

Para él, nosotros veíamos los problemas de una forma _distinta_. Y eso es lo que nos deja la Central, no PHP, no Java, no Fortran.

Sácate ese cartucho de "que me enseñen" los lenguajes. Los lenguajes se aprenden con un manual de por medio, un tutorial en la pantalla y un compilador o un interprete.

Buenas capacidades analíticas, y conceptos claros para "armar" una solución (llámalo diseño, arquitectura, o l oque tu quieras), son la diferencia a la hora de acometer un proyecto en forma exitosa. El lenguaje y la plataforma subyacente son tan solo carpintería.

luigino dijo...

Topocho:

Antes de entrar en la UCV me gradué de TSU en Informática en un instituto donde me enseñaban Cobol y Turbo Pascal al mismo tiempo que, en la calle, VisualBasic, Visual C++ y SQL eran el "state-of-the-art", así que créeme que yo sé lo que es tener que aprender no uno, sino 40 lenguajes por mi cuenta.

Es más... tuve que aprender las tres primeras formas de normalización por mi cuenta, pues la profesora que nos dio base de datos en ese instituto sabía tanto de base de datos como yo sé de química orgánica.

Ese no es el problema que estoy planteando aquí. El problema sigue siendo: ¿cómo puede ayudar la universidad al desarrollo de la pequeña y mediana empresa, si únicamente se nos enseña a usar herramientas para la gran empresa y no se nos da alternativas?

Anónimo dijo...

El open source plantaedo como vos lo decis.Es como tratar de inventar la polvora ; para hacer un fusil, llegar a una honda
Es un pesamiento medieval el cerrarse al avance de la ciencia, y la tecnologia; para vos todavia las enfermedades , las causa los demonios, o el pecado Igual que echar culpas a los Imperialismo, en vez de ver ;porque un Chavez puso a su sobrino al mando de la petrolera nacional ? o las cuentas en Suiza de Fidel Castro?, O El asesino de Anibal Ibarra ; por les predio fuego a 200 Jovenes en una Disco? .El corrupto es Chavez, Castro,Ibarra No Cuba, Venezuela,o Argentina
Como implementas con PHP, webservices , o componentes reutilizables
Porque no propones hacer los prg en asembler
Recibite trabaja en el area de sistemas haciendo algo en serio;despues oipina,si te gusta ir a la universidad a hablar de Cuba , o de Imperialismos :Podes ir a al de filosofia y letras

Ing Adrian Herz Gte de Sistemas Ford Motors Argentina