<?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: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>2012-02-16T22:14:42.815+04: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?max-results=100'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><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="font-style:italic;"&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="http://www.haskell.org"&gt;надо использовать&lt;/a&gt;, а &lt;a href="http://www.python.org"&gt;чему&lt;/a&gt; &lt;a href="http://ru.wikipedia.org/wiki/C_Sharp"&gt;сказать&lt;/a&gt; &lt;a href="http://ru.wikipedia.org/wiki/C%2B%2B"&gt;нет&lt;/a&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-392209998049350768?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UtsIHbmmWgU/SBxB4Ka6OtI/AAAAAAAAAB8/0922EvPO9sY/s1600-h/080503_142418.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UtsIHbmmWgU/SBxB4Ka6OtI/AAAAAAAAAB8/0922EvPO9sY/s320/080503_142418.jpg" alt="" id="BLOGGER_PHOTO_ID_5196100503204412114" border="0" /&gt;&lt;/a&gt;Вот я и стал счастливым обладателем &lt;a href="http://mitpress.mit.edu/0262220695"&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="http://en.wikipedia.org/wiki/Oz_(programming_language)"&gt;Oz&lt;/a&gt;. Но как &lt;a href="http://vshabanov-ru.blogspot.com/2007/03/sicp.html"&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;Пойду читать дальше, чего и вам желаю.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-1787518960863907637?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UtsIHbmmWgU/SBxB4Ka6OtI/AAAAAAAAAB8/0922EvPO9sY/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>2007-12-17T04:04:38.320+03:00</updated><title type='text'>Требуется программист на удаленную работу</title><content type='html'>Здравствуйте, уважаемые читатели! А вот кого из вас интересует удаленная работа на 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;Звоните: +7 926 536-27-96&lt;br /&gt;Пишите: &amp;lt;&lt;a href="mailto:Vladimir%20Shabanov%20&amp;lt;vshabanoff@gmail.com&amp;gt;?subject=На%20вакансию%20с%20блога"&gt;vshabanoff@gmail.com&lt;/a&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;Вопросы и комментарии приветствуются.&lt;br /&gt;&lt;br /&gt;А кросс-постинг в заинтересованные сообщества приводит в восторг ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-7849013687561300698?l=vshabanov-ru.blogspot.com' alt='' /&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.g?blogID=29561155&amp;postID=7849013687561300698' title='Комментарии: 10'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>10</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; этот принцип один из самых важных в построении больших и надежных систем. А вот понимание того, что дает надежность, а что не дает, видимо, приходит только с опытом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-1203204023754093929?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</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.g?blogID=29561155&amp;postID=1203204023754093929' title='Комментарии: 6'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>6</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="http://vshabanov-ru.blogspot.com/2007/08/blog-post.html"&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="http://worsethanfailure.com/Articles/Soft_Coding.aspx"&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="http://worsethanfailure.com/Articles/The-Mythical-Business-Layer.aspx"&gt;The Mythical Business Layer&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-6516638826876407663?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://www.lua.org/"&gt;Lua&lt;/a&gt;, &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;, &lt;a href="http://www.tcl.tk/"&gt;Tcl&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Lisp_programming_language"&gt;Lisp&lt;/a&gt;, да что угодно. Некоторые даже &lt;a href="http://en.wikipedia.org/wiki/QuakeC"&gt;придумывают&lt;/a&gt; &lt;a href="http://udn.epicgames.com/Two/UnrealScriptReference.html"&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="http://caml.inria.fr/"&gt;OCaml&lt;/a&gt; и &lt;a href="http://haskell.org/"&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;Короче. К черту скрипты, пишем все на одном мощном, удобном, кратком и продуктивном языке.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-4955068630721043139?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=4955068630721043139' title='Комментарии: 14'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>14</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="http://vshabanov-ru.blogspot.com/2007/07/2610197121062007.html"&gt;очень плохо&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Спасибо, надеюсь вы будете больше думать о своем здоровье.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-4407338351743759527?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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;Царствие тебе небесное, и пусть земля тебе будет пухом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-4257918095321902568?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://www.job.ru/entry.jsp?mode=queryVacById&amp;submode=do&amp;amp;id=109650cb3a9fb2895fa1ad4e2c8d19e3"&gt;требуется&lt;/a&gt; программист.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&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="font-weight: bold;"&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="font-style: italic;"&gt;огромным плюсом&lt;/span&gt; является знание Haskell или Ocaml (мы пишем на OCaml, если возможно, и на C++, если необходимо).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&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="font-weight: bold;"&gt;Условия:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span&gt;з/п от &lt;span style="font-weight: bold;"&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="font-weight: bold;"&gt;Контакты:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;E-Mail: &lt;&lt;a href="mailto:vshabanoff@gmail.com"&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;будущее), есть желание, скидывайте резюме на мыло, в будущем посмотрим.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-1462752731814437459?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</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.g?blogID=29561155&amp;postID=1462752731814437459' title='Комментарии: 11'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>11</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="http://www.erlang.org/"&gt;Erlang&lt;/a&gt; на просторах ex-USSR.&lt;br /&gt;&lt;br /&gt;Судя по всему, возрастающее применение Erlang оправдывается достаточно большим количеством success stories. К тому же Erlang поддерживается не только группой исследователей и community, как это происходит с &lt;a href="http://www.haskell.org/"&gt;Haskell&lt;/a&gt; и &lt;a href="http://caml.inria.fr/"&gt;OCaml&lt;/a&gt;, но и такой немаленькой фирмой, как &lt;a href="http://www.ericsson.com/"&gt;Ericsson&lt;/a&gt;. Это позволяет легче убедить менеджмент в пригодности Эрланга для серьезной разработки.&lt;br /&gt;&lt;br /&gt;Но, как и в &lt;a href="http://vshabanov-ru.blogspot.com/2007/04/ocaml-haskell.html"&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="http://www.it.uu.se/research/group/hipe/dialyzer/"&gt;dialyzer&lt;/a&gt;. Однако, никакие тулзы не заменят полностью качественной, теоретически обоснованной, статической типизации.&lt;br /&gt;&lt;br /&gt;Думается мне, что если бы не некоторые из &lt;a href="http://www.faqs.org/docs/artu/ch01s06.html"&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="http://blog.davber.com/2006/09/02/erlang-the-best-or-worst-of-two-worlds/"&gt;жалоба на отсутствие статической типизации в Эрланге&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-7900488464466731147?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=7900488464466731147' title='Комментарии: 10'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>10</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="http://caml.inria.fr/"&gt;OCaml&lt;/a&gt; и &lt;a href="http://www.haskell.org/"&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="http://vshabanov-ru.blogspot.com/2006/10/ocaml-exceptions-c-destructors.html"&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; их.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-5487306067355744840?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=5487306067355744840' title='Комментарии: 32'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>32</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="http://vshabanov-ru.blogspot.com/2006/11/blog-post.html"&gt;закупки SICP&lt;/a&gt;, и я наконец-то ее прочел!&lt;br /&gt;&lt;br /&gt;Сразу скажу: SICP&amp;nbsp;&amp;mdash; это не учебник по &lt;a href="http://en.wikipedia.org/wiki/Lisp_programming_language"&gt;Lisp&lt;/a&gt;, это книга по Программированию. Если вы просто хотите изучить Lisp или &lt;a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)"&gt;Scheme&lt;/a&gt;, то SICP  не для вас, лучше попробовать что-нибудь &lt;a href="http://www.psg.com/~dlamkins/sl/chapter03.html"&gt;попроще&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Книга стала пожалуй одним из самых интересных и серьезных текстов, прочитанных мною за последнее время. После книг &lt;a href="http://cm.bell-labs.com/cm/cs/cbook/"&gt;Кернигана и Ритчи&lt;/a&gt;, &lt;a href="http://www.research.att.com/~bs/3rd.html"&gt;Страуструпа&lt;/a&gt;, книг по &lt;a href="http://caml.inria.fr/pub/docs/oreilly-book/html/index.html"&gt;OCaml&lt;/a&gt;, &lt;a href="http://www.haskell.org/haskellwiki/Books_and_tutorials"&gt;Haskell&lt;/a&gt;, кучи тьюториалов, мануалов, статей и прочей литературы, &lt;a href="http://mitpress.mit.edu/sicp/"&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="font-style:italic;"&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="http://paulgraham.com/"&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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-8460007785837560226?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=8460007785837560226' title='Комментарии: 15'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>15</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="http://www.lingvo.ru/"&gt;Lingvo&lt;/a&gt;. О&amp;nbsp;качестве этого словаря говорит хотя бы то, что это один из немногих продуктов, который мне захотелось купить после пиратского использования.&lt;br /&gt;&lt;br /&gt;Однако, случайно я обнаружил замечательный словарик &lt;a href="http://stardict.sourceforge.net/"&gt;StarDict&lt;/a&gt;, open source альтернативу &lt;a href="http://www.lingvo.ru/"&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="http://stardict.sourceforge.net/Dictionaries.php"&gt;словарей&lt;/a&gt;. Причем, для английского языка их побольше чем у Lingvo, плюс есть толковые словари (и даже словарь Даля) и, если кому нужно, есть словари для японского, китайского и тайваньского языков. Кроме того, есть записи произношения около 20000 английских слов.&lt;br /&gt;&lt;br /&gt;Так что я уже пользуюсь &lt;a href="http://stardict.sourceforge.net/"&gt;StarDict&lt;/a&gt; и не чувствую себя пиратом, а вы? :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-1543024237889586023?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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-у за то, что я теперь реже ругаюсь матом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-728133309742833429?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt;. Wiki&amp;nbsp;&amp;mdash; это дико удобная вещь для создания заметок и их дальнейшего связывания друг с другом. Можно начать с маленького черновика, и дорасти до настоящей проектной документации. Или даже до чего-то большего, например, до &lt;a href="http://wikipedia.org/"&gt;Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Но работа есть работа, там лично для себя не попишешь, да и доступа туда из дома принципиально нет и не будет. И&amp;nbsp;захотелось мне недавно создать свою вики, причем доступную отовсюду, бесплатную и, желательно, скрытую.&lt;br /&gt;&lt;br /&gt;Конечно, можно завести себе доменное имя, сервак, и установить на него &lt;a href="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt;, а лучше &lt;a href="http://www.mediawiki.org/"&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="http://stikipad.com/"&gt;http://stikipad.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; выделяет 30&amp;nbsp;MB для фришного аккаунта, что для обычного текста без картинок более чем достаточно; позволяет делать приватные вики (вход только по паролю); форматирование &lt;a href="http://en.wikipedia.org/wiki/Textile_%28markup_language%29"&gt;textile&lt;/a&gt; или &lt;a href="http://en.wikipedia.org/wiki/Markdown"&gt;markdown&lt;/a&gt; или WYSIWYG, т.е. не такое, как привычное мне &lt;a href="http://trac.edgewall.org/wiki/WikiFormatting"&gt;форматирование в Trac&lt;/a&gt; или &lt;a href="http://www.mediawiki.org/wiki/Help:Formatting"&gt;форматирование в MediaWiki&lt;/a&gt; (см. также &lt;a href="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"&gt;тут&lt;/a&gt;); позволяет делать примитивные TODO-шки (не Trac, конечно); есть теги.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://pbwiki.com/"&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="http://yummy.pbwiki.com/WikiStyle"&gt;формат pbwiki&lt;/a&gt; тоже простой (не такой как у всех остальных wiki, нечто среднее).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://serversidewiki.com/"&gt;http://serversidewiki.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; очень своеобразная штука&amp;nbsp;&amp;mdash; все прыгает и бегает (ajax &amp; ruby on rails, основан на &lt;a href="http://www.tiddywiki.com/"&gt;TiddyWiki&lt;/a&gt;), стоит посмотреть поприкалываться, может кому-нибудь понравится (я сам прикололся, но потом подумал, что для меня статичные сайты лучше&amp;nbsp;&amp;mdash; на этом даже ссылку не сделаешь); в сентябре станет платным, и фришным аккаунтам будет выделяться не более 10-ти страниц-tiddler-ов, т.е. система только на посмотреть; есть мега-удобные TODO-шки; теги; приватность делается постранично, через тег private (который неудобно вставлять каждый раз); форматирование &lt;a href="http://en.wikipedia.org/wiki/Textile_%28markup_language%29"&gt;textile&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://wikispaces.com/"&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="http://yummy.pbwiki.com/WikiStyle"&gt;как у pbwiki&lt;/a&gt;; поиск почему-то через google, а не свой (как у всех остальных wiki); теги.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://wetpaint.com/"&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="http://wikia.com/"&gt;http://wikia.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; все прелести википедии (&lt;a href="http://www.mediawiki.org/"&gt;MediaWiki&lt;/a&gt;), но надо делать открытый, идейный коммьюнити-проект, т.е. это вообще не персональная wiki-система.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.google.com/notebook/"&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="http://www.wiki-site.com/"&gt;http://www.wiki-site.com/&lt;/a&gt;&amp;nbsp;&amp;mdash; персональная &lt;a href="http://www.mediawiki.org/"&gt;MediaWiki&lt;/a&gt;; никакой приватности&amp;nbsp;&amp;mdash; ваши страницы могут смотреть и изменять (хотя можно защищать отдельные страницы от правки); сайт открылся где-то полгода назад и несколько сырой; ограничений на объем нет, но советуют швырять всякую мультимедию на &lt;a href="http://youtube.com"&gt;youtube.com&lt;/a&gt; и &lt;a href="http://imageshack.us"&gt;imageshack.us&lt;/a&gt;. Т.к. это единственная персональная MediaWiki-система, которая мне попалась, я забил на открытость и пока остановился на ней.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;Практически все эти системы живут за счет рекламы. См. &lt;a href="http://vshabanov-ru.blogspot.com/2006/10/blog-post_14.html"&gt;сюда&lt;/a&gt;, чтобы узнать, как от нее избавиться.&lt;br /&gt;&lt;br /&gt;Дополнительную информацию по некоторым из этих wiki-систем можно узнать в статье &lt;a href="http://itc.ua/article.phtml?ID=25264"&gt;Сделай собственную Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Надеюсь, обзор вам хоть чуть-чуть помог, и вы сможете быстрее попробовать и выбрать себе wiki-систему. Рекомендую выбирать между &lt;a href="http://stikipad.com/"&gt;stikipad&lt;/a&gt;, &lt;a href="http://wikispaces.com/"&gt;wikispaces&lt;/a&gt;, &lt;a href="http://wetpaint.com/"&gt;wetpaint&lt;/a&gt; и &lt;a href="http://www.wiki-site.com/"&gt;wiki-site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PS: Если вы знаете какой-нибудь еще бесплатный wiki-хостинг (особенно, если это MediaWiki-хостинг), напишите мне. Буду благодарен.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-6729750215122304770?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</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.g?blogID=29561155&amp;postID=6729750215122304770' title='Комментарии: 12'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>12</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="http://www.cs.yale.edu/quotes.html"&gt;Epigrams in Programming&lt;/a&gt;. Ну очень понравились. Не смотря на то, что написаны они были еще в 1982-м году, почти все они актуальны и сегодня. Всячески рекомендую для прочтения программистам.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-6050558039126254830?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/4419/3608/1600/061108_011148.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/4419/3608/320/061108_011148.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;Сбылась мечта идиота ;) Наконец-то приобрел эту потрясающую книгу.&lt;br /&gt;&lt;br /&gt;Для тех кто не в курсе: &amp;bdquo;Структура и интерпретация компьютерных программ&amp;ldquo; вышла в июле этого года на русском языке. К сожалению, тиражом всего в 1000 экземпляров и во всех магазинах она уже давно раскуплена. Однако не стоит отчаиваться, можно попробовать сделать &lt;a href="http://books.dore.ru/bs/f1bid5637.html"&gt;где-нибудь&lt;/a&gt; заказ и подождать следующего завоза. По крайней мере у меня получилось.&lt;br /&gt;&lt;br /&gt;Для тех, кто совсем не в курсе: &lt;a href="http://mitpress.mit.edu/sicp/"&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="http://web.mit.edu/"&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="http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/"&gt;видеозаписи&lt;/a&gt; лекций.&lt;br /&gt;&lt;br /&gt;PPS: после того как прочту книгу для первокурсников, закажу себе &lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=10142"&gt;книгу для второкурсников&lt;/a&gt; :)&lt;br /&gt;&lt;br /&gt;UPD: можно попробовать &lt;a href="http://www.kdu.ru/description.aspx?product_no=144115"&gt;купить SICP в издательстве&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-5162889898965527866?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://www.hackles.org/index.html"&gt;Hackles&lt;/a&gt;. Ну очень порадовали.&lt;br /&gt;&lt;br /&gt;А когда дошел до &lt;a href="http://www.hackles.org/cgi-bin/archives.pl?request=92"&gt;этого&lt;/a&gt;, то вообще прикололся - буквально пару дней назад втирал нашему "пингвину", что емакс мощнее, чем gvim :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-2933434421681843507?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.hackles.org/index.html' title='Клевые комиксы :)'/><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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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'>Заметил интересную вешь. Практически вокруг любого языка программирования имеется свой культ. "С++ rulezzz", "LISP rulezz", "Haskell rulezzz", и т.д. Однако после продолжительного использования любого из "культовых" языков ощущение его культовости у меня проходит.&lt;br /&gt;&lt;br /&gt;Каждый раз, сталкиваясь с культом, я вижу как люди торчат от того, что на некоем языке можно делать что-то, что было невозможно раньше. Я сам торчал от плюсовых темплейтов, лисповских макросов, хаскельной красоты (а также ассемблерной крутизны, окемловских first class functions, питоновского форматирования кода, Tk-ного описания интерфейсов, erlang-овского межпроцессного взаимодействия и много от чего еще).&lt;br /&gt;&lt;br /&gt;Но со временем понимаешь, что бесплатного сыра не бывает. За любые фичи приходиться платить: остутствие типизации в лиспе, низкая производительность хаскела, связывание с legacy кодом, и т.д. Тут-то культ и торч проходит, а взамен ему приходит здравое понимание того, что для каждой задачи нужен свой инструмент (причем выбирать его надо в контексте проекта, а не одной задачи).&lt;br /&gt;&lt;br /&gt;Интересно только, почему у многих людей культ и торч не проходят? Смотришь на некоторые посты и думаешь... пока еще думаю... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-5512146993940884708?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://sequence.complete.org/node/215"&gt;пост&lt;/a&gt; про то, что Хаскел - это Роллс-Ройс языков программирования. &lt;br /&gt;&lt;br /&gt;Красиво, конечно. Хаскел - аристократический язык. Он не будет опускаться до серых нужд обычных людей :) Пока серые люди возятся со своими серыми языками, хаскел третий раз подряд выигрывает самое сложное соревнование в мире.&lt;br /&gt;&lt;br /&gt;Смех сквозь слезы. Ведь действительно хороший язык. Только вот беда в том, что его действительно используют "аристократы" программирования. И мало что делается, чтобы превратить его в мейнстрим.&lt;br /&gt;&lt;br /&gt;Для окемла есть потрясающая книжка &lt;a href="http://caml.inria.fr/pub/docs/oreilly-book/"&gt;Developing Applications With Objective Caml&lt;/a&gt;. А где такая книжка для хаскела? Куча введений в ФП c примерами a-la сферический конь в вакууме, описаний монад с очень "нужными" обычному программеру monad laws, куча разрозненных статей для Ph.D. people. А вот конкретного тьюториала для среднего программиста, с описанием разработки реальных &lt;i&gt;приложений&lt;/i&gt; нет.&lt;br /&gt;&lt;br /&gt;В итоге мы знаем, что хаскел крут, но не знаем как на нем сделать что-нибудь настоящее. С &lt;a href="http://sequence.complete.org/node/215"&gt;такими&lt;/a&gt; понтами хаскел рискует навсегда остаться уделом "аристократов". А ведь хочется применения его в мейнстриме.&lt;br /&gt;&lt;br /&gt;Про окемл я могу сказать человеку, чем он крут и знаю, &lt;a href="http://caml.inria.fr/pub/docs/oreilly-book/"&gt;куда&lt;/a&gt; отослать человека для дальнейшего изучения. А как внедрять в массы хаскел? Как его самому-то изучать в конце концов :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-4978599246845228377?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sequence.complete.org/node/215' title='Ну мега понт'/><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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://kriconf.ru/index.php?type=info&amp;doc=speech_records"&gt;Записи докладов на КРИ&lt;/a&gt; - огромная куча очень интересных докладов.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cc6.org.ru/index.php?uid=seminari"&gt;Семинары на Chaos Constructions'2006&lt;/a&gt; - кучка заметно меньше, но не менее интересна.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-5663249513548900548?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://soulkerfuffle.blogspot.com/2006/10/view-from-top.html"&gt;рассказ&lt;/a&gt; человека, ушедшего из MMORPG World of Warcraft.&lt;br /&gt;&lt;br /&gt;Пара выдержек:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...Why did I leave? Simple: Blizzard has created an alternate universe where we don't have to be ourselves when we don't want to be. From my vantage point as a guild decision maker, I've seen &lt;span style="font-weight: bold;"&gt;it &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&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="font-style: italic;"&gt;...Blizzard created &lt;span style="font-weight: bold;"&gt;a game that you simply can not win&lt;/span&gt;. Not only that, the only way to "get better" 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 "conquering" raid instances, or dungeons where you get "epic loot" (pixilated things that increase your abilities, therefore making you "better"). And what do you do after these mighty dungeons fall before you and your friend'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 понятна - им невыгодно, чтобы человек прошел игру. Только вот человечно ли это?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-9213181762286342991?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://soulkerfuffle.blogspot.com/2006/10/view-from-top.html' title='Впечатления человека, ушедшего из WoW'/><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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></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="http://caml.inria.fr/"&gt;ocaml&lt;/a&gt;. Низкоуровневая работа с &lt;a href="http://www.openscenegraph.org"&gt;OSG&lt;/a&gt;, &lt;a href="http://www.opengl.org"&gt;OpenGL&lt;/a&gt;, &lt;a href="http://www.openal.org/"&gt;OpenAL&lt;/a&gt; и пр., ведется на С++. Окемловских байндиногв для &lt;a href="http://www.openscenegraph.org"&gt;OSG&lt;/a&gt; нет, есть &lt;a href="http://mosca.caltech.edu/projects/pyosg"&gt;питоновские&lt;/a&gt;. А писать окемловкие байндинги для С++ гимор тот еще.&lt;br /&gt;&lt;br /&gt;В итоге, все плюсовые дела через &lt;a href="http://www.boost.org/libs/python/doc/index.html"&gt;boost::python&lt;/a&gt; (очень удобная библиотека, кстати) выводятся в питон. В питоне пишется тонкий слой, переводящий работу с объектами в примитивные функции. А в кемле написан небольшой код на полстранички, который позволяет легко и type-safe-но вытаскивать функцию из питона. Например:&lt;pre&gt;  let fun1 = f "module" "fun1"&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;Так что не бойтесь применения разных языков программирования в одном проекте. Это не так уж сложно и впридачу вы имеете возможность писать то, что надо, на том, на чем надо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-1066672251613180623?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&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.g?blogID=29561155&amp;postID=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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-3307780913885408395</id><published>2006-10-17T01:10:00.000+04:00</published><updated>2006-10-17T02:01:47.411+04:00</updated><title type='text'>Ocaml exceptions &amp; C++ destructors</title><content type='html'>Маленький совет для тех, кто пишет окемловкие байндинги к плюсовым библиотекам.&lt;br /&gt;&lt;br /&gt;Никогда! Запомните! Никогда не мешайте окемловские эксепшны с плюсовыми объектами. Из-за longjmp(), который вызывается внутри caml_failwith, caml_invalid_argument или caml_raise*, ни один деструктор плюсового объекта не будет вызван и вы получите memory leak.&lt;br /&gt;&lt;br /&gt;Также не мешайте обработку плюсовых эксепшнов и вызов окемловских эксепшнов, т.к. плюсовые эксепшны - это те же классы с деструкторами. Т.е. в данном коде&lt;pre&gt;  try&lt;br /&gt;  {&lt;br /&gt;      bla-bla;&lt;br /&gt;      throw std::runtime_error( "oh, shit!" );&lt;br /&gt;  }&lt;br /&gt;  catch ( std::runtime_error&amp; e )&lt;br /&gt;  {&lt;br /&gt;      caml_failwith( e.what() );&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;деструктор std::runtime_error не будет вызван и строчка "oh, shit!" навсегда останется в памяти. gcc пофиг на __attribute__ ((noreturn)).&lt;br /&gt;&lt;br /&gt;Объекты отдельно, failwith отдельно. Запомните это, пожалуйста, и тогда вам не придется две недели анализировать логи mtrace или &lt;a href="http://valgrind.org/"&gt;valgrind&lt;/a&gt;. Спасибо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-3307780913885408395?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/3307780913885408395/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29561155&amp;postID=3307780913885408395' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/3307780913885408395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/3307780913885408395'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/ocaml-exceptions-c-destructors.html' title='Ocaml exceptions &amp; C++ destructors'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-5054879744910901217</id><published>2006-10-14T04:12:00.000+04:00</published><updated>2006-10-14T05:20:23.400+04:00</updated><title type='text'>Немного рекламы антирекламного софта</title><content type='html'>Все ненавидят рекламу. Залез в инет что-то найти - а там куча говна и ничего нужного. Как бороться с мигающей помойкой и "релевантной" гуглевской рекламой?&lt;br /&gt;&lt;br /&gt;А очень просто. Есть две программы:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.admuncher.com/"&gt;Ad Muncher&lt;/a&gt; - фильтрует рекламу в любой программе (т.к. перехватывает все обращения в инет и отрубает то, что попадает под рекламный фильтр, а фильтров у Muncher-a очень много). Программа платная, но кряк найти не проблема (хотя ЭТУ программу стОит купить).&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.customizegoogle.com/"&gt;CustomizeGoogle&lt;/a&gt; - дополнение к &lt;a href="http://www.mozilla.ru/products/firefox/"&gt;Mozilla Firefox&lt;/a&gt;, которое убирает ВСЮ текстовую рекламу из гугля, гмайла и прочих гуглевых служб. Программа бесплатная.&lt;br /&gt;&lt;br /&gt;Даю гарантию, через пару дней Вы будете в ужасе от вида браузера других людей. А через полгода будете с удивлением говорить: "Фига, оказывается на этом сайте столько рекламы".&lt;br /&gt;&lt;br /&gt;Короче, хватит читать - бегите скорее, устанавливайте себе и другим это чудо. И да будет с вами чистый инет.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-5054879744910901217?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/5054879744910901217/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29561155&amp;postID=5054879744910901217' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5054879744910901217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/5054879744910901217'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/blog-post_14.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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-778642716665438776</id><published>2006-10-11T03:12:00.000+04:00</published><updated>2006-10-11T03:41:59.147+04:00</updated><title type='text'>О пользе тестеров (и вреде Anything Beta)</title><content type='html'>Залез тут на &lt;a href="http://blogger.com/"&gt;Blogger&lt;/a&gt;  и увидел, что гугль предлагает переключиться на обновленный вариант &lt;a href="http://beta.blogger.com/"&gt;Blogger Beta&lt;/a&gt; - вроде как теги появились и прочие вкусности.&lt;br /&gt;&lt;br /&gt;Переключился. И не смутился, что переключение безвозвратное. И не смутился, что Beta (&lt;a href="http://gmail.com/"&gt;Gmail&lt;/a&gt; ведь тоже Beta, однако работает). Только вот настолько все это сырое и глюкавое, что аж жуть берет. Теже функции, что и в обычном блоггере, почему-то работают через раз. Новые функции вообще через два. С горем пополам подправил темплейт, но сколько сил и времени на это ушло.&lt;br /&gt;&lt;br /&gt;Короче, уважаемый Гугль - тестируйте, пожалуйста, свои альфы сами, а не силами ни в чем не повинных юзеров. Это свинство: заманивая пользователей новыми возможностями, заставлять их обкатывать свое сырое говно.&lt;br /&gt;&lt;br /&gt;Нанять тестеров, вовсе не так уж сложно и дорого. Доверие пользователей, которое получает любая компания, производящая качественный продукт, стоит гораздо больше.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-778642716665438776?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/778642716665438776/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29561155&amp;postID=778642716665438776' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/778642716665438776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/778642716665438776'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/anything-beta.html' title='О пользе тестеров (и вреде Anything Beta)'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-116041711675851190</id><published>2006-10-09T21:48:00.000+04:00</published><updated>2006-10-09T22:45:57.273+04:00</updated><title type='text'>Про Functional Hybrid Modeling</title><content type='html'>Делаю сейчас на работе новую игру (я для игровых автоматов пишу, если кто не в курсе). И вот думаю, как бы поудобнее логику сделать.&lt;br /&gt;&lt;br /&gt;Предыдущую игру я сделал на основе Functional Reactive Programming (FRP от Conal Elliot). Оказалось очень даже ничего, только вот всплыли пара проблем: малая производительность (вся игра - один большой continuation, который каждый фрейм пересоздается заново, спасает только то, что игра не особо большая), и не совсем удобное описание логики в некоторых местах (причем, как грамотно описывать, сам пока не знаю).&lt;br /&gt;&lt;br /&gt;Так вот - полез я посмотреть: какие-же продвижения в области FRP произошли за последнее время? И нашел я очень интересную статью, про &lt;a href="http://www.ida.liu.se/%7Ehenni/Publications/padl2003.pdf"&gt;Functional Hybrid Modelling&lt;/a&gt;. Моих вопросов оно не решает (хотя и дает некоторые направления). Но, в целом, крайне рекомендую для прочтения тем, кто хочет узнать, как надо делать симуляции физических и игровых систем.&lt;br /&gt;&lt;br /&gt;Основная фича, которые придумали авторы - &lt;span style="font-style: italic;"&gt;неявная&lt;/span&gt; связь между сигналами (signal relation), как основной строительный кирпичик. Т.е. мы больше не описываем, что из чего следует, а только описываем взаимосвязи. Из этих хреней можно автоматически выводить систему диффференциальных &lt;span style="font-style: italic;"&gt;алгебраических &lt;/span&gt;уравнений (DAE), что является гораздо более мощным средством описания физических задач, нежели относительно низкоуровневые ODE.&lt;br /&gt;&lt;br /&gt;Также эта хрень показывает верность моего старого предположения, что на ограничениях (constraints) можно строить практически любые системы. Ведь отношение (relation) - есть частный случай ограничения.&lt;br /&gt;&lt;br /&gt;Конечно реализация всего этого пока что не просто хромает, а вообще отсутствует. Почитал &lt;a href="http://www.cs.yale.edu/publications/techreports/tr1356.pdf"&gt;отчет&lt;/a&gt; их студента о языке Hydra - пробной реализации задуманных фич и не увидел там ничего нового, кроме описания семантики и примера перевода этой семантики в тупое FRP на continuation-ах.&lt;br /&gt;&lt;br /&gt;Короче, идея интересная. Буду думать, как реализовать ее подмножество для своих задач. Решать DAE я не буду, т.к. физики у меня в игре не будет. А вот описывать задачу не иерархической комбинацией, а системой взаимосвязей может оказаться очень даже удобно.  Буду продолжать думать: как совместить описание взаимосвязей задачи и динамическую симуляцию, да еще и сделать все это работающим с нормальной скоростью.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-116041711675851190?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/116041711675851190/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29561155&amp;postID=116041711675851190' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/116041711675851190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/116041711675851190'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/functional-hybrid-modeling.html' title='Про Functional Hybrid Modeling'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-116041602951854322</id><published>2006-10-09T21:30:00.000+04:00</published><updated>2006-10-09T21:47:09.566+04:00</updated><title type='text'>Заброшенный блог, млин</title><content type='html'>Ох, и давненько же я сюда ничего не писал. Спрашивается - зачем блог создавал?&lt;br /&gt;&lt;br /&gt;Хотел мега мысли писать: как надо CAD-системы делать, как сам их делаю. А в итоге - как сессию сдал, так и забил и на работу научную и на SpindleCAD. И вроде блог есть, а писать нечего. Ведь на CAD-ы-то я малость подзабил. А блог изначально вроде как для них делался.&lt;br /&gt;&lt;br /&gt;И решил я теперь, что буду я писать сюда все, что в голову взбредет. И не важно - интересно это Вам или нет. Относится ли это к CAD или нет. Пофиг. Мой блог - что хочу, то и ворочу.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-116041602951854322?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/116041602951854322/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29561155&amp;postID=116041602951854322' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/116041602951854322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/116041602951854322'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/10/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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-115005692707873637</id><published>2006-06-12T00:10:00.000+04:00</published><updated>2006-10-09T21:21:16.830+04:00</updated><title type='text'>Ограничения как база CAD системы</title><content type='html'>На моем сайте появился черновик статьи &lt;a href="http://sigmund.hotmail.ru/papers/constraints-as-a-basis-of-CAD-system-ru.html"&gt;Ограничения как база CAD системы&lt;/a&gt;, в которой рассказывается о том, как ограничения могут решить проблему отсутствия интеграции в CAD системах.&lt;br /&gt;&lt;br /&gt;Отрывок статьи:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Современные CAD системы страдают от недостатка интеграции – мы чертим в одном месте, считаем в другом, оформляем документацю в третьем. Если в одном месте что-то изменилось, то в других местах все приходится менять вручную. Данный недостаток вызван тем, что CAD/CAM/CAE/PDM системы не имеют общей базы, которая могла бы их связать. В роли такой базы может выступать система ограничений, описывающих инженерную задачу и различные взаимосвязи, существующие в задаче."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sigmund.hotmail.ru/papers/constraints-as-a-basis-of-CAD-system-ru.html"&gt;Полный текст &gt;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Если у Вас есть какое-либо мнение по поводу этой статьи, пожалуйста оставьте здесь свой комментарий или напишите мне письмо.&lt;br /&gt;&lt;br /&gt;До встречи...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-115005692707873637?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sigmund.hotmail.ru/papers/constraints-as-a-basis-of-CAD-system-ru.html' title='Ограничения как база CAD системы'/><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/115005692707873637/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29561155&amp;postID=115005692707873637' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/115005692707873637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/115005692707873637'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/06/cad.html' title='Ограничения как база CAD системы'/><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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29561155.post-115004951165937672</id><published>2006-06-11T21:46:00.000+04:00</published><updated>2006-10-09T21:29:55.753+04:00</updated><title type='text'>Обо мне и об этом блоге</title><content type='html'>Здравствуйте. Как можно уже догадаться, меня зовут Владимир и я хочу рассказать вам кое-что обо мне и об этом блоге.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Обо мне&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;На данный момент я являюсь студентом 5-го курса МГТУ им. Н.Э. Баумана. Кафедра МТ1 «Металлорежущие станки».&lt;br /&gt;&lt;br /&gt;Параллельно с этим я работаю программистом - разработчиком игр. Если очень интересно и не лень читать по-английски, можете посмотреть краткое резюме &lt;a href="http://sourceforge.net/people/viewprofile.php?user_id=1487693"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Мои интересы&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Интересов много. Расскажу о некоторых.&lt;br /&gt;&lt;br /&gt;Разработка игр является моим профеcсиональными интересом, т.к. последние пару лет именно этим зарабатываю на жизнь.&lt;br /&gt;&lt;br /&gt;Как любого ленивого программиста, интересуют "продвинутые" языки программирования и технологии разработки ПО, которые помогают мне сберечь время и нервы.&lt;br /&gt;&lt;br /&gt;Еще в последнее время меня заинтересовала разработка CAD систем - это то, чем я не собираюсь заниматься профессионально, т.к. разработка игр пока привлекает меня гораздо больше. Тем не менее в институте я веду научную работу по расчету и проектированию шпиндельных узлов и, в рамках этой работы, создаю программу &lt;a href="http://spindlecad.sourceforge.net/ru"&gt;SpindleCAD&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;О блоге&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;По-сути, этот блог создается мною как место, где я рассказываю какие-либо новости из моей же собственной жизни. Также я буду сообщать здесь о различных мыслях, которые, как я считаю, могут оказаться полезными не только мне, но и Вам.&lt;br /&gt;&lt;br /&gt;До встречи...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29561155-115004951165937672?l=vshabanov-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vshabanov-ru.blogspot.com/feeds/115004951165937672/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29561155&amp;postID=115004951165937672' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/115004951165937672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29561155/posts/default/115004951165937672'/><link rel='alternate' type='text/html' href='http://vshabanov-ru.blogspot.com/2006/06/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='32' height='29' src='http://bp0.blogger.com/_UtsIHbmmWgU/SByDIKa6OvI/AAAAAAAAACM/9pQEBrWD5Ys/S220/avatar_1.jpg'/></author><thr:total>2</thr:total></entry></feed>
