Esta semana me puse a acceder a una cuenta de Forrester.com a la cual tengo acceso gracias a la compañia en la que trabajo. Si no lo sabe, Forrester es una compañia que se dedica a hacer investigación acerca de tendencias en tecnologías, aplicaciones y su impacto en los negocios. Es una institución muy respetada y compañias como El Universal (entre otras) en Venezuela tienen acceso a este recurso.

Pero bueno, no estoy aquí para venderles suscripciones a Forrester sino para comentarles acerca de dos articulos que me leí esta semana pasada:

  • Trends 2006: Language And Platform Adoption, escrito por Carl Zetie
  • Java And .NET Have Yet To Kill All Other Platforms, escrito por Randy Heffner

Los articulos estaban bien lejos de ser provocadores y más bien confirmaban cosas que ya muchos saben desde hace tiempo (me omito los detalles y números estadísticos exactos ya que no quiero plagiarizar los articulos):

  • .NET y VB en conjunto representan la mayoría en cuanto a lenguajes usados en compañias pequeñas, medianas y grandes. El efecto es aún más acentuado en compañias pequeñas
  • Java Ocupa el segundo lugar (y le gana por un margen estrecho) a .NET. De hecho JAVA sigue siendo la plataforma más utilizada (no sólo el lenguaje, pongo enfasis en esto) en compañias medianas y grandes
  • Las tiendas que usan .NET y VB siguen atadas con Microsoft y son menos propensas a ser heterogeneas como las que usan Java (las cuales muestran Open Source)
  • La interoperabilidad entre JAVA y .NET es mímina ya que muy pocas compañias la necesitan
  • LAMP (Linux + Apache + MySQL + Perl / Python / PHP) tienen un sitio dentro de las grandes y medianas compañias pero tienen aún una participación básica (ojo, Linux es la excepción aquí ya les diré porqué)

Hay muchas cosas más, pero ambos articulos recomiendan utilizar ambas tecnologías en el futuro cercano ya que son maduras, cuentan con soporte amplio tanto de compañias privadas (IBM, Microsoft, SUN, Macromedia) como organizaciones Open Source (MONO, Apache, JBOSS, entre otros).

¿Esto tiene sentido?
¿Porqué no mencionan a Perl, Python, y sobre todo el favorito de los fanaticos de la temporada, Ruby?

Es sencillo, he aqui algunas razones:

  • Algunos de las tecnologías emergentes no están los suficientemente establecidas: Tomemos el caso de Ruby, es un lenguaje que tiene 13 años de edad pero aún no tiene una base de usuarios crítica como la de Perl o Python. Eso no quiere decir que no vaya a cambiar en el futuro, pero si usted tuviera que desarrollar la aplicación para su compañia ¿en donde pondría los recursos?. JAVA y .NET tienen también tiempo en el mercado y cuentan con un ecosistema rico las cuales les permitiran estar presentes al menos por 10 años más. No son sólo eso, a la hora de buscar talento (programadores) le será mucho más fácil y barato buscarlos en plataformas con un ecosistema sano.
  • Soporte de empresas comerciales: JAVA tiene a un montón de compañias atrás (IBM, BEA, Micrsoft, SUN, etc), .NET (NOVELL, Microsot), Linux (RedHat, SUN, IBM, SuSe), PHP(ZEN, IBM), Perl (ActiveState, O’Reilly?). El soporte comercial y la garantía de que habrá entrenamiento y mejoras en esas plataformas las hacen candidatas obvias a la hora de desarrollar aplicaciones. Es por eso que la histería de los auto - llamados defensores de el software Libre en Venezuela con su satanización de SUN, IBM y RedHat (polemica de el decreto 3390) es risible, ya que nadie en su sano juicio va a arriesgar un proyecto sólo para descubrir después que la plataforma no es soportada o está en un estado moribundo, sin inovación (cuantas aplicaciones en LISP además de macros en Emacs conoce y utiliza usted de verdad). Linux, Perl, Python son excepciones a la regla debido a su enorme mása crítica la cual les garantizará uso y evolución en los años venideros (Ruby está yendo en esa dirección, pero comparado con Perl está en pañales). ¿No me cree aún? Piense lo siguiente, ¿cuando fué la última vez que usted vió a alguien utilizando CORBA en vez de SOAP (u otra solución) en un proyecto?
  • No son plataformas: Ruby no es una plataforma y Rails es un framework para hacer páginas web rápido y de manera elegante. .NET es una plataforma ya que la tecnología puede ser utilizada en el cliente y el servidor, JAVA tiene Swing, Servlets, J2EE, Java Micro Edition, … y por allí va la cosa
  • JAVA, .NET puede hacer cosas que Ruby y Python no pueden: Existen en Java implementaciones de Ruby (JRuby en pañales), Python (Jhyton), Rails (Grails que es como Rails pero con Groove, además de que la plataforma de Servlets está en constante evolución), Javascript (Rhyno). La próxima versión de Java (6) tiene mejor soporte dentro de el lenguaje para los llamados “lenguajes dinámicos”. No se puede decir lo mismo de Ruby y Python (Perl por otro lado con Parrot es una propuesta interesante)
  • Herramientas: Mencione cuantos editores, depuradores, servidores de aplicaciones conoce usted para .NET, JAVA, PHP, PERL, C++ OK, ¿cuantos para Ruby? (Si, no vale contar Eclipse, ni Vi, ni Emacs). Comparación odiosa, pero las herramientas que elevan nuestra productividad siempre son bienvenidas y si se consiguen fácil y barato, mejor.
  • ¿Las herramientas están estancadas, con poco crecimiento? Que lo pone más nervioso, ¿escoger entre Perl, Cold Fusion, CORBA, Java, PHP, Ruby y .NET?. Nada dice que JAVA, PHP, Ruby o .NET no se vayan a estancar en los próximos 5 años, así que tenga los ojos abiertos a como se ha portado la plataforma en los últimos meses.

Pareciera que este articulo fuera una cruzada anti Perl, anti Phyton y anti Ruby pero no lo es; Cada problema necesita de la herramienta adecuada para resolverlo, enfrascarse en una solución (como que JAVA es lo único que puede aplicar para resolver un problema) no lo va a llevar a ningún lado. Así que cuando tenga que recomendar un lenguaje, piense en su nueva aplicación como un ecosistema.

Piense también en las ventajas de los lenguajes compilados como C#, JAVA (si, bytecode recuerdan y en algunos casos compilado :)) o el venerable C++ (depuración, detección temprana de errores, cierta protección de el código, velocidad); No todo se puede resolver con “scripts”, así que sea prágmatico y no se deje llevar por la ilusión de que “Todo se puede hacer con Perl / PHP / Python / Ruby”

Eso le evitará dolores de cabeza :D


28 Respuestas a “Como escoger un lenguaje de programación para la empresa: ¡Simple, piense en un ecosistema!”

  1. 1 Edgar González

    Efectivamente hay que ser pragmáticos, como dice un amigo: “si solo tienes un martillo todo lo ves como un clavo”, hay que tener varias herramientas disponibles y usar la adecuada para el problema adecuado.

  2. 2 Gerardo Curiel ([javamaniac])

    Pues en tu opinion estan expresados mis pensamientos, sobre todo con respecto a estos talibanes que se hacen llamar defensores del SL y lo que hacen es “satanizar” estas tecnologias,muchas veces(y lo digo con propiedad) sin conocerla, lo cual me molesta a sobremanera.

    Yo soy programador Java(y aprendiendo ruby y perl;-)) y ayudo en el Debian-java Team a poder “liberar” de la trampa java a las apps libres desarrolladas en java ,tu opinion me parece bastante objetiva y veo que eres una de las pocas personas sensatas que sabe donde esta parado con respecto a la migracion.

    Ah, y Congrats por tu blog ;)

  3. 3 Luis Belloch

    Hola!! Acabo de descubrir tu blog, muy buen post este último, no todo el mundo tiene una visión tan crítica del estado de esos lenguajes.

    A mi parecer, creo q lenguajes como PHP, Perl o Ruby estan muy orientados a la parte WEB, y como los clientes WEB es “lo que se lleva ahora”, pues de ahi su fama. En ningun caso son comparables a Java o .NET (lo q en ningun caso quiere decir q no sirvan, cada problema tiene su solucion).

    Ah! no olvidemos que de C++ sigue habiendo una gran familia de desarrolladores.

    Un saludo!

  4. 4 BrainX

    Nunca habia leido argumentos mas ciertos. Tambien comparto la opinion de hacer enfasis entre una PLATAFORMA y un LENGUAJE, son dos cosas diferentes.

    Sin embargo estoy definitivamente convencido de que debe existir la opcion en plataformas como .NET y JAVA de poder compilar completamente el codigo y hacerlo dependiente del sistema operativo pero totalmente independiente del framework, plataforma o librerias.

    Mucha gente prefiere usar Perl, PHP o Phyton solo porque son miles de veces mas rapidos que JAVA o .NET, inclusive siendo lenguajes interpretados.

    El caso de Ruby es bastante especial, ya que para algunos posee un encanto el cual todavia no he logrado entender… Pero quien sabe? quizas Ruby gane mas adeptos y las grandes corporaciones inventen alguna plataforma basada en los principios del lenguaje.

    Se hizo largo. Saluts.

  5. 5 Erne

    Me parece muy bien lo que opinas, nada es totalmente bueno o totalmente malo, ya que GPL no es sinonimo de excelente y MS o software $, es malo, depende la enfermedad es la medicina, lo importante es saber recetar y solo el conocimiento de los jarabes y de los progrmas en este caso, nos llevará a un exito, saludos y felicidades con tu blog

  6. 6 maria

    esto no me ayuda por que necesito esta informacion. estoy en clase y me la marcaron para entregar antes de que termine.

  7. 7 Guillermo Benjamin Castillo

    hola

  8. 8 monica

    holaaaaaaaaaaaaaaaaaas

  9. 9 Joshiori

    Muy cierto lo que dices yo programa en php, pero fui educado con java asi que puedo ver las diferencias al momento de realizar una aplicacion/web. Hay que tener bien claro que no siempre las cosas se pueden resolver con un solo lenguaje la tecnica esta en lograr el equilibrio, en estos momentos nuestra empresa busca el equilibrio y aprobechar al maximo las ventajas que ofrece la interoperabilidad entre php y java.

    Felicitaciones por tu blog.,

  10. 10 moises

    hola, yo tambien comparto tu opinion y es que el tipo de lenguaje de programacion que uno va uilizar dependera del tipo de programa que se va a crear, creo que no existe el mejor lenguaje, si no el que mejor se adepte a tus necesidades, yo soy novato en programacion, solo he programado en visual basic 6.0 y visual basic .net y me estoy adentrando en el mundo de c++ pero tambien me gustaria saber algo de que trata java, por el momento quiero aprender mucho sobre c++ si alguien me diera una ayudita de lo agredeceria mucho max1888@msn.com

    Felisidades esta muy interesante tu blog

  11. 11 mario

    hola muy interesante tu articulo, pero discrepo en algo, lo referente al estatus que tiene PHP como lenguaje de programacion como candidato para resolver problemas de envergadura. Eso obviamente no pasa en latinoamerica donde las empresas que manejas datos de mision critica no salen de la onda (Java .NET) y sus inseparables amiguetes BD como Oracle, DB2 o SQL Server.

    Pero que pasa con la cada vez mayor necesidad empresarial de resolver problemas con tiempos de implementacion y proyectos muy cortos? Ahi es donde ni .NET ni Java pueden hacer mucho que digamos ya lo dice el dicho muy popular en la red sobre todo entre los fanaticos del scripting “LIFE IS TOO SHORT FOR JAVA”.
    aSI COMO tu dices que hay cosas que solo java y cia. pueden hacer…. pues eso es lo que java y cia no hacen, SER productivos. Por que entonces la influencia Rails para Ruby contagio a todas las plataformas y de eso no se salva Java. La rta es sencilla el framework agil redimensiona el concepto de programacion de calidad contra los tiempos de entrega.

    Ahora hablando de lenguajes particulares como PHP, la evolucion de PHP6 para posicionarse como una plataforma seria al estilo J2EE (Con el soporte de namespaces que tanto echamos de menos en PHP5) lo hacen una buena opcion para tener en cuenta para competir con .NET y Java en proyectos grandes. Sin hablar de sus amigos de BD como MySQL que ya han probado ser muyyy buenos para manejar cantidades titanicas de informacion. bueno en fin el asunto es que no solo de java vive el hombre ya es hora de dejar el mito a un lado.

  12. 12 ALEJANDRO

    saludos de Panama, Rep. de Panama

    me gustaria saber que lenguaje de programacion es mas usado para crear aplicaciones de cuentas por cobrar , contabilidad, puntos de ventas y que base de datos me recomiendan , actualmente estoy utilizando visual dataflex 8. con la base de datos Pervasive Sql, y no me a ido mal , pero quiero desarrollar , aplicaciones , en las cuales pueda utilizar web y para crear apliciones moviles .

    gracias..

  13. 13 Monica L.

    Hola. Quisiera que me pudieras ayudar en algo, lo que sucede es que en la actualidad me encuentro desarrollando mi proyecto de grado, que consiste en crear un Framework para ayudar en el aprendizaje de niños con discapacidad visual y auditiva, y quisiera saber de donde puedo tener informacion par escoger el lenguaje de programacion adecuado para llevar a cabo mi proyecto. Agradeceria la ayuda que me puedan brindar.

  14. 14 zitro

    HOLA LER RECOMIENDO
    QUE UTILISAN
    JAVA c++
    ES UN LENGUAJE DE PROGRAMACION DEMACIADO COMPLETO COMO PARA REALIZAR SUS PAJINAS WEB

    SALE ADIOS
    Y OJALA LES SIRBA MI CONSEJO.

  15. 15 Juan

    Me quedo con PHP……….

  16. 16 kary

    yo aprendi php, y ahora estoy leyendo sobre perl, y la verdad se me hacen muy parecidos pero si le estoy viendo ciertas ventajas a perl ya que es muy extendible con sus variados modulos ofrecidos libremente en internet. veremos como me va mas a delante ;) por mi parte yo les recomiendo php y perl ;) (me estoy refiriendo especificamente para programacion web, ya de aplicaciones de escritorio será conciderar otras cosas)

  17. 17 Fel

    Ya me canse de ver comentarios ofensivos a Microsoft, estoy harto de su Open Source, nadie se ata a nada y si se ata es por gusto. Aunque les duela a muchos pero microsoft es lo mejor que hay en software.

  18. 18 Remo

    pienso que los sistemas de computacion, llamense lenguajes alto o bajo nivel tienen una razon de ser, pero hay que tomar una decision de cual es el que debemos aprender y debemos colocar los pro y los contra de cada uno, definir el porque si o el por que no sin ambiguedades

  19. 19 Nacho

    Buenas, gente, les hago una consulta:

    Estudio para contador y amo programar. Empece por hobby a los 6 años con la C64, y después por no tener plata no pude actualizar mi compu hasta hace un par de años, por ende tampoco pude seguir estudiando programación.

    Ahora quiero arrancar con todo y mi idea es dedicarme a hacer soft contable / administrativo / impositivo aprovechando mi conocimiento de las ciencias contables.

    La cuestión es ¿con que me recomiendan que arranque? ¿que es lo que más pide el mercado? ¿que es lo mas usado para ese tipo de desarrollo?

    Si hay alguien que labure en ello y me puede responder me estaria haciendo un favo gigante.

    Saludos y feliz año para todos.

    PD: Les cuento que si bien no estoy muy actualizado tengo mucha facilidad para comprender los lenguajes y la sintaxis. Veo una pagina de código y lo entiendo de manera muy simple (obvio que no todo) pero tengo mucha facilidad para entenderlo por eso no se preocupen si me tienen que recomendar algún lenguaje heavy.

  20. 20 jonasoft

    investiguen…
    kemense las pestañas buscando informacion….

  21. 21 jonasoft

    era broma… ahi les va mi sugerencia…
    para ti ke estas estudiando contaduria te recomedaria, si kieres desarrollar aplicaciones de escritorio, con vb.net(visual studio.net-plataforma)basta, ya que te ofrece muchas ventajas por la sencilles del codigo, el mismo nombre lo dice visual basic(o) …eso si ke es software propietario…y ademas ke el nivel de calidad de tu software lo definiras tu, con esto kiero decir ke solo porke es de la Mocosoft (para los antiSoftawarePropietario-MS) no kiere decir ke sea malo,es muy bueno, depende del programador sacarle el maximo provecho…y ahi muchisima informacion de ayuda sobre este lengueje…

    si te kieres ahorrar muchos centavos … podrias optar por c/c++, lo unico ke estos son lengujes en los cuales el tiempo de aprendizaje es muchisimo mayor (y para ti que no es tu profesion, tu sabes), ademas de ser debiles con respecto al manejo de bases de datos ke obvio utilizaras pero muy potentes con respecto a rendimiento, en este caso te kedaria la opcion de utilizar java ke por igual conlleva un mayor tiempo de aprendizage,y tambien es libre, pero ojo de no caer en la trampa de java, y asi esas son mis sugerencias…entonces mis opcines para ti en orden de relevancia.(solo utilizaras una de estas)
    1º. vb.net + MSAcces ó sqlServer(GBD)
    2ª. java + MySql(GBD)
    3º. una combinacion de: lenguaje+GDB, pero para que ..
    *GDB=gestor de base de datos, MSAcces y sqlServer(propietarios)/MySql(libre)

    para lo del framework, bueno a mi me toco(con compañeros de estudio) desarrollar un proyecto similar para la universidad y lo ke hicimos fue urilizar bash+awk+xwindow, con eso tienes para crar un framework, eso si, corria sobre linux… =)

    estas son mis humildes sugerencias….
    saludos…

  22. 22 matias

    aguante el ciclooon!
    hoy en bolivia ganamoooos 2 a 0!!

    romeo y bergesio

  23. 23 matias

    dale sanloreeee
    qremo la coooopaaa…la hinchada esta locaa ciclooon
    quiero verte campeeeooon!
    yo te voy a alentar como todos los años—
    quierooo verte campeeeon cicloooon
    dale sanloreeee
    qremo la coooopaaa…la hinchada esta locaa ciclooon
    quiero verte campeeeooon!
    yo te voy a alentar como todos los años—
    quierooo verte campeeeon cicloooon

  24. 24 matias

    real potosi feo aguante el ciclom

  25. 25 matias

    ci ez berdad lo ke disen aki

  26. 26 matias

    pio feo

  27. 27 matias

    alvarez feo

  28. 28 fabrzio

    XD


RSS feeds

Suscríbete a nuestros RSS Feeds