Підшивки / Статті GarfieldUA / OOP - Портал об’єктно-орієнтованого програмування Подорожуй з gofrie.com

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 з різними рівнями складності.
Доповідач: Владислав Вальт

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

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

Coursera - онлайн курси, що змінили уявлення про навчання



На сьогодні Coursera є найбільшою платформою безкоштовної академічної онлайн-освіти. На даний момент тут зібрані близько 400 курсів з різноманітних галузей з 69 міжнародних університетів. Станом на травень 2013, на Coursera було зареєстровано 3,5 мільйонів користувачів з усього світу.

Що ж стосується фаху копм'ютерних наук, то наразі на Coursera представлені близько 100 курсів. З них варто виокремити курс Machine Learning, автором якого є Andrew Ng. Більше того, завдяки цьому популярному онлайн-курсу власне і було створено цей чудовий портал онлайн-навчання.

Головна перевага Coursera як освітнього порталу в тому, що він пропонує повноцінні курси, що містять не лише відеоматеріали, але й завдання, які сприяють поглибленому засвоєнню матеріалу. Форма завдань залежить від специфіки курсу: це можуть бути тести, есе, проекти.

Після закінчення курсу та у разі набору певної мінімальної оцінки (зазвичай 70-80%) студентам видається цифровий сертифікат про успішне завершення курсу. Хоча такий сертифікат не є офіційним документом, проте більшість працедавців враховують їх під час подачі резюме до місця роботи.

Задача: Робота з матрицями

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

Вивід матриці має бути у вигляді (a_11 = 1, a_12 = 2, a_21 = 3, a_22 = 4): 1 2 3 4.

Задача: Пошук у загорнутому впорядкованому векторі a всіх членів загорнутого впорядкованого вектора b

Запрограмуйте функцію пошуку у загорнутому впорядкованому векторі a всіх членів загорнутого впорядкованого вектора b.

Вивід вектору має бути у вигляді: (1, 2, 3, 4).
Якщо елемент у векторі відсутній, то вивід має бути таким: (1, 2, NULL, NULL).

Задача: Обчислення гармонійно-геометричного середнього

Запропонуйте обчислення гармонійно-геометричного середнього, яке визначається як спільна границя двох послідовностей:

a_0 = a, b_0 = b; a_{n+1} = \frac{2}{\frac{1}{a_n}+\frac{1}{b_n}}; b_{n+1} = \sqrt{a_n b_n}; n = 1,2...

Задача: Обчислення довільного члена послідовності

Запрограмуйте функцію для обчислення довільного члена послідовності

a_0=1, a_1=0, a_2=1; a_{n+3}=a_n+2a_{n+1}+3a_{n+2}; n=0,1,...

Задача: Обчислення сумми

Запрограмуйте функцію для обчислення суми
s_{n} = x^{1^{2}}+x^{2^{2}}+...+x^{n^{2}}

Задача: Спрощення оператора

Спростити оператор

if (x>y) 
    z=x; 
else 
    z=y;

Герб Саттер. Стандарты программирования на С++



Ця книга допоможе початківцю стати професіоналом, оскільки в ній представлений сконцентрований кращий досвід програмістів на C++, узагальнений двома експертами світового класу. Програмісти-початківці знайдуть в ній прості і зрозумілі рекомендації для щоденного використання, підкріплені прикладами їх конкретного застосування на практиці. Досвідчені програмісти знайдуть у ній поради та нові рекомендації, які можна відразу ж прийняти на озброєння. Програмісти-професіонали можуть використовувати цю книгу як основу для розробки власних стандартів кодування, як для себе особисто, так і для групи, якою вони керують.

Звичайно, книга розрахована в першу чергу на професійних програмістів з глибокими знаннями мови, однак вона буде корисна будь-якому, хто захоче поглибити свої знання в даній області.

Герб Саттер. Решение сложных задач на C++



У даному виданні об'єднані дві широко відомі професіоналам в області програмування на C++ книги Герба Саттера Exceptional C++ і More Exceptional C++, що входять у серію книг C++ In-Depth, редактором якої є Бьерн Страуструп, творець мови C++.

Матеріал цієї книги складають перероблені завдання серії Guru of the Week, розраховані на читача з досить глибоким знанням C++, проте книга буде корисна кожному, хто хоче поглибити свої знання в цій області.

Скотт Мэйерс. Наиболее эффективное использование C++



У новій книзі Скотта Мейерса, яка є продовженням популярного видання "Эффективное использование C++", наводяться рекомендації щодо найбільш ефективного використання конструкцій мови C++. Розглядаються правила довизначення операторів, способи зведення типів, реалізація механізму RTTI і багато іншого. Дано практичні поради щодо застосування буферизованного оператора new, віртуальних конструкторів, інтелектуальних покажчиків, proxy-класів і подвійної диспетчеризації. Особлива увага приділяється роботі з винятками і можливостям використання коду С в програмах, написаних на C++. Докладно описані новітні засоби мови і показано, як з їх допомогою підвищити продуктивність програм. Додатки містять код шаблону auto_ptr і анотований список літератури та Internet-ресурсів, присвячених C++.

Александреску. Современное проектирование на С++



У книзі викладена нова технологія програмування, що являє собою «мікс» з узагальненого програмування, шаблонного метапрограмування і об'єктно-орієнтованого програмування на C++. Узагальнені компоненти, створені автором, високо підняли рівень абстракції, наділивши мову C++ рисами мови специфікації проектування, зберігши всю її міць і виразність.
У книзі викладені способи реалізації основних шаблонів проектування.

Книга призначена для досвідчених програмістів на C++ і безумовно варта уваги.