
Эпсилон
▪️Компьютерная безопасность ▪️Программирование ▪️Взломы и уязвимости ▪️Хакинг ▪️Способы заработка в сети ▪️Полезные ссылки и лайфхаки Чат и обсуждение: Связь:
Статистика канала
typedef struct {
int value;
// V-table на минималках: указатель на функцию
void (*increment)(struct Person *self);
} Person;
void increment_person(Person *self) {
self->value++;
}
int main() {
Person *p = (Person*)malloc(sizeof(Person));
p->value = 5;
p->increment = increment_person; // Привязка метода
p->increment(p); // Вызов: 6
free(p);
}{}
4. Проблема зависимостей (STL/Boost)
То, что стабильно для приложения в GNOME, недостаточно стабильно для ядра. Внедрение STL или Boost - это риск security-проблем (вспомним бэкдор в xz/liblzma) и раздувание бинарников.
А как же Rust?
Интересно, что к Rust отношение другое. Линус допускает Rust, потому что он (в отличие от C++) решает проблемы безопасности памяти, а не просто добавляет синтаксический сахар. C - прост, но позволяет выстрелить себе в ногу. Rust - строг. C++ - слишком сложен и неявен для ядра.
Отказ от C++ - это выбор между эргономикой разработчика и стабильностью системы. Для User-space приложений C++ прекрасен. Но для ядра, от которого зависит работа миллиардов устройств (от тостеров до спутников), консерватизм C - единственно верный путь.
Читать статью полностью
#cpp #c #linux #kernel #linus #coding
🔵 Эпсилон // @epsilon_h🧐 « Если взять ипотеку в четыре миллиона, то выплачивать её 25 лет. А если украсть 4 миллиона, то сидеть 7 лет. »Пишите в комментариях свои самые тайные и нелегальные мысли? Пофантазировать же не преступление 😌 🔵 Эпсилон // @epsilon_h
▪️ Процессор (CPU): Кастомный AMD Ryzen Zen 2, 8 ядер / 16 потоков, 3.5 ГГц (с переменной частотой).
▪️ Видеокарта (GPU): Кастомный AMD RDNA 2, 10.28 TFLOPs, с поддержкой трассировки лучей.
▪️ Оперативная память (RAM): 16 ГБ GDDR6 (единая память для системы и графики).
▪️ Накопитель: Кастомный SSD 825 ГБ со скоростью 5.5 ГБ/с (сырая пропускная способность). Это главная «фишка» — молниеносные загрузки и практически отсутствующие экраны загрузки в играх.
▪️ Цель: Играть в 4K @ 60fps с перспективой на 120fps в некоторых тайтлах, поддержка HDR, 3D-аудио.{}
📦 Близкий по мощности Desktop ПК (примерная сборка):
▪️ CPU: AMD Ryzen 5 5600X или Intel Core i5-12400F.
▪️ GPU: NVIDIA RTX 3060 Ti или AMD Radeon RX 6700 XT (~10-13 TFLOPs + свои архитектурные преимущества).
▪️ RAM: 16 ГБ DDR4.
▪️ SSD: NVMe SSD на 1 ТБ (но даже топовые модели редко дотягивают до скорости SSD в PS5 в реальных игровых сценариях).
▪️ Итог: Такая сборка в одиночку (без монитора, ОС, клавиатуры/мыши) будет стоить примерно от 1000$ и выше. Консоль же дает готовое решение за ~500$.{}
💻 Близкий по мощности игровой ноутбук:
▪️ Что искать: Ноутбук с видеокартой NVIDIA RTX 3070 (Mobile) или AMD Radeon RX 6800M. Эти карты по паспорту мощнее, но в мобильном исполнении и при разрешении 1440p-4K покажут сопоставимый с PS5 уровень производительности.
▪️ CPU: AMD Ryzen 7 5800H или Intel Core i7-11800H и новее.
▪️ RAM: 16 ГБ DDR4.
▪️ SSD: 1 ТБ NVMe.
▪️ Итог: Такие ноутбуки стартуют от 1500-2000$. Вы платите за портативность и универсальность (ОС Windows, работа, учеба).{}
PS5 — это беспрецедентное соотношение цены и производительности для игр в 4K. Собрать или купить равный по мощности ПК будет значительно дороже. Но ПК/ноутбук предлагают свободу: игры с разных площадок, моды, работа, апгрейд. Что выбираете вы: готовую оптимизированную мощь консоли или универсальность и гибкость ПК?
🔵 Эпсилон // @epsilon_h
std::print("Hello, {}!\n", name);{}
Есть и std::println — сам добавляет перевод строки. Работает с char8_t для Unicode.
2. std::mdspan — многомерные массивы в стандарте
Мощный инструмент для научных вычислений и работы с матрицами. Не владеет данными, а лишь представляет многомерный «вид» на существующую память (как std::span, но для N измерений).
int data[2][3] = {...};
auto mat = std::mdspan(data, 2, 3);
std::print("{}", mat[1, 2]); // доступ по многомерному индексу{}
3. if consteval — замена старого трюка с std::is_constant_evaluated()
Теперь можно явно ветвить код: одна ветка для времени компиляции, другая — для выполнения.
if consteval {
// вычисляем на этапе компиляции
} else {
// рантайм-код
}{}
4. Упрощение лямбд
Лямбды становятся лаконичнее:
— Можно опустить () для пустого списка параметров: [] { return 42; }
— Разрешено [=, this] (раньше было нельзя, теперь this захватывается по ссылке явно).
5. #elifdef и #elifndef
Да, эти директивы наконец-то стандартизированы! Теперь можно писать:
#ifdef FOO
#elifdef BAR // вместо #elif defined(BAR)
#elifndef BAZ
#endif{}
6. std::expected — монда для обработки ошибок
Альтернатива исключениям и кодам ошибок. Хранит либо результат, либо информацию об ошибке. Очень ожидаемая фича из Proposal P0323.
std::expected<int, std::string> parse(std::string_view sv);
auto val = parse("123");
if (val) { use(*val); }
else { std::cerr << val.error(); }{}
7. constexpr для std::optional и std::variant
Почти весь их API теперь можно использовать в constexpr-контекстах. Шаг к вычислениям на этапе компиляции с алгебраическими типами данных.
8. Новые атрибуты
[[assume(expr)]] — даём компилятору подсказку для оптимизаций (например, [[assume(x > 0)]]).
[[reproducible]] / [[unsequenced]] — для математических функций (пока экспериментально).
9. std::stacktrace — стектрейсы в стандарте!
Наконец-то можно легко получить и обработать call stack в исключениях или для логирования.
#include <stacktrace>
auto trace = std::stacktrace::current();
std::cout << std::to_string(trace);{}
10. Мелкие, но приятные улучшения
➖ std::vector::resize_and_overwrite — для эффективного заполнения буферов.
➖ contains() для строк и интервалов: if (str.contains("C++23"))
➖ <stdatomic.h> — C-совместимый заголовок для атомиков.
➖ Многочисленные фиксы и уточнения в библиотеке.
C++23 — это «сборник улучшений» (std::collected_improvements). Ничего сверхсложного, но многое делает код удобнее, безопаснее и выразительнее. Готовьте компиляторы (GCC 14, Clang 17+ уже многое поддерживают) и начинайте пробовать. А какая фича нравится вам больше всего? Делитесь в комментариях! #cplusplus #cpp #программирование
https://en.cppreference.com/w/cpp/compiler_support.html#C.2B.2B23
🔵 Эпсилон // @epsilon_hОтзывы канала
Каталог Телеграм-каналов для нативных размещений
Эпсилон — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 9.0K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 7.3, количество отзывов – 0, со средней оценкой 0.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 8391.6 ₽, а за 1 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий