Forwarded from Dmitrii Demenev
Если коротко, то очень много случайно (incidental) сложности, которую сейчас нельзя исправить из-за обратной совместимости.
Если длинно,...
C++ в отличии от Rust не имеет полноценного механизма для эволюции языка. В Rust можно сделать обратно несовместимое изменение благодаря редакциям (аналоги C++14, C++17, ...). Разные редакции Rust всё равно совместимы на уровне промежуточных представлений, что позволяет безболезненно совмещать старый и новый код. В Rust могут завозить фичи или изменения раз в 6 недель вместо раз в 3 года с 6-летней задержкой в индустрии. Если ты на стабильном канале Rust, то гарантии стабильности такие же как и у редакций.
Для того, чтобы парсить грамматику C++ требуется интерпретатор C++. Это огромная проблема, так как написание инструментов для работы с C++ становится крайне сложным.
В C++ нет стандартного менеджера пакетов. Это замедляет разработку и усложняет добавление зависимостей. Это также фрагментирует экосистему C++.
В C++ есть концепции времени жизни и владения, но они не проверяются компилятором. Статические анализаторы могут частично с этим помогать, но не всегда.
Вывод типов в C++ достаточно сложная и непредсказуемая штука. SFINAE как метод специализации имеет свои подводные камни и проблемы.
Концепты в C++ это крутая вещь, но появились они очень поздно и из-за этого реализации стандартной библиотеки предоставляют трудночитаемые ошибки инстанцирования шаблонов.
C++ не имеет аналогов Send и Sync трейтов, которые делают написание корректного многопоточного кода доступным даже для начинающего.
std::variant не является полноценной альтернативой enum'ов Rust, так как называть поля std::variant нельзя, добавлять структуры можно только через создание обёрточных типов и нет проверки полноты. Для решения последней проблемы есть идиома visitor, но это сложно для восприятия и усложняет язык на практике.
Макросы в C++ чаще используются для создания мемов вроде русского си-кресты, чем для чего-то полезного из-за отсутствия гигиены в макросах и из-за отсутствия возможности генерировать код с помощью C++ кода. Constexpr это интересное направление развития, но C++ ещё не имеет reflexprs для полноценной кодогенерации.
Поддержка свойств цели компиляции (архитектура, ОС и прочее) происходит не на уровне языка, что приводит к фрагментации кодовой базы. Из-за этого нет возможности оптимальной реализации некоторых фундаментальных алгоритмов (например, std::midpoint на x86_64 не может быть оптимизирован за счёт техники "примитивного повышения").
C++ по умолчанию продвигает обработку ошибок через исключения, что имеет негативное влияние на производительность. В том же Google использование исключений запрещено C++ Style Guide.
Порядок полей структур в C++ опередяет расположение данных в памяти. Это свойство было унаследовано от C. Это приводит к замедлению кода, когда программисты не тратят своё драгоценное время подбирая нужную перестановку полей, чтобы всё работало хорошо. Есть техники вроде "сперва большие поля, а потом маленькие", но на это уходят ресурсы разработчика. Чаще всего всем пофиг и код просто неоптимальный.
Мутабельность переменных по умолчанию приводит к увеличению размера контекста, необходимого для оптимизации доступа к данным. Это приводит к ухудшению кодогенерации.
Стандартный C++ (не CUDA или SYCL) не может собираться в шейдеры для GPU. Это приводит к фрагментации экосистемы.
C++ не имеет ключевого слова restrict из C, которое позволяет производить оптимизации на основе ограниченного алиасинга. Это тоже замедляет C++.
Добавь проблемы с нарушением ODR (one-definition rule), из-за которых тратится время разработки (https://www.youtube.com/watch?v=FcQC19CX-AY).
==============================
Итог:
На C++ можно делать крутые вещи, но достигается это с помощью боли и страданий.
Если длинно,...
C++ в отличии от Rust не имеет полноценного механизма для эволюции языка. В Rust можно сделать обратно несовместимое изменение благодаря редакциям (аналоги C++14, C++17, ...). Разные редакции Rust всё равно совместимы на уровне промежуточных представлений, что позволяет безболезненно совмещать старый и новый код. В Rust могут завозить фичи или изменения раз в 6 недель вместо раз в 3 года с 6-летней задержкой в индустрии. Если ты на стабильном канале Rust, то гарантии стабильности такие же как и у редакций.
Для того, чтобы парсить грамматику C++ требуется интерпретатор C++. Это огромная проблема, так как написание инструментов для работы с C++ становится крайне сложным.
В C++ нет стандартного менеджера пакетов. Это замедляет разработку и усложняет добавление зависимостей. Это также фрагментирует экосистему C++.
В C++ есть концепции времени жизни и владения, но они не проверяются компилятором. Статические анализаторы могут частично с этим помогать, но не всегда.
Вывод типов в C++ достаточно сложная и непредсказуемая штука. SFINAE как метод специализации имеет свои подводные камни и проблемы.
Концепты в C++ это крутая вещь, но появились они очень поздно и из-за этого реализации стандартной библиотеки предоставляют трудночитаемые ошибки инстанцирования шаблонов.
C++ не имеет аналогов Send и Sync трейтов, которые делают написание корректного многопоточного кода доступным даже для начинающего.
std::variant не является полноценной альтернативой enum'ов Rust, так как называть поля std::variant нельзя, добавлять структуры можно только через создание обёрточных типов и нет проверки полноты. Для решения последней проблемы есть идиома visitor, но это сложно для восприятия и усложняет язык на практике.
Макросы в C++ чаще используются для создания мемов вроде русского си-кресты, чем для чего-то полезного из-за отсутствия гигиены в макросах и из-за отсутствия возможности генерировать код с помощью C++ кода. Constexpr это интересное направление развития, но C++ ещё не имеет reflexprs для полноценной кодогенерации.
Поддержка свойств цели компиляции (архитектура, ОС и прочее) происходит не на уровне языка, что приводит к фрагментации кодовой базы. Из-за этого нет возможности оптимальной реализации некоторых фундаментальных алгоритмов (например, std::midpoint на x86_64 не может быть оптимизирован за счёт техники "примитивного повышения").
C++ по умолчанию продвигает обработку ошибок через исключения, что имеет негативное влияние на производительность. В том же Google использование исключений запрещено C++ Style Guide.
Порядок полей структур в C++ опередяет расположение данных в памяти. Это свойство было унаследовано от C. Это приводит к замедлению кода, когда программисты не тратят своё драгоценное время подбирая нужную перестановку полей, чтобы всё работало хорошо. Есть техники вроде "сперва большие поля, а потом маленькие", но на это уходят ресурсы разработчика. Чаще всего всем пофиг и код просто неоптимальный.
Мутабельность переменных по умолчанию приводит к увеличению размера контекста, необходимого для оптимизации доступа к данным. Это приводит к ухудшению кодогенерации.
Стандартный C++ (не CUDA или SYCL) не может собираться в шейдеры для GPU. Это приводит к фрагментации экосистемы.
C++ не имеет ключевого слова restrict из C, которое позволяет производить оптимизации на основе ограниченного алиасинга. Это тоже замедляет C++.
Добавь проблемы с нарушением ODR (one-definition rule), из-за которых тратится время разработки (https://www.youtube.com/watch?v=FcQC19CX-AY).
==============================
Итог:
На C++ можно делать крутые вещи, но достигается это с помощью боли и страданий.
YouTube
Антон Полухин — C++ трюки из userver
Подробнее о конференции C++ Russia: https://jrg.su/9Sszhd
— —
Антон рассказывает о новых C++ трюках и приемах:
— LazyPrvalue;
— Обнаружение ODR violation из C++ кода;
— Самая чудная bimap.
В чате конференции С++ Russia уже обсуждался последний трюк с чудной…
— —
Антон рассказывает о новых C++ трюках и приемах:
— LazyPrvalue;
— Обнаружение ODR violation из C++ кода;
— Самая чудная bimap.
В чате конференции С++ Russia уже обсуждался последний трюк с чудной…
🔥13👍3👏3❤1
Media is too big
VIEW IN TELEGRAM
Как бы вы объяснили своей бабушке за минуту, что такое нейросеть?
Пока вы думаете, как это могло бы быть, Никита Линдеманн, DS-инженер Cloud․ru дал ответ🧐
Смотрите и отправляйте друзьям и бабушкам🧑🎓
Пока вы думаете, как это могло бы быть, Никита Линдеманн, DS-инженер Cloud․ru дал ответ
Смотрите и отправляйте друзьям и бабушкам
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥9❤7
Меньше месяца остается до GO Cloud – масштабной облачной конференции 🐈
Немного приоткроем закулисье и расскажем, что вас ждет:
▫️ Мир open source и его последние разработки
▫️ Как облака влияют на бизнес: реальные кейсы российских компаний
▫️ Обсужение: SDS, SDN, Serverless и не только
Поделимся последними тенденциями и расскажем о сложностях при использовании облачных технологий.
🟢 Регистрируйся на сайте 🟢
Немного приоткроем закулисье и расскажем, что вас ждет:
Поделимся последними тенденциями и расскажем о сложностях при использовании облачных технологий.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥10👍7
This media is not supported in your browser
VIEW IN TELEGRAM
Как успешно пройти собеседование в it-компанию?
В новом выпуске подкаста обсудили эту животрепещущую тему с Антоном Непша, senior frontend-разработчиком.
Поговорили про:
▫️ Подходы к собеседованиям в России и за рубежом
▫️ Стратегии подготовки к собеседованиям, важность изучения технологий и решения практических задач
▫️ Выбор между фрилансом и полной занятостью
▫️ Будущее технологий и важность работы в команде
А какие у вас лайфхаки в подготовке к собесам? Делитесь в комментариях🥰
🟢 Смотреть на YouTube 🟢
@cloudrutech
В новом выпуске подкаста обсудили эту животрепещущую тему с Антоном Непша, senior frontend-разработчиком.
Поговорили про:
А какие у вас лайфхаки в подготовке к собесам? Делитесь в комментариях
@cloudrutech
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥11❤7👏2
Всех, кто занимается процессами CI/CD, ждем на нашем стенде на DevOpsConf 4 и 5 марта!
▫️ Мы подготовили новые интересные активности, за участие в которых можно получить качественный мерч
▫️ Не оставим вас и без интересных докладов во второй день конференции
Каких, смотри в карточках выше👀
▫️ По традиции разыграем среди участников нашего стенда PS5 Steam Deck
До встречи на стенде🐈
Каких, смотри в карточках выше👀
До встречи на стенде
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥14❤9👨💻3
This media is not supported in your browser
VIEW IN TELEGRAM
Ждём всех завтра на нашем стенде 😎
А стенд у нас классный! Если вы будете на DevOpsConf не забудьте попытать удачу в розыгрыше SteamDeck🍀
А стенд у нас классный! Если вы будете на DevOpsConf не забудьте попытать удачу в розыгрыше SteamDeck
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥45👍11❤9🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
Второй день на конференции DevOpsConf и розыгрыш Steam Deck 💗
Поздравляем и завидуем всей командой!
Поздравляем и завидуем всей командой!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥13👍11🦄5
От опытных DevOps-инженеров переходим к начинающим IT-специалистам
➡️ Сегодня мы едем на карьерный форум для студентов, недавних выпускников и молодых специалистов IT-направлений - «Найти IT»
Ждем вас на нашем стенде, где расскажем про:
▫️ Работу в Cloud․ru
▫️ Разработку наших продуктов
▫️ Стажировки и рекомендации по трудоустройству
Помимо этого, можно принять участие в крутых активностях и получить мерч👀
До встречи!
Ждем вас на нашем стенде, где расскажем про:
Помимо этого, можно принять участие в крутых активностях и получить мерч👀
До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄16❤9🔥8👨💻4👍2
Media is too big
VIEW IN TELEGRAM
🚀 Новый выпуск подкаста на нашем канале! 🚀
В этом выпуске мы поговорим о невероятном пути Жени, который сменил профессию пожарного-спасателя на фронтенд-разработчика в Авито. Он поделится своими секретами успеха, важностью мотивации и саморазвития в IT.
🔥 Темы выпуска:
▫ История перехода: от пожарного до разработчика.
▫ Советы по саморазвитию и организации жизни.
▫ Как подготовиться к собеседованию и техническим вопросам.
▫ Советы по оптимизации рабочего места и выбору оборудования.
▫ Рекомендации по обучению и развитию.
🟢 Смотреть на YouTube 🟢
@cloudrutech
В этом выпуске мы поговорим о невероятном пути Жени, который сменил профессию пожарного-спасателя на фронтенд-разработчика в Авито. Он поделится своими секретами успеха, важностью мотивации и саморазвития в IT.
🔥 Темы выпуска:
@cloudrutech
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍9🔥8
У нас открылась оплачиваемая стажировка для AppSec-инженеров уровня junior+
Думаем, не стоит вам рассказывать, насколько сейчас востребовано направление Application Security
Мы приглашаем начинающих IT-специалистов обучиться актуальным технологиям, экспертно прокачаться и стать частью команды Cloud․ru
🗓Прием заявок на участие в программе открыт до 6 апреля
Условия, критерии отбора и этапы стажировки можно найти по ссылке ниже:
@cloudrutech
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👨💻10🥰8👍4🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Что внутри нашей новой облачной платформы и какие сервисы мы готовы предложить
Расскажеми покажем 21 марта в треке «Грани облака» на конференции GoCloud.
🟢 В программе:
😶🌫️ обзор сервисов новой платформы;
😶🌫️ разработка cloud native приложений и микросервисов;
😶🌫️ работа с большими данными и объектным хранилищем;
😶🌫️ архитектура SDS;
😶🌫️ построение сложных приложений без виртуальных машин в прямом эфире.
Приходите офлайн, чтобы лично задать вопросы экспертам и подобрать решения для ваших задач, или подключайтесь онлайн. Вход бесплатный.
Посмотреть программу и зарегистрироваться на GoCloud можно на сайте⬅️
Расскажем
Приходите офлайн, чтобы лично задать вопросы экспертам и подобрать решения для ваших задач, или подключайтесь онлайн. Вход бесплатный.
Посмотреть программу и зарегистрироваться на GoCloud можно на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍11🔥10👾1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14😎12❤8🌚4😁1