Редкий наброс о том, какой C++ отстой и насколько лучше программировать на теплой ламповой сишечке, обходится без обмазывания C++ных исключений известной субстанцией. Главным аргументом у персонажей с лопатами говна в руках, неизменно является раздел Google C++ Style Guide, посвященный исключениям. Ну что же, давайте заглянем в этот раздел и внимательно прочтем то, что там написано...
пятница, 12 февраля 2016 г.
четверг, 11 февраля 2016 г.
[life] Кратко о впечатлениях от Москвы
В последние годы бываю в Москве очень редко и недолго. Поэтому интересно сравнивать поверхностные впечатления. Как мне кажется, Москва постепенно избавляется от некоторой "бомжеватости". Помнится, когда начинал мотаться в коммандировки в 2000-ом, около станций метро в обе стороны метров на 25-50 тянулись различные торговые лотки, палатки, шаурма, куры-гриль, игровые павильоны и т.д. Не говоря уже про количество ларьков в подземных переходах. Сейчас всего этого стало в разы меньше. И, насколько я смог понять по руинам торговых рядов у м.Сокол, будет еще меньше.
При этом количество стройплощадок существенно увеличилось. Такое впечатление, что вдоль дорог постоянно что-то строят, перестраивают или просто ремонтируют.
Еще больше кажется, что Москва -- это город не для жизни, а для зарабатывания денег. Имхо, жить при таком скоплении народу, даже при всех возможностях, которые открывает этот крупнейший город, понравится далеко не всем. Т.е. подъехать в Москву на день-два ради деловых встреч -- это вполне. А вот жить неделями и месяцами...
PS. Планы, кстати, рассыпаются в пух и прах. Думал, что свободного времени будет много. Оказалось, что нет, да и тем, что представилось, воспользоваться можно было совсем не так, как предполагалось перед поездкой. Тем не менее, спасибо всем за советы. В процессе их изучения нашел для себя много интересного и полезного.
PPS. А телефон-то, похоже, пора менять. На что-нибудь с большим сенсорным экраном :( А жаль, телефон все-таки должен быть с кнопками! :)
PPPS. В завершение еще одна фоточка из комплекса Москва-Сити. Вид из окна одного из офисов где-то в районе 40-го этажа :)

понедельник, 8 февраля 2016 г.
[life.history] "...унесли и его личную карточку с секретным кодом..."
Шикарный фрагмент встретился в книге "Признание шефа разведки". Речь идет про период лечения президента США Рональда Рейгана после покушения на него в марте 1981-го года. Лечение и восстановление, как оказывается, происходило не быстро и чем-то напоминало ситуацию с Борисом Ельциным, который часто "работал на даче с документами". Так вот, один из наглядных штришков того, что творилось на верхушке власти в США:
В госпитале дежурный офицер при президенте, который носил с собой коды и приказы президента для запуска ракет с ядерным оружием в случае войны, вел бесплодную борьбу с ФБР. Забрав с собой личные вещи и одежду президента как возможные доказательства в ходе расследования покушения, сотрудники ФБР унесли и его личную карточку с секретным кодом, который подтверждал подлинность президентских приказов о нанесении ядерного удара в чрезвычайных обстоятельствах. Официальные лица утверждали, что контроль над ядерными силами США не утерян, но упомянутая путаница указывала на слабость в системе управления ядерным оружием, которая характеризовалась как абсолютно надежная. Состояние президента еще больше усилило чувство потери ориентации в правительстве.
Книга "Признание шефа разведки" написан американцем, Бобом Вудвордом, одним из "отцов" "Уотергейтского скандала".
Так что бюрократия, идиотизм и неразбериха -- это интернациональное явление.
пятница, 5 февраля 2016 г.
[life] Вопрос про Москву
Может так случится, что на следующей неделе пару дней буду в Москве. С кучей свободного, как пока представляется, времени. Которое не понятно, как убить :)
В связи с этим пара вопросов к москвичам и понаехавшим:
В какой сети ресторанчиков с европейской кухней можно нормально поесть? Что-нибудь повыше McDonald's-а и Subway, но и не рестораны высокой кухни :)
Есть ли в Москве какие-то места, где можно спокойно посидеть 3-4 часа в тепле, а если и с WiFi, то вообще здорово? Что-то мне кажется, что если я в какой-нибудь кафейне на такое время зависну с двумя чашечками чая, то на меня будут очень косо смотреть :)
Upd. Спасибо за подсказки в комментариях. Похоже, антикафе или коворкинг -- это очень привлекательный вариант. Может кто порекомендует что-то из этого, особенно если антикафе/коворкинг находится в центре, недалеко от станций метро.
[prog.c++] Чуток подробнее про сравнение производительности SObjectizer-5.5 и CAF
Продолжение старой темы о том, что мы проводим сравнение производительности SObjectizer-5.5 и CAF. Можно сказать, что портирование бенчмарков закончено и результаты получены. Теперь их нужно представить в удобочитаемом и наглядном виде. Чем и занимаемся. Есть надежда, что опубликуем их на следующей неделе в блоге проекта. Пока подтверждается то, о чем мы говорили ранее: на операциях создания/уничтожения акторов мы значительно, в разы проигрываем CAF, но на операциях обмена сообщениями обычно быстрее, местами ощутимо быстрее.
На обмене сообшениями мы медленнее только в одном вырожденном случае, когда запускается тест agent_ring на thread_pool-диспетчере. По сути это однопоточный бенчмарк, наиболее эффективно он работает, когда все акторы привязаны к одной нити. Но в случае работы на пуле потоков наша схема диспетчеризации проигрывает work-stealing схеме CAF-а.
Зато в более подходящем для thread_pool тесте, про который уже когда-то говорилось и который похож на тесты для Akka, результаты получаются следующие.
четверг, 4 февраля 2016 г.
[prog.flame] Конкурентный HelloWorld на Go и на C++
Поиск в Google по ключевым словам "actor model C++" привел вот к этой записи в чьем-то блоге: Concurrent Hello World in Go, Erlang and C++. Go-шный вариант там выглядит весьма симпатично. Отличный показатель того, для чего затачивался язык (а так же показатель того, за пределами какой области язык не нужен). Подумалось, что и на C++ можно сделать не совсем 1-в-1, но очень близкое по стилю.
Попробовал. Кое-что получилось :)
среда, 3 февраля 2016 г.
[prog.flame] Глава про CSP в "Seven Concurrency Model In Seven Week" еще хуже...
После главы про акторов попробовал прочитать главу про CSP. Это вообще лютый звиздец. Вместо рассказа про CSP идет демонстрация каких-то мутных примеров на Clojure и ClojureScript.
Может быть для любителей лиспов там и будет что-нибудь интересное. Например, подогрев теплого чувства внутри от того, что древнее скобочное убожество, программы на котором в XXI-ом веке нужно вручную записывать в обратной польской записи, еще кому-то нужно. Ведь пишут же об этом в модных и молодежных книжках.
Но вот если ты не фанат Lisp-а, и если тебе кажется, что инициирование двух операций с очень разными эффектами посредством <! и <!!, это не есть хорошо и элементарная опечатка может привести к серьезному изменению поведения программы, то ничего полезного про CSP ты не узнаешь.
Единственным положительным остатком лично для меня стало понимание того, что недавнее добавление mchain-ов в SO-5 было правильной вещью. Фактически, для C++ сделаны каналы, аналогичные Clojure-овским (буфферизированные и небуфферизированные, с выбрасыванием самого нового или самого старого сообщения, с тайм-аутами, включая отсчет общего тайм-аута для всей операции receive). Единственное, чего в SO-5 пока нет, как это возможности запустить receive сразу для нескольких mchain-ов. Но это просто из-за того, что в стандартной библиотеке C++ нет чего-то вроде WaitForMultipleObjects из WinAPI. Впрочем, хорошая тема для версии 5.5.16, с некоторой потерей эффективности такой мультканальный receive можно сделать.
Ну и еще одна штука, которая подтверждает правильность использованного в SObjectizer подхода:
The primary strength of CSP compared to actors is flexibility. In an actor program, the medium of communication is tightly coupled to the unit of execution — each actor has precisely one mailbox. In a CSP program, by contrast, channels are first class and can be independently created, written to, read from, and passed between tasks.
Что в моем вольном переводе звучит как:
Главная сильна сторона CSP в сравнении с акторами -- это гибкость. В программе с акторами коммуникации тесно завязаны на единицы исполнения -- каждый актор имеет ровно один почтовый ящик. В программе с CSP, напротив, каналы являются первоклассными сущностями и их можно независимо создавать, писать в них, читать из них, а так же передавать между задачами.
Как раз этого в SO-5 мы и достигли введя mbox-ы, которые можно создавать, в которые можно отсылать сообщения, из которых можно получать сообщения, и которые могут использоваться совместно разными агентами. Т.е. мы получили такую же гибкость, которую дает CSP, но объединив Actor Model и Publish/Subscribe. И добавив к ней недавно еще и полноценные CSP.