Les interfaces utilisateur#
Dans les sections précédentes, on a vu comment un système se structure en modules et comment ces modules communiquent entre eux par des APIs. Mais un système logiciel n’existe pas dans le vide : il est construit pour être utilisé par des humains. L’interface utilisateur est la surface de contact entre le système et la personne qui s’en sert. C’est la partie la plus visible d’un logiciel, et paradoxalement, c’est aussi celle dont la conception a le plus radicalement changé en quelques décennies.
On commencera par une perspective historique qui retrace l’évolution des interfaces, des terminaux texte jusqu’au web moderne, en passant par la naissance du GUI au Xerox PARC, le modèle événementiel, les toolkits desktop et l’épisode Flash. On verra ensuite comment l’architecture des applications web a évolué pour répondre aux exigences d’interfaces de plus en plus interactives, du rendu côté serveur traditionnel aux Single Page Applications et aux approches hybrides actuelles. La section sur les frameworks JavaScript explorera les outils qui ont permis de construire ces interfaces, de jQuery à React, et la tension fondamentale entre approches impérative et déclarative. Enfin, on abordera les tensions entre desktop, web et mobile : la fragmentation des plateformes, les tentatives de convergence comme Electron, React Native ou les Progressive Web Apps, et les compromis qu’implique le choix entre code natif et solutions universelles.
On remarquera que le web et JavaScript occupent une place prépondérante dans cette section. Ce n’est pas un choix arbitraire : c’est le reflet d’une réalité. Le web est devenu la plateforme d’interfaces utilisateur dominante, celle sur laquelle la majorité des applications sont aujourd’hui construites. JavaScript, qui était à l’origine un petit langage de script pour animer des pages web, est devenu l’un des langages les plus utilisés au monde, et le seul qui s’exécute nativement dans un navigateur. Comprendre l’évolution des architectures web et des frameworks JavaScript, c’est comprendre comment se construisent la plupart des interfaces logicielles aujourd’hui.