Доповіді конференції CppCon 2014

Нещодавно у місті Белвью (штат Вашингтон) відбулася одна з найбільших конференцій З++ розробників — CppCon 2014. Протягом п'яти днів провідні програмісти таких компаній як Microsoft, Google, Dropbox, Citrix, Embarcadero, Ubisoft, розробники стандарту мови, творці компіляторів З++ і члени ком'юніті opensource-продуктів представляли свої доповіді, ділилися думками про майбутнє мови, пропонували нові ідеї. Нижче я представлю вибірку найбільш вподобаних мені відео з невеликими коментарями від себе. Хочеться відзначити, що вся конференція просто просякнута духом відродження С++ у вигляді поширення стандартів З++11\14, люди розповідають чому вибір З++ виявився для них вірним, як вони успішно мігрували з C#\Java\Objective-C на С++ і не пошкодували про це і т.д.

Вдалого перегляду!

Доповідачі з Dropbox розповідають про те, як вони розробляють на С++ кросплатформені мобільні додатки.
Колись у Дропбокса були класичні мобільні додатки: Java-код для Android і Objetive-C для iOs. Однак згодом команді розробників набридло писати одне і те ж по 2 рази на різних мовах і вони прийшли до висновку про необхідність створення загальної кодової бази на З++. Згодом виявилося, що яку б архітектуру не мало додаток (MVC, MVVM або що-небудь інше), фактично весь код крім в'юх може бути винесений в С++. Дійсно, на З++ можна реалізувати модель даних, контролери, бізнес-логіку, допоміжні бібліотеки для роботи з мережею, базами даних, парсингу і т.д. Все, що залишається на частку Java і Objective-C — намалювати «рідні» для даної платформи кнопки\списки\лейби на вьюхах. І цей підхід істотно більш прагматичний, ніж писати все двічі.

Перше відео більш оглядове, друге більш практичне.



Edouard Alligand розповідає про те, як їх команда почала розробку великого мультиплатформного продукту на С++11 у 2008-му році (не помилка!), фокусуючись на тому, які саме плюси і мінуси їм дала мультиплатформеність.
Загальна думка доповіді в тому, що підтримка декількох платформ може бути не такою вже складною, якщо використовувати потрібні інструменти. Більш того, вимога компілюватися різними компіляторами і працювати під різними ОС (Linux і FreeBSD до iOs і Windows) робить розробника більш дисциплінованим, змушує його розуміти, що «невизначений поведінка» може бути по-різному невизначеним на різних платформах і тому потрібно уникати гострих кутів. Доповідач рекомендує всім розробникам відразу писати код на с++ З урахуванням того, що він може бути скомпільованим під різні платформи, використовувати перевірені мультиплатформенні бібліотеки (наприклад, Boost), вибирати в якості білд-системи CMake і т.д.


Rachel Cheng і Michael VanLoon розповідають про бібліотеку Boost — її вплив на нові стандарти З++, про «мосту» до нових фічами для людей, застравших в силу обставин на старих компіляторах. Перша половина доповіді присвячена розумним вказівниками і RAII в С++11 і Boost — хороша можливість розібратися в темі для тих, хто ще не в курсі. Друга частина пробігається за деякими можливостями Boost — роботі з перерахуваннями, ініціалізації контейнерів, регулярними виразами, потоками, мережею. Вийшла така-собі дещо ідеалізована ода бібліотеці Boost, але бібліотека адже і справді чудова, так що чому б і ні.


Gor Nishanov з Microsoft розповідає про еволюцію поняття співпрограми (coroutine) в C++, відновлюваних функції в майбутньому стандарті С++17 і про те, як все це Microsoft збирається реалізувати у своєму компіляторі С++. Розмова йде про те, що співпрограми відрізняються від потоків, на чому вони економлять системні ресурси, як це все вписується в С++, яким чином співпрограми будуть спілкуватися із зовнішнім кодом, а зовнішній код з ними.



Jeff Preshing з Ubisoft перші 5 хвилин презентації грає роль Капітана Очевидність, розповідаючи про те, як за останні 10 років процесори комп'ютерів і приставок стали багатоядерними, але далі презентація йде бадьоріше і розповідається про те, як Ubisoft використовує багатоядерність і багатопоточність у своїх ігрових движках в таких іграх як " Watch Dogs, Far Cry і Assassin's Creed. Джефф розповідає про те, з яких компонентів складається движок гри, як ці компоненти можуть працювати паралельно, обмінюватися повідомленнями, спільно використовувати одні і ті ж дані з різних потоків і як все це виглядає на З++.


Астрофізик Vincent Reverdy з Паризької обсерваторії в першій половині доповіді намагається хвилин за 15 пояснити як влаштований Всесвіт :) Ну вірніше, як цю саму Всесвіт вчені намагаються симулювати на суперкомп'ютерах з більш високим ступенем достовірності. Він розповідає, що більшість наукового софтвера все ще написано на Фортране і часом важко використовувати переваги сучасних архітектур та компіляторів. Далі йдеться про те, які саме фічі С++ можуть бути корисними при написанні саме наукових програм. Взагалі, я б не сказав, що доповідь корисний у плані отримання знань З с++, але дає непогане розуміння того, що і як робиться в сучасному програмуванні у сфері науки.


Lenny Maiorani з компанії F5 Networks нагадує про те, що наші теоретичні уявлення про швидкість роботи і споживанні пам'яті різними типами контейнерів можуть істотно відрізнятися від реальності і отримання максимальної продуктивності потрібно використовувати тести.


Alisdair Meredith з комітету по стандартизації С++ розповідає про стандарт С++14, фокусуючись на тому, як проходив розгляд і прийняття стандарту, чому були зроблені ті чи інші рішення, що і чому увійшло і не ввійшла в стандарт. Від доповіді в перші 10 хвилин трохи віє бюрократією, але далі стає цікавіше.


Як відомо, всі програмісти поділяються на тих, хто розуміє, що таке Unicode і тих, хто�� ��������, ��� ����� Unicode. Саме для другого типу програмістів James McNellis (провідний розробник з команди Microsoft Visual C++) розповідає про кодуваннях, юнікод і про те, як все це працює в С++ взагалі і в Visual C++ від Microsoft зокрема. Іронічно, звичайно, що про важливість універсальних кодувань розповідає розробник з компанії Microsoft, відомої в недалекому минулому своєю пристрастю до велосипедостроению в даній області, але як кажуть, краще пізно, ніж ніколи.


Ще один доповідь від розробники з Ubisoft про те, як у них прийнято писати на С++. Деякі речі вражають своєю радикальністю (наприклад, ніякого RAII, ніяких STL-контейнерів, ніякого Boost, використання Visual Studio, але відмова від MSBuild, своя реалізація віртуальних функцій), але трохи подумавши, стає зрозуміло, що найбільша гейм-студія в світі, успішно випускає ААА-ігри, напевно, розуміє, що вона робить.


John «JT» Thomas з Embarcadero розповідає про те, як використання CLANG і LLVM зробило їх продукт краще. Чесно кажучи, весь доповідь мене не полишало якесь почуття нерозуміння про що взагалі мова: як CLANG і LLVM і так ніхто начебто не сумнівався, а ось в чому перевага продуктів Embarcadero на їх базі так зрозуміло і не стало. Пам'ятається, Delphi і C++ Builder були популярними продуктами років 10 тому, можливо, в якійсь частині программерской всесвіту вони все ще рулять, але особисто я від них якось дуже далекий.


Борис Ковпаків із Code Synthesis поміркував про те, як було б класно мати менеджер пакетів для С++. Не можна не погодитися — було б класно, але в доповіді не було ні розповіді про спроби його створити, ні аналізу чужих проектів з цієї області. Загалом, презентація в стилі «а давайте зробимо NuGet для С++ і додамо в нього все-все З++ бібліотеки» без яких-небудь практичних порад і висновків.


Roland Bock з PPRO Financial Ltd розповів про свої ідеї щодо розширення синтаксис С++ (параметризації імен полів класу, розширення стандартного типу tuple, CRTP, миксинах).


Зовсім не технічний доповідь від Jens Weller про різних конференціях З++ розробників. Людина відвідує їх близько десятка в рік і сам організовує одну, так що в темі розбирається. Якщо вибираєте, куди б з'їздити — можна послухати.


Nate Kohl — творець cppreference.com (одного з найпопулярніших сайтів з документацією по С++) розповідає про історію створення цього сайту, наповнення його контентом, створення користувальницького ком'юніті і планах цього сайту на майбутнє.


James McNellis і Kate Gregory з Microsoft розповідають про прекрасному й потворному коді на З++. В основному говорять досить відомі речі про макроси, коментарях, перетворення типів, декомпозиції коду, велосипедостроении, але в принципі може бути корисно подивитися і нагадати собі, що код на С++ дійсно може бути простим та елегантним.


Доповідь Stefanus DuToit з Thalmic Labs я, чесно кажучи, не стільки слухав, скільки дивився як він проводить презентацію з розробленим його фірмою браслетом Myo, зчитувальному електричні імпульси до м'язів руки для розпізнавання жестів. Чесно кажучи, виглядає дещо дивно. З одного боку — браслет дійсно розпізнає жести типу «перегортання» для керування презентацією, з іншого боку доповідачу припадає 90% часу намагатися тримати руку нерухомо щоб уникнути помилкового спрацьовування. У результаті рука з браслетом виглядає як причеплений до плеча протез, натуральність рухів істотно втрачається. Вибачте за відхід від теми доповіді до вражень від браслета, але в цій доповіді це здалося мені цікавіше доповіді.


Інші доповіді можна подивитися на офіційному каналі конференції: www.youtube.com/user/CppCon

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.