Какие компиляторы «принято» использовать в клиентских приложениях для разных платформ (Windows, MacOS etc)?
Правильно ли я понимаю, что для клиентских приложений, например, в gamdev'е, для target'а IOS, Android, MacOS преимущественно, используют Clang/LLVM, а для Windows - MSVC ? Или всё и для Windows компилируют на Clang/LLVM ?
Вопрос заключается именно в том, является ли такой подход "Стандартом", а не наличием единичных случаев-исключений :)
floppa322 , стандартом является только осознанный выбор конкретного транслятора исходя из условий задачи.
Человека, который будет настаивать на чем-то одном, можно не слушать.
Инструмент всегда выбирается от условий задачи.
В своей работе я регулярно использую все три заявленных инструмента на равных условиях и для своих целей.
LLVM/Clang is the primary (or only) compiler for many gaming platforms these days. iOS, Android, PlayStation 4, MacOS/OSX, and Nintendo Switch all use Clang as their default native compiler.
XBox One is only supported by Microsoft's compiler, and their compiler is also still the most commonly used for Windows.
Поэтому-то у меня и возник такой вопрос )
Ну то есть, может быть, для real time приложений, критическим к задержке, MSVC будет более производительный код генерить для винды. Просто предположение
floppa322, в цитате все правильно не смотря даже на то, что формально автор NDA нарушил и должен быть наказан как минимум двумя очень влиятельными компаниями.
Именно так это и звучит. Задача: запустить код на платформе Mac. Исследование показывает что сборка кода на маке допускается только средствами среды Apple XCode, в составе которой используется не просто Clang LLVM, а Apple Clang - ответвление общего транслятора со своими внутренними правками под нужды платформы.
Вывод исходя из задачи: Использовать для сборки кода среду Apple XCode и транслятор Apple Clang.
MSCL более тесно связан с экосистемой майков и по определению генерирует более подходящий для экосистемы код. Если задача устанавливает такие требования, то использовать MSCL является верным решением.
Это все и означает выбор инструмента от задачи. Просто сам выбор должен быть сделан не от балды, а в результате исследования предметной среды с целью соблюдения условий задачи.
Евгений Шатунов, ну просто я думал, что в каких-то предметных обастях или, может быть, даже не относительно предметной области и требований, а просто относительно платформы тот или иной компилятор является "стандартом" в 95% случаев
Просто, если всё протестировано, например, на clang'е, то ещё раз это делать, например, для MSVC не особо бы хотелось, если можно было бы обойтись одним компилятором )
floppa322, понимаешь...
Ты очень близок в своих словах к правоте при современном порядке и при современных нравах. Так и есть. Довольно большая часть людей считает просто стандартом ту или иную технологию исходя из предпосылок. Просто все так делают и чем мы лучше остальных?
И это неправильно. К этой ситуации нужно подходить критически. Я не хочу быть лентяем и вместе со всеми забвенно шагать ровной шеренгой в дивный новый мир. Твое решение находится в твоих руках.
Плюс, если все протестировано клангом, то остальными протестировать нужно в буквальнейшем смысле. Это послужит только на благо стабильности продукта. Мы должны писать свой код исключительно в рамках стандарта, исключительно для удобства чтения этого кода нами же или нашими сотрудниками и добиваться однотипного поведения своего кода при сборке всеми популярными трансляторами языка.
А иначе получится как на одной моей прошлой работе, где ребятки в пять лиц полгода исправляли дичайшие сбои просто при переходе с 2015й студии на 2017ю. Там люди просто не думают о том что я тут написал и живут так, как написал сейчас ты.
Сложившийся порядок проверку временем не проходит. Его нужно менять на более критический и прагматичный подход. О таком подходе я и стараюсь рассказывать при каждой удобной возможности.
Кажется, что всё-таки чаще Clang/LLVM, тк он под капотом умеет компилировать под MSVC ABI, если компилируешь под винду, и GNU ABI, когда компилируешь под Linux.