четверг, августа 31, 2006

phdcomics.com

Сегодня открыла для себя волшебный мир phdcomics.com. Несколько часов непрерывного веселья.



Нашла по ссылке с 0xDE.

воскресенье, августа 27, 2006

Ключевое слово typename

typename - это одно из редких и экзотичных ключевых слов, которые с большой долей вероятности никогда не пригодятся в работе (мне оно еще не пригождалось), но все равно любопытно зачем оно нужно. Его иногда путают с typedef. Несмотря на то, что они слегка похожи по названию, они означают разные вещи.

typename нужен для облегчения задачи компилятору при парсинге загадочных выражений вроде следующего:
template<class T> void f() { T::x * p; ... }

Выражение T::x * p может означать две вещи.
Первая: x - это имя некого типа, а все выражение есть объявление указателя p.
Вторая: x - это статическая переменная, а * - это знак умножения. Тогда p - это тоже какая-то переменная.

Ключевое слово typename разрешит это недоразумение, явно сказав компилятору, что речь идет о типе.
template<class T> void f() { typename T::x * p; ... }

По умолчанию же компилятору положено думать, что это умножение. Разные компиляторы в вопросах, связанных с typename, ведут себе по-разному. Подробно кто именно как себя ведет я не разбиралась, но я видела упоминания старых компиляторов, которые вообще не поддерживают typename. Поскольку это были упоминания из довольно старых статей, то сейчас это, наверное, не очень актуально. Некоторые компиляторы пытаются догадаться сами, что автор хотел сказать и могут догадаться успешно. Но при этом выдать warning. Где-то поддержку typename надо включать отдельным ключом.

Также typename можно использовать вместо class при описании шаблона. То есть вместо template<class T> можно написать template<typename T>, разницы никакой нет. Но исторически так сложилось, что class употребляется чаще.

Ссылки по теме:
Dr. Dobb's - What Are You, Anyway? - статья о сложностях, которые возникают у компилятора при парсинге шаблонов. В том числе там упоминается typename.
What is the template typename keyword used for? What's the difference between typename and typedef?
comp.lang.c++.moderated Confused about typename
comp.lang.c++.moderated No typename needed before std::list<T>?

понедельник, августа 21, 2006

MIT HAKMEM

Тот самый MIT HAKMEM, упомянутый в книжке "Hacker's Delight" ("Алгоритмические трюки для программистов" в русском переводе). Сборник задач с решениями и без, сделанный в MIT'е в 72 году. Решения на языке ассемблера PDP-6/10.

Статья в Википедии о HAKMEM.

пятница, августа 18, 2006

Fubix.ru взял у меня интервью

Fubix.ru взял у меня интервью, в котором я рассказываю о себе, о разработке шареваре игр и немного о Winding Trail.

понедельник, августа 14, 2006

Микрософт Xbox 360 поворачивается лицом к независимым разработчикам

Очень интересная инициатива от Микрософта. 30 августа они обещают сделать свободной для скачивания некую XNA Game Studio Express. Она устанавливается на Windows XP и с ее помощью можно разрабатывать игры под Xbox 360. За 99 долларов можно будет оформить годовую подписку и получить возможность собирать и тестировать свои игры непосредственно на Xbox 360. Не очень понятно как это выполнено технически, и нужна ли для этого собственно приставка. Также эта подписка нужна для того, чтобы распространять готовую игру. Все это направлено на привлечение людей, Микрософт надеется заинтересовать независимых разработчиков и студентов разработкой игр под Xbox 360.

Инициатива эта уникальна, все остальные производители приставок совершенно не жалуют независимых разработчиков, их SDK стоят многие тысячи долларов. Подозреваю, что в p2p сетях и не такое можно найти и совершенно бесплатно, но непонятно, что с полученной игрой делать дальше. А вот в случае Xbox распространяться написанные независимыми разработчиками игры будут через Xbox Live Arcade. Думаю, там будет какой-то отбор, но все же шансы выпустить игру под Xbox есть.

Официальный пресс-релиз: Microsoft Invites the World to Create Its Own Xbox 360 Console Games for the First Time.

Нашла по ссылке с Tom Miller's Blog: Wait, you can make your own Xbox 360 Games?

воскресенье, августа 13, 2006

Leopard и Vista

Apple выпускает Mac OS X Leopard. И вовсю ее рекламирует, противопоставляя ее Windows Vista. Простор для фантазии здесь большой, если вспомнить, что Vista все время задерживается. Рекламные плакаты Apple наделали много шума...



Не очень хорошо видно, но надпись на плакате "Hasta la vista, Vista".



Вверху, мелко: "Mac OS X Leopard: introducing Vista 2.0".

По заверению Стива Джобса в продажу Leopard поступит весной 2007 года.

Кстати исходники ядер операционок Mac OS X можно найти на www.opensource.apple.com.



По ссылке с noScene: Hasta la vista, Vista

понедельник, августа 07, 2006

Цикл статей Three Management Methods

Джоэл Спольски начал публикацию цикла статей под названием Three Management Methods. Обещает рассказать о том, как управлять командой, чтобы не получилась ситуация из серии "кто в лес, кто по дрова". Первая, вводная статья, весьма интересная. Ну и дальше, я думаю, Джоэл ерунду не напишет.

If you want to lead a team, a company, an army, or a country, the primary problem you face is getting everyone moving in the same direction, which is really just a polite way of saying "getting people to do what you want."

пятница, августа 04, 2006

Преждевременная оптимизация

Есть такая классическая цитата: "Premature optimization is the root of all evil", "Преждевременная оптимизация есть корень всех зол". В качестве источника этой мудрости упоминаются разные люди, но я решила провести некоторые изыскания, чтобы доподлинно выяснить кто же это все-таки сказал. По беседам в конференциях и по Википедии я постаралась восстановить истину. Эту цитату часто приписывают Дональду Кнуту, который сказал так:

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

Но он не сам это придумал. Про проценты - это Кнут добавил от себя, а изначальная цитата звучит так
Premature optimization is the root of all evil in programming.
и сказал это Энтони Хоар. Больше всего он известен тем, что придумал быструю сортировку.

Также в качестве автора часто указывают Ларри Уолла, создателя языка Перл, который, в свою очередь, цитировал то ли Хоара, то ли Кнута.

Об этой цитате, а также о ее неправильном использовании интересно рассказывается в статье The Fallacy of Premature Optimization. Мысли там высказываются следущие: сначала оптимизировать преждевременно, а потом на это уже времени нет. Также зачастую забывают первое слово этой цитаты и воспринимают ее как "Оптимизация - корень всех зол". То есть смысл меняется кардинально.

В продолжении темы: Optimization - статья в Википедии про оптимизацию.

Updated 20.12.2009

Сергей Тепляков пишет, что все на самом деле не так. Короче, дело ясное, что дело темное :-).