C++ — TechCave

C++ — компилируемый строго типизированный язык программирования общего назначения.

C++ — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования.

Стена группы

Загрузка...
2 месяца назад
#

Видео курс С++ Starter. Урок 12. Пространства имен


Загрузка...
2 месяца назад
#

Цвет настроения Linux, цвет настроения Mac OS



Стереотипы давно в прошлом. Сегодня Microsoft придерживается концепции «любой разработчик, любое приложение, любая платформа». Сегодня расскажем вам о vcpkg, едином диспетчере библиотек C++, который теперь стал доступен не только для Windows, но и для Linux и Mac OS. Заглядывайте под кат!



Источник
Загрузка...
2 месяца назад
#

Видео курс С++ Starter. Урок 9. Работа с Функциями



Видео курс С++ Starter. Урок 10. Функции


Загрузка...
3 месяца назад
#

Видео курс С++ Starter. Урок 8. Указатели


Загрузка...
3 месяца назад
#

Особенности использования вещественных регистров x86 архитектуры



В этой статье рассмотрим опыт автора, столкнувшегося с особенностями реализации работы с вещественными числами на аппаратном уровне. Многие современные специалисты в области информационных технологий работают с высокими уровнями абстракции данных. Думается, что статья откроет им глаза на некоторые интересные вещи.

Источник
Загрузка...
3 месяца назад
#

Веб установщик на чистом WINAPI с поддержкой Hi DPI и векторным лого



В наше время это, наверно, одно из основных применений для приложений написанных на чистом WINAPI. Писать что-то серьёзнее нескольких простых окон на чистом WINAPI уже не так весело, а вот маленький установщик – самое то.

Так как на дворе 2018 год, писать просто приложение как-то не очень. Давайте уж соответствовать веяниям времени – установщик будет с поддержкой Hi DPI режимов. Даже в ноутбуках уже 4К экраны не редкость, чего уж говорить про десктопы. Ну и так как установщик — это то, что должно быстро загрузиться будем экономить на том, что действительно не сложно сделать и самому. Ну и попробуем схитрить чтобы использовать векторную графику без дополнительных библиотек – нам же нужен красивый логотип!



Источник
Загрузка...
3 месяца назад
#

Пишем простой плагин для VirtualDub



Несмотря на то что обработка видео не спеша переезжает на OpenCL / CUDA VirtualDub остается удобным средством для простых действий с видео. Обрезка кадра, добавление фильтров или наложение выполняется гораздо удобнее чем из консоли ffmpeg. Кроме того за годы существования была разработана масса фильтров позволяющие выполнять многие операции быстро и удобно. Несмотря на простоту SDK, при написании плагина возникают некоторые нюансы. Статья посвящена работе с ними.



Источник
Загрузка...
Den
3 месяца назад
#

Адский проект



Несколько лет назад меня пригласили консультантом по одному проекту ПО для крупной французской технологической компании. Увиденное выходит за рамки всего, что я мог представить в разработке. Простое отсутствие профессиональной компетентности оказалось не самым худшим. Гораздо хуже было крайнее презрение к человеческому достоинству, что показалось мне сравнимо с тюрьмой в том виде, как я её представляю. Вот список, проверьте сами.

Масштаб

  • Разработка программного обеспечения для государственного агентства.

  • Сложность низкая, с несколькими вывертами.



Правительство платит авансом несколько миллионов евро. План разработки на два-три года. Для начала компания нанимает несколько разработчиков и продолжает удваивать размер команды каждые три месяца или около того, осваивая бюджет по мере поступления средств.

7 лет спустя проект ещё не оформился. Набегают штрафы по несколько тысяч евро в сутки. Руководство решает сократить расходы и производит увольнения опытных сотрудников, нанимая людей с небольшим или нулевым опытом работы.

10 лет спустя, учитывая катастрофическое состояние проекта, менеджмент среднего звена решает нанять некоторых людей с опытом разработки, чтобы вернуться в график. Средняя текучка среди новичков: три месяца. Это минимальный срок, чтобы иметь право уволиться во Франции.

Источник
Загрузка...
3 месяца назад
#

Без new: Указатели будут удалены из C++



Две недели назад в Джэксонвилле встречался комитет стандарта ISO C++. Сегодня я хочу представить короткую сводку и написать о революционном решении, принятом на собрании в Джэксонвилле. Для получения дополнительной информации я рекомендую к прочтению статью C++ больше не будет иметь указатели. Комитет по стандартизации языка принял решение о том, что указатели будут объявлены устаревшими в C++20 и с большой долей вероятности будут удалены из C++23.



Откровенно говоря, то, что кажется революционном, — всего лишь последний шаг длинной эволюции.



image

Источник
Загрузка...
3 месяца назад
#

C++ велосипедостроение для профессионалов



Классы, которые люди самостоятельно пишут, а потом копируют из одного проекта в другой, хотя они уже есть в стандартных библиотеках, в простонародье называются
велосипедами. Первый вопрос, который возникает при встрече с таким «велосипедом» —
зачем люди переписывают что-то заново? Вариантов может быть несколько.

  • Некоторые делают это для самообучения: берут класс стандартной библиотеки, пишут его сами с нуля, сравнивают то, что получилось, с тем, что есть в стандартной библиотеке — в процессе узнают для себя что-то новое.

  • Некоторые проекты имеют особое требования к коду. В embedded-разработке принято работать без RTTI и без exception, поэтому части стандартной библиотеки, которые используют RTTI и exception, необходимо переписать без них.

  • Редко, но бывает, когда велосипед пишут, потому что могут написать лучше, чем в стандартной библиотеке. Как правило, такие нововведения рано или поздно попадают в стандартную библиотеку.

  • Другим только кажется, что они могут написать лучше, и таких людей больше. Но в процессе они обучаются, выясняют для себя что-то новое и что-то интересное открывают.

  • Могут быть другие причины.



Сегодня мы 
не будем говорить о том, что велосипеды — это плохо, это не обязательно так. Мы поговорим о том, что действительно плохо:

  • бездумно переносить устаревшие технологии 20-30-летней давности в современные проекты;

  • пользоваться «вредными» бенчмарками и оптимизациями.



А также затронем
«вредные» советы, обсудим
новейшие практики программирования (C++ 11 и позднее), подумаем, что делать с 
«идеальным» велосипедом.

Источник
Загрузка...
3 месяца назад
#

Релиз CLion 2018.1: новые возможности из С++17, поддержка WSL, CMake Install, плагин для Rust и многое другое



Привет, Хабр!

Вот и подоспел первый релиз
CLion в этом году —
2018.1! В этом посте мы расскажем, что мы успели реализовать за эти месяцы и какие планы у нас на следующий релиз.

image

Cначала очень коротко о главном. В этот релиз вошли:

  • Поддержка языка C++
    • Поддержка возможности C++17: structured binding

    • Поддержка возможности C++17: операторы if и switch с инициализаторами

    • Множество баг-фиксов и улучшений



  • Возможность использовать файлы конфигурации Clang-Tidy в CLion, а также настраивать опции для проверок из Clang-Tidy в интерфейсе CLion

  • Улучшения для пользователей Windows
    • Компилятор Microsoft Visual C++ включен по умолчанию

    • Поддержка подсистемы WSL



  • CMake и не только
    • Вызов из IDE CMake Install

    • Шаблоны для создания файлов CMakeLists.txt

    • Возможность открыть файл или папку без проектной модели CMake



  • Экспериментальная поддержка hex view в отладчике

  • Улучшения редактора:
    • “Хлебные крошки” (breadcrumbs) для C/C++

    • Действие Unwrap

    • Сворачивание управляющих конструкций



  • Поддержка новых языков в CLion: Objective-C / Objective-C++, Rust, Fortran



Можно прямо сейчас скачать бесплатную 30-дневную версию с
нашего сайта и попробовать новые возможности. Для этого мы даже подготовили специальный небольшой
демо-проект. А ниже поговорим об улучшениях более подробно.

Источник
Загрузка...
3 месяца назад
#

Окна на чистом WinAPI. Или просто о сложном



Disclaimer

Казалось бы, что WinAPI уходит в прошлое. Давно уже существует огромное количество кросс-платформенных фреймфорков, Windows не только на десктопах, да и сами Microsoft в свой магазин не жалуют приложения, которые используют этого монстра. Помимо этого статей о том, как создать окошки на WinAPI, не только здесь, но и по всему интернету, исчисляется тысячами по уровню от дошколят и выше. Весь этот процесс разобран уже даже не по атомам, а по субатомным частицам. Что может быть проще и понятнее? А тут я еще…

Но не все так просто, как кажется.

Источник
Загрузка...
3 месяца назад
#

Почему функция Heap32Next() работает так медленно на Windows 7?



Если вы занимаетесь системным программированием под Windows, то могли бы заметить, что весьма полезные функции
Heap32First/
Heap32Next и другие из того же семейства стали работать существенно медленнее начиная с Windows 7. Что же с ними случилось?

Давайте перенесёмся в далёкий 1992 год. Разрабатывается Windows 3.1. Одним из новых компонентов в ней стал ToolHelp. Он позволил немного покопаться во внутренностях ядра ОС. Для нас в нём наиболее интересны функции, позволяющие просматривать данные в куче (heap). Поскольку Windows 3.1 использовала
кооперативную многозадачность, вызывая подобные функции можно было быть уверенным в том, что содержимое кучи не изменится между вызовами HeapFirst и HeapNext, ведь у ОС не было права прервать выполнение процесса и переключить контекс на выполнение другого. Вот были времена!

Источник
Загрузка...
3 месяца назад
#

Ускорение перечисления процессов и потоков в ОС Windows



Иногда бывает нужно перечислить все процессы или потоки, которые в данный момент работают в ОС Windows. Это может понадобиться по разным причинам. Возможно, мы пишем системную утилиту вроде
Process Hacker, а может быть мы хотим как-то реагировать на запуск/остановку новых процессов или потоков (писать лог, проверять их, внедрять в них свой код). Самым правильным способом это реализовать является, конечно же, написание драйвера. Там всё просто — используем
PsSetCreateProcessNotifyRoutine и
PsSetCreateThreadNotifyRoutine для установки колбек-функций, которые будут вызываться при запуске/остановке процессов и потоков. Работает очень быстро и не ест ресурсы. Именно так и делают все серьёзные инструменты. Но разрабатывать драйвера — не всегда подходящий способ. Их нужно уметь правильно писать, их с недавних пор обязательно нужно подписывать сертификатами (что не бесплатно) и регистрировать в Microsoft (что не быстро). И ещё их не удобно распространять — например, программы с ними нельзя выкладывать в Microsoft Store.

Ну, давайте тогда пользоваться тем, что предлагает публичный WinAPI. А предлагает он функцию
CreateToolhelp32Snapshot(), которую предлагается использовать
как-то вот так. Всё, кажется, хорошо — есть информация о процессах, потоках. Немного расстраивает тот факт, что вместо элегантных колбеков мы вынуждены делать бесконечный пулинг в цикле, но это ладно.

Самая большая проблема здесь — это производительность. Связка CreateToolhelp32Snapshot() + Process32First() + Process32Next() работает ну очень медленно. Возможно, проблема лежит где-то в той же области, что и описанная вот в
этой статье проблема с Heap32First() + Heap32Next(). Кратко — в силу исторических причин кое-где проход по линейному списку занимает квадратичное время.

Можно ли как-то всё это ускорить? Можно. Но придётся сойти со светлого пути использования одних лишь публичных функций WinAPI.

Источник
Загрузка...
4 месяца назад
#

C++ конференции в апреле



Всем привет!

Сегодня я хотел бы рассказать сразу о двух предстоящих конференциях. Обе конференции организованны C++ сообществами:
C++ Russia в Санкт-Петербурге и
CoreHard Spring в Минске.

Санкт-Петербург



Источник
Загрузка...
1 3 4

Авторизация

Пользователи

stopresniebots1983
tekino
templide
Seangle
Галя Рубцова
Ольга Телюкова
Zhenya
Лариса Аксиненко
Dmitry Loginov