История изменений
Исправление EXL, (текущая версия) :
Что отсталость/продвинутость компилятора измеряется не только поддержкой стандартов.
Да, архитектурно Clang/LLVM гораздо лучше GCC и является по-настоящему UNIX-Way’ным компилятором, части которого в соответствии с этой концепцией и философией активно переиспользуются. От этого компилятора легко отделить front-end парсер C/C++/ObjC/ObjC++ и использовать его для разработки IDE, положив на его плечи корректный разбор, автодополнение, и подсветку кода. Благодаря этой модульности на основе libclang можно делать высокоточные инструменты вроде статических анализаторов и утилит, форматирующих код в определённом стиле. Ну и главное – back-end в виде LLVM можно успешно переиспользовать для других языков программирования.
GCC не соответствует парадигме UNIX-Way и является монолитным. Внутри него есть, конечно, front-end и back-end части, но они сильно связаны друг с другом, а их переиспользование существенно затруднено, в том числе и по чисто идеологическим причинам и мотивам, которые связанны с его лицензионной политикой.
Однако, GCC должен развиваться и быть конкурентноспособным. Вообще создание Clang/LLVM сильно подстегнуло развитие GCC: вспомним нулевые годы и вялотекущую шизофазию «в год по чайной ложке» и сравним эту ситуацию с сегодняшней.
Конкуренция между GCC и Clang идёт на пользу всем компиляторам. Если один из них полностью проиграет, то всё скатится в совок и «стабильность», которая как известно – смерть.
Исходная версия EXL, :
Что отсталость/продвинутость компилятора измеряется не только поддержкой стандартов.
Да, архитектурно Clang/LLVM гораздо лучше GCC и является по-настоящему UNIX-Way’ным компилятором, части которого в соответствии с этой концепцией и философией активно переиспользуются. От этого компилятора легко отделить front-end парсер C/C++/ObjC/ObjC++ и использовать его для разработки IDE, положив на его плечи корректный разбор, автодополнение, и подсветку кода. Благодаря этой модульности на основе libclang можно делать высокоточные инструменты вроде статических анализаторов и утилит, форматирующих код в определённом стиле. Ну и главное – back-end в виде LLVM можно успешно переиспользовать для других языков программирования.
GCC не соответствует парадигме UNIX-Way и является монолитным. Внутри него есть, конечно, front-end и back-end части, но они сильно связаны друг с другом, а их переиспользование существенно затруднено, в том числе и по чисто политическим причинам, которые связанны с его лицензией.
Однако, GCC должен развиваться и быть конкурентноспособным. Вообще создание Clang/LLVM сильно подстегнуло развитие GCC: вспомним нулевые годы и вялотекущую шизофазию «в год по чайной ложке» и сравним эту ситуацию с сегодняшней.
Конкуренция между GCC и Clang идёт на пользу всем компиляторам. Если один из них полностью проиграет, то всё скатится в совок и «стабильность», которая как известно – смерть.