Sin duda alguna hoy en dia una plataforma es una fuente grande de recursos para el programador. Las plataformas Java y .net son una muestra de ello. Cuando un programador dice: sé programar en Java, ¿qué quiere decir? ¿Conoce el lenguaje? ¿Algunos paquetes? ¿Sabe como se ejecutan sus aplicaciones en el bajo nivel?
A ver ... la plataforma por lo menos tiene tres elementos: el lenguaje de programación, las bibliotecas y la máquina virtual. En el caso del lenguaje de programación, hasta hace poco en la plataforma Java solamente había uno y era estático. Hoy en día hay más de uno estático y varios dinámicos (JRuby, Groovy para mencionar un par). Ya no se discute el paradigma del lenguaje. Los lenguajes centrales tanto en la plataforma .net como en Java son OO. Las tendencias en ambos lenguajes principales (C# y Java) es a introducir construcciones de lenguajes funcionales (por ejemplo, funciones como parámetros).
En el caso de las bibliotecas. Hasta hace poco en Java (JSE 1.4) habían 3020 clases e interfaces y 32138 métodos y campos. No he encontrado nada respecto a lo que pudiera haber en JEE y en JME y que adiciona a lo que se tiene en JSE. En la plataforma .net (versión 3.5) hay números un poco diferentes 39509-11417 tipos (que supongo serán lo correspondiente a clases) y 384300-109675 miembros (que será lo correspondiente a métodos y campos) (referencia1 - referencia2). Estoy asustado, en cualquier caso son centenas de miles. Hay muchas cosas hechas, buena cosa. Pero, ¿alguien conoce BIEN todo esto?
Finalmente la máquina virtual. ¿Alguien conoce cómo funciona la máquina virtual de su plataforma favorita? Por ejemplo, ¿sabe cómo maneja la memoria para poder hacer una optimización? ¿O para optimizar la velocidad de un programa?
Preguntas que se me pasan por la mente y preocupaciones. Son estas las condiciones en que debemos enfrentar la educación en programación de los próximos años. ¿Estamos listos?