Faire un logiciel « tolérant » est loin d'être la partie la plus difficile, même si ça peut être délicat dans certains cas. Ça devrait même être un principe général à partir du moment où le logiciel interagit avec l'extérieur, que ce soit avec l'utilisateur ou avec le réseau. On ne peut pas partir du principe que les données reçues seront forcément les bonnes dans tous les contextes ni même qu'elles arriveront forcément. Donc, il faut avoir des procédures pré-déterminées dans ces cas-là.
Le problème du navigateur est que c'est le logiciel probablement le plus utilisé sur les ordinateurs de bureau et qu'il est en train de devenir pratiquement aussi complexe que le système d'exploitation lui-même. Outre la liste des normes exposée par Shift juste au-dessous, il faut voir que chacune de ces normes est en soi un monument. Par exemple, si on se restreint au simple W3C, on obtient déjà ceci : http://www.w3.org/TR/
Rien que là-dedans, si on ne s'intéresse qu'aux CSS, on a ceci : http://www.w3.org/TR/2011/PR-CSS2-20110412/ soit un PDF de 487 pages. Et encore, ça, c'est humainement assimilable par une seule personne. Je les avais imprimées et reliées dans mon ancienne compagnie, et j'ai toujours l'ouvrage sous le coude aujourd'hui.
Une fois que tu as fini tout cela — et si tant est que tu ne t'intéresses toujours qu'au rendu du document — alors il faudra aussi tenir compte du fait qu'il est dynamique : il faudra le regénérer lorsque tu redimensionneras ta fenêtre ou que tu l'enverras vers un autre média (imprimante), mais également en fonction des événements reçus pendant et après la génération du document, par exemple le survol d'un élément qui doit déclencher les classes :hover qui, selon la façon dont elles sont écrites, peuvent influer sur le document entier. Et bien sûr, par tout ce qui est généré par le Javascript, ce qui inclut la définition et la mise en place d'un DOM ne serait-ce que pour disposer d'un langage permettant d'indiquer à quelle partie du document on souhaite toucher.
Bref : ce n'est pas forcément difficile en soi ni d'emblée, mais c'est extrêmement long à développer en entier et surtout, il est très difficile de garder l'ensemble cohérent au cours du temps, et de garantir ses performances par dessus le marché.
[^] # Re: Je vous réponds à tous ...
Posté par Obsidian . En réponse au message Pourquoi c'est dur de coder un navigateur Internet ?. Évalué à 2.
Faire un logiciel « tolérant » est loin d'être la partie la plus difficile, même si ça peut être délicat dans certains cas. Ça devrait même être un principe général à partir du moment où le logiciel interagit avec l'extérieur, que ce soit avec l'utilisateur ou avec le réseau. On ne peut pas partir du principe que les données reçues seront forcément les bonnes dans tous les contextes ni même qu'elles arriveront forcément. Donc, il faut avoir des procédures pré-déterminées dans ces cas-là.
Le problème du navigateur est que c'est le logiciel probablement le plus utilisé sur les ordinateurs de bureau et qu'il est en train de devenir pratiquement aussi complexe que le système d'exploitation lui-même. Outre la liste des normes exposée par Shift juste au-dessous, il faut voir que chacune de ces normes est en soi un monument. Par exemple, si on se restreint au simple W3C, on obtient déjà ceci : http://www.w3.org/TR/
Rien que là-dedans, si on ne s'intéresse qu'aux CSS, on a ceci : http://www.w3.org/TR/2011/PR-CSS2-20110412/ soit un PDF de 487 pages. Et encore, ça, c'est humainement assimilable par une seule personne. Je les avais imprimées et reliées dans mon ancienne compagnie, et j'ai toujours l'ouvrage sous le coude aujourd'hui.
Une fois que tu as fini tout cela — et si tant est que tu ne t'intéresses toujours qu'au rendu du document — alors il faudra aussi tenir compte du fait qu'il est dynamique : il faudra le regénérer lorsque tu redimensionneras ta fenêtre ou que tu l'enverras vers un autre média (imprimante), mais également en fonction des événements reçus pendant et après la génération du document, par exemple le survol d'un élément qui doit déclencher les classes :hover qui, selon la façon dont elles sont écrites, peuvent influer sur le document entier. Et bien sûr, par tout ce qui est généré par le Javascript, ce qui inclut la définition et la mise en place d'un DOM ne serait-ce que pour disposer d'un langage permettant d'indiquer à quelle partie du document on souhaite toucher.
Bref : ce n'est pas forcément difficile en soi ni d'emblée, mais c'est extrêmement long à développer en entier et surtout, il est très difficile de garder l'ensemble cohérent au cours du temps, et de garantir ses performances par dessus le marché.