Существует ли LTS для C++, если нет, то как?

моя цель — идти в ногу с C++. Я собираюсь изучать поэтапное обучение. Я хочу использовать для этого C++ и Python. Итак, управление версиями — это часть вещей, которые я хочу знать.

Моя точка зрения:

  1. Меня учили на Java. В Java есть LTS, то есть Java 8. Итак, мой учитель научил меня Java 8.
  2. Перешел на Go. Используйте политику выпуска, то есть каждые два основных выпуска. Поэтому я всегда использую последнюю версию.
  3. Изучил Питон. У Python есть политика окончания срока службы. Итак, я использую Python 3.12.
  4. Используйте React и Angular для Интернета. Узел имеет LTS. Итак, я использую текущий LTS. Примечание. После некоторых размышлений я так и не узнал, какую версию JavaScript использую. Это обрабатывается фреймворком.

Я ищу C++ и не могу найти C++ LTS. Могу ли я узнать, получают ли C++11 исправления безопасности?

Не существует единого компилятора C++. Есть три основных: Clang, GCC, MSVC. У каждого из них есть стабильные версии, а более старые версии, по-видимому, получают минимальные обновления.

HolyBlackCat 05.05.2024 12:32

C++ имеет скользящий трехлетний план выпуска начиная с C++11, т. е. (C++14, C++17, C++20 и C++23 и т. д.), см. Текущее состояние стандарта C++. Исправления безопасности устанавливаются отдельными поставщиками C++.

Richard Critten 05.05.2024 12:33

Настоящего «LTS» не существует. Поставщики компиляторов и их среда выполнения C(++) имеют ABI. Этот ABI в основном стабилен и редко ломается (именно поэтому код C++98 в основном хорошо компилируется в новых версиях среды выполнения). Если возникает необходимость в исправлении, ABI не ломается, но меняется реализация среды выполнения. . В этом отношении C++ является инкрементным. В него добавляются новые вещи и очень-очень редко устаревают другие вещи. std::vector<bool>, например, считается ошибкой. но существует с C++98, потому что никто не хочет нарушать ABI.

Raildex 05.05.2024 12:33

все эти упомянутые языки имеют «среду выполнения», которая получает обновления, в то время как C++ компилируется непосредственно в ассемблер .... поэтому идея «исправления безопасности» не применима к языку, а вместо этого применяется к программному обеспечению, написанному на этом языке. , поэтому не ожидайте увидеть «обновление безопасности C++», однако язык улучшается, но это улучшение не влияет на код, который уже скомпилирован в ассемблер, могут быть обновления «стандартной библиотеки платформы», такой как Windows «Распространяемые пакеты Visual C++».

Ahmed AEK 05.05.2024 12:36

В конечном счете, если вы разработчик библиотек, вы обычно хотите поддерживать три крупных компилятора и несколько последних стабильных версий каждого из них. Если вы разработчик настольных приложений, вы обычно можете просто использовать последнюю версию своего любимого компилятора (если только этот компилятор не MSVC, вам понадобится другой для целей, отличных от Windows). Более экзотические платформы могут ограничивать или не ограничивать вас определенными версиями определенных компиляторов.

HolyBlackCat 05.05.2024 12:36

Существует стандарт C++, который обновляется каждые несколько лет. И на самом деле в C++ нет понятия конца жизни. Время от времени некоторые вещи устаревают, а затем удаляются из языка (но обычно у вас есть годы, чтобы адаптироваться). И NO C++11 не будет получать исправления, иногда это делают библиотеки времени выполнения (динамически подключаемые библиотеки), и, возможно, это то, что вы ищете?

Pepijn Kramer 05.05.2024 12:42

@AhmedAEK Не совсем верно, иногда библиотеки времени выполнения C++ (скомпилированные версии) обновляются из-за исправлений безопасности (или даже небольших исправлений). Но конечно, это не что иное, как полные обновления среды выполнения Java или Python.

Pepijn Kramer 05.05.2024 12:44

Могу ли я узнать, получают ли C++11 исправления безопасности? -- За безопасность отвечает ваш собственный код и приложение, а не сам язык C++. Например, если в вашем приложении произошло переполнение буфера (которое может быть использовано для взлома вашего приложения), вы несете ответственность за исправление приложения, поскольку язык C++ не имеет такой возможности, позволяющей проверять ваши ошибки «внезапно». коробка".

PaulMcKenzie 05.05.2024 15:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
8
158
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Java — продукт компании Oracle. В этом контексте LTS имеет смысл. C++ — это язык, реализованный многими поставщиками. Отдельные компиляторы могут иметь LTS, но к самому C++ это не относится.

Стандарт есть стандарт, и у большинства компиляторов есть средства для обеспечения соблюдения более ранних стандартов, по крайней мере, до C++98 (первого стандарта ISO).

Java не определен органом по стандартизации, поэтому LTS более важен. Кроме того, в Java есть виртуальная машина времени выполнения, где C++ компилируется в собственный код, поэтому никакая среда выполнения не включена в исполняемый файл или не предоставляется ОС.

Просто слегка упрощенно. Есть также много поставщиков Java.

Anonymous 05.05.2024 13:13

@Anonymous Существуют и другие виртуальные машины Java, но вопрос относится к Java 8, которая является продуктом Oracle.

Clifford 05.05.2024 15:45

Другие вопросы по теме