суббота, февраля 25, 2006

Слайды The Next Mainstream Programming Language

The Next Mainstream Programming Language - это слайды Тима Свини (Tim Sweeney), основного разработчика движка Unreal. Тим размышляет о том, чтобы он хотел от языка программирования, говорит какие проблемы возникают при работе с C++. К сожалению, это только слайды, а не статья, поэтому все очень кратко и не все до конца понятно.


Просто красивая картинка оттуда

Поклонники Haskell'я будут довольны, Haskell упоминается не один раз, там даже есть раздел The Genius of Haskell. Правда, прямо за ним идет раздел Why Haskell is Not My Favorite Programming Language. :-)
По поводу этих слайдов на Lambda the Ultimate разгорелось большое обсуждение, в котором участвует и сам Тим. Много мнений высказывается по поводу сборки мусора в играх.
"Представьте, вы врываетесь в комнату. Повсюду монстры, у вас есть пара секунд, чтобы среагировать, прежде чем вас поджарят. Хотите ли вы, чтобы сейчас началась сборка мусора? Конечно же нет!"

среда, февраля 22, 2006

Некоторые программы работают быстрее, если кликнуть на заголовок окна

"Такая ситуация возможна, если программа слишком много времени отводит на то, чтобы рапортовать о прогрессе, но недостаточно времени тратит собственно на работу." (Хех, я знаю людей, которые поступают так же :-) ). "Когда вы кликаете на заголовок окна и продолжаете удерживать клавишу мыши, менеджер окон ожидает следующее сообщение от мышки, чтобы понять - вы просто кликнули на заголовок окна или собираетесь окно куда-то тащить. Во время этого ожидания отрисовка окна приостанавливается.
Из-за этого программа начинает работать быстрее. Отсутствие перерисовок означает, что меньше CPU тратится на перерисовку того, что вы все равно бы не заметили.
"

Речь идет об ОС Windows, оригинал заметки тут: Why does my program run faster if I click and hold the caption bar?. Звучит как анекдот, но на блоге Реймонда Чена есть примеры программ, можно проверить.

вторник, февраля 21, 2006

Блог Дорона Холана о драйверах режима ядра

Дорон Холан (Doron Holan), программист из Микрософт, занимается программированием драйверов режима ядра под Windows уже более восьми лет. И ведет блог по этому поводу: A Hole In My Head. Я человек далекий от программирования драйверов, но почитать для общего развития было интересно.
Еще по теме, статья на microsoft.com: C++ for Kernel Mode Drivers: Pros and Cons. Хотя в статье говорится, что это просто статья без каких-либо намеков, стоит использовать для этих целей C++ или нет, но, по-моему, вывод из нее можно сделать только один: "Just don't". :-)

воскресенье, февраля 19, 2006

Библиотеки для отрисовки графов

Несмотря на то, что проблему с отрисовкой своего графа я решила с помощью GraphViz'а, я успела к тому моменту основательно порыться в Интернете в поисках библиотеки отрисовки графов, плюс сейчас порылась, освежила воспоминания и нашла кое-что новое.
Всегда приятно, когда есть хорошая библиотека для решения какого-либо класса задач. С открытыми исходниками, подробной документацией, живым форумом и прочими прелестями, которые есть у хороших библиотек. Сразу вспоминается Boost.
В Boost Graph library реализовано большое количество алгоритмов на графах, в том числе несколько алгоритмов отрисовки графов, но как-то маловато...

Самая достойная из бесплатных библиотек, что мне встретилась - это Lib tulip, на ней построена демонстрационная программа отрисовки графов Tulip. Документация несколько мутная, но есть. Есть форум, ну и конечно же есть исходники (C++). Умеет несколько двумерных раскладок, умеет рисовать трехмерные графы. Для отрисовки в 3D использует OpenGL.

Остальные бесплатные проекты, что я видела, либо полудохлые, либо им чего-то да не хватает. Привлекательно выглядит uDraw, раньше он назывался daVinci и под старым именем был довольно известен. Он без исходников, но есть дистрибутивы под большое количество платформ: под Windows, под разные Unix'ы...

Пожалуй самой известной библиотекой для отрисовки графов является LEDA, написана на С++. Это не только библиотека отрисовки графов, там много чего есть как касающегося графов, так и не касающегося. Но это платная библиотека, платная даже для вузов. И стоит она немеряно. Насколько мне известно, раньше она была бесплатной для учебных заведений и получила довольно-таки широкое распространение. И часто в форумах в обсуждениях отрисовки графов она упоминается. Но сейчас говорить о ней большого смысла нет. Соответственно, теряют смысл библиотеки, которые написаны на основе LEDA. Это AGD (Algorithms for Graph Drawing), GDT (Graph Drawing Toolkit).

В прошлом посте я упоминала yFiles, на базе которой построена бесплатная программи yEd. yFiles yаписана на Java, есть yFiles.NET. Стоит тоже неслабо.

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

В комментариях упоминались коллекции ссылок на проекты, посвященные отрисовке графов, приведу их здесь. Возможно кому-то удастся отыскать в них еще что-то полезное.
Graph Drawing в каталоге Google
Graph Drawing на dmoz.org

Это продолжение рассказа об отрисовке графов. Начало можно найти тут: Нарисовать граф красиво.