Dice Yukihiro Matsumoto que uno de los principios en los que se basó para crear el lenguaje de programación Ruby era el principio de la mínima sorpresa. Un lenguaje de programación debe sorprender lo mínimo posible a los programadores que lo utilicen.
Evidentemente, Matsumoto se refiere a los programadores aventajados del lenguaje. Un lenguaje que está aprendiéndose siempre sorprende, y esas sorpresas sirven para que compruebes que no tenías claro algún aspecto de su funcionamiento o de su semántica. Como ejemplo de un lenguaje que no cumple el principio de la mínima sorpresa, Matsumoto cita al C++, en un ingenioso y agudo comentario:
I was a C++ programmer before I started designing Ruby. I programmed in C++ exclusively for two or three years. And after two years of C++ programming, it still surprises me.
Todo esto viene al hilo del lenguaje que quería presentar en este comentario. No es Ruby (lo dejamos para otro día), sino Scheme. En lo que se refiere al principio de mínima sorpresa, apostaría a que Scheme gana a cualquier otro. Incluso ganaría el concurso al lenguaje más aburrido si no fuera por la recursión, por lambda y por su historia.