LINUX.ORG.RU

История изменений

Исправление 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 идёт на пользу всем компиляторам. Если один из них полностью проиграет, то всё скатится в совок и «стабильность», которая как известно – смерть.