Очередной #дайджест по С++:
✍️ Недостатки корутин в C++
Эта статья написана с целью подчеркнуть некоторые риски, связанные с переносом базы кода на использование корутин.
✍️ Неопределённое поведение в C/C++ и приёмы против лома
Rust-разработчиков бесит неопределенное поведение в С++, поэтому автор предлагает погрузиться в эту тему как можно глубже.
✍️ Базовый набор для решения задач на LeetCode/Codeforces
Описаны основные тактики решения популярных на собеседованиях задач.
✍️ Как мы за один день наняли много C++ разработчиков
Статья будет полезна тимлидам, ищущим пополнение в команду.
✍️ Муравьиный алгоритм | Задача коммивояжёра
О классическаяой комбинаторной задаче, в которой необходимо найти самый короткий маршрут, проходящий через все заданные города, и вернуться в начальную точку.
✍️ Недостатки корутин в C++
Эта статья написана с целью подчеркнуть некоторые риски, связанные с переносом базы кода на использование корутин.
✍️ Неопределённое поведение в C/C++ и приёмы против лома
Rust-разработчиков бесит неопределенное поведение в С++, поэтому автор предлагает погрузиться в эту тему как можно глубже.
✍️ Базовый набор для решения задач на LeetCode/Codeforces
Описаны основные тактики решения популярных на собеседованиях задач.
✍️ Как мы за один день наняли много C++ разработчиков
Статья будет полезна тимлидам, ищущим пополнение в команду.
✍️ Муравьиный алгоритм | Задача коммивояжёра
О классическаяой комбинаторной задаче, в которой необходимо найти самый короткий маршрут, проходящий через все заданные города, и вернуться в начальную точку.
Считаете ли вы, что в вашей компании уделяется слишком много времени на ненужные созвоны и мало времени на разработку?
#интерактив
#интерактив
❗Ищем копирайтера
Нам нужен человек, который:
— Любит IT и русский язык.
— Понимает разницу между бэкендом и фронтендом, OWASP и MISRA, функциональным программированием и ООП, микроконтроллером и миникомпьютером, UX и UI.
— Имеет опыт работы от 1 года.
— Будет плюсом, если вы программируете на каком-нибудь языке на уровне стажера/джуна.
Что нужно делать:
— Готовить подборки, ТОПы книг, ютуб- и телеграм-каналов по языкам программирования.
— Делать расшифровки топовых Ютуб-роликов по теме программирования и оформлять их в виде статей.
— Готовить новостные заметки.
— Актуализировать старые статьи.
— Брать интервью у экспертов. Мы поможем с поиском экспертов.
— Иногда писать небольшие рекламные посты в телеграм.
— Писать статьи с кодом, переводить статьи (по желанию, оплачивается отдельно).
Можно использовать нейронки?
— Да, главное, чтобы материал получился интересный.
Условия:
— Белая зарплата: 50 000 руб.
— Возможность работать удаленно.
👉Присылайте свои резюме: [email protected]
Нам нужен человек, который:
— Любит IT и русский язык.
— Понимает разницу между бэкендом и фронтендом, OWASP и MISRA, функциональным программированием и ООП, микроконтроллером и миникомпьютером, UX и UI.
— Имеет опыт работы от 1 года.
— Будет плюсом, если вы программируете на каком-нибудь языке на уровне стажера/джуна.
Что нужно делать:
— Готовить подборки, ТОПы книг, ютуб- и телеграм-каналов по языкам программирования.
— Делать расшифровки топовых Ютуб-роликов по теме программирования и оформлять их в виде статей.
— Готовить новостные заметки.
— Актуализировать старые статьи.
— Брать интервью у экспертов. Мы поможем с поиском экспертов.
— Иногда писать небольшие рекламные посты в телеграм.
— Писать статьи с кодом, переводить статьи (по желанию, оплачивается отдельно).
Можно использовать нейронки?
— Да, главное, чтобы материал получился интересный.
Условия:
— Белая зарплата: 50 000 руб.
— Возможность работать удаленно.
👉Присылайте свои резюме: [email protected]
Имплементация
Имплементация означает создание кода, который реализует определенную функциональность или алгоритм на конкретном языке программирования. Это процесс написания программного кода, который осуществляет определенное поведение, описанное в спецификации или дизайне.
В C++ «имплементация» означает написание кода, который реализует методы, функции или классы, описанные в заголовочных файлах (header files). Заголовочные файлы содержат объявления (прототипы) функций и классов, а файлы с исходным кодом (.cpp) содержат реализацию этих функций и методов.
#код
Имплементация означает создание кода, который реализует определенную функциональность или алгоритм на конкретном языке программирования. Это процесс написания программного кода, который осуществляет определенное поведение, описанное в спецификации или дизайне.
В C++ «имплементация» означает написание кода, который реализует методы, функции или классы, описанные в заголовочных файлах (header files). Заголовочные файлы содержат объявления (прототипы) функций и классов, а файлы с исходным кодом (.cpp) содержат реализацию этих функций и методов.
#код
🔍Насколько легко «войти в айти»?
IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.
👉Пройдите наш 10-минутный опрос по ссылке.
IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.
👉Пройдите наш 10-минутный опрос по ссылке.
📖➕➕ ТОП-10 книг по языку программирования С++ в 2023 году
Подборка свежей литературы на русском языке для желающих постичь С++: язык микроконтроллеров, игровых движков, драйверов и высоконагруженных приложений.
Читать статью
Подборка свежей литературы на русском языке для желающих постичь С++: язык микроконтроллеров, игровых движков, драйверов и высоконагруженных приложений.
Читать статью
Предполагая, что buf является валидным указателем, в чем проблема в приведенном на картинке коде? Каким был бы альтернативный способ реализации этого, который позволил бы избежать этой проблемы?
Проблема в коде заключается в том, что условие --sz больше либо равно 0 всегда будет истинным, поэтому вы никогда не выйдете из цикла while (поэтому вы, вероятно, в конечном итоге испортите память или вызовете какое-то нарушение памяти или какой-либо другой программный сбой, в зависимости от того, что вы делаете внутри цикла). Причина, по которой условие, что--sz больше либо равно 0, всегда будет истинной, заключается в том, что тип sz равен size_t. size_t на самом деле просто псевдоним одного из основных беззнаковых целочисленных типов. Следовательно, поскольку sz не имеет знака, оно никогда не может быть меньше нуля (поэтому условие никогда не может быть ложным).
#вопросы_с_собеседований
Проблема в коде заключается в том, что условие --sz больше либо равно 0 всегда будет истинным, поэтому вы никогда не выйдете из цикла while (поэтому вы, вероятно, в конечном итоге испортите память или вызовете какое-то нарушение памяти или какой-либо другой программный сбой, в зависимости от того, что вы делаете внутри цикла). Причина, по которой условие, что--sz больше либо равно 0, всегда будет истинной, заключается в том, что тип sz равен size_t. size_t на самом деле просто псевдоним одного из основных беззнаковых целочисленных типов. Следовательно, поскольку sz не имеет знака, оно никогда не может быть меньше нуля (поэтому условие никогда не может быть ложным).
#вопросы_с_собеседований
Приходилось ли вам переходить на более младшую позицию в другую компанию? Например, с Senior на Middle при релокации.
#интерактив
#интерактив
Виртуальное наследование
Виртуальное наследование — это механизм, который позволяет решать проблемы, связанные с алмазной проблемой (diamond problem), которая возникает, когда один класс наследуется от двух классов, которые в свою очередь имеют общий базовый класс. В такой ситуации может возникнуть неоднозначность, какой именно метод или данные выбрать из общего базового класса.
Виртуальное наследование решает эту проблему путем создания единственного экземпляра общего базового класса для всех классов, которые наследуют его. Это гарантирует, что не будет создано несколько копий общих данных и методов при множественном наследовании. Виртуальное наследование применяется с использованием ключевого слова virtual перед базовым классом в объявлении наследования.
#код
Виртуальное наследование — это механизм, который позволяет решать проблемы, связанные с алмазной проблемой (diamond problem), которая возникает, когда один класс наследуется от двух классов, которые в свою очередь имеют общий базовый класс. В такой ситуации может возникнуть неоднозначность, какой именно метод или данные выбрать из общего базового класса.
Виртуальное наследование решает эту проблему путем создания единственного экземпляра общего базового класса для всех классов, которые наследуют его. Это гарантирует, что не будет создано несколько копий общих данных и методов при множественном наследовании. Виртуальное наследование применяется с использованием ключевого слова virtual перед базовым классом в объявлении наследования.
#код
Очередной #дайджест по С++:
🤖 Базовый набор для решения задач на LeetCode/Codeforces, ч.2 Ассоциативные Контейнеры C++
Продолжение полезной статьи для подготовки к собеседованиям.
🤖 Распространённые паттерны опечаток при программировании
Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты.
🤖 Smart-contract developer Road Map
В статье описано, какими навыками вам нужно обладать для того, что бы стать smart-contract разработчиком.
🤖 Быстрый двоичный поиск без ветвления
🤖 C и C++ отдают приоритет производительности, а не правильности
Статья-мнение со сравнением разных языков.
🤖 Базовый набор для решения задач на LeetCode/Codeforces, ч.2 Ассоциативные Контейнеры C++
Продолжение полезной статьи для подготовки к собеседованиям.
🤖 Распространённые паттерны опечаток при программировании
Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты.
🤖 Smart-contract developer Road Map
В статье описано, какими навыками вам нужно обладать для того, что бы стать smart-contract разработчиком.
🤖 Быстрый двоичный поиск без ветвления
🤖 C и C++ отдают приоритет производительности, а не правильности
Статья-мнение со сравнением разных языков.
🤖 Generative AI: как ускорить разработку с помощью Github Copilot и Databricks English SDK
Давайте разберемся, что же могут помощники и SDK, а чего от них ожидать еще рано. Рассмотрим наиболее популярные решения от Github и Databricks: варианты использования и их ограничения. Также поговорим о перспективах профессии AI-инженера.
🔗 Читать статью
🔗 Зеркало
Давайте разберемся, что же могут помощники и SDK, а чего от них ожидать еще рано. Рассмотрим наиболее популярные решения от Github и Databricks: варианты использования и их ограничения. Также поговорим о перспективах профессии AI-инженера.
🔗 Читать статью
🔗 Зеркало
Могут ли статические функции быть виртуальными в C++?
В C++ статическая функция-член класса не может быть виртуальной. Кроме того, статические функции-члены класса не могут быть const и volatile.
В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.
#код
В C++ статическая функция-член класса не может быть виртуальной. Кроме того, статические функции-члены класса не могут быть const и volatile.
В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.
#код
Инициализация полей класса через конструкторы
В C++ поля класса (также называемые членами класса или атрибутами) могут быть инициализированы через конструкторы класса. Конструкторы — это специальные методы класса, которые вызываются при создании объекта этого класса и могут использоваться для установки начальных значений его полей.
Инициализация полей через конструкторы является хорошей практикой, так как она позволяет установить начальные значения полей объекта сразу при его создании, обеспечивая более надежное и читаемое поведение программы.
#код
В C++ поля класса (также называемые членами класса или атрибутами) могут быть инициализированы через конструкторы класса. Конструкторы — это специальные методы класса, которые вызываются при создании объекта этого класса и могут использоваться для установки начальных значений его полей.
Инициализация полей через конструкторы является хорошей практикой, так как она позволяет установить начальные значения полей объекта сразу при его создании, обеспечивая более надежное и читаемое поведение программы.
#код