вторник, 1 января 2030 г.

О блоге

Более двадцати лет я занимался разработкой ПО, в основном как программист и тим-лид, а в 2012-2014гг как руководитель департамента разработки и внедрения ПО в компании Интервэйл (подробнее на LinkedIn). В настоящее время занимаюсь развитием компании по разработке ПО stiffstream, в которой являюсь одним из соучредителей. Поэтому в моем блоге много заметок о работе, в частности о программировании и компьютерах, а так же об управлении.

Так же я пишу о жизни вообще и о нескольких своих увлечениях: о фотографии (включая публикацию своих фотографий, некоторые есть и на ZeissImages), о спорте, особенно о дартсе, и, совсем коротко, о кино.

понедельник, 31 декабря 2029 г.

[life.photo] Характерный портрет: вы и ваш мир моими глазами. Безвозмездно :)

Вы художник? Бармен или музыкант? Или, может быть, коллекционер? Плотник или столяр? Кузнец или слесарь? Владеете маленьким магазинчиком или управляете большим производством? Реставрируете старинные часы или просто починяете примус? Всю жизнь занимаетесь своим любимым делом и хотели бы иметь фото на память?

Предлагаю сделать портрет в обстановке, связанной с вашей работой или увлечением. Абсолютно бесплатно. Очень уж мне нравится фотографировать людей в их естественной среде. Происходить это может так...

четверг, 21 февраля 2019 г.

[prog.concurrency] И о чем же потрындели эти трое заслуженных товарищей?

Наткнулся давеча на разговор трех мэтров конкурентного программирования: Джо Армстронга (это который папа Эрланга), Тони Хоара (это который папа модели CSP) и Карла Хьюитта (это который папа модели Акторов): Let's #TalkConcurrency Panel Discussion with Sir Tony Hoare, Joe Armstrong, and Carl Hewitt. За несколько подходов осилил стенограмму их разговоров. Но не осилил главного: что в сухом остатке?

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

Есть ощущение, что три почтенных старца потрепались о чем-то своем, изрядно поржав походу дела. И, собственно, все.

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

Кстати говоря, ссылка на эту беседу была найдена на HackerNews. Там в комментариях ничего интересного не обнаружилось. Мне показалось, что доминирует типичное фанбойство Erlang-еров. Мол, в Erlang-е все зашибись, мы делали на Erlang-а ахриненные программы, ничего лучше и не пожелаешь. И все это на фоне неасиляторов с жалобами в стиле "мы не понимаем как акторы нам помогут". Ну еще и Rust-оманы в очередной раз прибежали с воплями про то, какой у них замечательный фетиш.

Хинт для тех, кто не понимает, как акторы могут помочь: акторы вовсе не обязаны вам помочь, это всего лишь один из подходов, где-то он применим, где-то нет.

Но туда же в комментарии пришел и Карл Хьюитт, выдав очередной поток какой-то мутной херни, уж простите мне мой французский. Классы ему, блин чем-то помешали. Ну прямо как в анекдоте: "Не люблю я кошек, от них шерсть, вонь..." -- "Ба! Да вы просто не умеете их готовить!"

В общем, если кто-то хотел потратить часть своего времени на прослушивание/прочтение этой беседы и/или ее обсуждения на HackerNews, то лучше не нужно. Потратьте это время лучше на изучение Erlang, Elixir, Go, Akka, CAF, SObjectizer, Vert.x, Orleans и других инструментов. А так же примеров их использования. Практической пользы будет больше.

понедельник, 18 февраля 2019 г.

[prog.c++] bad_alloc == приговор?

В принципе, свое мнение по поводу контроля или не контроля успешности выделения памяти в C++ программах, я в концентрированном виде высказал когда-то в комментариях на Хабре:

По опыту обсуждения подобной темы складывается ощущение, что в Интернетах есть две секты. Приверженцы первой свято уверены в том, что под Linux-ом malloc никогда не возвращает NULL. Приверженцы второй свято уверены в том, что если память в программе выделить не удалось, но ничего уже в принципе сделать нельзя, нужно только падать.

Переубедить их никак нельзя. Особенно когда эти две секты пересекаются. Можно только принять это как данность. Причем не суть важно, reddit это, Хабр, LOR или еще какой профильный ресурс.

Но в последние несколько недель регулярно приходится сталкиваться с навязыванием мнения, что как-либо бороться с нехваткой памяти бесполезно, что bad_alloc, по сути, является приговором. Причем происходит это так часто, что имеет смысл вновь вернуться к данной теме. Кому интересно, милости прошу под кат.

понедельник, 11 февраля 2019 г.

[prog.memories] Фича, о которой я уже успел пожалеть раза три, минимум. И это еще не предел, наверное...

Когда долго ведешь какой-то проект, то рано или поздно приходится сталкиваться с тем, что принятые когда-то решения, казавшиеся когда-то привлекательными, приносят проблемы. Сегодня попробую рассказать об одном таком решении. Рассказ будет связан с SObjectizer-ом, но главным в рассказе будет не это. Так что кому интересно, как я посыпаю себе голову пеплом, милости прошу под кат.

пятница, 8 февраля 2019 г.

[prog.c++] Первая чужая статья про опыт использования SObjectizer-а

Не могу не поделиться очень приятной для нас, разработчиков SObjectizer-а, новостью: на Хабре появилась первая чужая статья про SObjectizer. Т.е. уже не мы, а обычные пользователи SObjectizer-а делятся своим опытом и впечатлениями.

Вот эта статья: "Если проект «Театр» используй акторов…"

Автору статьи большое спасибо. Даже два. Больших. Одно за то, что отважился применить SObjectizer в продакшене. Второе за то, что нашел время и поделился своим опытом.

От себя хочу добавить несколько вещей, которые мне представляются важными.

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

Во-вторых, отрадно получить подтверждение, что ключевые особенности, можно сказать, краеугольные камни, на которых базируется SObjectizer -- почтовые ящики, агенты+состояния, кооперации и диспетчеры -- действительно оказываются таковыми не только для нас. Это значит, что в свое время мы сделали правильный выбор при проектировании основных принципов работы пятого SObjectizer-а. Это так же означает, что нами был правильно переосмыслен опыт предыдущих версий SObjectizer-а (и его предтечи, SCADA Objectizer-а). Не то, чтобы мы в этом очень сомневались, но получить подтверждение из независимых источников более чем приятно.

В-третьих, хочется особо отметить тот факт, что SObjectizer хоть и является фреймворком, т.е. накладывает некие ограничения на то, как должно строится и работать приложение на базе SObjectizer-а, но это легковесный фреймворк. Который не мешает вам переиспользовать то, что у вас уже есть и работает. В частности, разработчики описанной в статье системы переиспользовали собственную разработку libuniset2.

Сюда же можно добавить еще и то, что SObjectizer написан на C++. Поэтому, если у вас уже есть собственные многолетние наработки на C++ или C, то вам не придется их выбрасывать. Вы вполне можете использовать SObjectizer с уже имеющимся у вас кодом.

В-четвертых, интересно развивается история. SCADA Objectizer создавался для решения задач АСУТП. Затем в SObjectizer-е мы от АСУТП-ных задач ушли. Но при этом использовали, можно сказать, АСУТП-ные подходы для разработке на SObjectizer-е других систем (из области телекома и платежных сервисов). Но, тем не менее, наследственность оказалась столь сильной, что SObjectizer в своем нынешнем виде вновь вернулся к задачам АСУТП. Что лично у меня вызвало огромный приступ ностальгии :)


Отдельно хочу поблагодарить всех, кто на протяжении уже многих лет проявляет интерес к тому, что мы делаем. Это может казаться мелочью, но на самом деле каждый лайк в соцсетях, каждый +1 к статьям о SObjectizer-е, каждый комментарий, каждый репост новости или статьи -- все это в итоге оказывает очень большое влияние. Мы сами ощущаем интерес и поддержку, что дает нам силы и желание продолжать свою работу, что ведет к тому, что SObjectizer становится еще лучше, мощнее и удобнее. И потенциальные пользователи, видя, что проект развивается, что к нему есть какой-то интерес, начинают смотреть на наш инструмент внимательнее. Что ведет к тому, что в какой-то момент они решаются взять и попробовать. А ведь это именно то, ради чего мы работаем.

PS. Какой же сегодня все-таки хороший повод сгонять в магазин! ;)

четверг, 7 февраля 2019 г.

[prog] А где было бы удобнее всего обсуждать связанные с SObjectizer-ом идеи?

Ранее, если у меня появлялась какая-то связанная с SObjectizer-ом идея, я публиковал пост прямо в этом блоге. Но в этом году я хочу, чтобы в блоге SObjectizer-а было поменьше. Посему возникает вопрос о том, а где интересующимся SObjectizer-ом (если таковые еще остались) было бы удобно обсуждать различные (дикие) идеи и планы по захвату вселенной их реализации?

Я вижу следующие варианты: