<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29561155</id><updated>2025-12-13T12:46:17.305+03:00</updated><title type='text'>Веб-дневник Владимира Шабанова</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default?start-index=26&amp;max-results=25'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29561155.post-6587932189071154497</id><published>2012-10-08T02:14:00.000+04:00</published><updated>2012-10-08T02:14:14.292+04:00</updated><title type='text'>Что общего у Haskell и Apple</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Посетило вдохновение, написал пост. Милости просим:&lt;br /&gt;
&lt;a href=&quot;http://vshabanov.livejournal.com/845.html&quot;&gt;http://vshabanov.livejournal.com/845.html&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/6587932189071154497/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/6587932189071154497' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6587932189071154497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6587932189071154497'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2012/10/haskell-apple.html' title='Что общего у Haskell и Apple'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-7340838877064465072</id><published>2012-07-06T13:45:00.002+04:00</published><updated>2012-07-06T13:45:48.112+04:00</updated><title type='text'>RSS-читалка с комментариями</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div&gt;
Как часто вы, читая RSS-подписки, переходите на страницу поста, чтобы посмотреть комментарии?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Дискуссии в комментариях нередко оказываются интереснее самого поста. Однако почти все современные RSS-читалки не уделяют комментариям никакого внимания.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Чтобы исправить эту ситуацию, я решил сделать свою читалку (с блекджеком и всем остальным ;)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://bazqux.com/&quot;&gt;BazQux Reader&lt;/a&gt; — RSS-читалка с комментариями.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Работает с блогами, имеющими rss-потоки для комментариев (т.е. wordpress, blogspot и многие другие). Поддерживает ЖЖ (с аватарками и тегами). И даже RSDN деревцем выводит ;)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Управляется с клавиатуры (нажмите &#39;h&#39;, чтобы посмотреть список клавиатурных сокращений), мышкой кликать тоже можно.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Умеет искать, группировать результат поиска по постам, выводит найденные комментарии деревом, а не плоским списком вперемежку.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
15 подписок бесплатно, неограниченное число подписок $30 в год.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
В процессе использования &lt;a href=&quot;http://bazqux.com/&quot;&gt;BazQux Reader&lt;/a&gt;, я обнаружил много интересных обсуждений в комментариях, которые врядли бы прочитал, щелкая каждый раз по постам в обычной RSS-читалке.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Попробуйте, вам понравится ;)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Всячески приветствую ваше мнение по поводу читалки.&lt;/div&gt;
&lt;div&gt;
(&lt;a href=&quot;http://vshabanov.livejournal.com/672.html&quot;&gt;Кросспост в ЖЖ&lt;/a&gt;, для тех, кому удобнее)&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/7340838877064465072/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/7340838877064465072' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/7340838877064465072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/7340838877064465072'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2012/07/rss.html' title='RSS-читалка с комментариями'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-392209998049350768</id><published>2008-07-03T02:33:00.003+04:00</published><updated>2008-07-03T04:26:58.117+04:00</updated><title type='text'>Язык имеет значение</title><content type='html'>Все мы слышали, что есть Хаскел. Все мы знаем, что он крут. Крут настолько, что многие его даже боятся.&lt;br /&gt;&lt;br /&gt;Все мы знаем, что программы на Хаскеле короче и быстрее пишутся. Те, кто писал на Хаскеле, уже с трудом могут заставить себя использовать другой язык.&lt;br /&gt;&lt;br /&gt;Так какого черта мы пишем на чем-то другом?&lt;br /&gt;&lt;br /&gt;Мне кажется, мы просто ссым!&lt;br /&gt;&lt;br /&gt;Почему? Чем мы себя обманываем? Почему боимся &amp;laquo;рисковать&amp;raquo;, когда риск заключается как раз в неиспользовании Хаскела?&lt;br /&gt;&lt;br /&gt;Лично я сыт по горло от собственных же отмазок. Проведя анализ ВСЕХ своих проектов, сделанных за последние 9&amp;nbsp;лет, я пришел к выводу, что ВСЕ они (кроме драйверов и прошивок микроконтроллеров) могли бы быть сделаны на Хаскеле.&lt;br /&gt;&lt;br /&gt;Но это не самое страшное. Самое страшное&amp;nbsp;&amp;mdash; это сколько времени было потеряно на низкоуровневые языки. &lt;br /&gt;&lt;br /&gt;В проектах, написанных на C++, можно было бы сэкономить&amp;nbsp;30-40%&amp;nbsp;времени разработки (а при наличии готовых библиотек, еще больше). Страшно вспомнить, сколько я их отлаживал, и, все равно, раз в месяц программа таки падала.&lt;br /&gt;&lt;br /&gt;В проектах, написанных на C++, питоне и окемле, можно было бы срезать до&amp;nbsp;20-25%&amp;nbsp;времени, только за счет отказа от С++ и питона. Переход на Хаскел дал бы еще минимум&amp;nbsp;10%.&lt;br /&gt;&lt;br /&gt;Кстати, запомните&amp;nbsp;&amp;mdash; C++ и питон нужны только для того, чтобы подняться уровнем выше&amp;nbsp;C. Если вы уже используете более высокоуровневый язык (окемл или хаскел), то за использование чего-либо, кроме&amp;nbsp;C для самых критичных мест, надо сильно бить себя по рукам&amp;nbsp;&amp;mdash; вы просто тратите время зря. Все, что выше&amp;nbsp;C надо писать на Хаскеле, а не С++.&lt;br /&gt;&lt;br /&gt;Даже учтя, что последние 9&amp;nbsp;лет я не только работал, но еще и ходил в техникум и институт, все равно &lt;span style=&quot;font-style:italic;&quot;&gt;я потерял минимум 1.5&amp;nbsp;года жизни из-за ничем не оправданного применения С++&lt;/span&gt; (и еще пару месяцев из-за питона). Я&amp;nbsp;идиот. Не повторяйте моей ошибки, и не ссыте применять то, что действительно удобно, приятно и позволяет решать задачу, а не проблемы.&lt;br /&gt;&lt;br /&gt;И главное, не переставайте искать лучшее. Надеюсь лет через&amp;nbsp;5 я напишу такой же разгром хаскела и буду рвать волосы, что не использовал другой язык все это время.&lt;br /&gt;&lt;br /&gt;А пока, если вам дорога ваша жизнь, и не хочется тратить ее попусту, используйте Хаскел. Точка.&lt;br /&gt;&lt;br /&gt;PS для менеджеров: вам дороги сроки сдачи проекта? Уже догадались, что &lt;a href=&quot;http://www.haskell.org&quot;&gt;надо использовать&lt;/a&gt;, а &lt;a href=&quot;http://www.python.org&quot;&gt;чему&lt;/a&gt; &lt;a href=&quot;http://ru.wikipedia.org/wiki/C_Sharp&quot;&gt;сказать&lt;/a&gt; &lt;a href=&quot;http://ru.wikipedia.org/wiki/C%2B%2B&quot;&gt;нет&lt;/a&gt;?</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/392209998049350768/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/392209998049350768' title='Комментарии: 41'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/392209998049350768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/392209998049350768'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2008/07/blog-post.html' title='Язык имеет значение'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-1787518960863907637</id><published>2008-05-29T22:42:00.002+04:00</published><updated>2008-05-30T04:17:27.067+04:00</updated><title type='text'>Concepts, Techniques, and Models of Computer Programming</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4l5qAq3QiPIoUCo2KBAvohPnm8iJqlFNuzy0QrS-hjwAkG8iGgBXrL9vVKjkCKLDeavdelfudPcXNzBWn9eo88_gGxuAhBm5w653zm3Cx14dKE9fy9MWtvXWS42P17G-iDDO9/s1600-h/080503_142418.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4l5qAq3QiPIoUCo2KBAvohPnm8iJqlFNuzy0QrS-hjwAkG8iGgBXrL9vVKjkCKLDeavdelfudPcXNzBWn9eo88_gGxuAhBm5w653zm3Cx14dKE9fy9MWtvXWS42P17G-iDDO9/s320/080503_142418.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5196100503204412114&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Вот я и стал счастливым обладателем &lt;a href=&quot;http://mitpress.mit.edu/0262220695&quot;&gt;CTM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Володя, что это за книжка?&amp;nbsp;&amp;mdash; спросите вы.&lt;br /&gt;&lt;br /&gt;Отвечаю: &amp;ldquo;Concepts, Techniques, and Models of Computer Programming&amp;rdquo;&amp;nbsp;&amp;mdash; пожалуй, самый полный набор самых полезных идей в программировании.&lt;br /&gt;&lt;br /&gt;Все мы знаем, что есть функциональное программирование, логическое, объектно-ориентированное. Есть ленивые вычисления, строгие. Есть concurrency с message passing, есть с shared state. Бывает недетерминизм, бывает программирование в ограничениях, да чего только не бывает.&lt;br /&gt;&lt;br /&gt;К сожалению, не всему учат в институтах. Обо многом мы узнаем по крупицам, перерывая кучу сайтов, статей, ньюс-групп, форумов. В итоге в голове часто имеется помойка из разрозненных знаний.&lt;br /&gt;&lt;br /&gt;Вот для наведения порядка в голове и нужны такие книги.&lt;br /&gt;&lt;br /&gt;Авторы поставили перед собой задачу последовательно, шаг за шагом, изложить самые распространенные и полезные концепции в программировании. &lt;br /&gt;&lt;br /&gt;Начинают с декларативного программирования (в их варианте чуть больше, чем чисто функциональное или prolog без поиска), переходят к concurrency (сначала message passing), потом добавляют состояние, объекты, shared state concurrency, доходят до логического программирования, а дальше и до распределенного программирования и программирования в ограничениях. И все это только концепции (можете называть их парадигмами, хотя авторы предпочитают более строгое &amp;laquo;вычислительная модель&amp;raquo;). А&amp;nbsp;к&amp;nbsp;каждой концепции прилагается еще и куча техник.&lt;br /&gt;&lt;br /&gt;В отличии от SICP, в CTM не дается реализация всех моделей с нуля, что несколько расстраивает, т.к. не&amp;nbsp;достигается такой уровень понимания. В книге используется kernel language подход, где для объяснения очередной вычислительной модели выбирается минимальное подмножество языка и объясняется семантика этого подмножества. Из-за такого подхода иногда появляется ощущение, что читаешь лекционный материал, а не семинарский (как SICP). С&amp;nbsp;другой стороны CTM&amp;nbsp;&amp;mdash; учебник для 2-го курса&amp;nbsp;&amp;mdash; тут надо не только кодить учить. А чтобы рассказать обо всех идеях, используя подход SICP (interpreter approach, по их классификации), пришлось бы раздуть 900&amp;nbsp;страниц (в&amp;nbsp;формате 20х25&amp;thinsp;см) тысяч&amp;nbsp;до&amp;nbsp;3-х.&lt;br /&gt;&lt;br /&gt;В качестве языка авторы используют собственную разработку&amp;nbsp;&amp;mdash; язык&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Oz_(programming_language)&quot;&gt;Oz&lt;/a&gt;. Но как &lt;a href=&quot;http://vshabanov-ru.blogspot.com/2007/03/sicp.html&quot;&gt;SICP&lt;/a&gt; не является учебником по Scheme, так и CTM&amp;nbsp;&amp;mdash; не учебник по Oz. Это книги по Программированию.&lt;br /&gt;&lt;br /&gt;В общем, книга явно must read, особенно для тех, кто еще совсем не знаком с изложенными в ней идеями и не собирается учить десять языков, чтобы в них разобраться.&lt;br /&gt;&lt;br /&gt;Пойду читать дальше, чего и вам желаю.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/1787518960863907637/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/1787518960863907637' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1787518960863907637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1787518960863907637'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2008/05/concepts-techniques-and-models-of.html' title='Concepts, Techniques, and Models of Computer Programming'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4l5qAq3QiPIoUCo2KBAvohPnm8iJqlFNuzy0QrS-hjwAkG8iGgBXrL9vVKjkCKLDeavdelfudPcXNzBWn9eo88_gGxuAhBm5w653zm3Cx14dKE9fy9MWtvXWS42P17G-iDDO9/s72-c/080503_142418.jpg" height="72" width="72"/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-7849013687561300698</id><published>2007-12-17T01:45:00.000+03:00</published><updated>2016-12-04T00:37:42.930+03:00</updated><title type='text'>Требуется программист на удаленную работу</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Здравствуйте, уважаемые читатели! А вот кого из вас интересует удаленная работа на Erlang-е? (не откажусь и от OCaml или Haskell, хотя они, скорее всего, меньше подходят для задачи).&lt;br /&gt;
&lt;br /&gt;
В чем суть.&lt;br /&gt;
&lt;br /&gt;
Необходимо написать сервер для работы с железяками (на данный момент лотерейные автоматы, но область применения может быть куда шире), и нам очень желателен программист для серверной и клиентской части.&lt;br /&gt;
&lt;br /&gt;
Краткое ТЗ.&lt;br /&gt;
&lt;br /&gt;
Сервер торчит в интернете, работает с базой, раздает клиентам информацию и собирает с них статистику. Для начала сервер только на одной машине, но надо предусмотреть масштабирование.&lt;br /&gt;
&lt;br /&gt;
Клиент оформляется в виде отдельного приложения-консоли, запущенного на автомате. Клиент запрашивает у сервера информацию, хранит ее в зашифрованном виде и выдает ее игре, установленной на автомате. Кроме этого отсылает различные события игры на сервер для статистики.&lt;br /&gt;
&lt;br /&gt;
И нужен еще отдельный клиент для забивания информации в базу (для начала тоже консольный, впоследствии может дорасти до веб-интерфейса).&lt;br /&gt;
&lt;br /&gt;
Главное.&lt;br /&gt;
&lt;br /&gt;
Хочется, чтобы все это было сделано на нормальном языке программирования. И думается мне, что для этого больше всего подходит Эрланг.&lt;br /&gt;
&lt;br /&gt;
Детали.&lt;br /&gt;
&lt;br /&gt;
Работа удаленная. Бюджет $4-5k (обсуждаемо). На разработку дается 3&amp;nbsp;месяца (желательно, конечно, быстрее). Далее поддержка (за отдельные деньги).&lt;br /&gt;
&lt;br /&gt;
Желательно, чтобы кандидат уже имел опыт создания клиент-серверных приложений. Не обязательно на Erlang.&lt;br /&gt;
&lt;br /&gt;
Звоните: ...&lt;br /&gt;
Пишите: ...&lt;br /&gt;
&lt;br /&gt;
Вопросы и комментарии приветствуются.&lt;br /&gt;
&lt;br /&gt;
А кросс-постинг в заинтересованные сообщества приводит в восторг ;)&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/7849013687561300698/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/7849013687561300698' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/7849013687561300698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/7849013687561300698'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/12/blog-post.html' title='Требуется программист на удаленную работу'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-1203204023754093929</id><published>2007-10-12T22:32:00.000+04:00</published><updated>2007-10-12T05:48:31.293+04:00</updated><title type='text'>Correct by construction</title><content type='html'>Существует много приемов, способов и методологий разработки программ. Один из них, не самый заезженный, но очень полезный&amp;nbsp;&amp;mdash; это Correct by construction. Суть его проста до безобразия: &lt;i&gt;корректную программу можно построить только из корректных частей, корректно соединяя их друг с другом&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Заметьте, в этой фразе, слово &lt;i&gt;корректную&lt;/i&gt; можно заменить на практически любое положительное прилагательное, а слово &lt;i&gt;программу&lt;/i&gt;&amp;nbsp;&amp;mdash; на любое существительное (попробуйте: надежный автомобиль, точный станок, хороший дом).&lt;br /&gt;&lt;br /&gt;И если про корректные части более менее понятно (они должны быть корректными и все тут), то момент корректного их соединения является несколько туманным. Попробуем разобраться.&lt;br /&gt;&lt;br /&gt;Через что обычно соединяются элементы программ? Через интерфейсы. Выходит, корректное соединение должен обеспечивать интерфейс. Т.е., &lt;i&gt;интерфейс к элементам программы должен быть таким, чтобы не&amp;nbsp;допускать некорректного их использования&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Здесь я говорю не о &amp;laquo;защите от дурака&amp;raquo;, когда система не реагирует на неверное использование, а о том, чтобы вообще не допустить этого &amp;laquo;дурака&amp;raquo; к системе. А если нет дурака, то не нужна и защита от него.&lt;br /&gt;&lt;br /&gt;Кстати, под интерфейсом я понимаю не только набор методов в классе, или функций в модуле, но еще и элементы языка программирования, ведь они тоже соединяют элементы программ (кстати, ни один из известных мне языков программирования не поддерживает полностью принцип Correct by construction, хотя некоторые и стремятся).&lt;br /&gt;&lt;br /&gt;Что же подразумевается под &lt;i&gt;корректными&lt;/i&gt; интерфейсом? Да собственно такой интерфейс, который физически нельзя использовать не по назначению. Примеры:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Если функция, в случае ошибки, возвращает&amp;nbsp;-1, NULL, или любое другое магическое значение, то когда-нибудь это значение не будет обработано. А если функция возвращает опциональный тип (option, Maybe, или как он называется в вашем языке), то возможность забыть обработать ошибку отпадает сама собой.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;Прямая работа с указателями или массивами в принципе не может дать гарантий безопасной работы с памятью. Но если к массивам можно достучаться только через функции вроде map, fold, iter, то no&amp;nbsp;problemo: нет индексов&amp;nbsp;&amp;mdash; нет ошибок с индексами (а в будущем, надеюсь, проблема безопасного доступа к массивам по индексам решится при помощи dependent types).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;Наличие явных функций open/close, create/destroy, alloc/free всегда оставляет возможность не освободить занятый ресурс. А если использовать RAII или функции типа with_resource, то у потенциального &amp;laquo;дурака&amp;raquo; в принципе не получится что-то забыть&amp;nbsp;&amp;mdash ведь не он теперь заведует ресурсом.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;У вас много изменяемого состояния. Боитесь, что кто-то изменит его не в том порядке? Разбиваем на кусочки, делаем функциональный интерфейс, и уже ни у кого не получится перепутать вкл. и выкл.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;Нельзя нажать на эту кнопку&amp;nbsp;&amp;mdash; так может ее вообще убрать или сделать disabled?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Список можно продолжать долго.&lt;br /&gt; &lt;br /&gt;&lt;p&gt;Важно понять, что при проектировании интерфейсов к&amp;nbsp;алгоритмам, модулям и&amp;nbsp;программам, надо думать не о том, как система отработает ошибку пользователя, а о том, как сделать интерфейс таким, чтобы у пользователя вообще не было возможности совершить ошибку.&lt;br /&gt;&lt;br /&gt;Система будет истинно корректной только тогда, когда ее нельзя некорректно использовать. И только из таких систем можно создавать еще большие корректные системы. Это и есть Correct by construction.&lt;br /&gt;&lt;br /&gt;И с моей точки зрения&amp;nbsp;&amp;mdash; этот принцип один из самых важных в построении больших и надежных систем. А вот понимание того, что дает надежность, а что не дает, видимо, приходит только с опытом.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/1203204023754093929/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/1203204023754093929' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1203204023754093929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1203204023754093929'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/09/correct-by-construction.html' title='Correct by construction'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-6516638826876407663</id><published>2007-09-26T00:54:00.000+04:00</published><updated>2007-09-26T03:57:17.751+04:00</updated><title type='text'>И еще немного про скрипты</title><content type='html'>В предыдущем &lt;a href=&quot;http://vshabanov-ru.blogspot.com/2007/08/blog-post.html&quot;&gt;посте&lt;/a&gt; я поднимал проблему использования скриптов для расширения возможностей программ. Вывод, сделанный мной, был довольно прост: скрипты используются потому, что основной язык не позволяет описывать логику также хорошо, как скриптовый. Рекомендацией было отказаться от скриптов и использовать в качестве основного более высокоуровневый язык.&lt;br /&gt;&lt;br /&gt;Но есть еще одна причина, по которой люди используют скрипты&amp;nbsp;&amp;mdash; расширяемость программ. И эта проблема уже больше психологическая. Программист, как и любой умник, хочет написать что-то клевое и универсальное (движок), чем потом можно будет как угодно рулить из скрипта: &amp;laquo;Смотрите, вот вам exe-шник, а работать он будет так, как мы ему напишем в скриптах&amp;raquo; (вернее, &amp;laquo;Смотрите, какой я умный, умею создавать гибкие решения&amp;raquo;). Внимание, вопрос! А&amp;nbsp;не является ли ваш скрипт, по сути, очередным exe-шником или dll-кой? Не добьетесь ли вы такой же гибкости просто написав модуль к программе?&lt;br /&gt;&lt;br /&gt;Неужели разделения на модули и библиотеки является недостаточным для создания гибких и расширяемых программ? Неужели действительно надо городить всю эту обвязку, вставлять в программу интерпретатор, экпортировать/импортировать функции/классы/данные? Вам очень нужен этот модный abstraction barrier, о&amp;nbsp;который можно потом и разбиться? Я думаю, что&amp;nbsp;нет.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://worsethanfailure.com/Articles/Soft_Coding.aspx&quot;&gt;Soft coding&lt;/a&gt;&amp;nbsp;&amp;mdash; не лучшая замена hard coding-у. Чем отличается код скрипта в отдельном файле от обычного модуля программы? Тем, что красивше? Значит у вас недостаточно выразительный основной язык. Тем, что его можно динамически загрузить в рабочую программу? А разве обычный модуль нельзя?&lt;br /&gt;&lt;br /&gt;В общем, пишите всю программу на нормальном языке и изучите возможности динамической загрузки кода. И тогда &amp;laquo;болезнь чрезвычайной гибкости при помощи скриптов&amp;raquo; покинет вас.&lt;br /&gt;&lt;br /&gt;PS: еще рекомендую почитать (не столько про скрипты, сколько про липовую расширяемость за счет &amp;laquo;правильной&amp;raquo; архитектуры): &lt;a href=&quot;http://worsethanfailure.com/Articles/The-Mythical-Business-Layer.aspx&quot;&gt;The Mythical Business Layer&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/6516638826876407663/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/6516638826876407663' title='Комментарии: 17'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6516638826876407663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6516638826876407663'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/09/blog-post.html' title='И еще немного про скрипты'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-4955068630721043139</id><published>2007-08-24T03:10:00.000+04:00</published><updated>2007-08-24T06:05:01.117+04:00</updated><title type='text'>Скриптовые языки — оно вам надо?</title><content type='html'>Вот Вы, да, Вы. Зачем Вы используете скриптовые языки? У Вас есть большая программа и хочется добавить в нее гибкости, сделать расширяемой, менять что-то отдельно, не трогая основы? А как это сделать&amp;nbsp;&amp;mdash; конечно же, добавить скриптовую обвязку: &lt;a href=&quot;http://www.lua.org/&quot;&gt;Lua&lt;/a&gt;, &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;, &lt;a href=&quot;http://www.tcl.tk/&quot;&gt;Tcl&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Lisp_programming_language&quot;&gt;Lisp&lt;/a&gt;, да что угодно. Некоторые даже &lt;a href=&quot;http://en.wikipedia.org/wiki/QuakeC&quot;&gt;придумывают&lt;/a&gt; &lt;a href=&quot;http://udn.epicgames.com/Two/UnrealScriptReference.html&quot;&gt;собственные&lt;/a&gt; языки.&lt;br /&gt;&lt;br /&gt;Что характерно&amp;nbsp;&amp;mdash; скриптовый язык практически никогда не является языком, на котором написана основная программа. Правильно, зачем делать скрипты сложными. Нужен язык попроще, специально заточенный под нашу задачу.&lt;br /&gt;&lt;br /&gt;Однако, использование скриптового языка влечет за собой определенные проблемы: надо писать обвязку, скриптовый язык медленнее основного и, зачастую, не такой мощный. Да еще, в придачу, получаем геморрой с отладкой.&lt;br /&gt;&lt;br /&gt;Тем не менее, скрипты &amp;laquo;со скрипом&amp;raquo; прикручиваются. Ведь на них все пишется короче и быстрее, а программа становится расширяемой&amp;nbsp;&amp;mdash; игра стоит свеч!&lt;br /&gt;&lt;br /&gt;СТОП. А теперь задумаемся. Не потому ли мы используем скриптовые языки, что наш основной язык (например, С++) является слишком сложным и низкоуровневым для простых, &amp;laquo;скриптовых&amp;raquo; задач? &lt;br /&gt;&lt;br /&gt;Не только&amp;nbsp;&amp;mdash; скажете Вы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;скрипты экономят время на компиляцию;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;скрипты можно хранить отдельно от основной программы;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;и, наверное, еще что-то.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Только вот время, сэкономленное на компиляции, с лихвой потратится на отладку. А хранить отдельно от основной программы можно многое. Как минимум &lt;a href=&quot;http://caml.inria.fr/&quot;&gt;OCaml&lt;/a&gt; и &lt;a href=&quot;http://haskell.org/&quot;&gt;Haskell&lt;/a&gt; умеют загружать отдельные модули в основную программу. Причем модули, скомпилированные в нативный, а не в байт-код.&lt;br /&gt;&lt;br /&gt;Более того, практически на любом языке можно сделать динамически загружаемый модуль (.dll или .so), который хранится отдельно от основной программы. А если не использовать в качестве языка С++ с морем template-ов, то время компиляции такого модуля становится несущественным.&lt;br /&gt;&lt;br /&gt;Все-таки, я прихожу к выводу, что скрипты используют исключительно из-за сложности и неприспособленности для решения простых задач основного языка (да-да, С++).&lt;br /&gt;&lt;br /&gt;Может быть, стоит сменить основной язык разработки? И тогда Вы забудете про множество глупых проблем (ошибки в скриптах и обвязке; тормоза при загрузке и работе), а заодно начнете использовать гораздо более продуктивные инструменты.&lt;br /&gt;&lt;br /&gt;Поверьте, OCaml и Haskell&amp;nbsp;&amp;mdash; лучшие скриптовые языки, которые я знаю. А уж то, что они хороши и как основной язык, думаю знают все.&lt;br /&gt;&lt;br /&gt;Короче. К черту скрипты, пишем все на одном мощном, удобном, кратком и продуктивном языке.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/4955068630721043139/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/4955068630721043139' title='Комментарии: 15'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4955068630721043139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4955068630721043139'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/08/blog-post.html' title='Скриптовые языки — оно вам надо?'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-4407338351743759527</id><published>2007-07-30T18:31:00.000+04:00</published><updated>2007-07-30T22:38:02.896+04:00</updated><title type='text'>Маленький совет</title><content type='html'>Люди. Если у кого-нибудь из вас повышенное давление, если бывали случаи кратковременной потери сознания, обязательно сходите к врачу. Можно не любить нашу медицину, но беречь свое здоровье крайне необходимо. И даже не только для себя, но и для других людей, которым вы дороги.&lt;br /&gt;&lt;br /&gt;И будьте осторожны на воде. На 5-й минуте человека еще можно откачать, а дальше уже нет. Даже если вы хороший пловец, но у вас плохое самочувствие&amp;nbsp;&amp;mdash; не лезьте в воду! Это может закончится &lt;a href=&quot;http://vshabanov-ru.blogspot.com/2007/07/2610197121062007.html&quot;&gt;очень плохо&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Спасибо, надеюсь вы будете больше думать о своем здоровье.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/4407338351743759527/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/4407338351743759527' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4407338351743759527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4407338351743759527'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/07/blog-post.html' title='Маленький совет'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-4257918095321902568</id><published>2007-07-30T03:06:00.000+04:00</published><updated>2007-07-30T03:31:35.049+04:00</updated><title type='text'>Дима Макеев. 26.10.1971—21.06.2007</title><content type='html'>Вот и прошло 40&amp;nbsp;дней с&amp;nbsp;момента, как оборвалась жизнь очень дорогого мне человека, моего двоюродного брата Димы Макеева. До&amp;nbsp;сих&amp;nbsp;пор не&amp;nbsp;верится, что это произошло.&lt;br /&gt;&lt;br /&gt;Дима был отличным музыкантом, светлым, веселым и очень жизнерадостным человеком.&lt;br /&gt;&lt;br /&gt;Мы всегда будем помнить твою музыку, твой голос и все то время, когда ты был с нами.&lt;br /&gt;&lt;br /&gt;Царствие тебе небесное, и пусть земля тебе будет пухом.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/4257918095321902568/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/4257918095321902568' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4257918095321902568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4257918095321902568'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/07/2610197121062007.html' title='Дима Макеев. 26.10.1971—21.06.2007'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-1462752731814437459</id><published>2007-04-26T22:07:00.000+04:00</published><updated>2007-05-12T03:50:37.591+04:00</updated><title type='text'>Ищем программиста</title><content type='html'>Небольшой фирме, занимающейся разработкой игр и&amp;nbsp;игровых автоматов (т.е. нам), &lt;a href=&quot;http://www.job.ru/entry.jsp?mode=queryVacById&amp;submode=do&amp;amp;id=109650cb3a9fb2895fa1ad4e2c8d19e3&quot;&gt;требуется&lt;/a&gt; программист.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;Обязательные требования:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;желание разрабатывать игры; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;умение пользоваться GNU toolchain;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;знание Linux на уровне опытного пользователя; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;хороший алгоритмический базис;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;знание C++ на хорошем уровне;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;скриптовые языки (желательно, python).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Желательно: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;знание OpenGL, GLSL, OpenAL, wxWidgets;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;умение собирать линукс с нуля (gentoo, lfs, etc.);&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;простое администрирование серверов (apache, backup);&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;огромным плюсом&lt;/span&gt; является знание Haskell или Ocaml (мы пишем на OCaml, если возможно, и на C++, если необходимо).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Обязанности:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;написание инструментария для создания и тестирования игр;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;сборка Linux-а, работающего в игровом автомате;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;администрирование внутреннего сервера разработки (по мелочи);&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;и, конечно же, разработка игр.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Условия:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;з/п от &lt;span style=&quot;font-weight: bold;&quot;&gt;$800&lt;/span&gt;;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;офис рядом со ст. м. Южная (г. Москва);&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;оформление по ТК;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;график работы с 12:00 до 20.00, возможно гибкий;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;возможен прием студента последних курсов.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Контакты:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;E-Mail: &lt;&lt;a href=&quot;mailto:vshabanoff@gmail.com&quot;&gt;vshabanoff@gmail.com&lt;/a&gt;&gt;;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;Телефон: +7&amp;nbsp;926&amp;nbsp;536-27-96 (Владимир Шабанов);&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;PS: Комментарии приветствуются.&lt;br /&gt;&lt;p&gt;UPD: вакансия закрыта, желающие программировать на Haskell или OCaml по прежнему интересуют (на&amp;nbsp;будущее), есть желание, скидывайте резюме на мыло, в будущем посмотрим.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/1462752731814437459/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/1462752731814437459' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1462752731814437459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1462752731814437459'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/04/blog-post.html' title='Ищем программиста'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-7900488464466731147</id><published>2007-04-21T00:21:00.000+04:00</published><updated>2007-04-21T06:16:55.390+04:00</updated><title type='text'>Корректность, типизация и Erlang</title><content type='html'>В последнее время все чаще встречаю упоминания об использовании &lt;a href=&quot;http://www.erlang.org/&quot;&gt;Erlang&lt;/a&gt; на просторах ex-USSR.&lt;br /&gt;&lt;br /&gt;Судя по всему, возрастающее применение Erlang оправдывается достаточно большим количеством success stories. К тому же Erlang поддерживается не только группой исследователей и community, как это происходит с &lt;a href=&quot;http://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt; и &lt;a href=&quot;http://caml.inria.fr/&quot;&gt;OCaml&lt;/a&gt;, но и такой немаленькой фирмой, как &lt;a href=&quot;http://www.ericsson.com/&quot;&gt;Ericsson&lt;/a&gt;. Это позволяет легче убедить менеджмент в пригодности Эрланга для серьезной разработки.&lt;br /&gt;&lt;br /&gt;Но, как и в &lt;a href=&quot;http://vshabanov-ru.blogspot.com/2007/04/ocaml-haskell.html&quot;&gt;предыдущем посте&lt;/a&gt;, я хочу поговорить о корректности программ.&lt;br /&gt;&lt;br /&gt;С Эрлангом наблюдается очень забавная картина: с&amp;nbsp;одной стороны он предназначен для написания fault-tolerant программ и обладает замечательной runtime системой, хорошо подходящей для написания распределенных пуленепробиваемых non-stop приложений. С&amp;nbsp;другой стороны&amp;nbsp;&amp;mdash; это язык с динамической типзацией, что, по моему мнению, &lt;i&gt;противоречит&lt;/i&gt; написанию корректных программ.&lt;br /&gt;&lt;br /&gt;Как можно написать корректную программу, если язык позволяет допустить практически любую опечатку? А как я поправлю ВСЕ места, где использовался модуль, принцип работы которого я только что поменял? Возможно, у Эриксон и есть столько денег на тестеров,  но что делать более экономным людям?&lt;br /&gt;&lt;br /&gt;А вы подумали о времени и нервах, потраченных на поиск несчастной опечатки? Конечно, в Эрланге пытаются поправить существующее положение: создана специальная тулза &lt;a href=&quot;http://www.it.uu.se/research/group/hipe/dialyzer/&quot;&gt;dialyzer&lt;/a&gt;. Однако, никакие тулзы не заменят полностью качественной, теоретически обоснованной, статической типизации.&lt;br /&gt;&lt;br /&gt;Думается мне, что если бы не некоторые из &lt;a href=&quot;http://www.faqs.org/docs/artu/ch01s06.html&quot;&gt;старых методологий&lt;/a&gt;, изначально заложенных в&amp;nbsp;Эрланг, то он никогда бы не стал языком для пуленепробиваемых систем.&lt;br /&gt;&lt;br /&gt;Короче, если вы никогда не опечатываетесь, никогда не редактируете большие программы, пишете юнит-тесты для &lt;i&gt;всех&lt;/i&gt; функций в системе, и, самое главное, вам не лень делать работу, которую можно автоматизировать, то Эрланг, лисп, питон, перл, tcl, lua&amp;nbsp;&amp;mdash; это все для вас. Я завидую вашему кунг-фу :)&lt;br /&gt;&lt;br /&gt;PS: Ни в коем случае не хочу сказать, что эрланг&amp;nbsp;&amp;mdash; плохая &lt;i&gt;платформа&lt;/i&gt;. Если ваша программа на 90% состоит из сетевого трафика, то, возможно, Эрланг вам и подходит. Но вот как &lt;i&gt;язык&lt;/i&gt;...&lt;br /&gt;&lt;br /&gt;PPS: Еще одна, несколько другая, &lt;a href=&quot;http://blog.davber.com/2006/09/02/erlang-the-best-or-worst-of-two-worlds/&quot;&gt;жалоба на отсутствие статической типизации в Эрланге&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/7900488464466731147/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/7900488464466731147' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/7900488464466731147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/7900488464466731147'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/04/erlang.html' title='Корректность, типизация и Erlang'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-5487306067355744840</id><published>2007-04-20T03:57:00.000+04:00</published><updated>2007-04-20T05:41:16.415+04:00</updated><title type='text'>Немного по OCaml и Haskell</title><content type='html'>От людей, пишущих программы на &lt;a href=&quot;http://caml.inria.fr/&quot;&gt;OCaml&lt;/a&gt; и &lt;a href=&quot;http://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt; часто слышно о&amp;nbsp;том, что они в&amp;nbsp;10&amp;nbsp;строках описали то, что на C++/C#/Java занимало 100&amp;nbsp;строк, или за&amp;nbsp;2&amp;nbsp;недели написали то, что другие делали&amp;nbsp;2&amp;nbsp;месяца.&lt;br /&gt;&lt;br /&gt;Это&amp;nbsp;&amp;mdash; всем известные факты. Программы на любом более менее вменяемом языке, будь то erlang, lisp, python, и&amp;nbsp;т.д., в среднем занимают в&amp;nbsp;5-10&amp;nbsp;раз меньше места и, по личному опыту, пишутся в&amp;nbsp;3-5&amp;nbsp;раз быстрее.&lt;br /&gt;&lt;br /&gt;Однако сейчас я хочу сказать про другую черту&amp;nbsp;&amp;mdash; корректность программ. Как часто вам приходится пользоваться отладчиком? Можете ли вы себе представить, что отладчик&amp;nbsp;&amp;mdash; вещь ненужная? В OCaml и Haskell это действительно так!&lt;br /&gt;&lt;br /&gt;Хотя в OCaml есть чудесный отладчик, позволяющий ходить по программе и вперед и назад, никакой потребности в нем за последние 3&amp;nbsp;года я не ощутил. Да. За последние 3&amp;nbsp;года я&amp;nbsp;&lt;i&gt;ни&amp;nbsp;разу&lt;/i&gt; не пользовался отладчиком для программ, написанных на OCaml. Он просто не нужен! Если и возникают какие-то непонятки, то все решается отладочной печатью или запуском проблемных мест в интерпретаторе.&lt;br /&gt;&lt;br /&gt;Не могу сказать, что мои OCaml-программы никогда не падали. &lt;a href=&quot;http://vshabanov-ru.blogspot.com/2006/10/ocaml-exceptions-c-destructors.html&quot;&gt;Было&lt;/a&gt; такое, но виновата была только C++ часть.&lt;br /&gt;&lt;br /&gt;А в целом в OCaml и Haskell вы никогда не встретите: &lt;ul&gt;&lt;li&gt;&lt;p&gt;access violation&amp;nbsp;&amp;mdash; нет pointer arithmetics;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;NullPointerException&amp;nbsp;&amp;mdash; нет NULL :), а на любые места, где возможен None, компилятор вам укажет;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;SIGSEGV или BSOD&amp;nbsp;&amp;mdash; ну нельзя тут загадить память.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Если вы, как и я, пишете программы, работающие 24&amp;nbsp;часа в&amp;nbsp;сутки 7&amp;nbsp;дней в&amp;nbsp;неделю, то такие языки как OCaml или Haskell могут стать очень хорошим подспорьем. &lt;br /&gt;&lt;br /&gt;Конечно, нельзя забывать про независящие от языка общеинженерные практики. Но запомните, OCaml или Haskell не только повысят вашу производительность, но и сделают ваши программы непотопляемыми, обеспечив тем самым спокойный сон и кучу времени на то, чтобы &lt;i&gt;писать&lt;/i&gt; программы, а не &lt;i&gt;отлаживать&lt;/i&gt; их.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/5487306067355744840/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/5487306067355744840' title='Комментарии: 30'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5487306067355744840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5487306067355744840'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/04/ocaml-haskell.html' title='Немного по OCaml и Haskell'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-8460007785837560226</id><published>2007-03-30T02:21:00.000+04:00</published><updated>2007-03-31T05:21:08.503+04:00</updated><title type='text'>SICP: Впечатления от прочтения</title><content type='html'>Не прошло и полгода с момента &lt;a href=&quot;http://vshabanov-ru.blogspot.com/2006/11/blog-post.html&quot;&gt;закупки SICP&lt;/a&gt;, и я наконец-то ее прочел!&lt;br /&gt;&lt;br /&gt;Сразу скажу: SICP&amp;nbsp;&amp;mdash; это не учебник по &lt;a href=&quot;http://en.wikipedia.org/wiki/Lisp_programming_language&quot;&gt;Lisp&lt;/a&gt;, это книга по Программированию. Если вы просто хотите изучить Lisp или &lt;a href=&quot;http://en.wikipedia.org/wiki/Scheme_(programming_language)&quot;&gt;Scheme&lt;/a&gt;, то SICP  не для вас, лучше попробовать что-нибудь &lt;a href=&quot;http://www.psg.com/~dlamkins/sl/chapter03.html&quot;&gt;попроще&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Книга стала пожалуй одним из самых интересных и серьезных текстов, прочитанных мною за последнее время. После книг &lt;a href=&quot;http://cm.bell-labs.com/cm/cs/cbook/&quot;&gt;Кернигана и Ритчи&lt;/a&gt;, &lt;a href=&quot;http://www.research.att.com/~bs/3rd.html&quot;&gt;Страуструпа&lt;/a&gt;, книг по &lt;a href=&quot;http://caml.inria.fr/pub/docs/oreilly-book/html/index.html&quot;&gt;OCaml&lt;/a&gt;, &lt;a href=&quot;http://www.haskell.org/haskellwiki/Books_and_tutorials&quot;&gt;Haskell&lt;/a&gt;, кучи тьюториалов, мануалов, статей и прочей литературы, &lt;a href=&quot;http://mitpress.mit.edu/sicp/&quot;&gt;SICP&lt;/a&gt; стала для меня чем то вроде откровения, откровения о том, какой должна быть книга по программированию.&lt;br /&gt;&lt;br /&gt;Книга действительно предназначена для первокурсников. Она не требует никаких предварительных знаний по программированию.&lt;br /&gt;&lt;br /&gt;В отличии от обычных книг, SICP не учит синтаксису (его у лиспа почти нет), а учит базовым вещам, необходимым для понимания того, как надо программировать. Причем, выбор этих базовых вещей и уровень их объяснения поистине шедеврален.&lt;br /&gt;&lt;br /&gt;Уже на 20-й, 30-й странице мы узнаем о нормальном порядке вычислений, lexical scoping, рекурсивных и итеративных процессах, функциях высших порядков, lambda-выражениях, замыканиях и прочих вещах, о которых я узнал гораздо позже, чем надо. А&amp;nbsp;к&amp;nbsp;концу второй главы знаний хватает на то, чтобы писать 90% встречающегося кода. И&amp;nbsp;мы еще не дошли до изменяемого состояния, модулей и объектов!&lt;br /&gt;&lt;br /&gt;А когда нам говорят про состояние, мы узнаем, что это не всегда самый лучший способ решения задач, объясняют плюсы и минусы. Не&amp;nbsp;знаю, поймут ли это первокурсники, для которых предназначена книга, но для меня это было понятно до боли.&lt;br /&gt;&lt;br /&gt;И вот мы доходим до модулей, объектов, потоков, параллелизма, распространения ограничений. Вы&amp;nbsp;думаете, сейчас вам будут рассказывать, как пользоваться готовыми фреймворками или специально заточенными элементами языка программирования? Фигушки! Вам&amp;nbsp;объяснят, как это сделать с нуля, из тех самых базовых кирпичиков, изученных в первых двух главах. Ничего больше не нужно! Это потом, в других языках (или на следующем курсе), вы увидите, как это можно сделать короче и запутаннее. Сейчас вы должны понять основы, как это сделать самому. И что самое приятное, все это сопровождается общими объяснениями, жизненными примерами и интересными упражнениями.&lt;br /&gt;&lt;br /&gt;Теперь, казалось бы, мы знаем основные методики программирования. Только этого мало. Для лучшего понимания процесса вычислений нам надо построить несколько интерпретаторов: самой Scheme, схемы с&amp;nbsp;ленивыми вычислениями, с&amp;nbsp;недетерминистским вычислением, а также интерпретатор для среды логического программирования. Четвертая глава вам в этом поможет.&lt;br /&gt;&lt;br /&gt;Что, скилл в вычислениях прокачан и карма аж светится? Но ведь вы все это время были далеки от железа и не знаете, как все это работает уровнем ниже Scheme! Тут&amp;nbsp;то (в&amp;nbsp;заключительной главе) вам и расскажут про регистровые машины, даже парочку-троечку спроектируют. Чтобы было на чем их проверять, вам опишут имитатор регистровых машин. Вы узнаете про стек. Вам расскажут про сборку мусора (и конечно покажут, как ее сделать с нуля ;). Чтобы прокачать понимание регистровых машин, вы напишете интерпретатор Scheme на своеобразном ассемблере. Но ведь интерпретатор&amp;nbsp;&amp;mdash; это медленно, надо написать компилятор! А компилятор сам по себе не очень удобен (нет интерактивной разработки), так что скрестим его с интерпретатором. Страшно? Ничего, ребята действительно хорошо все объясняют.&lt;br /&gt;&lt;br /&gt;Вот теперь, дочитав до конца, я по-настоящему пожалел, что не прочел эту книгу раньше, до бейсика, паскаля, с, асма, с++, окемла, лиспа, пролога, эрланга, хаскела и др. Еще в первой половине списка я начал находить много общего, потом уже я узнал про императивное, функциональное, логическое программирование, посылку сообщений и&amp;nbsp;т.д. Примерно понимал и устройство компа, знал что такое интерпретаторы, компиляторы и их помеси. Но, черт возьми, это все было от деталей к туманному общему, а не наоборот, от разжеванного общего к деталям на практике.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;Выводы&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Если Вы только начинающий программист, SICP обязательна к прочтению. Многие вещи, которые Вы будете изучать потом, будут казаться Вам знакомыми.&lt;br /&gt;&lt;br /&gt;А если Вы программист со стажем, то следует почитать хотя бы для наведения порядка в голове. &lt;br /&gt;&lt;br /&gt;PS: &lt;a href=&quot;http://paulgraham.com/&quot;&gt;Paul Graham&lt;/a&gt; сказал про SICP: &lt;blockquote&gt;&lt;p&gt;&amp;bdquo;Я&amp;nbsp;впервые прочел ее 15&amp;nbsp;лет назад и до сих пор не уверен, что усвоил все, чему эта книга может научить.&amp;ldquo;&lt;br /&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/8460007785837560226/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/8460007785837560226' title='Комментарии: 16'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/8460007785837560226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/8460007785837560226'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/03/sicp.html' title='SICP: Впечатления от прочтения'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-1543024237889586023</id><published>2007-02-04T23:22:00.000+03:00</published><updated>2007-02-04T23:44:44.998+03:00</updated><title type='text'>StarDict: Кросплатформенный словарь</title><content type='html'>Многие пользуются словарями для перевода неизвестных слов. Самый известный из них&amp;nbsp;&amp;mdash; это конечно же &lt;a href=&quot;http://www.lingvo.ru/&quot;&gt;Lingvo&lt;/a&gt;. О&amp;nbsp;качестве этого словаря говорит хотя бы то, что это один из немногих продуктов, который мне захотелось купить после пиратского использования.&lt;br /&gt;&lt;br /&gt;Однако, случайно я обнаружил замечательный словарик &lt;a href=&quot;http://stardict.sourceforge.net/&quot;&gt;StarDict&lt;/a&gt;, open source альтернативу &lt;a href=&quot;http://www.lingvo.ru/&quot;&gt;Lingvo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;StarDict работает и под windows и под linux, умеет переводить слова в других программах при наведении на них мышкой, умеет осуществлять нечеткий поиск (по словам с опечатками), а главное&amp;nbsp;&amp;mdash; бесплатен.&lt;br /&gt;&lt;br /&gt;На сайте программы можно найти большое количество &lt;a href=&quot;http://stardict.sourceforge.net/Dictionaries.php&quot;&gt;словарей&lt;/a&gt;. Причем, для английского языка их побольше чем у Lingvo, плюс есть толковые словари (и даже словарь Даля) и, если кому нужно, есть словари для японского, китайского и тайваньского языков. Кроме того, есть записи произношения около 20000 английских слов.&lt;br /&gt;&lt;br /&gt;Так что я уже пользуюсь &lt;a href=&quot;http://stardict.sourceforge.net/&quot;&gt;StarDict&lt;/a&gt; и не чувствую себя пиратом, а вы? :)</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/1543024237889586023/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/1543024237889586023' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1543024237889586023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1543024237889586023'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/02/stardict.html' title='StarDict: Кросплатформенный словарь'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-728133309742833429</id><published>2007-01-20T02:49:00.000+03:00</published><updated>2007-01-20T02:57:39.913+03:00</updated><title type='text'>И немного про LaTeX</title><content type='html'>Все-таки, потрясающая система. Emacs+AUCTeX+MiKTeX рулят. Всего лишь через месяц использования, меня просто воротит от ворда, и не только из-за безумной сложности набирания в нем любого документа, но и от самого вида этих документов, создаваемых с нарушением всех типографских канонов.&lt;br /&gt;&lt;br /&gt;Спасибо LaTeX-у за то, что я теперь реже ругаюсь матом.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/728133309742833429/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/728133309742833429' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/728133309742833429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/728133309742833429'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/01/latex.html' title='И немного про LaTeX'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-6729750215122304770</id><published>2007-01-19T20:35:00.000+03:00</published><updated>2007-02-03T22:07:25.347+03:00</updated><title type='text'>Небольшой обзор персональных wiki-систем</title><content type='html'>На работе давно пользуюсь wiki, входящей в состав &lt;a href=&quot;http://trac.edgewall.org/&quot;&gt;Trac&lt;/a&gt;. Wiki&amp;nbsp;&amp;mdash; это дико удобная вещь для создания заметок и их дальнейшего связывания друг с другом. Можно начать с маленького черновика, и дорасти до настоящей проектной документации. Или даже до чего-то большего, например, до &lt;a href=&quot;http://wikipedia.org/&quot;&gt;Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Но работа есть работа, там лично для себя не попишешь, да и доступа туда из дома принципиально нет и не будет. И&amp;nbsp;захотелось мне недавно создать свою вики, причем доступную отовсюду, бесплатную и, желательно, скрытую.&lt;br /&gt;&lt;br /&gt;Конечно, можно завести себе доменное имя, сервак, и установить на него &lt;a href=&quot;http://trac.edgewall.org/&quot;&gt;Trac&lt;/a&gt;, а лучше &lt;a href=&quot;http://www.mediawiki.org/&quot;&gt;MediaWiki&lt;/a&gt;, но возиться не хочется. И&amp;nbsp;решил я поискать&amp;nbsp;&amp;mdash; что же мне предложит старик интернет?&lt;br /&gt;&lt;br /&gt;И вот, что я нашел и попробовал:&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://stikipad.com/&quot;&gt;http://stikipad.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; выделяет 30&amp;nbsp;MB для фришного аккаунта, что для обычного текста без картинок более чем достаточно; позволяет делать приватные вики (вход только по паролю); форматирование &lt;a href=&quot;http://en.wikipedia.org/wiki/Textile_%28markup_language%29&quot;&gt;textile&lt;/a&gt; или &lt;a href=&quot;http://en.wikipedia.org/wiki/Markdown&quot;&gt;markdown&lt;/a&gt; или WYSIWYG, т.е. не такое, как привычное мне &lt;a href=&quot;http://trac.edgewall.org/wiki/WikiFormatting&quot;&gt;форматирование в Trac&lt;/a&gt; или &lt;a href=&quot;http://www.mediawiki.org/wiki/Help:Formatting&quot;&gt;форматирование в MediaWiki&lt;/a&gt; (см. также &lt;a href=&quot;http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%9A%D0%B0%D0%BA_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8&quot;&gt;тут&lt;/a&gt;); позволяет делать примитивные TODO-шки (не Trac, конечно); есть теги.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://pbwiki.com/&quot;&gt;http://pbwiki.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; простая, как peanut butter sandwich&amp;nbsp;&amp;mdash; утверждает сайт; действительно простая; выделяет 10&amp;nbsp;MB для фришного аккаунта; также позволяет приватность; лично мне не очень понравился внешний вид; &lt;a href=&quot;http://yummy.pbwiki.com/WikiStyle&quot;&gt;формат pbwiki&lt;/a&gt; тоже простой (не такой как у всех остальных wiki, нечто среднее).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://serversidewiki.com/&quot;&gt;http://serversidewiki.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; очень своеобразная штука&amp;nbsp;&amp;mdash; все прыгает и бегает (ajax &amp; ruby on rails, основан на &lt;a href=&quot;http://www.tiddywiki.com/&quot;&gt;TiddyWiki&lt;/a&gt;), стоит посмотреть поприкалываться, может кому-нибудь понравится (я сам прикололся, но потом подумал, что для меня статичные сайты лучше&amp;nbsp;&amp;mdash; на этом даже ссылку не сделаешь); в сентябре станет платным, и фришным аккаунтам будет выделяться не более 10-ти страниц-tiddler-ов, т.е. система только на посмотреть; есть мега-удобные TODO-шки; теги; приватность делается постранично, через тег private (который неудобно вставлять каждый раз); форматирование &lt;a href=&quot;http://en.wikipedia.org/wiki/Textile_%28markup_language%29&quot;&gt;textile&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://wikispaces.com/&quot;&gt;http://wikispaces.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; выдают 2&amp;nbsp;GB и говорят, что можно расширить (Just drop us a line); приватным делается за 5$/мес; форматирование WYSIWYG или &lt;a href=&quot;http://yummy.pbwiki.com/WikiStyle&quot;&gt;как у pbwiki&lt;/a&gt;; поиск почему-то через google, а не свой (как у всех остальных wiki); теги.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://wetpaint.com/&quot;&gt;http://wetpaint.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; симпатичный сайт; есть только WYSIWYG редактор; система заточена на community и соответственно никакой приватной wiki; ограничения на объем пока нет; пожалуй, самая простая wiki&amp;nbsp;&amp;mdash; для домохозяек :).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://wikia.com/&quot;&gt;http://wikia.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; все прелести википедии (&lt;a href=&quot;http://www.mediawiki.org/&quot;&gt;MediaWiki&lt;/a&gt;), но надо делать открытый, идейный коммьюнити-проект, т.е. это вообще не персональная wiki-система.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.google.com/notebook/&quot;&gt;http://www.google.com/notebook/&lt;/a&gt;&amp;nbsp;&amp;mdash; очень простая система, даже не вики, а так просто раскидывать текстовые заметки по блокнотикам. Стоит посмотреть&amp;nbsp;&amp;mdash; возможно вам будет достаточно.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.wiki-site.com/&quot;&gt;http://www.wiki-site.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; персональная &lt;a href=&quot;http://www.mediawiki.org/&quot;&gt;MediaWiki&lt;/a&gt;; никакой приватности&amp;nbsp;&amp;mdash; ваши страницы могут смотреть и изменять (хотя можно защищать отдельные страницы от правки); сайт открылся где-то полгода назад и несколько сырой; ограничений на объем нет, но советуют швырять всякую мультимедию на &lt;a href=&quot;http://youtube.com&quot;&gt;youtube.com&lt;/a&gt; и &lt;a href=&quot;http://imageshack.us&quot;&gt;imageshack.us&lt;/a&gt;. Т.к. это единственная персональная MediaWiki-система, которая мне попалась, я забил на открытость и пока остановился на ней.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;Практически все эти системы живут за счет рекламы. См. &lt;a href=&quot;http://vshabanov-ru.blogspot.com/2006/10/blog-post_14.html&quot;&gt;сюда&lt;/a&gt;, чтобы узнать, как от нее избавиться.&lt;br /&gt;&lt;br /&gt;Дополнительную информацию по некоторым из этих wiki-систем можно узнать в статье &lt;a href=&quot;http://itc.ua/article.phtml?ID=25264&quot;&gt;Сделай собственную Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Надеюсь, обзор вам хоть чуть-чуть помог, и вы сможете быстрее попробовать и выбрать себе wiki-систему. Рекомендую выбирать между &lt;a href=&quot;http://stikipad.com/&quot;&gt;stikipad&lt;/a&gt;, &lt;a href=&quot;http://wikispaces.com/&quot;&gt;wikispaces&lt;/a&gt;, &lt;a href=&quot;http://wetpaint.com/&quot;&gt;wetpaint&lt;/a&gt; и &lt;a href=&quot;http://www.wiki-site.com/&quot;&gt;wiki-site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PS: Если вы знаете какой-нибудь еще бесплатный wiki-хостинг (особенно, если это MediaWiki-хостинг), напишите мне. Буду благодарен.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/6729750215122304770/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/6729750215122304770' title='Комментарии: 13'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6729750215122304770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6729750215122304770'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2007/01/wiki.html' title='Небольшой обзор персональных wiki-систем'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-6050558039126254830</id><published>2006-11-20T19:13:00.000+03:00</published><updated>2006-11-20T19:34:22.878+03:00</updated><title type='text'>Эпиграммы в программировании</title><content type='html'>Натолкнулся на сборник цитат Алана Перлиса &lt;a href=&quot;http://www.cs.yale.edu/quotes.html&quot;&gt;Epigrams in Programming&lt;/a&gt;. Ну очень понравились. Не смотря на то, что написаны они были еще в 1982-м году, почти все они актуальны и сегодня. Всячески рекомендую для прочтения программистам.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/6050558039126254830/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/6050558039126254830' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6050558039126254830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/6050558039126254830'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/11/blog-post_20.html' title='Эпиграммы в программировании'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-5162889898965527866</id><published>2006-11-08T01:50:00.000+03:00</published><updated>2007-02-21T03:28:31.508+03:00</updated><title type='text'>Структура и интерпретация компьютерных программ</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger2/4419/3608/1600/061108_011148.0.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger2/4419/3608/320/061108_011148.0.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Сбылась мечта идиота ;) Наконец-то приобрел эту потрясающую книгу.&lt;br /&gt;&lt;br /&gt;Для тех кто не в курсе: &amp;bdquo;Структура и интерпретация компьютерных программ&amp;ldquo; вышла в июле этого года на русском языке. К сожалению, тиражом всего в 1000 экземпляров и во всех магазинах она уже давно раскуплена. Однако не стоит отчаиваться, можно попробовать сделать &lt;a href=&quot;http://books.dore.ru/bs/f1bid5637.html&quot;&gt;где-нибудь&lt;/a&gt; заказ и подождать следующего завоза. По крайней мере у меня получилось.&lt;br /&gt;&lt;br /&gt;Для тех, кто совсем не в курсе: &lt;a href=&quot;http://mitpress.mit.edu/sicp/&quot;&gt;SICP&lt;/a&gt;&amp;nbsp;&amp;mdash; одна из лучших книг по программированию из когда либо изданных. Прочесть ее от корки до корки&amp;nbsp;&amp;mdash; абсолютный MUST для любого уважающего себя программера.&lt;br /&gt;&lt;br /&gt;Потрясает то, что эта книга&amp;nbsp;&amp;mdash; изначально всего лишь вводный курс по информатике в &lt;a href=&quot;http://web.mit.edu/&quot;&gt;MIT&lt;/a&gt;. Метода для первокурсника, так сказать. Однако материал, который она охватывает, далеко не всегда вообще преподается в ВУЗе. Книга начинается с описания абстракции процедур и данных (рассматриваются функции высших порядков и даже символьная алгебра), плавно переходит к рассмотрению модульности, объектов и состояния (в частности: параллелизм, имитация цифровых схем, распространение ограничений). Затем начинается описание металингвистических абстракций (например, строится интерпретатор пролога, имитация ленивых вычислений, недетерминистское вычисление). А заканчивается книга вообще чудесно&amp;nbsp;&amp;mdash; строится эмулятор регистровой машины и пишется компилятор под нее.&lt;br /&gt;&lt;br /&gt;Вот так надо учить программированию!&lt;br /&gt;&lt;br /&gt;Безумно жалко, что 12 лет назад, когда я только начинал изучать программирование, я тратил время на всякую ерунду и на горьком опыте или путем долгих ковыряний в инете находил то, что в этой книге описывается &amp;bdquo;на пальцах&amp;ldquo;.&lt;br /&gt;&lt;br /&gt;Не менее жалко, что во многих учебных заведениях также зачастую учат ерунде. На сколько бы увеличилось качество выпускников ВУЗов, если бы их на первом курсе учили по этой книге...&lt;br /&gt;&lt;br /&gt;PS: также доступны &lt;a href=&quot;http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/&quot;&gt;видеозаписи&lt;/a&gt; лекций.&lt;br /&gt;&lt;br /&gt;PPS: после того как прочту книгу для первокурсников, закажу себе &lt;a href=&quot;http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=10142&quot;&gt;книгу для второкурсников&lt;/a&gt; :)&lt;br /&gt;&lt;br /&gt;UPD: можно попробовать &lt;a href=&quot;http://www.kdu.ru/description.aspx?product_no=144115&quot;&gt;купить SICP в издательстве&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/5162889898965527866/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/5162889898965527866' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5162889898965527866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5162889898965527866'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/11/blog-post.html' title='Структура и интерпретация компьютерных программ'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-2933434421681843507</id><published>2006-10-31T21:47:00.000+03:00</published><updated>2006-10-31T21:53:33.745+03:00</updated><title type='text'>Клевые комиксы :)</title><content type='html'>Случайно наткнулся на архив комиксов &lt;a href=&quot;http://www.hackles.org/index.html&quot;&gt;Hackles&lt;/a&gt;. Ну очень порадовали.&lt;br /&gt;&lt;br /&gt;А когда дошел до &lt;a href=&quot;http://www.hackles.org/cgi-bin/archives.pl?request=92&quot;&gt;этого&lt;/a&gt;, то вообще прикололся - буквально пару дней назад втирал нашему &quot;пингвину&quot;, что емакс мощнее, чем gvim :)</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/2933434421681843507/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/2933434421681843507' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/2933434421681843507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/2933434421681843507'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/blog-post_31.html' title='Клевые комиксы :)'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-5512146993940884708</id><published>2006-10-25T03:02:00.000+04:00</published><updated>2006-10-25T03:25:06.068+04:00</updated><title type='text'>Про культы языков программирования</title><content type='html'>Заметил интересную вешь. Практически вокруг любого языка программирования имеется свой культ. &quot;С++ rulezzz&quot;, &quot;LISP rulezz&quot;, &quot;Haskell rulezzz&quot;, и т.д. Однако после продолжительного использования любого из &quot;культовых&quot; языков ощущение его культовости у меня проходит.&lt;br /&gt;&lt;br /&gt;Каждый раз, сталкиваясь с культом, я вижу как люди торчат от того, что на некоем языке можно делать что-то, что было невозможно раньше. Я сам торчал от плюсовых темплейтов, лисповских макросов, хаскельной красоты (а также ассемблерной крутизны, окемловских first class functions, питоновского форматирования кода, Tk-ного описания интерфейсов, erlang-овского межпроцессного взаимодействия и много от чего еще).&lt;br /&gt;&lt;br /&gt;Но со временем понимаешь, что бесплатного сыра не бывает. За любые фичи приходиться платить: остутствие типизации в лиспе, низкая производительность хаскела, связывание с legacy кодом, и т.д. Тут-то культ и торч проходит, а взамен ему приходит здравое понимание того, что для каждой задачи нужен свой инструмент (причем выбирать его надо в контексте проекта, а не одной задачи).&lt;br /&gt;&lt;br /&gt;Интересно только, почему у многих людей культ и торч не проходят? Смотришь на некоторые посты и думаешь... пока еще думаю... :)</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/5512146993940884708/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/5512146993940884708' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5512146993940884708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5512146993940884708'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/blog-post_3256.html' title='Про культы языков программирования'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-4978599246845228377</id><published>2006-10-25T01:09:00.000+04:00</published><updated>2006-10-25T02:50:12.499+04:00</updated><title type='text'>Ну мега понт</title><content type='html'>Почитал тут мега пафосный &lt;a href=&quot;http://sequence.complete.org/node/215&quot;&gt;пост&lt;/a&gt; про то, что Хаскел - это Роллс-Ройс языков программирования. &lt;br /&gt;&lt;br /&gt;Красиво, конечно. Хаскел - аристократический язык. Он не будет опускаться до серых нужд обычных людей :) Пока серые люди возятся со своими серыми языками, хаскел третий раз подряд выигрывает самое сложное соревнование в мире.&lt;br /&gt;&lt;br /&gt;Смех сквозь слезы. Ведь действительно хороший язык. Только вот беда в том, что его действительно используют &quot;аристократы&quot; программирования. И мало что делается, чтобы превратить его в мейнстрим.&lt;br /&gt;&lt;br /&gt;Для окемла есть потрясающая книжка &lt;a href=&quot;http://caml.inria.fr/pub/docs/oreilly-book/&quot;&gt;Developing Applications With Objective Caml&lt;/a&gt;. А где такая книжка для хаскела? Куча введений в ФП c примерами a-la сферический конь в вакууме, описаний монад с очень &quot;нужными&quot; обычному программеру monad laws, куча разрозненных статей для Ph.D. people. А вот конкретного тьюториала для среднего программиста, с описанием разработки реальных &lt;i&gt;приложений&lt;/i&gt; нет.&lt;br /&gt;&lt;br /&gt;В итоге мы знаем, что хаскел крут, но не знаем как на нем сделать что-нибудь настоящее. С &lt;a href=&quot;http://sequence.complete.org/node/215&quot;&gt;такими&lt;/a&gt; понтами хаскел рискует навсегда остаться уделом &quot;аристократов&quot;. А ведь хочется применения его в мейнстриме.&lt;br /&gt;&lt;br /&gt;Про окемл я могу сказать человеку, чем он крут и знаю, &lt;a href=&quot;http://caml.inria.fr/pub/docs/oreilly-book/&quot;&gt;куда&lt;/a&gt; отослать человека для дальнейшего изучения. А как внедрять в массы хаскел? Как его самому-то изучать в конце концов :)</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/4978599246845228377/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/4978599246845228377' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4978599246845228377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/4978599246845228377'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/blog-post_25.html' title='Ну мега понт'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-5663249513548900548</id><published>2006-10-21T22:59:00.000+04:00</published><updated>2006-10-21T23:44:18.784+04:00</updated><title type='text'>Пара полезных ссылок для разработчиков игр</title><content type='html'>Возможно, многие уже видели и знают. Но приведу пару ссылок:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://kriconf.ru/index.php?type=info&amp;doc=speech_records&quot;&gt;Записи докладов на КРИ&lt;/a&gt; - огромная куча очень интересных докладов.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://cc6.org.ru/index.php?uid=seminari&quot;&gt;Семинары на Chaos Constructions&#39;2006&lt;/a&gt; - кучка заметно меньше, но не менее интересна.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/5663249513548900548/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/5663249513548900548' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5663249513548900548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5663249513548900548'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/blog-post_21.html' title='Пара полезных ссылок для разработчиков игр'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-9213181762286342991</id><published>2006-10-19T17:34:00.000+04:00</published><updated>2006-10-20T02:43:33.730+04:00</updated><title type='text'>Впечатления человека, ушедшего из WoW</title><content type='html'>Наткнулся тут на очень интересный &lt;a href=&quot;http://soulkerfuffle.blogspot.com/2006/10/view-from-top.html&quot;&gt;рассказ&lt;/a&gt; человека, ушедшего из MMORPG World of Warcraft.&lt;br /&gt;&lt;br /&gt;Пара выдержек:&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;...Why did I leave? Simple: Blizzard has created an alternate universe where we don&#39;t have to be ourselves when we don&#39;t want to be. From my vantage point as a guild decision maker, I&#39;ve seen &lt;span style=&quot;font-weight: bold;&quot;&gt;it &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;destroy more families and friendships and take a huge toll on individuals than any drug on the market today&lt;/span&gt;, and that means a lot coming from an ex-club DJ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;...Blizzard created &lt;span style=&quot;font-weight: bold;&quot;&gt;a game that you simply can not win&lt;/span&gt;. Not only that, the only way to &quot;get better&quot; is to play more and more. In order to progress, you have to farm your little heart out in one way or another: either weeks at a time PvPing to make your rank or weeks at a time getting materials for and &quot;conquering&quot; raid instances, or dungeons where you get &quot;epic loot&quot; (pixilated things that increase your abilities, therefore making you &quot;better&quot;). And what do you do after these mighty dungeons fall before you and your friend&#39;s wrath? Go back the next week (not sooner, Blizzard made sure you can only raid the best instances once a week) and do it again (imagine if Alexander the Great had to push across the Middle East every damn week)...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Мне и до этого особенно не нравились все эти MMORPG. Теперь я понимаю, что производство таких игр имеет очень много общего с производством наркотиков.&lt;br /&gt;&lt;br /&gt;Любая интересная игра захватывает и отнимает кучу времени. Но стоит задуматься: может ли человек выиграть, играя в твою игру? Получит ли он удовольствие или красные глаза?&lt;br /&gt;&lt;br /&gt;Позиция Blizzard понятна - им невыгодно, чтобы человек прошел игру. Только вот человечно ли это?</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/9213181762286342991/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/9213181762286342991' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/9213181762286342991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/9213181762286342991'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/wow.html' title='Впечатления человека, ушедшего из WoW'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-1066672251613180623</id><published>2006-10-17T01:50:00.000+04:00</published><updated>2006-10-20T02:42:29.274+04:00</updated><title type='text'>Через тернии к звездам</title><content type='html'>На работе пришел к немного странному, на первый взгляд, решению: из окемловского приложения вызываю питовский код, который, в свою очередь, вызывает плюсовый. Казалось бы - что за изврат? Ан нет.&lt;br /&gt;&lt;br /&gt;Логика игры, которую мы сейчас делаем (равно как и предыдущей игры) пишется на &lt;a href=&quot;http://caml.inria.fr/&quot;&gt;ocaml&lt;/a&gt;. Низкоуровневая работа с &lt;a href=&quot;http://www.openscenegraph.org&quot;&gt;OSG&lt;/a&gt;, &lt;a href=&quot;http://www.opengl.org&quot;&gt;OpenGL&lt;/a&gt;, &lt;a href=&quot;http://www.openal.org/&quot;&gt;OpenAL&lt;/a&gt; и пр., ведется на С++. Окемловских байндиногв для &lt;a href=&quot;http://www.openscenegraph.org&quot;&gt;OSG&lt;/a&gt; нет, есть &lt;a href=&quot;http://mosca.caltech.edu/projects/pyosg&quot;&gt;питоновские&lt;/a&gt;. А писать окемловкие байндинги для С++ гимор тот еще.&lt;br /&gt;&lt;br /&gt;В итоге, все плюсовые дела через &lt;a href=&quot;http://www.boost.org/libs/python/doc/index.html&quot;&gt;boost::python&lt;/a&gt; (очень удобная библиотека, кстати) выводятся в питон. В питоне пишется тонкий слой, переводящий работу с объектами в примитивные функции. А в кемле написан небольшой код на полстранички, который позволяет легко и type-safe-но вытаскивать функцию из питона. Например:&lt;pre&gt;  let fun1 = f &quot;module&quot; &quot;fun1&quot;&lt;br /&gt;    (type1 **-&gt; type2 **-&gt; ret_type)&lt;br /&gt;&lt;/pre&gt;благодаря написанному ручками оператору&lt;pre&gt;  (**-&gt;)&lt;/pre&gt;определяет функцию&lt;pre&gt;  (f : type1 -&gt; type2 -&gt; ret_type)&lt;/pre&gt;Ну где вы еще такое напишите, кроме окемла или хаскела :)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;За счет этого, я с минимальными усилиями получаю из ocaml доступ к плюсовому коду.&lt;br /&gt;&lt;br /&gt;Так что не бойтесь применения разных языков программирования в одном проекте. Это не так уж сложно и впридачу вы имеете возможность писать то, что надо, на том, на чем надо.</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/1066672251613180623/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/29561155/1066672251613180623' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1066672251613180623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/1066672251613180623'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/blog-post_17.html' title='Через тернии к звездам'/><author><name>Vladimir Shabanov</name><uri>http://www.blogger.com/profile/14322574042735481057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>