Введение в корутины (C++20): О Promise Type, Awaitable и Coroutine Handle
Сегодня я начну цикл статей о планировщике задач. Отправной точкой минисериала является простейший планировщик от Dian-Lun Lin, который становится все более сложным.
https://www.modernescpp.com/index.php/a-concise-introduction-to-coroutines-by-dian-lun-li/
#cpp #programming
👉 @cpp_lib
Сегодня я начну цикл статей о планировщике задач. Отправной точкой минисериала является простейший планировщик от Dian-Lun Lin, который становится все более сложным.
https://www.modernescpp.com/index.php/a-concise-introduction-to-coroutines-by-dian-lun-li/
#cpp #programming
👉 @cpp_lib
👍3👏1
C++23: Removing garbage collection support
Повесть о поддержке сборки мусора в C++: включенной в C++11, так нигде и не реализованной, окончательно удаленной в C++23.
https://www.sandordargo.com/blog/2023/11/01/cpp23-garbage-collection
#cpp #programming
👉 @cpp_lib
Повесть о поддержке сборки мусора в C++: включенной в C++11, так нигде и не реализованной, окончательно удаленной в C++23.
https://www.sandordargo.com/blog/2023/11/01/cpp23-garbage-collection
#cpp #programming
👉 @cpp_lib
Sandor Dargo’s Blog
C++23: Removing garbage collection support
If we go through the list of C++23 features, we can stumble upon the notion of garbage collection twice. Once among the language and once among the library features. Both entries refer to the same paper (P2186R2): garbage collection (GC in short) support…
👍5😢1😭1😨1
Extern templates to reduce binary size
Статья об использовании extern template для сокращения размеров бинарных файлов.
https://www.sandordargo.com/blog/2023/11/08/extern-templates
#cpp #programming
👉 @cpp_lib
Статья об использовании extern template для сокращения размеров бинарных файлов.
template <typename T>
class Wrapper {
public:
// ...
private:
T wrapped;
};
// No object code will be generated for Wrapper<int> in this translation unit
extern template class Wrapper<int>;
https://www.sandordargo.com/blog/2023/11/08/extern-templates
#cpp #programming
👉 @cpp_lib
Sandor Dargo’s Blog
Extern templates to reduce binary size
In my quest towards a smaller binary size, someone asked me if I considered extern templates. I did not. I didn’t even know about them. But I was more than happy for the suggestion and now here I am to share what learned about extern templates. What are they?…
🔥3👍2
Как читать язык ассемблера
Зачем кому-то нужно изучать язык ассемблера? Во-первых, чтение языка ассемблера - это способ узнать, что именно делает ваша программа. Почему именно эта программа на Си++ занимает 1 Мб (скажем), а не 100 Кб? Можно ли выжать еще немного производительности из той функции, которая постоянно вызывается?
В частности, для языка Си++ легко забыть или просто не заметить какую-либо операцию (например, неявное преобразование или вызов конструктора или деструктора копирования), которая подразумевается исходным кодом и семантикой языка, но не прописана в явном виде. Если посмотреть на ассемблер, сгенерированный компилятором, то все будет на виду.
https://wolchok.org/posts/how-to-read-assembly-language/
#cpp #programming
👉 @cpp_lib
Зачем кому-то нужно изучать язык ассемблера? Во-первых, чтение языка ассемблера - это способ узнать, что именно делает ваша программа. Почему именно эта программа на Си++ занимает 1 Мб (скажем), а не 100 Кб? Можно ли выжать еще немного производительности из той функции, которая постоянно вызывается?
В частности, для языка Си++ легко забыть или просто не заметить какую-либо операцию (например, неявное преобразование или вызов конструктора или деструктора копирования), которая подразумевается исходным кодом и семантикой языка, но не прописана в явном виде. Если посмотреть на ассемблер, сгенерированный компилятором, то все будет на виду.
https://wolchok.org/posts/how-to-read-assembly-language/
#cpp #programming
👉 @cpp_lib
🔥5👍3
Отчет о поездке: Осенняя встреча по стандартам ISO C++ (Кона, HI, США)
На днях комитет ISO C++ завершил свое второе собрание C++26, состоявшееся в Коне, штат Гавайи, США.
Наши организаторы, Standard C++ Foundation и WorldQuant, организовали высококачественные условия для нашей шестидневной встречи с понедельника по субботу. У нас было более 170 участников, около двух третей лично, а остальные удаленно через Zoom, формально представляющие 21 страну. Кроме того, на каждой встрече у нас регулярно появляются новые участники, которые никогда раньше не присутствовали, и на этот раз было более дюжины новых посетителей, в основном лично; всем им еще раз добро пожаловать!
https://herbsutter.com/2023/11/11/trip-report-autumn-iso-c-standards-meeting-kona-hi-usa/
#cpp #programming
👉 @cpp_lib
На днях комитет ISO C++ завершил свое второе собрание C++26, состоявшееся в Коне, штат Гавайи, США.
Наши организаторы, Standard C++ Foundation и WorldQuant, организовали высококачественные условия для нашей шестидневной встречи с понедельника по субботу. У нас было более 170 участников, около двух третей лично, а остальные удаленно через Zoom, формально представляющие 21 страну. Кроме того, на каждой встрече у нас регулярно появляются новые участники, которые никогда раньше не присутствовали, и на этот раз было более дюжины новых посетителей, в основном лично; всем им еще раз добро пожаловать!
https://herbsutter.com/2023/11/11/trip-report-autumn-iso-c-standards-meeting-kona-hi-usa/
#cpp #programming
👉 @cpp_lib
Sutter’s Mill
Trip report: Autumn ISO C++ standards meeting (Kona, HI, USA)
Today, the ISO C++ committee completed its second meeting of C++26, held in Kona, HI, USA. Our hosts, Standard C++ Foundation and WorldQuant, arranged for high-quality facilities for our six-day me…
👍3
Forwarded from Книги для программистов C/C++
Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».
Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.
https://habr.com/ru/articles/470265/
👉 @cpp_knigi
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».
Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.
https://habr.com/ru/articles/470265/
👉 @cpp_knigi
👍3
Хардварный проброс
Оказывается пробрасывать можно не только сетевые порты, а еще и регистры периферии микроконтроллера(МК). Идея та же самая - открыть периферию для использования вне микроконтроллера. Для наглядности давайте сравним более детально.
https://habr.com/ru/articles/768460/
#cpp #programming
👉 @cpp_lib
Оказывается пробрасывать можно не только сетевые порты, а еще и регистры периферии микроконтроллера(МК). Идея та же самая - открыть периферию для использования вне микроконтроллера. Для наглядности давайте сравним более детально.
https://habr.com/ru/articles/768460/
#cpp #programming
👉 @cpp_lib
👍4
Shared, TO, PLOT: друзья или враги
В прошлой заметке я остановился на вопросе о том, действительно ли указатели функций и виртуальные вызовы являются медленными. Я опубликовал статью в социальных сетях, и меня завалили ерундовыми комментариями. Однако среди этих обломков нашлось несколько хороших идей.
Некоторые пользователи попытались воспроизвести мои результаты и, поскольку им это не удалось, попросили у меня источник, который я с радостью предоставил в своем репозитории RedditHelp, который я использую для публикации ответов на вопросы в социальных сетях. В ходе этого общения были сделаны и приняты к сведению хорошие замечания:
https://lucisqr.substack.com/p/shared-lto-plt-friends-or-foes
#cpp #programming
👉 @cpp_lib
В прошлой заметке я остановился на вопросе о том, действительно ли указатели функций и виртуальные вызовы являются медленными. Я опубликовал статью в социальных сетях, и меня завалили ерундовыми комментариями. Однако среди этих обломков нашлось несколько хороших идей.
Некоторые пользователи попытались воспроизвести мои результаты и, поскольку им это не удалось, попросили у меня источник, который я с радостью предоставил в своем репозитории RedditHelp, который я использую для публикации ответов на вопросы в социальных сетях. В ходе этого общения были сделаны и приняты к сведению хорошие замечания:
https://lucisqr.substack.com/p/shared-lto-plt-friends-or-foes
#cpp #programming
👉 @cpp_lib
🔥5👍2
О дебаггинге в С/С++.
https://pspdfkit.com/blog/2021/time-travel-debugging-for-c/
#cpp #programming
👉 @cpp_lib
https://pspdfkit.com/blog/2021/time-travel-debugging-for-c/
#cpp #programming
👉 @cpp_lib
👍1
Создание HTTP-запросов на C++
В этой статье я покажу вам, как создавать HTTP-запросы к REST-серверу с помощью библиотеки C++ Request, написанной Ху Нгуеном. При её написании мистер Нгуен во многом ориентировался на принципы проектирования из Python Requests, поэтому для тех, кто использовал или знаком с Python Requests, C++ Requests окажется вполне понятна.
https://www.codeproject.com/Articles/1244632/Making-HTTP-REST-Request-in-Cplusplus
#cpp #programming
👉 @cpp_lib
В этой статье я покажу вам, как создавать HTTP-запросы к REST-серверу с помощью библиотеки C++ Request, написанной Ху Нгуеном. При её написании мистер Нгуен во многом ориентировался на принципы проектирования из Python Requests, поэтому для тех, кто использовал или знаком с Python Requests, C++ Requests окажется вполне понятна.
https://www.codeproject.com/Articles/1244632/Making-HTTP-REST-Request-in-Cplusplus
#cpp #programming
👉 @cpp_lib
❤4👍3
Инженерный калькулятор на C++. Часть 2: Алгоритм сортировочной станции
Всем маткульт-привет! В этой статье мы продолжаем и заканчиваем написание консольного инженерного калькулятора. Для понимания происходящего настоятельно рекомендую сначала ознакомиться с первой частью.
Введение
В прошлой части мы научились разбивать исходное математическое выражение формата (log2(18)/3.14)*sqrt(0.11^(-3)/0.02)на токены. На выходе мы получаем массив токенов, каждый их которых содержит информацию о типе (оператор, скобка, число, ...) и об ассоциативности, если он таковую имеет.
Теперь мы хотим привести выражение к виду обратной польской записи (RPN), чтобы затем удобно его посчитать. Это нам позволяет сделать изобретенный Эдсгером Дейкстрой алгоритм сортировочной станции.
https://habr.com/ru/articles/777368/
#cpp #programming
👉 @cpp_lib
Всем маткульт-привет! В этой статье мы продолжаем и заканчиваем написание консольного инженерного калькулятора. Для понимания происходящего настоятельно рекомендую сначала ознакомиться с первой частью.
Введение
В прошлой части мы научились разбивать исходное математическое выражение формата (log2(18)/3.14)*sqrt(0.11^(-3)/0.02)на токены. На выходе мы получаем массив токенов, каждый их которых содержит информацию о типе (оператор, скобка, число, ...) и об ассоциативности, если он таковую имеет.
Теперь мы хотим привести выражение к виду обратной польской записи (RPN), чтобы затем удобно его посчитать. Это нам позволяет сделать изобретенный Эдсгером Дейкстрой алгоритм сортировочной станции.
https://habr.com/ru/articles/777368/
#cpp #programming
👉 @cpp_lib
👍2
Сложность C++ - Что делает C++ сложным для вас?
Вопрос о том, является ли C++ сложным языком, конечно, субъективен, но мало кто будет спорить с этим утверждением.
Вопрос о том, что делает C++ сложным для вас, конечно, также субъективен, но это интересный вопрос с потенциальными последствиями. Мы можем сделать вывод:
Есть функции, которые нам нужно учить лучше.
Есть области, которые нуждаются в улучшении через процесс ISO
Есть области, которые могут выиграть от улучшения инструментов
https://www.incredibuild.com/blog/c-complexity-what-makes-c-complex-for-you
#cpp #programming
👉 @cpp_lib
Вопрос о том, является ли C++ сложным языком, конечно, субъективен, но мало кто будет спорить с этим утверждением.
Вопрос о том, что делает C++ сложным для вас, конечно, также субъективен, но это интересный вопрос с потенциальными последствиями. Мы можем сделать вывод:
Есть функции, которые нам нужно учить лучше.
Есть области, которые нуждаются в улучшении через процесс ISO
Есть области, которые могут выиграть от улучшения инструментов
https://www.incredibuild.com/blog/c-complexity-what-makes-c-complex-for-you
#cpp #programming
👉 @cpp_lib
👍3
The Observer Design Pattern in C++
Part 1 of n - A simple implementation
Part 2 of n - Extensibility and Abstraction
Part 3 of n - Registration and Lifetime
Part 4 of n - Notify Specific System
Part 5 of 5 - Review and Next Steps
источник
#cpp #programming
👉 @cpp_lib
Part 1 of n - A simple implementation
Part 2 of n - Extensibility and Abstraction
Part 3 of n - Registration and Lifetime
Part 4 of n - Notify Specific System
Part 5 of 5 - Review and Next Steps
источник
#cpp #programming
👉 @cpp_lib
🥰3👍2👏2
Кроссплатформенный многопоточный TCP/IP сервер на C++
Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.
https://habr.com/ru/articles/503432/
#cpp #programming
👉 @cpp_lib
Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.
https://habr.com/ru/articles/503432/
#cpp #programming
👉 @cpp_lib
Хабр
Кроссплатформенный многопоточный TCP/IP сервер на C++
Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux...
👍6🎉2
C++ Software Design and Design Patterns
Command Pattern Explanation and Implementation in C++
Singleton Pattern | Explanation and Implementation in C++
Factory Method Pattern Explanation and Implementation in C++
Factory Method Pattern Adding More Power to Count Allocated Objects in C++
The Extensible Factory Pattern in C++ | Register Objects at Runtime
Iterator Pattern Explanation and usage with STL in C++
источник
#cpp #programming
👉 @cpp_lib
Command Pattern Explanation and Implementation in C++
Singleton Pattern | Explanation and Implementation in C++
Factory Method Pattern Explanation and Implementation in C++
Factory Method Pattern Adding More Power to Count Allocated Objects in C++
The Extensible Factory Pattern in C++ | Register Objects at Runtime
Iterator Pattern Explanation and usage with STL in C++
источник
#cpp #programming
👉 @cpp_lib
👍1🍓1