Давайте знакомиться: компания Align Technology


Типизированный язык программирования






Ремарка от автора
Это статья новая, но она не о новых возможностях. Она о core, то есть о платформе и о том что многие кто просто используют grunt, или webpack могут не подозревать, так скзать about fundamentals.
Более подробно читайте:
комментарии rumkin:
habrahabr.ru/company/mailru/blog/283228/#comment_8890604
комментарии Aiditz:
habrahabr.ru/company/mailru/blog/283228/#comment_8890476
комментарии Suvitruf:
habrahabr.ru/company/mailru/blog/283228/#comment_8890430
code.

Нет нужды описывать чем хорош pattern matching. Так как в любом случае такой конструкции в С++ нет.
Без него же работа с шаблонами, часто обрастает лесами понятного и полезного кода.
Итак предлагаю способ некоего подобия pattern matching`а для С++14 (скорее даже type matching'a), который укладывается в 50 строк кода, не использует макросы и вообще кросс-компиляторный.
Сначала пример использования: http://coliru.stacked-crooked.com/a/6066e8c3d87e31eb
template<class T>
decltype(auto) test(T& value) {
return match(value
,[](std::string value) { cout << "This is string"; return value + " Hi!"; }
,[](int i) { cout << "This is int"; return i * 100; }
,[](auto a) { cout << "This is default";return nullptr; }
);
}compile-time Условия: http://coliru.stacked-crooked.com/a/ccb13547b04ce6ad
match(true_type{}
,[](bool_constant< T::value == 10 >) { cout << "1" ; }
,[](bool_constant< (T::value == 20 && sizeof...(Args)>4) >) { cout << "2" ; }
);Возвращаем тип: http://coliru.stacked-crooked.com/a/0a8788d026008b4b
auto t = match(true_type{}
,[](is_same_t<T, int>) -> type_holder<short> { return{}; }
,[](auto) -> type_holder<T> { return{}; }
);
using I = typename decltype(t)::type;
I i = 1000000;В этой статье мы рассмотрим как рендерить капли на OpenGL и расчитывать на лету нормаль для отражения и прозрачности. А так же, что такое Metaballs, баги графических чипсетов и какие трюки оптимизации можно применить для 60 FPS на мобильных девайсах.

Здравствуйте, уважаемые читатели.
Меня зовут Стас, я инженер команды DevOps Tooling в компании Align Technology.
В этой статье я попробую коротко рассказать про то, как в нашей компании внедрили статический анализ кода на основе PVS-Studio.
Приблизительно год назад мы задумались о том, чтобы внедрить в нашей компании статический анализ.
Мы и раньше использовали для этого различные средства, в том числе и для C/C++ проектов. Потому было интересно попробовать новый инструмент для известной задачи.
Инструмент, более совершенный, чем встроенный средства VS, cpp-check, интегрированный в Sonar.

КДПВ
От переводчика:
Большинство моих знакомых для измерения времени в разного вида бенчмарках в С++ используют chrono или, в особо запущенных случаях, ctime. Но для бенчмаркинга гораздо полезнее замерять процессорное время. Недавно я наткнулся на статью о кроссплатформенном замере процессорного времени и решил поделиться ею тут, возможно несколько увеличив качество местных бенчмарков.
P.S. Когда в статье написано "сегодня" или "сейчас", имеется ввиду "на момент выхода статьи", то есть, если я не ошибаюсь, март 2012. Ни я, ни автор не гарантируем, что это до сих пор так.
P.P.S. На момент публикации оригинал недоступен, но хранится в кэше Яндекса
Функции API, позволяющие получить процессорное время, использованное процессом, отличаются в разных операционных системах: Windows, Linux, OSX, BSD, Solaris, а также прочих UNIX-подобных ОС. Эта статья предоставляет кросс-платформенную функцию, получающую процессорное время процесса и объясняет, какие функции поддерживает каждая ОС.
Продолжаем серию статей о мобильном геймдеве. В этой статье я расскажу как рендерить UTF-8 текст с помощью SDF Bitmap шрифтов, как эти шрифты создавать и как использовать эту технику для качественного рендеринга иконок.





