c++11

  • ХабрахабрФото Альтернативное понимание контекста с помощью статистической языковой модели

    Альтернативное понимание контекста с помощью статистической языковой модели

    В интернете полно статей на тему основанных на N-граммах языковых моделей. При этом, готовых для работы библиотек довольно мало. Есть KenLM, SriLM и IRSTLM. Они популярны и используются во многих крупных проектах. Но есть проблемы: Библиотеки старые, не развиваются. Плохо поддерживают русский язык. Работают только с чистым, специально подготовленным, текстом Плохо поддерживают UTF-8. Например, SriLM с флагом tolower ломает кодировку.…

    Читать далее »
  • ХабрахабрФото Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби» — разбор полётов

    Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби» — разбор полётов

    В настоящей статье приводится разбор вариантов устранения антипаттерна «Зомби», описанного в первой части: Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби». Введение Весь код, приведённый в статье, опубликован на гитхабе в ветках. В коде использованы несколько новшеств C++17 — weak_from_this(), if statement with init-statement, может что-то ещё по мелочи. Уничтожение вышестоящей бизнес-логикой всех сильных ссылок на экземпляр класса не приводит к…

    Читать далее »
  • ХабрахабрФото Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби»

    Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби»

    В статье приводится опасный антипаттерн «Зомби», в некоторых ситуациях естественным образом возникающий при использовании std::enable_shared_from_this. Материал — где-то на стыке техники современного C++ и архитектуры. Введение C++11 предоставил разработчику замечательные инструменты для работы с памятью — умные указатели std::unique_ptr и связку std::shared_ptr + std::weak_ptr. Использование умных указателей по удобству и безопасности существенно перевешивает использование сырых указателей. Умные указатели широко применяются…

    Читать далее »
  • ХабрахабрФото Неопределённое поведение с устаревшими объявлениями функций в ANSI C

    Неопределённое поведение с устаревшими объявлениями функций в ANSI C

    Прототипы были введены с целью устранить недостатки, которыми обладают обычные объявления функций. Стандарт ANSI C определяет понятие прототипа функции, представляющее собой подмножество объявления функции, которое указывает типы входных параметров. Таким образом, указание списка типов параметров в круглых скобках прототипа функции обязательно, иначе такое выражение будет признаваться компилятором как устаревшее объявление функции, что может привести к неоднозначным ситуациям, описанным в данной…

    Читать далее »
  • ХабрахабрФото Техника избежания неопределённого поведения при обращении к синглтону

    Техника избежания неопределённого поведения при обращении к синглтону

    В статье рассмотрены причины возникновения и способы избежания неопределённого поведения при обращении к синглтону в современном c++. Приведены примеры однопоточного кода. Ничего compiler-specific, всё в соответствии со стандартом. Введение Для начала рекомендую ознакомиться с другими статьями о синглтонах на Хабре:Три возраста паттерна SingletonСинглтоны и общие экземпляры3 cпособа нарушить Single Responsibility PrincipleSingleton — паттерн или антипаттерн?Использование паттерна синглтон… и наконец статья,…

    Читать далее »
  • ХабрахабрФото [Перевод] Лямбды: от C++11 до C++20. Часть 2

    [Перевод] Лямбды: от C++11 до C++20. Часть 2

    Привет, хабровчане. В связи со стартом набора в новую группу по курсу «Разработчик C++», делимся с вами переводом второй части статьи «Лямбды: от C++11 до C++20». Первую часть можно прочитать тут. В этой статье я описал побуждения, стоящие за этой мощной фичей C++, базовое использование, синтаксис и улучшения в каждом из языковых стандартов. В первой части серии мы рассмотрели лямбды…

    Читать далее »
  • ХабрахабрФото [Перевод] Лямбды: от C++11 до C++20. Часть 1

    [Перевод] Лямбды: от C++11 до C++20. Часть 1

    Добрый день, друзья. Сегодня мы подготовили для вас перевод первой части статьи «Лямбды: от C++11 до C++20». Публикация данного материала приурочена к запуску курса «Разработчик C++», который стартует уже завтра. В этой статье мы пройдемся по их истории и посмотрим на эволюцию этой важной части современного C++. Лямбда-выражения являются одним из наиболее мощных дополнений в C++11 и продолжают развиваться с…

    Читать далее »
  • ХабрахабрФото Вред макросов для C++ кода

    Вред макросов для C++ кода

    Язык C++ открывает обширные возможности для того, чтобы обходиться без макросов. Так давайте попробуем использовать макросы как можно реже! Например, когда речь заходит о ручной генерации однотипного кода, я могу признать пользу от макросов и смириться с ними. Сразу оговорюсь, что я не являюсь фанатиком и не призываю отказываться от макросов из идеалистических соображений. Нет смысла воевать с чем-то вроде…

    Читать далее »
  • ХабрахабрФото Реализация горячей перезагрузки С++ кода в Linux и macOS: копаем глубже

    Реализация горячей перезагрузки С++ кода в Linux и macOS: копаем глубже

    Для понимания того, что происходит, и кто все эти люди, рекомендую прочитать предыдущую статью. *Ссылка на библиотеку и демо видео в конце статьи. "Код" в данном случае — это функции, данные и их согласованная работа друг с другом. В прошлой статье мы ознакомились с подходом, позволяющим осуществлять "горячую" перезагрузку c++ кода. Проблема возникает с данными (статическими и глобальными переменными), а…

    Читать далее »
  • ХабрахабрФото [Из песочницы] Реализация горячей перезагрузки С++ кода в Linux

    [Из песочницы] Реализация горячей перезагрузки С++ кода в Linux

    В самой статье изложены механизмы, реализованные в библиотеке, со средней детализацией. * Ссылка на библиотеку в конце статьи. Здесь в основном рассматривается реализация для Linux. Реализация для macOS еще не закончена, но она мало чем отличается от реализации для Linux. Сам я слез с windows несколько лет назад, ни капли не пожалел, и сейчас все программирование происходит либо на Linux…

    Читать далее »


Кнопка «Наверх»