Optymalizacja czy nadinterpretacja?
Wobec doniesień na temat fantastycznych rezultatów w testach przeglądarki Internet Explorer 9 nie mogło się obejść bez zgrzytu, jakim było odkrycie, że Internet Explorer 9 na testach… Oszukuje. A przynajmniej wielu tak nazywa zachowanie nowej wersji przeglądarki.
Wszystko za sprawą optymalizacji jakimi obdarzono w IE9 nowy silnik JavaScript, Chakra. W szczególe kontrowersje dotyczą metody eliminacji/zmiany fragmentów kodu Java, rozpoznawanych przez silnik jako ‘dead code’. Wyjaśnienie tego mechanizmu znajduje się w linkach powyżej, natomiast problemem był błąd w tym algorytmie, który powodował, że IE9 testy match-cordic SunSpider wykonywał dziesięciokrotnie szybciej niż konkurencja (co wpływało na całościową średnią testu). Nie przeszkodziło to poprowadzić przez internet triumfalnej fali entuzjazmu nt. nowej wersji tej przeglądarki. Po usunięciu błędu wyniki były mniej szokujące, IE9 wrócił na swoje miejsce w szeregu, a cały mechanizm ‘dead code elimination’ został wzięty pod lupę.
O co tyle krzyku? Młodsza część czytelników może nie pamiętać czasów, kiedy podczas agonii Netscape’a jak wiodącej przeglądarki internetowej, swoje pięć (a nawet dziesięć) minut w historii miał Internet Explorer (wtedy w wersji ~4). Wtedy też za sprawą swobodnej interpretacji standardów przez tą przeglądarkę upowszechniło się niechlujstwo w pisaniu stron (‘błędy? E, przeglądarka to jakoś pokazuje’) oraz dwa kierunki rozwoju elementów html (wg. W3C i wg. MS). Dlatego o tyle nadinterpretacje w Chakra są niebezpieczne, bo dopuszczają do dowolności, która luzuje rygory porządnego i optymalnego kodowania.