La philosophie less is more (Mies van der Rohe) m'a été communiquée il y a quelques années indirectement par Steve Dekorte, au travers de son langage Io.

Lentement, mais sûrement, cette manière de voir s'est transformée en manière de faire, pour se répercuter dans ma manière de concevoir et d'implanter des programmes et des interfaces. Je suis de nature communicative (j'aime faire part de la manière dont je me sens, de mes idées), et j'ai du lutter (je lutte encore) contre ma tendance naturelle a en rajouter, ce qui a pour conséquence de parfois diluer le message.

En tout cas, cet article de chez Intel fait un intéressant parallèle entre une étude psychologique et les langages de programmation. L'étude est la suivante : dans un magasin d'alimentation, un ensemble de confitures sont exposées dans la vitrine. Pendant un certain temps, 24 pots de confitures différents étaient exposés, puis seulement 6 pots de confitures différents ont été exposés.

Le résultat est impressionnant:

Soit 20 fois plus de personnes. Pourquoi ? Simplement parce que les gens ressentent un "information overload" qui rend le choix difficile. Ils voient la confiture (mmmhhh, de la bonne confiture), mais sont directement confronté au choix anxiogène : mais laquelle choisir ?

Le parallèle avec les langages de programmation est simple : est-il mieux de fournir plusieurs manières de faire (le fameux "there's more than one way to do it" de Perl) ou une seule. Pour ma part, je me positionne clairement du "une seule, mais la bonne". C'est une des choses qui frappe avec du code Python (ou Java, maintenant), c'est qu'il y a beaucoup d'homogénéité. Python le fait via sa syntaxe, Java le fait via des conventions (et un investissement important d'éducation des programmeurs).

Dans mon soon-to-be-announced langage "Sugar", c'est précisément l'approche que j'ai essayé de développer : donner le plus de guide possible pour laisser la place au choix la ou c'est important, a savoir sur l'implantation plutôt que sur la syntaxe.

En tout cas, j'apprécie beaucoup les liens inter-domaines (psychologie et informatique), d'autant plus que je pense que le métier de "designer logiciel" est sous-exploité voire inconnu. Si les gens considéraient les langages de programmation et les API comme des interfaces à part entière (comme on le fait pour les interfaces graphiques), nous pourrions régler beaucoup de problèmes à leur source.