моя цель — идти в ногу с C++. Я собираюсь изучать поэтапное обучение. Я хочу использовать для этого C++ и Python. Итак, управление версиями — это часть вещей, которые я хочу знать.
Моя точка зрения:
Я ищу C++ и не могу найти C++ LTS. Могу ли я узнать, получают ли C++11 исправления безопасности?
C++ имеет скользящий трехлетний план выпуска начиная с C++11, т. е. (C++14, C++17, C++20 и C++23 и т. д.), см. Текущее состояние стандарта C++. Исправления безопасности устанавливаются отдельными поставщиками C++.
Настоящего «LTS» не существует. Поставщики компиляторов и их среда выполнения C(++) имеют ABI. Этот ABI в основном стабилен и редко ломается (именно поэтому код C++98 в основном хорошо компилируется в новых версиях среды выполнения). Если возникает необходимость в исправлении, ABI не ломается, но меняется реализация среды выполнения. . В этом отношении C++ является инкрементным. В него добавляются новые вещи и очень-очень редко устаревают другие вещи. std::vector<bool>, например, считается ошибкой. но существует с C++98, потому что никто не хочет нарушать ABI.
все эти упомянутые языки имеют «среду выполнения», которая получает обновления, в то время как C++ компилируется непосредственно в ассемблер .... поэтому идея «исправления безопасности» не применима к языку, а вместо этого применяется к программному обеспечению, написанному на этом языке. , поэтому не ожидайте увидеть «обновление безопасности C++», однако язык улучшается, но это улучшение не влияет на код, который уже скомпилирован в ассемблер, могут быть обновления «стандартной библиотеки платформы», такой как Windows «Распространяемые пакеты Visual C++».
В конечном счете, если вы разработчик библиотек, вы обычно хотите поддерживать три крупных компилятора и несколько последних стабильных версий каждого из них. Если вы разработчик настольных приложений, вы обычно можете просто использовать последнюю версию своего любимого компилятора (если только этот компилятор не MSVC, вам понадобится другой для целей, отличных от Windows). Более экзотические платформы могут ограничивать или не ограничивать вас определенными версиями определенных компиляторов.
Существует стандарт C++, который обновляется каждые несколько лет. И на самом деле в C++ нет понятия конца жизни. Время от времени некоторые вещи устаревают, а затем удаляются из языка (но обычно у вас есть годы, чтобы адаптироваться). И NO C++11 не будет получать исправления, иногда это делают библиотеки времени выполнения (динамически подключаемые библиотеки), и, возможно, это то, что вы ищете?
@AhmedAEK Не совсем верно, иногда библиотеки времени выполнения C++ (скомпилированные версии) обновляются из-за исправлений безопасности (или даже небольших исправлений). Но конечно, это не что иное, как полные обновления среды выполнения Java или Python.
Могу ли я узнать, получают ли C++11 исправления безопасности? -- За безопасность отвечает ваш собственный код и приложение, а не сам язык C++. Например, если в вашем приложении произошло переполнение буфера (которое может быть использовано для взлома вашего приложения), вы несете ответственность за исправление приложения, поскольку язык C++ не имеет такой возможности, позволяющей проверять ваши ошибки «внезапно». коробка".
Java — продукт компании Oracle. В этом контексте LTS имеет смысл. C++ — это язык, реализованный многими поставщиками. Отдельные компиляторы могут иметь LTS, но к самому C++ это не относится.
Стандарт есть стандарт, и у большинства компиляторов есть средства для обеспечения соблюдения более ранних стандартов, по крайней мере, до C++98 (первого стандарта ISO).
Java не определен органом по стандартизации, поэтому LTS более важен. Кроме того, в Java есть виртуальная машина времени выполнения, где C++ компилируется в собственный код, поэтому никакая среда выполнения не включена в исполняемый файл или не предоставляется ОС.
Просто слегка упрощенно. Есть также много поставщиков Java.
@Anonymous Существуют и другие виртуальные машины Java, но вопрос относится к Java 8, которая является продуктом Oracle.
Не существует единого компилятора C++. Есть три основных: Clang, GCC, MSVC. У каждого из них есть стабильные версии, а более старые версии, по-видимому, получают минимальные обновления.