> Позвольте узнать, что вы можете сказать по поводу прочитанного?
Зачем забивать на стандартные вещи, типа исключений, пространств имён, фишки из libstdc++ (iostream, ...), стараться использовать шаблоны по-минимуму, зачем использовать HTML в комментариях, зачем так коряво оформлять код, зачем использовать {dynamic,static,const}_cast, зачем стремиться к поддержке компиляторов, которые уже не поддерживаются производителями?
Зачем вообще использовать С++? Низкоуровневую часть на С, высокоуровневую логику -- на чём-то типа Lisp. Для такого масштабного проекта не грех написать свой интерпретатор/компилятор, заодно обеспечив 100% портируемость.
> Зачем вообще использовать С++? Низкоуровневую часть на С, высокоуровневую логику -- на чём-то типа Lisp. Для такого масштабного проекта не грех написать свой интерпретатор/компилятор, заодно обеспечив 100% портируемость.
К счастью, я не работаю в Mozilla. Конечно, правильнее было бы сделать примерно так, как ты и сказал, но Mozilla идёт корнями от Netscape, который был написан на C++.
Очевидно, что им показалось проще попытаться дописать то, что есть, вместо того, чтобы переписать с нуля.
Как полиморфизм времени _компиляции_ влияет на скорость работы? Размер кода увеличивается, понятно, но насколько это будет критично по отношению скорости?
>Зачем вообще использовать С++? Низкоуровневую часть на С, высокоуровневую логику -- на чём-то типа Lisp. Для такого масштабного проекта не грех написать свой интерпретатор/компилятор, заодно обеспечив 100% портируемость.
Mozilla растёт из таких старинных времён, когда исключения и пространства имён были неподдерживаемыми. Думаю, это были вообще внутрикорпоративные стандарты Netscape-а. Это первая причина.
Думаю, если откомпилированный gcc плагин к фаерфоксу бросит исключение во внешний, откомпилированный MSVC++ модуль, будет что-нибудь плохое. Это вторая причина.
Ну а стабильность и консистентность это почти всегда хорошо. Если Пупкин будет писать с исключениями, а Хряпкин будет писать с кодами возврата, они долго будут ругаться между собой, вместо того, чтобы делать полезную работу.
Кстати, попытки интегрировать исключения в XPCOM были, не знаю, насколько удачные.
Собственно все, кому не нравится фаерфокс - могут переписать его на бусте и STL-е, могут принять участие в разработке Konqueror-а, вариантов ведь много. Вот только факт остаётся фактом - IE и Firefox два популярнейших браузера, и оба не используют исключений (первый, по крайней мере, в публичных интерфейсах).
Вообще, на самом деле, в фаерфоксе достаточно интересный подход, фактически это чистый C с небольшими примесями C++ там, где это реально помогает.