Месяц назад я сказал, что собираюсь работать над SObjectizer. Но прошел уже целый месяц, а видимых следов этой работы не было. Просто в качестве подтверждения "мужик сказал -- мужик сделал" приятно сообщить, что все-таки я не бил баклуши. Не смотря на некоторые сложности, удалось вернутся к вопросу производительности SO5. Идея, которую я описывал около полугода назад мне не понравилась, начал искать что-то другое. И это другое было зафиксировано сегодня в виде первого прототипа. Пока еще очень абстрактного и не привязанного к конкретной версии SObjectizer, но лиха беда начало :)
Размышления и впечатления, которые не хочется держать в себе. О программировании в частности. Ну и о творчестве, и о жизни вообще.
суббота, 17 мая 2014 г.
пятница, 16 мая 2014 г.
[life.writing] Это только я плохо воспринимаю подобным образом составленные фразы?
Вот есть фраза:
Можно выделить четыре основных, используемых организациями при выборе принципов группирования должностных позиций и организационных единиц критерия...
Лично до меня ее смысл дошел не сразу. Пришлось перечитывать еще пару раз. Когда же смысл до меня дошел, то я подумал, что ее можно было бы очень просто переформулировать так, чтобы смысл был понятен сразу. На мой взгляд, достаточно переставить слово "критерия":
Можно выделить четыре основных критерия, используемых организациями при выборе принципов группирования должностных позиций и организационных единиц...
Т.е. в начале предложения мы сразу указываем читателю, что речь идет о критериях. А затем уже уточняем, для чего эти критерии используются. И при таком расположении слов читатель меньше отвлекается на "выборе принципов", "должностных позиций" и "организационных единиц". У меня были проблемы именно с этими словосочетаниями: каждое из них обозначает значимую сущность и по ходу чтения не понятно, к чему именно эти сущности "пристегиваются". Лишь в самом конце фразы становится понятно, что к критериям.
Кстати говоря, полностью предложение, из которого я выделил этот пример, было более объемным. Это было предложение на целый абзац и целиком оно воспринималось еще хуже:
Можно выделить четыре основных, используемых организациями при выборе принципов группирования должностных позиций и организационных единиц критерия: зависимости, связанные с рабочим потоком, рабочим процессом, масштабом деятельности и социальными отношениями относительно труда.
Как по мне, так без бутылки и не разберешься. Я бы написал так:
Можно выделить четыре основных критерия, используемых организациями при выборе принципов группирования должностных позиций и организационных единиц -- это зависимости, которые связанны с рабочим потоком, рабочим процессом, масштабом деятельности и социальными трудовыми отношениями.
PS. ИМХО, между тем, чтобы просто сделать что-то и тем, чтобы сделать что-то хорошо, разница очень небольшая, различия зачастую обнаруживаются в каких-то совсем мелких деталях. Но разница эта, в реальности, очень существенная :(
[prog.c++] Поосторожнее нужно с auto из C++11 :)
В C++11 появилась классная штука -- возможность автоматического вывода типа переменной при ее декларации, для чего используется ключевое слово auto вместо указания типа переменной. О полезности auto и о степени читаемости кода, в котором auto активно используется, можно спорить. Но в ряде случаев, например, когда речь идет об итераторах или о лямбда-функциях, этот механизм однозначно полезен.
Однако, как с любым полезным механизмом, с auto нужно научиться правильно обращаться и запомнить некоторые граблимоменты, которые могут привести к неожиданным открытиям. Как у меня вчера :)
В упрощенном варианте суть можно представить вот таким примером (места, на которые нужно обратить внимание, выделены):
#include <iostream> #include <string> class demo_t { public : demo_t() : m_content( "Demo" ) {} void modify() { auto s = writeable_content(); s += " Hello, world!"; } const std::string & content() const { return m_content; } private : std::string m_content; std::string & writeable_content() { return m_content; } }; int main() { demo_t d; d.modify(); std::cout << "Result: " << d.content() << std::endl; } |
Как вы думаете, после модификации переменной s в методе demo_t::modify(), какое значение окажется в demo_t::m_content, если метод writeable_content() возвращает ссылку на m_content?
Так вот, правильный ответ: значение demo_t::m_content не изменится. Т.к. в методе modify() будет происходить изменение не m_content, а локальной переменной типа std::string.
Для того, чтобы s имел тип std::string& нужно декларировать s вот так: auto & s = writeable_content().
среда, 14 мая 2014 г.
[prog.c++] Бартош Милевский об иммутабельных структурах данных в C++
Собираю информацию о реализации иммутабельных структур данных в C++. Нашел серию заметок в блоге Бартоша Милевского:
Functional Data Structures in C++: Lists
Functional Data Structures in C++: Trees
Functional Data Structures in C++: Leftist Heaps
А так же одна обзорная статья: Functional Data Structures and Concurrency in C++
PS. Просмотрел все это крайне поверхностно, так что о качестве судить не могу. Но, в качестве отправной точки выглядит привлекательно.
PPS. Буду признателен читателям за аналогичные ссылки на другие идеи или готовые реализации иммутабельных структур данных для C++.
понедельник, 12 мая 2014 г.
[prog] Поверхностные впечатления от Internet of Things и Machine-2-Machine
В связи с образовавшимся наличием свободного времени и дабы немного развеяться решил оглядеться по сторонам и посмотреть, что же происходит в других областях. Случайно внимание привлекла такая штука, как Internet of Things. Немного покопался в этой теме и дошел до другой штуки, на мой взгляд, более приземленной и реальной: Machine-2-Machine. Какое-то поверхностное, наверняка не объективное, впечатление сложилось. Интересно будет затем проверить, насколько права оказалась моя интуиция.
Internet of Things
На мой взгляд, Internet of Things на данный момент -- это миф. Это что-то вроде российских нанотехнологий, хорошая площадка для распила средств и проедания грантов. Или чего-то похожего на cloud computing шести или семилетней давности: много разговоров, много обещаний, но к чему все это придет так никто и не знал, и что затем трансформировалось в более-менее осязаемые понятия SaaS, PaaS и IaaS.
Internet of Things -- это мечта соединять все со всем. Ну, типа, у нас же есть Интернет, в котором есть куча сайтов и сервисов, на которые можно заходить с разных компьютеров (смартфонов, планшетов). И все это классно и здорово, и работает. А раз есть Интернет, в котором пользователь может найти или организовать для себя то, что ему нужно, то почему бы на место пользователя не поставить какое-то устройство. Да тот же смартфон, например. Или умный счетчик воды в квартире. Или умный холодильник. Или умную коробку с таблетками, которая напоминает о необходимости очередного приема лекарств и извещает о том, что таблетки заканчиваются. Или умную стиральную машину, которая сама выбирает программу стирки, когда в нее помещают "умную" одежду (это всего лишь одежда, на которой есть специальные маркеры, вроде RFID чипа). Или...
воскресенье, 11 мая 2014 г.
[life.photo] Выставка собак в Гомеле: питомцы и владельцы
Буквально пару дней назад случайно узнал, что в Гомеле будет проходить выставка собак (точнее, в рамках одной выставки, вроде бы проходило сразу несколько, но я не собаковод, так что мне было все равно). Т.к. к собакам я неравнодушен, да к тому же, чем больше узнаю людей, тем больше... В общем, решил сходить, посмотреть, в очередной раз поупражняться в фотографии.