Подорожуй з gofrie.com

Typelists

В даній доповіді розказано про метапрограмування засобами C++, а саме про списки типів, в якому типи представлені у вигляді однозв'язного списку, реалізованого засобами рекурсивних шаблонів.

Варто згадати рядки Александреску:
C++ is a language that leads its users sometimes to say, «These are the smartest five lines of code I ever wrote.»


template <class T, class U>
struct Typelist {
    typedef T Head;
    typedef U Tail;
};

Концепція є простою: голова і хвіст списку зберігають типи. Така особливість мови C++, як template parameters дозволяє в свою чергу зберігати в хвості новий typelist.

Презентація
Реалізація
Доповідач: Єгор Даниленко

Small objects allocation

В даній доповіді розповідається про виділення в пам'яті комп'ютера невеликих об'єктів. Розглядаються та порівнюються стандартне виділення пам'яті та виділення пам'яті що реалізовано у бібліотеці Loki, також наглядно демонструється швидкодія цих методів.
В кінці доповіді автор робить висновки щодо можливості і швидкодії динамічної пам'яті та стеку.

Матеріал, що допоможе краще зрозуміти суть доповіді.
Презентація
Реалізація#1 (код, яким автор тестував швидкодію)
Реалізація#2 (рекурсивний стек)
Доповідач: Андрій Чайка

Generalized Functor

In brief, a generalized functor is any processing invocation that C++ allows, encapsulated as a typesafe first-class object. In a more detailed definition, a generalized functor that

  • Encapsulates any processing invocation because it accepts pointers to simple functions, pointers to member functions, functors, and even other generalized functors—together with some or all of their respective arguments.
  • Is typesafe because it never matches the wrong argument types to the wrong functions.
  • Is an object with value semantics because it fully supports copying, assignment, and pass by value. A generalized functor can be copied freely and does not expose virtual member functions.

Presentation
Implementation#1 (using Loki library)
Implementation#2 (Functional tester, briefly analyze the possibility to combine several common functional objects in the context of a conventional tester as at compile time and at runtime.)
Reporter: Danylo Fitel

Singleton

Одинак (англ. Singleton) — шаблон проектування, відноситься до класу твірних шаблонів. Гарантує, що клас матиме тільки один екземпляр, і забезпечує глобальну точку доступу до цього екземпляра.

У даній доповіді розглянено наступні питання:

  • Instance Implementation
  • Unicity
  • Destroying the Singleton
  • Meyers Singleton
  • Dead-reference problem
  • The Phoenix Singleton
  • Singletons with Longevity

Презентація
Доповідач: Діана Сіренко

Smart Pointers

Smart pointers have been the subject of hecatombs of code written and rivers of ink consumed by programmers and writers around the world.
A smart pointer is a C++ class that mimics a regular pointer in syntax and some semantics, but it does more.
In brief, smart pointers are C++ objects that simulate simple pointers by implementing operator-> and the unary operator*.

In this report there are reviewed following questions:

  • The advantages and disadvantages of smart pointers
  • Ownership management strategies
  • Implicit conversions
  • Tests and comparisons
  • Multithreading issues

Presentation
Implementation
Reporter: Taras Leginevych

Abstract Factory

Абстра́ктна фа́брика (англ. Abstract Factory) — шаблон проектування, відноситься до класу твірних шаблонів. Подає інтерфейс для утворення родин взаємозв'язаних або взаємозалежних об'єктів, не специфікуючи їхніх конкретних класів.

Презентація
В даній доповіді наглядно описана проблематика задачі за рахунок наведення прикладу застосування Abstract Factory під час розробки комп'ютерної гри, в якій наявний AI з різними рівнями складності.
Доповідач: Владислав Вальт

Презентація
Доповідач: Артем Димченко

Рецензія Андрія Баранова на доповідь Артема Димченка

Прийоми програмування

У даній доповіді розглядаються наступні поняття:

  • Статистична перевірка діагностичних тверджень
  • Часткова спеціалізація шаблонів
  • Локальні класи
  • Відображення цілочисельних констант у типи
  • Відображення одного типу в інший
  • Вибір типу

Презентація
Реалізація

Доповідач: Новосельцев Олександр

Smart Pointers

In computer science, a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic memory management or bounds checking. These additional features are intended to reduce bugs caused by the misuse of pointers while retaining efficiency. Smart pointers typically keep track of the memory they point to. They may also be used to manage other resources, such as network connections and file handles.

Презентація
Реалізація

Доповідач: Денис Мехед

Abstract Factory

Абстра́ктна фа́брика (англ. Abstract Factory) — шаблон проектування, відноситься до класу твірних шаблонів. Подає інтерфейс для утворення родин взаємозв'язаних або взаємозалежних об'єктів, не специфікуючи їхніх конкретних класів.

Презентація
Реалізація

Доповідач: Євген Лубянов

Презентація
Реалізація

Доповідач: Роман Терновий

Visitor

Відвідувач (Visitor) — шаблон проектування, який дозволяє відділити певний алгоритм від елементів, на яких алгоритм має бути виконаний, таким чином можливо легко додати або ж змінити алгоритм без змін щодо елементів системи. Практичним результатом є можливість додавання нових операцій в існуючі структури об'єкта без зміни цих структур.

Презентація
Реалізація (First Simple Visitor)
Реалізація (Generic Acyclic Visitor)
Реалізація (GoF's Visitor)

Доповідач: Ставнича Мирослава

Мультиметоди

Мультиметоди (multiple dispatching) — механізм зв'язування виклику з конкретними функціями, залежно від динамічних типів декількох об'єктів які приймають участь у цьому виклику.

Презентація
Реалізація

Доповідач: Микита Василюк

Розробка класів на основі стратегій

Дана доповідь присвячена розробці класів на основі стратегій. Основна увага в презентації присвячена сутності поняття стратегія, а також призначенню стратегій. Протягом лекції буде розказано і про причини необхідності застосування стратегій. Крім того багато уваги присвячено питанню побудови правильних стратегій і головних класів, а також зв'язкам між стратегіями. Під кінець піднімається питання ортогональної декомпозиції.

Презентація
Реалізація

Доповідач: Герич З.О.