Estuve leyendo la R6RS, y como sarcásticamente señaló el amigo Arto Bendiken en su artículo, la nueva definición aparenta contradecir la frase misma que le da inicio.
“Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.”
Los lenguajes de programación no deberían ser diseñados apilando característica sobre característica, sino quitando las debilidades y restricciones que hacen a las características adicionales parecer necesarias.
La nueva definición “creció” un 60% con respecto a su versión anterior. La generalidad de los cambios apunta a combatir o mitigar los “puntos débiles” de Scheme que eran
- carencia de librerías
- necesidad del programador de “reinventar la rueda” como bien le pareciera (o entender como otros pensaron la rueda)
- carencia de un sistema evolucionado de módulos y paquetes como en otros lenguajes más conocidos
- mejor (más amigable) manejo de las excepciones y errores
En definitiva. Llevaron al lenguaje que se preciaba de “tan simple como sea posible y aún usable” a parecerse más a los lenguajes más mundanos como Java o CommonLisp. Por supuesto que detrás de éstos cambios hubieron buenas intenciones, pero las buenas intenciones no necesariamente producen buenos frutos. Aparentemente, el uso cada vez más extendido del lenguaje, llevó a “olvidar” sus inicios como un “juguete” para entender y experimentar ideas, y volverse una máquina más compleja de uso industrial.
En estos casos, pienso que lo mejor es haber creado otro lenguaje, antes que cambiar el existente. Si los programadores lo desean, pueden pasarse felizmente sin remordimientos cuando deban realizar un “trabajo importante”, y continuar con Scheme R5RS para cuando quisieran seguir “jugando” .
No son pocos los que piensan que no es indicado el cambio. Como siempre, hay gente que resiste el cambio. Pero considerando de que muchos eligieron a Scheme precisamente por su simpleza y carencia de contenidos espurios o ajenos al propósito del lenguaje, esto podría compelerlos a realizar nuevamente una búsqueda de otro lenguaje que cumpla esas características. Posiblemente haya habido intereses (comerciales?) detrás de ésto. De todas formas, no es algo que no pueda ser reparado en futuras versiones. Si la comunidad demuestra que el cambio no ofrece ventajas significativas, posiblemente su voz sea escuchada y se “de un paso atrás” sobre los cambios realizados. Y sino, como ya ha sucedido con otros proyectos, habrá una división y se creará un nuevo Scheme, que continúe con la tradición de simpleza y minimalidad.