47 Атрибутов Хорошего С-кода
Этот текст адресован когорте программистов на С(ях). Это не академические атрибуты из учебников это скорее правила буравчика оформления сорцов из реального prod(а). Некоторые приемы совпали с MISRA, некоторые с CERT-C. А кое-что является результатом множества итераций инспекций программ и перестроек после реальных инцидентов. В общем тут представлен обогащенный концентрат полезных практик программирования на С(ях).
https://habr.com/ru/post/679256/
#cpp #programming
👉 @cpp_lib
Этот текст адресован когорте программистов на С(ях). Это не академические атрибуты из учебников это скорее правила буравчика оформления сорцов из реального prod(а). Некоторые приемы совпали с MISRA, некоторые с CERT-C. А кое-что является результатом множества итераций инспекций программ и перестроек после реальных инцидентов. В общем тут представлен обогащенный концентрат полезных практик программирования на С(ях).
https://habr.com/ru/post/679256/
#cpp #programming
👉 @cpp_lib
Хабр
Атрибуты Хорошего С-кода (Хартия Си Программистов)
"Код надо писать единообразно, безобразно." "Хороший код, как кристалл - формируется годами." Этот текст адресован программистам на С(ях). Это не академические атрибуты из пыльных учебников, это...
👍8
Улучшенные итераторы с диапазонами в C++.
Есть еще больше причин предпочесть библиотеку ranges классической стандартной библиотеке шаблонов. Итераторы ranges поддерживают унифицированные правила поиска и обеспечивают дополнительные гарантии безопасности.
https://www.modernescpp.com/index.php/improved-iterators-with-ranges
#cpp #programming
👉 @cpp_lib
Есть еще больше причин предпочесть библиотеку ranges классической стандартной библиотеке шаблонов. Итераторы ranges поддерживают унифицированные правила поиска и обеспечивают дополнительные гарантии безопасности.
https://www.modernescpp.com/index.php/improved-iterators-with-ranges
#cpp #programming
👉 @cpp_lib
👍4
Идиома CRTP и написание общих функций в C++
Что такое идиома CRTP?
Термин CRTP (curiously recurring template pattern) появился в 1995 году в одноименной статье, написанной Джеймсом О. Коплином. Он предполагает специализацию базовых классов с использованием производных классов в качестве аргументов шаблона. Далее
#cpp #programming
👉 @cpp_lib
Что такое идиома CRTP?
Термин CRTP (curiously recurring template pattern) появился в 1995 году в одноименной статье, написанной Джеймсом О. Коплином. Он предполагает специализацию базовых классов с использованием производных классов в качестве аргументов шаблона. Далее
#cpp #programming
👉 @cpp_lib
👍9
FizzBuzz по-сениорски
- Добрый день, я на интервью на позицию старшего разработчика.
- Здравствуйте, давайте начнем с небольшого теста, пока я ваше CV смотрю. Напишите программу, которая выводила бы числа от 1 до, скажем, миллиарда, притом если число кратно трем, то вместо числа выводится Fizz, если кратно пяти, то Buzz, а если и трем, и пяти, то FizzBuzz.
Серьезно, FizzBuzz? Задачка для начальной школы, на сениорскую позицию? Ну ладно. Далее
#cpp #programming
👉 @cpp_lib
- Добрый день, я на интервью на позицию старшего разработчика.
- Здравствуйте, давайте начнем с небольшого теста, пока я ваше CV смотрю. Напишите программу, которая выводила бы числа от 1 до, скажем, миллиарда, притом если число кратно трем, то вместо числа выводится Fizz, если кратно пяти, то Buzz, а если и трем, и пяти, то FizzBuzz.
Серьезно, FizzBuzz? Задачка для начальной школы, на сениорскую позицию? Ну ладно. Далее
#cpp #programming
👉 @cpp_lib
👍17
Media is too big
VIEW IN TELEGRAM
Ночь бэкендеров в Яндекс Банке
Собеседования — это долго, скучно, иногда мучительно и не всегда понятно. Как вообще можно понять за пару часов, хочешь ли ты работать где-то в ближайшие пару лет? Поэтому в Финтехе Яндекса придумали кое-что получше — препати для тех, кто хочет взять компанию на тест-драйв. Можно бесконечно смотреть отзывы на Хабр Карьере, но лучше один раз увидеть всё своими глазами.
Ребята организуют подобные встречи уже не в первый раз, и в октябре собирают бэкендеров — чтобы совместить приятное с полезным: лично познакомиться с командой и руководством, услышать о продуктах в разработке от первых лиц, прошвырнуться по офису, подышать яндексовым воздухом и вообще приятно провести пятничный вечер.
Кормить будут. Вкусно. Поить тоже — бар прямо в офисе. А в промежутках между разговорами о невыносимой лёгкости бэкенд-бытия можно будет порубиться в PS5 с коллегами по цеху, выведать все инсайды у продакт-оунера и просто почилить. Если ты не в Москве, собирай чемоданы — ребята не будут дразнить кутежом в зуме, а купят билет и организуют трансфер.
P.S.: дресс-кода нет, но есть задачка с кодом. Если ты действительно бэкендер, то решишь её без труда и приглос у тебя в кармане! Подробности 👉 тут.
Собеседования — это долго, скучно, иногда мучительно и не всегда понятно. Как вообще можно понять за пару часов, хочешь ли ты работать где-то в ближайшие пару лет? Поэтому в Финтехе Яндекса придумали кое-что получше — препати для тех, кто хочет взять компанию на тест-драйв. Можно бесконечно смотреть отзывы на Хабр Карьере, но лучше один раз увидеть всё своими глазами.
Ребята организуют подобные встречи уже не в первый раз, и в октябре собирают бэкендеров — чтобы совместить приятное с полезным: лично познакомиться с командой и руководством, услышать о продуктах в разработке от первых лиц, прошвырнуться по офису, подышать яндексовым воздухом и вообще приятно провести пятничный вечер.
Кормить будут. Вкусно. Поить тоже — бар прямо в офисе. А в промежутках между разговорами о невыносимой лёгкости бэкенд-бытия можно будет порубиться в PS5 с коллегами по цеху, выведать все инсайды у продакт-оунера и просто почилить. Если ты не в Москве, собирай чемоданы — ребята не будут дразнить кутежом в зуме, а купят билет и организуют трансфер.
P.S.: дресс-кода нет, но есть задачка с кодом. Если ты действительно бэкендер, то решишь её без труда и приглос у тебя в кармане! Подробности 👉 тут.
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
[C++ Engine] Code Generation and Auto Hot Reloading
исходный код https://drive.google.com/file/d/1gxiX-Ur6pwqTYQAmm2-HwxePT7Qrp64w/view
#cpp #programming
👉 @cpp_lib
исходный код https://drive.google.com/file/d/1gxiX-Ur6pwqTYQAmm2-HwxePT7Qrp64w/view
#cpp #programming
👉 @cpp_lib
👍4
Media is too big
VIEW IN TELEGRAM
Джон Кармак: Doom, Quake, VR, AGI, программирование, видеоигры и ракеты | Lex Fridman Podcast
Джон Кармак - легендарный программист, сооснователь компании id Software и ведущий программист многих революционных видеоигр, включая Wolfenstein 3D, Doom, Quake и серию игр Commander Keen. Он также является основателем компании Armadillo Aerospace и на протяжении многих лет техническим директором Oculus VR.
0:00 - Introduction
1:57 - Programming languages
33:01 - Modern programming
43:03 - Day in the life
50:53 - Hard work
54:06 - Pizza and Diet Coke
56:50 - Setup
1:22:08 - id Software
1:54:58 - Commander Keen
2:01:44 - Hacker ethic
2:09:24 - Wolfenstein 3D
2:29:21 - Doom
2:43:42 - Quake
3:08:02 - John Romero
3:15:49 - Metaverse
3:44:11 - Elon Musk
3:50:06 - Mars
3:59:09 - Nuclear energy
4:02:47 - AGI
4:49:59 - Andrej Karpathy
4:52:57 - Martial arts
5:01:57 - Advice for young people
5:10:57 - Meaning of life
источник
#cpp #programming
👉 @cpp_lib
Джон Кармак - легендарный программист, сооснователь компании id Software и ведущий программист многих революционных видеоигр, включая Wolfenstein 3D, Doom, Quake и серию игр Commander Keen. Он также является основателем компании Armadillo Aerospace и на протяжении многих лет техническим директором Oculus VR.
0:00 - Introduction
1:57 - Programming languages
33:01 - Modern programming
43:03 - Day in the life
50:53 - Hard work
54:06 - Pizza and Diet Coke
56:50 - Setup
1:22:08 - id Software
1:54:58 - Commander Keen
2:01:44 - Hacker ethic
2:09:24 - Wolfenstein 3D
2:29:21 - Doom
2:43:42 - Quake
3:08:02 - John Romero
3:15:49 - Metaverse
3:44:11 - Elon Musk
3:50:06 - Mars
3:59:09 - Nuclear energy
4:02:47 - AGI
4:49:59 - Andrej Karpathy
4:52:57 - Martial arts
5:01:57 - Advice for young people
5:10:57 - Meaning of life
источник
#cpp #programming
👉 @cpp_lib
👍4⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
Змейка на C++ в стиле реактивного программирования
Привет всем, и добро пожаловать в мир современного C++ и реактивного программирования =)
https://itnext.io/snake-game-on-c-in-the-reactive-programming-way-19310a73923a
#cpp #programming
👉 @cpp_lib
Привет всем, и добро пожаловать в мир современного C++ и реактивного программирования =)
https://itnext.io/snake-game-on-c-in-the-reactive-programming-way-19310a73923a
#cpp #programming
👉 @cpp_lib
👍7⚡1
Руководство по CMake для разработчиков C++ библиотек
В этой статье я расскажу о том, как правильно писать современные CMakeLists.txt файлы для C++ библиотек. Идеи, используемые в ней, основаны на докладе Крейга Скотта (разработчик CMake) и докладе Роберта Шумахера (разработчик vcpkg) c CppCon 2019. Поскольку мне достаточно часто приходится разрабатывать С++ библиотеки, я создал для себя небольшой шаблон cpp-lib-template, который будет использоваться в этой статье в качестве примера.
Замечу, что я предполагаю, что читатель этой статьи имеет опыт работы с CMake, однако, как и я, часто задается вопросом, как правильно ему сделать сборку своей библиотеки.
#cpp #programming
👉 @cpp_lib
В этой статье я расскажу о том, как правильно писать современные CMakeLists.txt файлы для C++ библиотек. Идеи, используемые в ней, основаны на докладе Крейга Скотта (разработчик CMake) и докладе Роберта Шумахера (разработчик vcpkg) c CppCon 2019. Поскольку мне достаточно часто приходится разрабатывать С++ библиотеки, я создал для себя небольшой шаблон cpp-lib-template, который будет использоваться в этой статье в качестве примера.
Замечу, что я предполагаю, что читатель этой статьи имеет опыт работы с CMake, однако, как и я, часто задается вопросом, как правильно ему сделать сборку своей библиотеки.
#cpp #programming
👉 @cpp_lib
👍8⚡1
Сравнение библиотек параллелизма Rust и C++
Функции параллелизма, включенные в стандартную библиотеку Rust, довольно похожи на те, что были доступны в C++11
https://blog.m-ou.se/rust-cpp-concurrency/
#cpp #programming
👉 @cpp_lib
Функции параллелизма, включенные в стандартную библиотеку Rust, довольно похожи на те, что были доступны в C++11
https://blog.m-ou.se/rust-cpp-concurrency/
#cpp #programming
👉 @cpp_lib
blog.m-ou.se
Comparing Rust's and C++'s Concurrency Library
The concurrency features that are included in the Rust standard library
are quite similar to what was available in C++11: threads, atomics, mutexes, condition variables, and so on.
In the past few years, however, C++ has gained quite a few new concurrency…
are quite similar to what was available in C++11: threads, atomics, mutexes, condition variables, and so on.
In the past few years, however, C++ has gained quite a few new concurrency…
👍2
Альтернативы исключениям С++ и зачем они нужны
Современные тенденции в области аппаратного обеспечения ведут к тому, что использование исключений на C++ всё труднее и труднее оправдать. В представленной работе эта проблема иллюстрируется наглядно, даётся её количественная оценка и обсуждаются потенциальные будущие направления исправления исключений.
Original https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2544r0.html
#cpp #programming
👉 @cpp_lib
Современные тенденции в области аппаратного обеспечения ведут к тому, что использование исключений на C++ всё труднее и труднее оправдать. В представленной работе эта проблема иллюстрируется наглядно, даётся её количественная оценка и обсуждаются потенциальные будущие направления исправления исключений.
Original https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2544r0.html
#cpp #programming
👉 @cpp_lib
👍3
Media is too big
VIEW IN TELEGRAM
Learning C++20
Jthreads and stop tokens
Concepts
Atomic References
Spans
The Spaceship Operator
Likely and Unlikely Attributes
Custom Concepts
Immediate Functions
Constrained Algorithms
Плейлист https://www.youtube.com/playlist?list=PLxNPSjHT5qvub0YaHcWQG9uX-8p_aKERd
#cpp #programming
👉 @cpp_lib
Jthreads and stop tokens
Concepts
Atomic References
Spans
The Spaceship Operator
Likely and Unlikely Attributes
Custom Concepts
Immediate Functions
Constrained Algorithms
Плейлист https://www.youtube.com/playlist?list=PLxNPSjHT5qvub0YaHcWQG9uX-8p_aKERd
#cpp #programming
👉 @cpp_lib
👍5
Корутины C++20 и многозадачность на примере контроллеров stm32
Одним из наиболее ярких нововведений, которые получил язык в стандарте C++20, является поддержка сопрограмм (или корутин). Разработчики ПО для микроконтроллеров сразу могут заметить, что корутина похожа на задачу в операционной системе.
Итак, давайте разберем несколько несложных вариантов планирования задач от самого примитивного до чего-то отдалённо напоминающего операционную систему.
#cpp #programming
👉 @cpp_lib
Одним из наиболее ярких нововведений, которые получил язык в стандарте C++20, является поддержка сопрограмм (или корутин). Разработчики ПО для микроконтроллеров сразу могут заметить, что корутина похожа на задачу в операционной системе.
Итак, давайте разберем несколько несложных вариантов планирования задач от самого примитивного до чего-то отдалённо напоминающего операционную систему.
#cpp #programming
👉 @cpp_lib
👍5🔥2
Physically-based rendering. Ray marching
Если ты сейчас здесь, скорее всего, тебе интересна компьютерная графика и фотореалистичный рендеринг. В этой статье я постарался рассказать об основных понятиях и объяснить базовые принципы трассировки лучей. Если внимательно ее прочитать, в конце можно получить правдоподобную фотографию мыльного пузыря и не только.
Часть 1 Часть 2
#cpp #programming
👉 @cpp_lib
Если ты сейчас здесь, скорее всего, тебе интересна компьютерная графика и фотореалистичный рендеринг. В этой статье я постарался рассказать об основных понятиях и объяснить базовые принципы трассировки лучей. Если внимательно ее прочитать, в конце можно получить правдоподобную фотографию мыльного пузыря и не только.
Часть 1 Часть 2
#cpp #programming
👉 @cpp_lib
👍5
Общий обзор того, что происходит перед main()
https://embeddedartistry.com/blog/2019/04/08/a-general-overview-of-what-happens-before-main
#cpp #programming
👉 @cpp_lib
https://embeddedartistry.com/blog/2019/04/08/a-general-overview-of-what-happens-before-main
#cpp #programming
👉 @cpp_lib
Embedded Artistry
A General Overview of What Happens Before main() - Embedded Artistry
8 April 2019 by Phillip Johnston • Last updated 22 August 2022For most programmers, a C or C++ program’s life begins at the main function. They are blissfully unaware of the hidden steps that happen between invoking a program and executing main. Depending…
👍5
Bjarne Stroustrup: C++ | Lex Fridman Podcast
https://www.youtube.com/watch?v=uTxRF5ag27A
#cpp #programming
👉 @cpp_lib
https://www.youtube.com/watch?v=uTxRF5ag27A
#cpp #programming
👉 @cpp_lib
YouTube
Bjarne Stroustrup: C++ | Lex Fridman Podcast #48
👍4