Лекция 1. Библиотеки, утилиты, средства разработки, сборка (Эффективное использование С++)
Лекция 2. Работа с памятью. Утечки ресурсов. RAII, умные указатели (Эффективное использование С++)
Лекция 3. Move semantics, rvalue reference, perfect forwarding.
Лекция 4. Callbacks: lambda, bind & function.
Лекция 5. Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений)
Лекция 6. Обзор возможностей современных стандартов C++
📌 источник
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤4🔥2💩2👏1
Скомпилируйте библиотеку как статическую и включите ее в свой проект, включите файл ZTG.h
#include "ZTG/ZTG.H"
▪Github@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2🔥2
▪Github
#cpp #программирование
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2🤔2❤1
💫 The Fil-C Manifesto: Garbage In, Memory Safety Out!
Язык программирования C - замечательный. На нем написана масса замечательного кода. Но C - небезопасный язык. Простые логические ошибки могут привести к тому, что злоумышленник будет контролировать, куда указывает указатель и что в него записывается, что открывает легкий путь к эксплуатации. Многие другие языки (Rust, Java, Haskell, Verse, даже JavaScript) не имеют такой проблемы!
Этот проект призван решить проблемы с безопасностью С.
▪ Github
@cpluspluc
Язык программирования C - замечательный. На нем написана масса замечательного кода. Но C - небезопасный язык. Простые логические ошибки могут привести к тому, что злоумышленник будет контролировать, куда указывает указатель и что в него записывается, что открывает легкий путь к эксплуатации. Многие другие языки (Rust, Java, Haskell, Verse, даже JavaScript) не имеют такой проблемы!
Этот проект призван решить проблемы с безопасностью С.
▪ Github
@cpluspluc
👍6❤2🔥1
Вообще говоря, программировать на C сложнее, чем на таких языках, как Python.
В некотором смысле это связано с тем, что C - язык более низкого уровня, ближе к ассемблеру; он просто дает вам то, что дает базовая машина.
Например, целые числа в Python ведут себя так же, как их математические аналоги. Они не ограничены; при сложении целых чисел вы всегда получите правильный ответ, независимо от их размера. (Если, конечно, на компьютере не закончится память. Ни один язык не может создать бесконечные ресурсы. Но он может гарантировать, что вы получите либо правильный ответ, либо сбой. И никогда - неправильный ответ.)
▪Читать дальше
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥2🤡2
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Семинар 1.1. Алгоритм Евклида.
Семинар 1.2. Системы счисления.
Семинар 1.3. Числа Фибоначчи.
Допсеминар: unix shell
Семинар 2.1. Простые числа.
Семинар 2.2. Побитовые вычисления.
Семинар 2.3. Время и случайность.
Углубление пройденного: логическая память и виртуальная память.
Семинар 3.1. Линейный поиск и простые сортировки.
Семинар 3.2. Стратегия "разделяй и властвуй".
📌 источник
#cpp #programming
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤3🔥3⚡1
Здесь рассказывается о RISC-V, о процессе сборки C++ кода, о том, что происходит в ходе компиляции под капотом, про оптимизацию программ, про ассемблер, линкер и ещё про много всего
*RISC-V — открытая и свободная система команд и процессорная архитектура на основе концепции RISC (reduced instruction set computer)
Доступ по закрытой ссылке, оцените)
🔗 Youtube
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤3⚡1🔥1💩1
std::vector
?Основные плюсы и минусы происходят от линейного расположения элементов в памяти и ограничений, которые это расположение накладывает.
std::vector
имеет:O(1)
.Решение: С этим можно побороться, если зарезервировать заранее всю нужную память под все элементы, но мы редко знаем каким будет максимальное количество элементов. И памяти на все процессы так не напасёшься, даже учитывая оптимизацию современных ОС: когда ОС физически выделяет память только когда процесс начинает её использовать.
Хороший
cache coherence
:vector
по сравнению с контейнерами а-ля list
(map
, set
, forward_list
etc).Если
vector
параллельно обходят два потока и каждый из них модифицирует его содержимое, то вероятно кэши этих потоков будет смотреть на смежную область памяти vector
-а. Тогда каждая из записей будет инвалидировать содержимое кеша ядра другого потока, тем самым приводя к регулярному refetch-у. В некоторых корнер кейсах замена vector
на list
может внезапно привести к улучшению перфоманса. Решение: Лечится такая проблема обычно увеличением размера элемента до размера кешлайна. Либо же выдачей каждому потоку по
N
элементов, где (N * sizeof(ElementT)) == cacheline size
.@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤4🔥2