понедельник, ноября 02, 2009

Русский сайт с видеолекциями.


Вчера у меня наконец появился достаточно толстый канал, чтобы смотреть видео в интернете в прямом эфире без подзагрузок, и по этому поводу вчера несколько часов я провёл за исследованием содержания нового портала-агрегатора видео лекций по различным предметам univertv.ru

До этого мне уже попадался англоязычный аналог - academicearth.org. На нем лекций, конечно, побольше и они из более солидных источников, типа Кембриджа, Массачусетского Технологического и Йеля, а не Марийского политеха, но всё же на родном языке слушать приятнее.

P.S. Еще один классный сайт с видео-курсами для ИТ-шников - Интернет Университет www.intuit.ru

пятница, августа 21, 2009

Список open source игр.

Случайно нашёл в википедии список опенсорсных игр, для которых можно скачать исходники и при желании поучаствовать в их дальнейшей разработке. В нем больше 100 игр, причем, насколько я понял, совсем не доделанные проекты отсутствуют.

В принципе, должно быть полезно для того, чтобы учиться писать программы в команде. Всё равно в одиночку сейчас ничего серьёзного не напишешь, а так и fun и польза. Посмотрел тут на днях исходники одной open source игры в процессе разработки (в том списке она ещё отсутсвует) - FreeOrion - по мотивам Master of Orion. Она еще до версии 1.0 не добралась, но написано уже порядочно. Пишут на C++ и Python, используют Boost, OGRE и еще много интересных технологий и библиотек.

Код написан в хорошем объектно-ориентированном стиле, при поверхностном осмотре замечены boost::graph (библиотека для работы с графами - для моделирования вселенной, в которой каждая звездная система - вершина графа), boost::statechart (конечный автомат - для переходов между разными состояниями игры), boost::python, boost::shared_ptr, а также обильное использование STL. Так что можно просто посмотреть, как надо писать.

Я думаю, что и в других достаточно давно существующих проектах, таких как Battle for Wesnoth (пошаговая стратегия в фэнтези мире), FreeCol (клон Colonization написанный на java), OpenTDD (open source клон Transport Tycoon Deluxe), UFO Alien Invasion (клон X-COM) есть чему поучиться в смысле программирования игр. У таких долгоиграющих проектов есть развитое community, wiki сайты, форумы, всегда можно получить помощь, если что-то не понятно.

P.S. Нашёл wiki, посвященную таким играм - Libregamewiki.
А так же блог на английском - freegamer.blogspot.com

пятница, июля 24, 2009

Игры для программистов

Update от 10 Сент 2015 г: Более свежие посты на эту тему:  #1#2 и #3.

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

Список таких игр с кратким обзором можно найти на хабрахабре.

Самые известные:

  • Robocode - соревнования между танками-роботами, алгоритм нужно писать на Java (пытаются написать C# клон игры - http://www.pureai.com/TankAI/).
  • Google AI Challenge - создание программы по контролю над колонией муравьев, сражающихся с колониями муравьев других игроков. Программу можно писать на куче реальных языков программирования.
  • GalaxyFx:Старатели - космические зонды должны собирать ресурсы. Игра сделана в Sun Microsystem, писать нужно на JavaFX Script. Можно участвовать в соревновании и выиграть призы от компании - главный приз ноутбук.
  • Terrarium - создать живое существо и победить в борьбе за существование. Писать надо на C# (.Net 2.0)
  • Breve - моделирование децентрализованных систем и искуственной жизни. Написано на Python, алроритмы нужно писать на нём же или на собственном языке.
  • HabraWars - сражение роботов, писать надо на JavaScript.
  • web-worker-wars - еще одно сражение ботов написанных на JavaScript.

Это все open source по большей части, так что если надоест играть, то можно и в самих проектах поучаствовать.
Есть куча подобных игр, использующих свои собственные языки программирования. С точки зрения обучения программированию это несколько более запутанный способ, чем писать на реальном языке, но в принципе тоже полезно. В конце концов когда я в ВУЗе учился, за 5 лет нас заставили попробовать писать примерно на 10 языках программирования, включая всякую экзотику, реально я из всего этого только C/C++ и Perl сейчас использую.
  • A.I. Wars - программирование роботов-жуков
  • Colobot, Ceebot - роботы, осваивающие другую планету. Язык программирования Cbot - смесь C#, C++ и Java.
  • DarwinBots - программирование колонии микробов
  • Infon Battle Arena - программирование жучков на языке Lua.
Полный (наверное) список подобных игр можно увидеть на DMOZ.

P.S. Еще одна возможность что-то запрограммировать в игре, которая приходит мне в голову - программирование скриптов в R3: Reunion. Это большая игра, посвященная космосу и разработчики оставили для всех желающих возможность перепрограммировать всевозможные скрипты в ней, подробнее можно ознакомиться тут - Космическое программирование.

пятница, июня 26, 2009

Подготовка к собеседованию

Хорошая мысля приходит опосля, как известно... но все же на будущее. Типичное собеседование для программиста проходит обычно в течении 1-1,5 часов, в течении которых тебя мучают задачками на далекие от повседневной работы темы. Засада обычно не в сложности задачи (за компом при наличии MSDN она легко пишется за 5 мин), а в том, что тебя заставляют решать ее на бумажке, а весь синтаксис у тебя из головы вылетел.

Так что перед собеседованием надо потренироваться в решении простых задачек на каком нибудь из этих сайтов (это сайты для "спортивного программирования"/олимпиад) - просто, чтобы набить руку в применении STL к примеру - C++ программистов любят озадачивать чем-нибудь подобным.

Я STL ценю, уважаю и время от времени использую в работе - но не настолько часто, что бы помнить без документации мелкие детали. Или, к примеру, просят вас написать программу на скриптовом языке, perl'е допустим, который вы в принципе знаете и несколько месяцев/лет назад использовали, но за это время подзабыли синтаксис - а в резюме конечно его перечислили. Когда я устраивался на предыдущую работу, мне весь мозг вынесли, расспрашивая про детали c++ и параллельного программирования - и после того, как все же взяли, я почти 2 года писал на чистом C, без всяких плюсов и тем более без параллельного программирования - просто проект существовал уже много лет и никто на C++ его переписывать не стал бы.

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

P.S. Оч. хорошая статья - Joel on Software: Искусство проведения интервью

вторник, июня 09, 2009

Techdays.ru - "вебинары" для IT-шников

Недавно наткнулся на этот проект - коллекцию веб-семинаров по новым технологиям в основном от Микрософт и Intel на русском языке. Прослушал/просмотрел несколько и проникся - замечательный ресурс, на котором можно познакомится с современными IT-тенденциями, причем значительная часть семинаров - из разряда "узнай за 15 мин" - пожалуй, так получать представление о чем то новом удобнее, чем читая статьи - благодаря лекции и слайдам все нагляднее.

Я пока посмотрел несколько докладов про .Net и параллельное программирование - все весьма доступно и не напряжно, общее представление о проблеме действительно получаешь. Дальше, конечно, нужно читать книги, статьи и документацию, но часто не хватает именно введения в проблему, пока не осознаешь что есть какая-то проблемная область, не поймешь, куда же двигаться дальше, а этот сайт как раз для этого и предназначен. Большим корпорациям надо продвигать свои новые технологии, IT-шникам надо их изучать, все довольны и счастливы.

Ссылка - techdays.ru