суббота, 16 мая 2015 г.

[prog.flame.c++14] Таки почему Rust не убийца C++...

...хорошо показывает вот эта презентация о новой библиотеке для шаблонного метапрограммирования в C++14 под названием Hana.

Презентация не простая. Для ее полного понимания нужно иметь очень хорошее знание C++. Я, например, понимал далеко не все.

Тем не менее, это именно то направление, куда движется C++. И это совсем не то направление, в котором пытается застолбить себе нишу Rust.

Складывается ощущение, что Rust ставит себе целью сократить количество проблем при программировании на C. Грубо говоря, Rust позиционируется как инструмент, посредством которого человек продолжает писать на C, но попытки выстрела в ногу пресекаются компилятором. Причем уровень безопасности определяется разработчиками языка/компилятора.

Тогда как C++ последние лет 20-25 развивается так, чтобы позволить прикладным программистам писать максимально высокоуровневый код, который при этом имеет достойную эффективность. И защита от отстреливания ног обеспечивается не жесткими требованиями языка/компилятора, а свойствами заточенных под задачу прикладных библиотек.

Как раз Hana, на мой взгляд, является показательным этапом эволюции средств шаблонного метапрограммирования, запущенного в массы с легкой руки Александреску. Да, для этого потребовалось много времени. Тем не менее, результат развития языка и экосистемы вокруг него, на примере Hana можно увидеть достаточно четко.

Повторюсь: то, что демонстрирует Hana -- это направление движения C++. Пока это авангард, но через 5-7 лет такие вещи станут обыденными для средней руки разработчиков. Что, имхо, уже сейчас делает разработку на C++ более похожей на разработку на Haskell-е или OCaml-е, чем на программирование на C, пусть даже с классами.

Поэтому вряд ли Rust сможет стать убийцей C++. Ведь одно дело бить по рукам программиста за попытку вызвать free() не в том месте. И совсем другое -- предоставлять набор средств для произвольного повышения уровней абстракции. По моему скромному опыту, упрощение решения сложных задач и минимизация количества ошибок за счет использования более высокоуровневых библиотек гораздо важнее, чем контроль за временем уничтожения объектов со стороны компилятора.

пятница, 15 мая 2015 г.

[life.photo.thoughts] Фотокамера для новичка

Желание написать этот пост возникло в результате недавнего обсуждения на Тупичке Гоблина. Итак, если бы у меня сейчас спросили, какую камеру имеет смысл купить для того, чтобы научиться фотографировать, то...

понедельник, 11 мая 2015 г.

[life.photo] Мини-серия про пожилого коллекционера

Бродил 9-го мая по центру праздничного города. В Пионерском скверике несколько коллекционеров представляли свои коллекции. Прошел мимо них, сделал несколько кадров, как казалось, проходных. Не придал этому особого значения, после чего отправился бродить дальше. И только сейчас, во время обработки понял, что одна мини-серия подняла пласт очень старых, еще детских впечатлений.

воскресенье, 10 мая 2015 г.

[life.photo] Про реслинг (с десантником Гошей)

В программу культурно-массовых мероприятий нашего микрорайона на День Победы входил такой загадочный пункт, как реслинг. Т.е. борьба на ринге, если говорить по-русски. Чтобы посмотреть, что это за зверь такой, взял свой самый большой и тяжелый объектив и отправился посмотреть.