Tuesday, February 28, 2012

Броненосец

Предположим вам понадобился контейнер с арифметическими операциями, с математическими и статистическими функциями - не найти из того, что под рукой. Такие, как std vector, framework vector и std valarray хороши в арифметических операциях и в слияниях/разлияниях подвекторов. valarray хорош в поддержке математических функций и обладает высокой производительностью в версии Intel компилятора благодаря использованию IPP. Конечно, можно вспомнить про boost и blitz++, но использовать одну махину или другую поменьше, с необновляемым кодом, для тестирования и получения простой статистики надо иметь значительно больше энтузиазма, чем у меня есть. Хорошо бы иметь библиотеку с выразительностью операций matlab, легко интегрируемую в С/С++ и бесплатную. Для примера, следующую версию вычисления нормы 2 с std вектором выразительной не назовешь, без std проще будет.
Поиски навели на библиотеку Armadilla, предоставляемую в заголовочных файлах с шаблонами, плюс библиотечные файлы blas и lapack, как дань достигнутой теми производительности. Из-за них, оказалось, размещение arma матриц в памяти сделано, как в Фортране. Библиотека обновляется, автор использует ее в своих научных исследованиях, есть пользователи и форум. 
Сразу нашел в ней то, что мне нужно. Нашел даже больше, чем рассчитывал. Оказалось, что автор Conrad Sanderson сделал многое, чтобы Armadilla стала очень похожа на Octave, и он добился этого. Сравниваем пример кода нахождения коэффициентов линейной регрессии.
Octave:

С++ Armadilla
И код, и результат одинаковы (с поправкой на С и реализацию rand)
Обнаружил, что не хватает гистограммы. Написал автору, получил ответ: “а сам напиши”. Написал аналог histc из Octave. Что оказалось непросто, так это встроить функцию в библиотеку. Во время встраивания открылось еще одно достоинство библиотеки. Код с использованием шаблонов написан так, что векторные или матричные вычисления, подобно таким A=B+C+D*E, не создают временных массивов для промежуточных матриц. Достигается это использованием так называемых Glue классов. Они то и усложнили разработку. 
Сравнил производительность вычисления гистограммы с помощью разработанной arma::histc и кода, написанного с std::vector. Последний не сумел написать проще, чем так

Производительность arma версии лучше почти в 2 раза.
Неплохой броненосец у Конрада Сандерсона получился.

Monday, February 20, 2012

Последний президент, знающий Бродского

Думаю, что это видео-интервью под "дождем" может изменить ваше мнение о М.Саакашвили
Прост, интеллигентен, без галстука, в скромной обстановке без позолоты, изменившийся, проявляя "больше терпения, больше выдержки", не одобряющий стратегию нулевого политического риска, понимающий необходимость перспектив роста для граждан и мечтающий о грузинских небоскребах.
За рамками интервью:
Оказывается, Грузия экспортирует электроэнергию в Россию.
В Грузии проведено более 70 экономических реформ. В 2009 году по условиям ведения бизнеса Грузия на 11-ом месте (Россия на 120-ом).
Выступая в университете в Вашингтоне, Саакашвили пошутил над русскими туристами: на вопрос "Occupation" (род занятий) анкеты они отвечают: "Нет, нет, просто туризм".




Thursday, February 09, 2012

Готова ли масса русского крестьянства "Африканского континента" к демократии?


В статье “Недомолотая мука русской истории” вслед за многими настоящими и прошлыми мыслителями любимый мною А.Кончаловский раздумывает над вопросом, готова ли Россия к демократии. Вывод - нет, не готова, и надо запастись “историческим терпением” для того, чтобы пережить, преодолеть наше “варварство”.
А древние греки 2000 лет назад были готовы? Уже (или еще?) в 5 веке до нашей эры в Афинах строго соблюдалась отчетность должностных лиц и не допускалось неоднократное избрание одних и тех же политиков на государственные посты (что не помешало Периклу оставаться у власти более 30 лет, народное собрание 15 раз выбирало его первым стратегом), а любой гражданин мог возбудить иск по графе параномон (жалоба на противозаконие).
Нет, “варварство” надо преодолевать независимо от демократических усилий, и сам А.Кончаловский успешно учит нас культуре. А демократию считать в России наступившей. И вообще, считать отношения с ней подобно членству в ВТО - ты соблюдаешь правила, в ответ тебя признают “равным”. Обыкновенный контракт.
“Худшая форма правления” нужна для того, чтобы избежать революций и потрясений. Хотя и не всем удается, на площадях и футбольных полях. Особенно, если к демократии принуждают. Известны случаи и противодействия этой порочной практике правления, так в 457 г. спартанцы были приглашены в Беотию для низвержения демократии.
Порочна она в частности потому, что “демократия не знает истины, и потому она представляет раскрытие истины решению большинства голосов” - Бердяев. Большинство не бывает моральным, объединяет не добро, а зло, и не за, а против. Все эти крики “Долой” и “На Кремль” цена единства кричащих. Странно, что не выдвинули - “Захвати Кремль”, тогда единство стало бы еще безграничнее.
Демократия не готова для того, чтобы Россия ее приняла. Она нужна нам примерно так же, как ВТО.
Может параллель неуместна, но реакция князя Светослава на предложение Ольги, вернувшейся крещеной из Константинополя в 955 году, принять христианство кажется симпатичной и вполне демократичной - “Могу ли один принять новый закон, чтобы дружина не смеялась надо мной?”