Media is too big
VIEW IN TELEGRAM
Год выпуска: 2013
Автор: Bjarne Stroustrup
Продолжительность: 1ч. 36.м. 42 се
Описание: Выступление Бьёрна Страуструпа на GoingNative 2013
С++11 уже вступил в свои права и контуры С++14 вырисовываются со всей ясностью. Вам предлагаются рассуждения о сути С++. Что важно в нем? Чем С++ выделяется из других языков. Как использовать новые возможности и поддерживать старые (или заменить их), как проектировать и писать, опираясь на сильные стороны С++.
Я фокусируюсь на механизмах абстракции (а не на связи исходного кода и результатов компиляции), это классы и шаблоны. По сути, если вы хорошо понимаете вектор(vector), то Вы понимаете С++.
Типобезопасность и безопасность ресурсов это ключевая цель дизайна любой программы. И эта цель должна быть достигнута без ограничения сфер применения, без значительных накладных расходов времени выполнения и дополнительного размера программы.
Я рассматриваю следующие вопросы:
управление ресурсами (сборка мусора не является идеальным решением, но и работа с указателями не может использоваться как стратегия владения ресурсами)
обобщенное программирование (мы должы сделать его проще и безопаснее)
вычисления времени компиляции (constexpr)(как и когда?)
и типобезопасность (приведение типов относится к самому нижнему уровню программирования - общению с аппаратной частью)
Также затрагиваю такие темы как:
семантика переноса (move)
исключения
концепты
псевдонимы типов
и т.д.
Моя цель не столько описать все нововведения и техники, как обозначить их роль в поддержке нового и более эффективного дизайна и стиля программирования.
#видеоуроки #лекции #IT #Cpp #разработка #cplusplus
🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3❤1
Forwarded from Physics.Math.Code
📗 Изучаем Kali Linux. Проверка защиты, тестирование на проникновение, этичный хакинг [2025] Рик Мессье
📘 Learning Kali Linux: security testing, penetration testing and ethical hacking [2024] Ric Messier
💾 Скачать книгу RU + EN
Промокод на - 35 % : MATHCODE в издательстве ПИТЕР
Рик Мессье — автор, консультант и преподаватель, имеющий сертификаты CCSP, GCP ACE, AWS CCP, GCIH, GSEC, CEH и CISSP. Опубликовал несколько книг по информационной безопасности и цифровой криминалистике. Имеет многолетний опыт работы в области информационных технологий и информационной безопасности. Занимал различные должности: программиста, системного администратора, сетевого инженера, менеджера по технике безопасности, инженера VoIP, консультанта и профессора. В настоящее время — директор по киберакадемическим программам в Circadence, ранее — директор программы по кибербезопасности и цифровой криминалистике в Champlain College.
☕️ Для тех, кто захочет задонать на кофе:
ВТБ:
Некоторые книги Рика Мессье: «Network Forensics», «CEH v11 Certified Ethical Hacker Study Guide», «Программирование на RUST».
#python #cpp #kali #kalilinux #linux #хакинг #безопасность #программирование #разработка #IT
💡 Physics.Math.Code // @physics_lib
📘 Learning Kali Linux: security testing, penetration testing and ethical hacking [2024] Ric Messier
💾 Скачать книгу RU + EN
Промокод на - 35 % : MATHCODE в издательстве ПИТЕР
Рик Мессье — автор, консультант и преподаватель, имеющий сертификаты CCSP, GCP ACE, AWS CCP, GCIH, GSEC, CEH и CISSP. Опубликовал несколько книг по информационной безопасности и цифровой криминалистике. Имеет многолетний опыт работы в области информационных технологий и информационной безопасности. Занимал различные должности: программиста, системного администратора, сетевого инженера, менеджера по технике безопасности, инженера VoIP, консультанта и профессора. В настоящее время — директор по киберакадемическим программам в Circadence, ранее — директор программы по кибербезопасности и цифровой криминалистике в Champlain College.
☕️ Для тех, кто захочет задонать на кофе:
ВТБ:
+79616572047
(СБП) ЮMoney: 410012169999048
Некоторые книги Рика Мессье: «Network Forensics», «CEH v11 Certified Ethical Hacker Study Guide», «Программирование на RUST».
#python #cpp #kali #kalilinux #linux #хакинг #безопасность #программирование #разработка #IT
💡 Physics.Math.Code // @physics_lib
👍4❤3🔥1
Сегодня поговорим о ситуации, знакомой каждому программисту — от новичка до гуру. Вы написали гениальный код, нажимаете «скомпилировать» и... BAM! Десятки ошибок, которые выглядят как древние руны. Паника? Ни в коем случае! Вместо этого — глубокий вдох и системный подход.
🎯 План действий, когда всё сломалось:
1. Не паникуй! Это первое и главное правило. Компилятор — не враг, а строгий, но справедливый друг, который пытается указать на твои ошибки, пока ты не запустил программу и не устроил
kernel panic
.2. Читай ошибки СВЕРХУ ВНИЗ. Компиляторы часто выдают каскад ошибок: одна маленькая оплошность тянет за собой десятки других. Исправь самую первую — и пол-листа ошибок может исчезнуть сами собой.
3. Гугли текст ошибки. Да, это банально, но это работает в 99% случаев. Ты не первый, кто столкнулся с этой проблемой. Добавь в запрос название языка и ключевые элементы (например,
C++ template SFINAE error
).4. Упрощай. Закомментируй подозрительные куски кода или сведи проблему к минимальному воспроизводящему примеру (Minimal Reproducible Example). Часто в процессе упрощения ты сам найдешь ошибку.
5. Проверь очевидное: закрыты ли все скобки
{}()[]
? Поставлены ли точки с запятой ;? Правильно ли подключены заголовочные файлы? Не путаешь ли =
и ==
?▫️ Ошибка 1: Магия точек с запятой в C++
Вот, казалось бы, безобидный код. Хотим распечатать число. Что не так?
#include <iostream>
int main() {
int x = 42;
std::cout << "Answer: " << x // <- ОЙ, забыли точку с запятой!
return 0;
}
Ожидаемая ошибка: expected ';' before 'return'. Но иногда компилятор может выдать что-то более пугающее, вроде: error: cannot convert 'int' to 'const char*' — потому что он пытается «скормить» return 0 оператору <<. Всего одна забытая ; — и компилятор начинает говорить на своем странном языке.
▫️ Ошибка 2: Коварный макрос в C
Макросы — мощный инструмент, но с ним нужно обращаться осторожно.
#include <stdio.h>
#define SQUARE(x) x * x // Наивный макрос для возведения в квадрат
int main() {
int result = SQUARE(2 + 3); // Ожидаем 25, но...
printf("%d\n", result);
return 0;
}
Почему на выходе будет 11, а не 25? Потому что препроцессор тупо подставляет текст! Код раскрывается в
2 + 3 * 2 + 3
. Приоритет операторов делает свое дело: 3 * 2 = 6, 2 + 6 + 3 = 11
.Фикс: Всегда брать аргументы макроса в скобки!
#define SQUARE(x) ((x) * (x))
🧠 Низкий уровень (Low-Level): Когда копаем глубже
Иногда ошибки компиляции — лишь верхушка айсберга. На низком уровне (близко к железу) начинается настоящая магия (и боль).
🔸Совместимость ABI (Application Binary Interface): Ваша программа скомпилировалась, но падает при вызове библиотеки. Возможно, вы собрали код с одним стандартом C++ (например, C++11), а библиотека была скомпилирована с другим (C++17). Их скомпилированный код по-разному организует вызовы функций.
🔸Невыполненные обещания линковщику: Объявили функцию extern "C", но забыли реализовать? Линковщик будет ругаться на неразрешенный символ (undefined reference), и это случится после компиляции.
🔸Проблемы с памятью (не компиляция, но смежная тема): Выделили память через
new[]
, а освободили через delete
(без []
)? Программа скомпилируется, но ее поведение при запуске будет неопределенным (UB — Undefined Behaviour). Это может привести к трудноотлавливаемым багам.Итог: Умение читать и понимать ошибки компиляции — такой же навык, как и написание кода. Не бойтесь их, анализируйте, и со временем вы начнете видеть их причину еще до того, как компилятор закончит свою работу.
А какие самые запоминающиеся ошибки компиляции встречали вы? Делитесь в комментариях! 👇 #программирование #советы #ошибки #компиляция #Cpp #C #lowlevel
🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤5👍3👨💻2👏1😁1
Media is too big
VIEW IN TELEGRAM
Год выпуска: 2013
Автор: Bjarne Stroustrup
Продолжительность: 1ч. 36.м. 42 се
Описание: Выступление Бьёрна Страуструпа на GoingNative 2013
С++11 уже вступил в свои права и контуры С++14 вырисовываются со всей ясностью. Вам предлагаются рассуждения о сути С++. Что важно в нем? Чем С++ выделяется из других языков. Как использовать новые возможности и поддерживать старые (или заменить их), как проектировать и писать, опираясь на сильные стороны С++.
Я фокусируюсь на механизмах абстракции (а не на связи исходного кода и результатов компиляции), это классы и шаблоны. По сути, если вы хорошо понимаете вектор(vector), то Вы понимаете С++.
Типобезопасность и безопасность ресурсов это ключевая цель дизайна любой программы. И эта цель должна быть достигнута без ограничения сфер применения, без значительных накладных расходов времени выполнения и дополнительного размера программы.
Я рассматриваю следующие вопросы:
управление ресурсами (сборка мусора не является идеальным решением, но и работа с указателями не может использоваться как стратегия владения ресурсами)
обобщенное программирование (мы должы сделать его проще и безопаснее)
вычисления времени компиляции (constexpr)(как и когда?)
и типобезопасность (приведение типов относится к самому нижнему уровню программирования - общению с аппаратной частью)
Также затрагиваю такие темы как:
семантика переноса (move)
исключения
концепты
псевдонимы типов
и т.д.
Моя цель не столько описать все нововведения и техники, как обозначить их роль в поддержке нового и более эффективного дизайна и стиля программирования.
#видеоуроки #лекции #IT #Cpp #разработка #cplusplus
🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥2👨💻2