¿El lenguaje de programación más popular?

Seguimos con nuestro repaso a los lenguajes de programación, iniciado en otra entrada. En este caso, en vez de centrarnos en el rendimiento, nos fijamos en la popularidad de estos lenguajes: la frecuencia de uso y de aparición en noticias o novedades del sector. Así pues, ¿cuál es el lenguaje de programación más popular? La popularidad de un lenguaje de programación es relevante por diversos motivos. En primer lugar, puede ser un factor determinante al seleccionar qué tecnología utilizar en el desarrollo de un proyecto. Un lenguaje popular posiblemente tendrá: Librerías y herramientas de desarrollo actualizadas. Una comunidad activa que proporcione soporte e introduzca mejoras. Un pool de desarrolladores con experiencia. Recursos para el aprendizaje y resolución de problemas (tutoriales, manuales, ejemplos, plantillas, FAQs, …). Desde un punto de vista pragmático, la popularidad de un lenguaje también puede ser relevante para un desarrollador. Estar especializado en lenguajes muy utilizados pero poco conocidos ofrece algunas oportunidades laborales. Y no hay que suponer que estos serán siempre los lenguajes más modernos: según una noticia reciente, en el mundo hay 300.000 millones de líneas de código escritas en el veterano lenguaje Cobol, y cada año se escriben 5.000 millones de líneas más. Medir la popularidad de un lenguaje de programación es una ciencia inexacta y repleta de polémicas. De hecho, cuando uno de los portales sobre popularidad de lenguajes de programación se llama “The Transparent Language Popularity Index” (énfasis en el original), es evidente que hay sensibilidades enfrentadas. Hay indicadores objetivos de popularidad que pueden medirse: el número de proyecto de software libre, el número de líneas de código existente/nuevas en dichos...

Competencias más buscadas en el mercado laboral de las TIC

Me envía Robert Clarisó un par de recortes de interés. El primero es la explotación publicada por Infojobs de las demandas de trabajo en informática en el mercado español. Está bien que las Universidades pongamos el oido a lo que pide el mercado. La última revisión comparativa fue hace 5 años, antes de la crisis, y por lo tanto es difícil tener un marco de referencia. También es difícil comparar entre profesiones o actividades, porque la explotación no lo publica o yo no he sabido encontrarlo. Una observación general es el mantenimiento en posiciones de liderato de las competencias de tipo “funcional” y de “negocio”: analistas funcionales, ERPs y consultoría (definición de requerimientos de negocio). Fuera de las anteriores, se mantienen en posiciones líderes la configuración de sistemas, gestión de proyectos de telecomunicaciones, atención telefónica a usuarios, instalación de servidores de red y, desde luego, todas las ventas (en especial, las de microinformática). Entre las competencias emergentes o nuevas destacan las de arquitectura y prototipaje de hardware y software, seguidos de administración de usuarios de sistemas y redes, la consultoría de preventa de soluciones ERP, las aplicaciones sectoriales de ERP y las competencias de gestión de sistemas de información tipo COBIT. Cambiando de fuente, un artículo del IEEE Spectrum informa que la demanda de ingenieros informáticos está creciendo de nuevo en los mayores mercados. Las aplicaciones móviles y el cloud computing representan la mayor fuente de demanda de nuevos graduados. La ingeniería del software se consideró el mejor trabajo en 2011, según una encuesta; también uno de los mejor pagados y más demandados. Finalmente, Computerworld y la revista CIO en Estados Unidos (aquí)...

¿El lenguaje de programación más eficiente?

La razón nos dice que no existe un lenguaje de programación mejor que los demás, sino que hay que escoger el lenguaje más apropiado para cada tarea (“use the right tool for the job”). Sin embargo, las preferencias en lenguajes de programación tienen algo de emocional, casi de fervor religioso. Preguntarle a cualquier informátic@ cuál es su lenguaje favorito es un buena pregunta para romper el hielo… Empezamos una serie de artículos revisando los lenguajes de programación según diferentes criterios. Empezamos preguntándonos: ¿cuál es el lenguaje de programación más eficiente? El tiempo de ejecución y los recursos consumidos por un programa (memoria, acceso a la red, …) dependen por encima de todo del algoritmo utilizado. Puede haber varios órdenes de magnitud de diferencia entre un algoritmo y otro, por ejemplo, pasando de un tiempo de ejecución de segundos a otro de años. Por ejemplo, aquí podéis encontrar una comparativa entre diferentes programas para resolver Sudokus, con tiempos de ejecución que pasan de 0.25 segundos a 7 horas. Por otro lado el mismo algoritmo puede comportarse de forma muy diferente dependiendo del lenguaje de programación utilizado para su implementación. Por ejemplo, un artículo reciente de un ingeniero de Google mostraba variaciones de 12x en los tiempos de ejecución de un algoritmo concreto en función del lenguaje utilizado. La comparación entre diferentes lenguajes puede ser un tema bastante más complejo de lo que parecería a simple vista: La eficiencia del lenguaje puede depender de parámetros cómo cuál es la plataforma sobre la que se ejecuta, la versión de las librerías,  la versión del compilador/intérprete/máquina virtual y los parámetros de optimización que...

“Infraestructuras a la carta” en la nube

Receta para un Virtual Cloud MegaCluster Ingredientes : 3809 máquinas virtuales con 8 núcleos y 7 gigas de memoria cada una, conectividad 10GbE y molde GNU/Linux. Preparación: Para garantizar buenos resultados, es imprescindible disponer de una herramienta de gestión de recursos en la(s) nube(s) de última generación y una cuenta de pago en línea operativa. 1) Aprovisionar los recursos virtuales al gusto en base al molde GNU/Linux. 2) Configuración Automática del Controlador del Cluster y disco compartido. 3) Distribución de la aplicación y ejecución… Precio aproximado: $1279 por hora de uso Como si de una receta se tratara y dejando atrás películas de ciencia ficción, a día de hoy, construir un cluster virtual “a la carta” [1] en modo de alquiler de más de 30.000 núcleos, 26.7 Terabytes de memoria y 2 Petabytes de disco ya es una realidad. Incluso me atrevería a decir que hablar de estos números empieza a ser algo habitual en el ámbito de proveedores comerciales de infraestructura. Ya hace algún tiempo que empresas del calibre de Amazon, Google o Microsoft basaron una parte de su modelo de negocio en rentabilizar sus inversiones en infraestructura mediante el alquiler de una parte; modelo bien conocido como es el ‘pago por uso’. Este modelo, en el polo opuesto al ambientalmente NO sostenible “usar (poco) y tirar”, tiene como base la compartición de los recursos en estado puro y es una de las esencias del Cloud Computing. Esta idea se conoce como “multitenancy” y proviene del campo de la ingeniería del software, característica de un tipo específico de arquitecturas de software las cuáles ya hace algún tiempo ofrecían...

Cómo aprendí a gestionar proyectos (II)

Sigo de un post anterior (Cómo aprendí a gestionar proyectos (I)). Cuando comenzó la era de los ERPs y otros sistemas de información de empresa, aprendí que dedicar mucho tiempo a tomar y analizar la situación actual y los requerimientos de usuario (as is) no era muy práctico, y que valía más la pena llevar lo antes posible prototipos basados en cómo será la aplicación futura (to be), que cubriesen el grueso de la funcionalidad y estuviesen basados en el estándar. Esto permitía apuntalar el liderazgo del cliente y del equipo frente a las presiones del usuario final y, al revés, escuchar pronto y cambiar sin mucho coste las peticiones de usuario que tenían sentido, y encajarlas lo más posible en el estándar. Thomas Davenport lo explica mucho mejor que yo en un libro que es ya clásico (1). Dice Davenport que adoptar un ERP es un “estilo de vida”. Hacer proyectos de ERP también. Aprendí con los años que gestionar proyectos era sobre todo arremangarse, estar al pie del cañón y con las antenas desplegadas y cuidar de un equipo (el tuyo y el del cliente) confiable, sensato y enfocado a la ejecución. Dice Larry Bossidy, exdirectivo de General Electric y autor de uno de los mejores libros de management de la última década: “Los que ejecutan te salvarán la vida” (2). Yo escribí hace tiempo: “El que escribió la metodología no estaba en el cliente”. Cuando empecé a hacer webs, intranets, plataformas de comercio electrónico y a trabajar con nuevos medios y canales, descubrí gente que no conocía y de la que aprendí mucho: diseñadores, librerías de...