пятница, декабря 29, 2006

Новогодний хит-парад

Во время различных праздников людей пробивает на песни. "Мороз, мороз" и "Черный ворон" традиционно лидируют в этом хит-параде. Я предлагаю оживить новогодний вечер современными мотивами. У меня есть к этому живой интерес, потому что как человек непьющий и не умеющий петь, я всегда нахожусь в рядах слушателей и местами и временами это бывает весьма непросто...

Ну про Гимн Рунета уже слышали все, наверное. Я предлагаю его исполнять сразу после боя курантов. Исполняется он стоя, со слезами на глазах. Особую эпичность проиходящему придаст хор из 300 медведов вздымающих руки вверх в едином порыве в традиционном жесте приветствия во время припева.

Продолжить можно в зависимости от обстановки. На веселой вечеринке пойдет White&Nerdy, а в тихом семейном кругу - Software Wonderland.

В продолжение новогодней темы пара поздравлялок, которые мне уже прислали по Аське. Очень симпатишные


* .* .* . . * .* . *
* . . * . . * . * .*
. . .* ПОЗДРАВЛЯЮ *. .* . . ..* * .
.* . * .С НАСТУПАЮЩИМ .* * . ..*
.* . * . * НОВЫМ ГОДОМ!!! . * .* .
. * . . * . . * . * . . *
. . * . * . . * . . * . *.
*. . * . .* . . * * . .


http://www.nnov.ru/newyear.swf


Всех с Наступающим. Ура!

среда, декабря 27, 2006

Еще немного хороших книг по C++

Это продолжение рассказа о книгах по C++. Начало можно найти тут: Хорошие книги по C++

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





"Стандарты программирования на С++", Герб Саттер, Андрей Александреску.
Название оригинала: C++ Coding Standards: 101 Rules, Guidelines and Best Practices

"Стандарты программирования на С++" на Ozon.ru




"Эфективное програмирование на С++", Эндрю Кениг, Барбара Э. Му.
Название оригинала: Accelerated C++

"Эфективное програмирование на С++" на Ozon.ru




"Шаблоны C++. Справочник разработчика", Дэвид Вандевурд, Николаи М. Джосаттис.
Название оригинала: C++ Templates. The Complete Guide
Слышала весьма лестные отзывы. Упоминается как самая полная книга по шаблонам.
"Шаблоны C++. Справочник разработчика" на Ozon.ru


И еще пара книг, которые мне не удалось найти в русском переводе.
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
The Annotated C++ Reference Manual - хорошая, но несколько устаревшая книга

vector vs deque

Контейнеры vector и deque очень схожи по описанию. Тем не менее, разница между ними есть и весьма существенная. Кроме того, что к deque можно добавлять элементы в начало, он отличается от vector размещением в памяти. vector всегда будет размещаться в памяти последовательно. Благодаря этому он может очень удачно прикидываться простым массивом. И у него есть специфичные функции для работы с этой самой памятью. Из-за последовательного размещения в памяти произвольный доступ к элементам очень быстрый.
А вот deque может быть запросто в памяти сегментирован. Обычно он реализуется как массив массивов. Поэтому доступ к элементам будет помедленнее. Но зато при добавлении элементов не будет возникать тех проблем, что имеют место у vector с выделением последовательных кусков памяти.

Если сравнивать deque с list, то deque занимает меньше памяти чем list. Ну и с произвольным доступом к элементам у list все похуже. Зато list быстрее справляется с удалением и добавлением элементов в произвольное место списка.

Ссылки по теме:
Оценка производительности контейнеров
comp.lang.c++.moderated deque VS vector
comp.lang.c++.moderated What the deque?!

понедельник, декабря 25, 2006

Пост Replay Debugger

Пост Replay Debugger на Блоге Тру Программиста содержит ссылки на ресурсы о дебаггерах, которые позволяют "проиграть" процесс исполнения программы заново, как бы вернуться назад во времени. Особенно это интересно для отладки многопоточных и распределенных приложений.

пятница, декабря 15, 2006

Лучшие видеоролики по мнению Google Research

Питер Норвиг опубликовал Google Research Picks for Videos of the Year. Это 20 лучших видеороликов по их мнению. Удивительно увлекательная подборка.

Номером первым идет рассказ о команде Стэнфордского Университета, которая выиграла DARPA Grand Challenge. Рассказывают как они строили свою машину-робота, как учили ее путь распознавать. Дорогу они там интересно пытались распознать по картинке. По цвету не получилось. Они решили искать на картинке наиболее гладкие участки. С удивлением выяснили, что наиболее гладким является небо. Решили они этот вопрос довольно-таки хитро, в ролике об этом хорошо рассказано.
Самым сложным препятствием для них оказался туннель. Я уже где-то читала, что так многие команды думают.
Они немного рассказывают о конкурентах. Там одна команда выбрала не машину как остальные, а мотоцикл. И этот мотоцикл у них все время падал. Они очень элегантно вышли из положения в итоге :-).

Есть видео о распределенных системах Building Large Systems at Google. Там много рассказывается о Google File System (GFS).

Есть выступления Гвидо ван Россума, Стива Возняка... Короче, теперь есть чем заняться долгими зимними вечерами. :-)

четверг, декабря 14, 2006

Робот собирает кубик Рубика

Робот несколько страшноват.






Нашла по ссылке с alexmoskalyuk.

понедельник, декабря 04, 2006

воскресенье, декабря 03, 2006

Интервью со Страуструпом

Страуструп рассказывает про проблемы современного софта и, конечно, про С++: The Problem with Programming

Sergey_, спасибо за ссылку.

воскресенье, ноября 19, 2006

Как назвать сервер

Как-то просматривая свою статистику я обратила внимание на несколько дружно заходящих ко мне хостов каких-то химиков, все они были названы по номерам энзимов: enzyme-а дальше номер. После этого я решила как-нибудь написать пост по поводу идей по именованию хостов и некоторое время рыла Интернет по этому поводу. Вообще системные администраторы подходят к задаче именования серверов творчески. Лучшим доказательством тому является RFC2100 - The Naming of Hosts, написанное в стихах.

Птицы, животные, планеты - все это старые добрые варианты, но это уже старо и неоригинально. Хотя вот интересный вариант: использование названий птиц для поддоменов:
Кондоры (condor) - машины разработчиков
Вороны (raven) - серверы данных
Соколы (falcon) - машины техподдержки
Ястребы (hawk) - интранет
Сапсаны (peregrin) - машины менеджеров
Совы (owl) - машины тестеров

Какие-либо географические названия не очень хорошо подходят для этой цели. Если использовать названия стран или городов, то обращаясь к какому-либо серверу думаешь, что он именно в этом городе и установлен. И сервер moscow.host.ru, установленный в Питере, это как-то странно. Есть еще названия гор и тому подобные вещи. Но они быстро заканчиваются.

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

Вариант, который мне понравился больше всего: драгоценные камни. Топаз, аметист. Жаль, что мне ничего именовать не приходится.

Вот еще цитата из форума для тех, у кого действительно много серверов
Я предпочитаю квантовые/субатомные частицы. Если это рапространить на молекулярный уровень, то у тебя получаются буквально десятки тысяч имен. (Может быть сотни тысяч, я не проверял.)


Модно давать имена серверам по именам богов. Приятно, что у тебя серверной стоит не просто железяка, а Бог Солнца Ра. В ход идут всякие боги: греческие, египетские... Для серверов, как-либо логически связанных можно использовать мифических близнецов, просто парных персонажей. Ромул и Рем, например. В связи с этим мне вспоминается Леденящая Кровь История. Про то, как системный администратор увлекся религией древних ацтеков. И начал называть сервера именами древних ацтекских богов.
Надо сказать, ацтеки букв на имена не жалели. Каждое из имен - это словосочетание, записанное на древнеацтекском. Например: Кетцалькоатль (Quetzalcoatl, он же «пернатый змей»). Вот он, вот он красавец в своем человеческом воплощении.
(Картинка из Википедии)
Главный у них Huitzilopochtli, деликатно переведенный как Уицилопочтли.
Надо сказать, после этого жизнь в компании стала гораздо веселее.

Еще незаезженные варианты:
  • Видные деятели эпохи возрождения - Ботичелли, ДаВинчи, Микельанджело
  • Имена ураганов
  • Кухонная утварь
  • Персонажи из Винни-Пуха
  • Персонажи из комиксов про Дилберта
  • Покемоны! Их, говорят 152 штуки, надолго хватит
  • Любимые RFC и сетевые протоколы

Ну, и если это все надоело до смерти - случайные слова из словаря

Ссылки по теме:
RFC 1178 - Choosing a name for your computer
Боги ацтеков
SERVER NAMES

вторник, ноября 14, 2006

Блоги сотрудников Microsoft

По ссылке с lenta.ru я нашла список блогов сотрудников Microsoft, пишущих на русском языке. Из них я отобрала те, которые пишут на технические темы, маркетинг меня интересует мало...

Алексей Майков TabletPC team, Redmond
Из интересного только задачка с Майкрософтовского интервью. Но блог начат недавно, посмотрим чего там будет дальше.

Арам Григорян специалист по локализации, Redmond
Меня заинтересовал пост по Юзабилити. Еще там периодически публикуются вакансии, если кому интересно.

Константин Исаков Redmond
Программист в Майкрософте. В какой именно группе - я не поняла.
Обещан С++, даже уже немного есть.

Людмила Фокина группа разработчиков SQL Server, Redmond
Обещает рассказывать о SQL Server. Есть несколько постов по построению индексов, потом наступило затишье. Посты читаются несколько тяжеловато для человека далекого от проектирования баз данных.

Олег Исаков Core File Solutions, Redmond
Блог посвящен технологиям Microsoft для хранения и репликации файлов (Microsoft File Storage solution).

В официальном списке нет еще одного блога, Семена Козлова, Avalon Team, Redmond.
Про разработку он пока ничего не пишет, но есть надежда, что будет.

Updated
:
На самом деле в официальном списке не одного блога не хватает. Буду потихоньку добавлять незаслуженно забытые сюда:
Алексей Пахунов SDE, Windows Kernel
Меня больше всего заинтересовали посты про C++ и COM.

вторник, ноября 07, 2006

Конструирование объектов в Дельфи и С++

Статья Exceptional Safety на блоге The Oracle at Delphi послужила предметом разговора за чашкой чая у нас с мужем, где мы обсуждали насколько же по-разному конструируются объекты в Дельфи и С++.

В С++ порядок конструирования объектов зачастую является источником недопонимания. При вызове конструктора класса сначала конструируется объект базового класса, потом его наследника и так далее. Непонятки начинаются при попытке вызова из конструктора базового класса виртуальной функции.


class CBase
{
public:
CBase()
{
cout<<"CBase::CBase"<<endl;
print();
}
virtual void print()
{
cout<<"print CBase::print"<<endl;
}
};

class CDerived : public CBase
{
public:
CDerived()
{
cout<<"CDerived::CDerived"<<endl;
}
virtual void print()
{
cout<<"print CDerived::print"<<endl;
}
};

int main()
{
cout<<"Creating CDerived"<<endl;
CDerived d;
}


Вывод получается такой.

Creating CDerived
CBase::CBase
print CBase::print
CDerived::CDerived


Поскольку vtable CDerived еще не заполнена на момент вызова функции print, будет вызвана функция CBase::print. В Дельфи таблица виртуальных функций, VMT, заполняется перед началом отработки конструктора и таких проблем не возникает.

type
TBase = class
protected
procedure Print; virtual;
public
constructor Create;
end;

TDerived = class(TBase)
protected
procedure Print; override;
public
constructor Create;
end;

{ TBase }

constructor TBase.Create;
begin
inherited Create;
ShowMessage('TBase.Create');
Print;
end;

procedure TBase.Print;
begin
ShowMessage('TBase.Print');
end;

{ TDerived }

constructor TDerived.Create;
begin
inherited Create;
ShowMessage('TDerived.Create');
end;

procedure TDerived.Print;
begin
ShowMessage('TDerived.Print');
end;


При попытке создать экземляр класса TDerived будут выданы следующие соообщения

TBase.Create
TDerived.Print
TDerived.Create


Причем не только VMT заполняется, вообще создается полный экземпляр класса, заполненный нулями.

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

Такие разные подходы ведут к интересным последствиям в случае выброса исключения из конструктора. В С++ выброс исключения в конструкторе часто рекомендуют для индикации ошибки при конструировании объекта, потому что конструктор не возвращает значений, а писать ошибку куда-либо еще неудобно. Но после выбрасывания исключения из конструктора деструктор вызван не будет. И надо как-то подчищать то, что конструктор успел сделать. Существуют разные способы это сделать, все несколько неочевидные.

В Дельфи в такой ситуации идет неявный вызов деструктора. Который уберет то, что было проинициализировано, но не тронет то, до чего дело не дошло. Не тронет он потому, что изначально все ссылки проинициализированы nil'ами, нулями. Те поля, для которых память уже выделена, будут иметь значения, отличные от nil. Для освобождения ресурсов в Дельфи есть деструктор по умолчанию Destroy и метод ему в помощь под названием Free. Destroy никогда не надо вызывать явно, он считается служебным, а Free отрабатывает следующим образом.
if Self <> nil then Self.Destroy;

Политика Дельфи мне нравится все-таки больше. Создание экземпляров класса более очевидно, а неявный вызов деструктора при вызове исключения из конструктора позволяет не задумываться над корректным освобождением ресурсов.

Ссылки по теме:
Thinking in C++, vol.2. 1.Exception Handling, Cleaning up.
[17] Exceptions and error handling, C++ FAQ Lite

суббота, ноября 04, 2006

Статья No Silver Bullet

No Silver Bullet: Essence and Accidents of Software Engineering - это классическая статья Фредерика Брукса о трудностях, возникающих при разработке софта.

воскресенье, октября 29, 2006

Прикрутила к блогу подсветку кода

Теперь весь код на блоге подсвечивается с помощью Highlight.js. Прелесть этой подсветки кода состоит в том, что все происходит автомагически: оно само понимает где на странице находится код, само определяет язык, само раскрашивает. Есть небольшой процент случаев где ему надо помочь, но в целом я довольна его работой.

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

Немаловажный момент: написал Highlight.js прекрасный программист и красавец мужчина мой муж Иван Сагалаев.

среда, октября 18, 2006

Блог Пита Исенси

Пит Исенси (Pete Isensee) - директор Microsoft Game Technology Group начал вести свой блог LightSleeper в конце сентября. Обещает рассказывать о C++, разработке игр, оптимизации, безопасности и сетях. Говорит, что будет краток и обещает делать посты не реже раза в неделю. Блог обещает быть интересным.
В последнем посте он хорошую ссылку упомянул: What Every Computer Scientist Should Know About Floating-Point Arithmetic.

воскресенье, октября 15, 2006

Я сменила адрес электронной почты

На inbox.ru поставили какие-то очень агрессивные спам-фильтры, поэтому мне пришлось сменить адрес электронной почты. Так что я пополнила ряды пользователей Gmail. Мой актуальный email адрес, как обычно, в профайле. Если вы мне что-либо писали в последнее время, а сервер вас обругал словами "550 spam message discarded", пожалуйста, не поленитесь, пришлите мне письмо еще раз.

вторник, октября 10, 2006

Статья Fatherly Advice To New Programmers

Статья Fatherly Advice To New Programmers на блоге ...Removing All Doubt - это сборник советов программистам. Там написано, что это советы начинающим программистам, но, на мой взгляд, они всем подойдут. Статья состоит сплошь из крылатых фраз. Хоть сейчас в багзиллу вешай

Take ownership of your mistake or you will repeat it.
Shipping a product feels good, like when someone stops hitting you.
You don't get paid to program, you get paid to ship.


Краткий список этих советов.

  • Never stop learning.
  • Communicate is critical.
  • Under promise, over deliver.
  • "I was wrong."
  • If it is not tested it doesn't work.
  • Programming isn't your job, shipping is.

среда, октября 04, 2006

Хорошие книги по С++ для фанатов

Это продолжение рассказа о книгах по C++. Начало можно найти тут: Хорошие книги по C++

Посты о книгах по C++ были прерваны моей болезнью, но я уже снова в строю и продолжаю свой рассказ. Итак, книги для фанатов. Пожалуй, это самые интересные книги. Для фанатов они не потому что они особенно крутые или сложные, а потому что если у вас отношение к C++ сугубо прагматичное, то, я считаю, их можно и проигнорировать, вместо них что-нибудь другое почитать. Это книги для тех, кто любит язык С++ сам по себе.





"Дизайн и эволюция C++", автор Страуструп. Часто употребляется сокращенный вариант названия: D&E, это сокращение от английского названия, The Design and Evolution of C++. Есть такое неписанное правило "прежде чем делать предложения по улучшению языка, прочтите D&E". Кроме фанатов C++ эта книга должна быть интересна людям, которые занимаются разработкой компиляторов, разработкой собственных языков.
Эта книга совершенно не похожа на "Язык программирования C++" Страуструпа. Она очень легко написана, читается на одном дыхании. Там полно интересных историй, баек, в начале Страуструп даже вспоминает философские течения, которые повлияли на язык. Там описываются как небольшие детали разработки С++ (например, как появился модификатор const и что в С он работает не совсем так как в С++, что добавление комментария // привело к некоторой несовместимости с С), так и более глобальные вещи, например какие проблемы встают перед комитетом по стандартизации языка. По стилю эта книга больше похожа на приключенческий роман, нежели на техническую книгу.


"Дизайн и эволюция C++" на Ozon.ru






Inside the C++ Object Model, автор Стенли Липпман
Книга из серии "а что там внутри C++?". Рассказывает об особенностях реализации языка в компиляторах, довольно тяжелое чтение. Но весьма позновательное. Вроде взгляда на C++ с изнанки.
Также в начале книги он обещал развенчать мифы и легенды о C++, но до мифов я пока еще не дочитала.
В русском переводе я эту книгу не встречала, увы.

четверг, сентября 21, 2006

Хорошие книги по C++ для продолжающих

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




"Effective C++: 55 Specific Ways to Improve Your Programs and Designs", автор Scott Meyers. Чаще всего название сокращают до "Effective C++". Скотт Мейерс рассказывает, что книга оказалась очень удачна тем, что разбита на маленькие независимые друг от друга главы. И ее очень удобно читать урывками, когда нет времени: в транспорте, в перерывах между занятиями. У этой книги есть продолжение - "More Effective C++: 35 New Ways to Improve Your Programs and Designs". Вот по ее поводу Мейерс сокрушается, что не удалось выдержать тот же стиль, и она по популярности проигрывает первой.
Книга эта написана довольно давно, поэтому осторожнее относитесь к фразам "это еще не во всех современных компиляторах реализовано" и подобным. Это современность была несколько лет назад.
Обратите внимание на цифры в названиях. Изначально в "Effective C++" было 50 советов, но в третьем издании Мейерс добавил еще 5 и получилось, что их теперь 55. В наших книжных магазинах названия переводены слегка по-разному, но по числам в названии всегда можно понять о какой именно книге идет речь.
"Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ" на Ozon.ru
"Наиболее эффективное использование C++. 35 новых рекомендаций по улучшению ваших программ и проектов" на Ozon.ru




"Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions." Книга Герба Саттера, которая также имеет продолжение - More Exceptional C++. Составлена на основе его Guru of the Week. Это набор интересных вопросов по C++ с ответами на них. Я не читала книгу, а читала Guru of the Week. У Саттера на сайте написано какие именно выпуски входят в какие книги, плюс в книгах есть еще дополнительные, для затравки, я так понимаю. :-)
"Решение сложных задач на С++" на Ozon.ru
"Новые сложные задачи на C++" на Ozon.ru




"Язык программирования С++", Бьерн Страуструп. Часто на вопрос "Я хочу изучать С++, что бы мне такое почитать?" отвечают - "А почитай Страуструпа!". Это безопасный совет - Страуструп не мог написать плохо о языке своего собственного сочинения. Но вот начинать с этой книжки нельзя категорически. Её рекомендуют еще со стародавних времен, когда по С++ особенно нечего было читать. Но те времена давно прошли. Для человека незнакомого с С++ (возможно, и не знакомого с программированием вообще) - это как нокаутирующий удар. Он не просто ничего не поймет, но больше никогда и не вернется к изучению этого ужасного сложного языка. Почему так? Книга написана очень тяжелым языком. Ёмкие предложения, ничего лишнего. Остальные книги читаются легче, некоторые даже разбавлены веселыми примерами, анекдотами, а здесь такого нет. Не надо начинать с нее. А вот продолжить - стоит. Во-первых, несмотря на тяжелый язык есть что-то в ней неуловимо притягательное, когда втянешься в чтение. Во-вторых, считается, что каждый достойный С++ программист просто обязан прочитать эту книгу, так уж сложилось. Читать ее следует медленно, проникаясь духом великого и могучего языка С++, у меня ее чтение вызывает философско-пофигистические настроения...
Возможно, кому-то покажется интересным такой момент: главы этой книги сопровождаются упражнениями.
В оригинале эта книга называется "The C++ Programming Language", тут никаких сюрпризов.

"Язык программирования С++" есть на lib.ru.
"Язык программирования C++ Специальное издание" на Ozon.ru




"Современное проектирование на C++", Андрей Александреску. Книга посвящена в основном шаблонам. Это сложная в чтении книга, не надо спешить при ее чтении, над каждым примером кода придется подолгу медитировать. Процесс чтения напоминает американские горки - дух захватывает периодически.
После некоторых размышлений, я все-таки решила включить эту книгу в этот раздел, а не в раздел для фанатов. Потому что эта книга стала очень модной в последние годы и пользуется бешеной популярностью. Модный хардкор такой. :-)
При применении изложенных там приемов нужно полностью понять код и идею, иначе можно такого наворотить... Несмотря на то, что я из этой книги узнала много нового, применять эти приемы на практике мне не приходилось. Я все же стараюсь обходиться более простыми решениями.
Название оригинала: Modern C++ Design: Generic Programming and Design Patterns Applied
"Современное проектирование на C++" на Ozon.ru


Это продолжение разговора о хороших книгах по С++. Начало тут.

вторник, сентября 19, 2006

Хорошие книги по С++ для начинающих

Это продолжение рассказа о книгах по C++. Начало можно найти тут: Хорошие книги по C++

Я начала изучать С++ на семинарских занятиях. Потом, помню, очень мне понравилась книжка "Turbo C++: язык и его применение" Цимбала и Моисеева. Но сейчас это не очень актуально. Существуют две книги, которые чаще всего рекомендуют новичкам. Это Thinking in C++ и C++ Primer. Когда я начинала изучать С++, я о них ничего не знала, увы.




"Thinking in C++" - это сборник из двух томов, Автор Bruce Eckel.

На каком-то форуме видела следующий отзыв об этих книгах: "I fell in love with C++ reading those books". Несмотря на то, что читать я ее не читала, я внимательно просмотрела ее наискосок. Там как-то мягко и ненавязчиво разъясняются вещи, сначала простые, а потом постепенно все сложнее и сложнее. Там и множественное наследование есть, и вложенные шаблоны... Что особенно приятно, она совершенно легально выложена онлайн, но на английском. Есть несколько переводов этой книги, русского я не видела ни в онлайне, ни в книжных магазинах.
Update 20.09.2006: на русском не нашла, потому что не смогла угадать как ее перевели. В русском переводе она называется "Философия C++."


"Философия C++. Введение в стандартный C++." (это первый том) на Ozon.ru
"Философия C++. Практическое программирование." (это второй том) на Ozon.ru




"Язык программирования C++. Вводный курс", Стенли Липпман, Жози Лажойе

В русском переводе название не очень запоминающееся, но это тот самый C++ Primer. Рекомендуется как очень полная вводная книга. Я так понимаю, несколько загрузочная.


"Язык программирования C++. Вводный курс" на Ozon.ru




"Основы программирования на С++. Том 1", Стенли Липпман

Я не знаю, почему в наших интернет-магазинах к названию приписывают Том 1. И где тогда остальные тома? Изначальное название этой книги Essential C++ и на amazon.com о томах нет ни слова.
Рекомендуется как краткий и сравнительно легкий курс введения в С++. Иногда ее предлагают прочесть перед C++ Primer.


"Основы программирования на С++. Том 1" на Ozon.ru

понедельник, сентября 18, 2006

Хорошие книги по C++

Когда я планировала подборку книг по C++, я решила исправить ошибку, совершенную с книгами по организации кода: там получилась огромная простыня, которую неудобно читать. Для начала я решила выкинуть книги по STL, о них я напишу как-нибудь в другой раз. Но даже книг по C++ без STL оказалось столько, что пришлось разбить их на несколько групп. Итак, в ближайшие дни


  • Для начинающих. Сюда вошли книги, с которых хорошо начинать изучение языка С++. Хорошо подойдут и тем, кто не хочет что-либо разрабатывать на С++, а хочет ознакомиться с языком "для общего развития".
  • Для продолжающих. Книги для тех, кто активно занимается разработкой программ на С++ и собирается заниматься этими разработками и дальше.
  • Для фанатов. Для тех, кто очень любит язык С++. Также должно быть интересно разработчикам компиляторов.
  • Остальные. Книги, которые стоят у меня в списке "надо прочесть", ничего подробного я о них сказать не могу, кроме того, что знающие люди говорят, что они хорошие.

Ссылки по теме:
Хорошие книги по организации кода

Недавно Скотт Мейерс опубликовал несколько подборок на тему языка С++, которые я очень рекомендую почитать.
The Most Important C++ Books...Ever
The Most Important C++ Non-Book Publications...Ever
The Most Important C++ Software...Ever
The Most Important C++ People...Ever
My Most Important C++ Aha! Moments...Ever

понедельник, сентября 11, 2006

Несколько редких книг по программированию

Случайно нашла сканы нескольких редких книг по программированию. Все на английском.

Theory of Self-Reproducing Automata by von Neumann (& Burks)
Combinatorial Algorithms by Nijenhuis and Wilf
A Discipline of Programming by Edsger Dijkstra

четверг, сентября 07, 2006

О найме разработчиков

Сразу несколько ссылок по поводу найма на работу разработчиков. Во-первых, Джоэл Спольски начал серию статей по этому поводу. Вот первая из них, Finding Great Developers. К тому же Джоэл открыл свой собственный сайт для поиска специалистов, jobs.joelonsoftware.com. Что интересно, он призвал работодателей пристегивать к объявлению Тест Джоэла и многие так и делают.

Далее, Сет Годин о том, чем плохи интервью при приеме на работу: The end of the job interview. Тут речь идет не только о программистах, а вообще о найме. Весьма радикальное и спорное мнение, я бы сказала... Но интересно.
Ну и раз об этом зашел разговор, старая статья с artima.com How to Interview a Programmer.

суббота, сентября 02, 2006

Microsoft Robotics Studio

Микрософт выпустило некое Microsoft Robotics Studio, которое, по их заявлениям, позволяет легко создавать приложения для роботов. Пользоваться я им не пользовалась, только почитала объяснения на сайте Микрософта. Интересно, что оно умеет эмулировать робота как трехмерную картинку на экране. Все же, чтобы действительно понять, насколько это полезная штука надо смотреть и пробовать.



Sergey_, спасибо за ссылку.

четверг, августа 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

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

понедельник, июля 31, 2006

Статья "How to drive developers crazy with issue tracking"

How to drive developers crazy with issue tracking - сборник вредных советов по пользованию багтракинговой системой. Несмотря на то, что статья явно юмористическая, она получилась очень жизненной. Смех сквозь слезы получается.

пятница, июля 28, 2006

Синхронизация времени в Windows XP

Настраивала тут синхронизацию времени на своей машине... В Windows XP есть штатное средство синхронизации времени: Control Panel -> Date, Time, Language, and Regional Options -> Date and Time -> Internet Time. Но синхронизуется оно раз в неделю и интерфейса для настройки интервала времени нет. Если нет интерфейса, это вовсе не значит, что интервал нельзя настроить. Нужно подредактировать ключ в реестре: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services \W32Time\TimeProviders\NtpClien, ключик SpecialPollInterval. Там указано время в секундах, по умолчанию 604800 - одна неделя. Если нужен один час, ставим 3600.

Если стандартная синхронизация времени чем-то таки не нравится, можно поставить какую-нибудь другую программку для этого. Я себе поставила Dimension 4. Но прежде чем включать другую синхронизялку, надо прибить Windows Time в Сервисах, а то оно конфликтует.

Updated 26.10.2009
Анонимный комментирует...
Главное добавь, что нужно перезапустить службу (Служба времени Windows).

четверг, июля 20, 2006

Интервью с Эрихом Гаммой

Несколько интервью с Эрихом Гаммой, это один из авторов книги "Паттерны Проектирования". Интервью довольно старые, прошлогодние.
Part I: How to Use Design Patterns
Part II: Erich Gamma on Flexibility and Reuse
Part III. Design Principles from Design Patterns
Part IV. Patterns and Practice

среда, июля 19, 2006

Восстановление данных с жесткого диска путем заморозки

Оригинальный способ восстановления данных с жесткого диска: Freeze your hard drive to recover data: Myth or reality? Надо положить убитый жесткий диск в холодильник, лучше на сутки. Потом он может проработать минут 20, а может и полчаса. Скорее всего это хватит, чтобы скопировать с него особенно важные данные. Автор поста провел эксперимент с нерабочим жестким диском, диск ожил. Рассказ сопровождается красочными иллюстрациями.

Несмотря на то, что способ звучит анекдотично, почему бы и не попробовать? Хуже уже все равно не будет. В комментариях к вышеупомянутому посту народ рассказывает чудесные способы спасения данных этим способом.

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

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

понедельник, июля 10, 2006

Оценка производительности контейнеров

Standard Container Benchmark - программка, сравнивающая прозиводительность различных контейнеров. Задача, которая выбрана для оценки производительности: удаление дубликатов из последовательности чисел типа double. Примечательно в этой программке то, что ее написали Степанов со Страуструпом специально для программистов. Чтобы было удобнее выбирать контейнер для своей задачи, чтобы можно было сравнить различные реализации контейнеров, поэкспериментировать с настройками оптимизации в компиляторе. В результате получается что-то вроде такого:


size array vector with pointers vector with iterators deque list set multiset
10 1.91 2.48 4.66 8.20 22.50 6.95 11.05
100 1.39 1.34 3.09 4.67 8.52 5.03 7.22
1000 1.25 1.25 2.97 3.98 7.52 4.56 7.05
10000 1.41 1.31 2.75 3.77 8.28 4.81 7.61
100000 1.17 1.19 2.52 3.25 11.08 7.53 14.48
1000000 1.48 1.56 3.23 4.27 12.34 9.86 11.08


Ссылки по теме:
comp.lang.c++.moderated Container Performance. Пост Страуструпа с этой программой, который вылился в обсуждение производительности контейнеров на разных платформах.
openwatcom.contributors OWSTL benchmark experiment. Сравнительно недавнее обсуждение прозводительности контейнеров в OWSTL.

воскресенье, июля 02, 2006

Подсчет количества установленных битов в беззнаковом целом

Это одна из известных задачек, которую задают на собеседованиях: дано беззнаковое целое число, надо подсчитать количество бит, установленных в единицу. Как это сделать как можно быстрее?
Самый простой вариант - тупо пройтись по числу и проверить каждый бит. О скорости тут речь не идет. Несколько быстрее будет проверять последний бит, затем использовать операцию сдвига и после каждого сдвига проверять исходное число на 0.
Дела пойдут гораздо быстрее, если предподсчитать количество единиц. Это можно сделать для 8-битовых и 16-битовых целых, дальше уже сложнее...
На страничке Counting Number of On Bits in an Integer есть эти и другие, более мудрёные варианты решения этой задачи, все с примерами кода и с сравнением по скорости. Предподсчет быстрее всех.

пятница, июня 23, 2006

Книга Вирта "Compiler Construction"

Неопубликованное исправленное третье издание "Compiler Construction" Вирта доступно онлайн.

Нашла по ссылке с comp.compilers Wirth: Compiler Construction (pdf)

четверг, июня 22, 2006

Лжеинтервью со Страуструпом

Вообще это давняя история. В 1998-м году появилось интервью, которое якобы дал Страуструп, в котором он рассказывает, что придумал C++, этот совершенно ужасный язык, для того, чтобы программисты могли писать код, который очень сложно поддерживать, что должно увеличить зарплаты этим самым программистам. Интервью давалось якобы журналу "Computer" и было датировано первым января. Вот оно: "I Did It For You All...", есть перевод на русский.
Страуструп в FAQ'е на своем сайте рассказывает, что ничего подобного он не говорил. Я пыталась найти автора этого произведения, мне не удалось. Что примечательно, это интервью вылезает первым в Гугле по запросу Stroustrup interview, весьма популярное творение.
Лжеинтервью обрело такую популярность, что журналу "Computer" пришлось взять у Страуструпа настоящее интервью в июне 1998: IEEE Computer "Open Channel" Interview with Bjarne Stroustrup.

Интервью это периодически обретает второе дыхание и вновь начинает ползать по блогам и форумам.

воскресенье, июня 11, 2006

Чемпионат мира по футболу в ASCII

Чего только люди не придумают. Если зателнетиться вот сюда

telnet ascii-wm.net 2006

То можно наблюдать за Чемпионатом мира по футболу в реальном времени. Правда, в ASCII. Не очень понятно чего происходит, но завораживает.



Сайт этого безобразия ASCII-WM 2006.

Спасибо Маньяку за ссылку.

вторник, мая 30, 2006

Статья Resource Management in Direct3D

Resource Management in Direct3D - очень хорошее разъяснение по использованию различных пулов памяти (D3DPOOL_MANAGED и D3DPOOL_DEFAULT в основном), используемых в DirectX. Мне оно понравилось гораздо больше, чем Resource Management Best Practices с MSDN.

пятница, мая 26, 2006

Несколько ссылок по физике автомобиля

Уже довольно продолжительное время я ищу информацию по программированию реакции на коллизии для Winding Trail'а. Мне нужно что-нибудь совсем простенькое, чтобы машина не останавливалась как вкопанная, задевая стену вскользь, а продолжала движение с соответствующей коррекцией. Ну и, возможно, можно построить какие-нибудь еще несложные реакции. Так вот, по поводу реакций на столкновения ничего хорошего я не нашла, зато стала обладательницей неплохой коллекции ссылок на статьи и ресурсы по физики автомобиля.

Racer Free Car Simulation - кроссплатформенный проект автосимулятора, свободно распространяемый для некоммерческого использования. Не очень аккуратный, автор не уверен, работает ли последний билд на платформах, отличных от Windows. Исходники открыты не все, только для какой-то не последней версии и только под Linux. Я подумываю в эти исходники зарыться и посмотреть как там решен вопрос со столкновениями, если не найду никаких других ресурсов по этому поводу.

Физика автомобиля для игр. Перевод на русский довольно известной статьи по программированию физики автомобиля. Что интересно, оригинал статьи мне так и не удалось найти. А вот русский перевод живет и здравствует.

Серия статей Physics of Racing Series. Их автор Брайан Бэкмэн (Brian Beckman) физик и гонщик-любитель.

The Buggy Demo - демка с простенькой машинкой, построенная с помощью библиотеки физики ODE.

Rigid Body Dynamics - небольшая коллекция ссылок по динамике твердого тела.

По поводу реакции на столкновения вопрос остается открытым. Я таки придумала решение самостоятельно, но что-то мне не очень нравится как оно работает... Так что если вы знаете какие-нибудь ресурсы, поделитесь.

понедельник, мая 15, 2006

Исходники игр

В последнее время ко мне на блог приходит много народу по запросам "исходники игр". Поэтому я решила привести несколько ссылок, ибо я знаю где их достать.

Исходники игры Dead Justice компании Cat Mother, написана на C++. Игра эта не была выпущена, компания была закрыта, а демку игры вместе с исходниками они положили в открытый доступ с разрешением использовать в целях обучения.

На сайте gamedev.net есть раздел, в котором собраны ссылки на исходники различных игрушек, правда довольно старых. Descent I, Duke Nukem 3D, Quake1 и Quake2... За исходниками игр компании id Software можно сходить непосредственно на ftp.idsoftware.com (он, правда, часто бывает перегружен).

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

суббота, мая 06, 2006

Хорошие книги по организации кода

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

Я привожу ссылки на Amazon и Ozon, потому что участвую в их партнерских программах, то есть, если кто-нибудь что-нибудь по этим ссылкам купит, то мне упадет копеечка. Если вы ненавидете партнерские программы, то злобно сотрите ключик partner из URL'а и копеечка мне, соответственно, не упадет. Кроме того, все эти книги есть в более-менее крупных книжных магазинах, ну и в сети можно порыться, поискать.

Вот эти книги я прочла.


"Refactoring: Improving the Design of Existing Code", Martin Fowler

"Рефакторинг. Улучшение существующего кода" Фаулер М.
Мартин Фаулер доходчиво и с наглядными примерами рассказывает о том, как из плохого кода сделать хороший. Эту книгу я читала на русском и особенно хочется отметить прекрасный перевод. Я даже не поленюсь посмотреть кто именно переводил... Написано "Перевод С.Маккавеева".
"Рефакторинг" на Ozon.ru




"Design Patterns: Elements of Reusable Object-Oriented Software", Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
"Приемы объектно-ориентированного проектирования. Паттерны проектирования", Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.
Классическая книжка по паттернам. Паттерны проектирования на все случаи жизни, с примерами.
"Приемы объектно-ориентированного проектирования. Паттерны проектирования" на Ozon.ru




"The Pragmatic Programmer; From Journeyman to Master", Andrew Hunt, David Thomas
"Программист-прагматик. Путь от подмастерья к мастеру", Э. Хант и др.
Список советов с объяснениями. В том числе разобраны типичные ошибки и методы их исправления. Пожалуй, самая веселая из перечисленных здесь книг. Один пример с вертолетом чего стоит... это надо читать, так не расскажешь.
"Программист-прагматик. Путь от подмастерья к мастеру" на Ozon.ru




"The Mythical Man-Month: Essays on Software Engineering", Frederick P. Brooks
"Мифический человеко-месяц или как создаются программные системы", Брукс Ф.
Классическая книга по ведению проектов. Много рассказывается об ошибках совершенных в конкретных проектах. Несколько нудновата, до конца я ее так и не осилила.

"Мифический человеко-месяц" есть на lib.ru
"Мифический человеко-месяц" на Ozon.ru




"Code Complete", Steve McConnell
"Совершенный код", Макконнелл С.
Читаю сейчас. Пока рассказывается об организации архитектуры приложения, какие решения для каких типов проектов подходят, немного об общении с заказчиком. Живо и с юмором.
"Совершенный код" на Ozon.ru



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


"Rapid Development", Steve McConnell
Обычно советуют в довесок к Code Complete.




"Extreme Programming Explained : Embrace Change", Kent Beck
Хорошее введение в экстремальное программирование.




"Programming Pearls (2nd Edition)", Jon Bentley

"Жемчужины программирования", Бентли Дж.
О том, как эффективно решать поставленные задачи.

"Жемчужины программирования" на Ozon.ru




"Agile Software Development", Robert C. Martin
"Быстрая разработка программ: принципы, примеры, практика", Мартин Роберт С.
Я заинтересовалась этой книгой после того, как полазила по сайту Object Mentor.

"Быстрая разработка программ: принципы, примеры, практика" на Ozon.ru




"Software Engineering: An Object-Oriented Perspective", Eric J. Braude
"Технология разработки программного обеспечения", Брауде Э.Д.
С одной стороны вроде как классическая книга по разработке. С другой - ее очень ругают за академичность, оторванность от реальности.

"Технология разработки программного обеспечения" на Ozon.ru




"Peopleware", Tom Demarco, Timothy Lister
"Человеческий фактор: успешные проекты и команды",
Том Демарко, Тимоти Листер

Книга по организации работы программистов, которую очень рекомендует Джоэл Спольски.
Том Демарко написал еще и художественное произведение об управлении программными проектами, The Deadline называется (есть и на русском). Триллер, наверное. :-).

"Человеческий фактор: успешные проекты и команды" на Ozon.ru
"Deadline. Роман об управлении проектами" на Ozon.ru




"Large-Scale C++ Software Design", John Lakos
Несколько устаревшая, но тем не менее очень хорошая книга по построению больших приложений на C++.




"Death March: The Complete Software Developer's Guide to Surviving "Mission Impossible" Projects", Edward Yourdon
"Путь камикадзе, Как разработчику программного обеспечения выжить в безнадёжном проекте", Э. Йордон
Название говорит само за себя :-)


"Путь камикадзе, Как разработчику программного обеспечения выжить в безнадёжном проекте" на Ozon.ru



Если вам есть что добавить, поделитесь, напишите в комментарии.

Ссылки по теме:
Категория Управление на Маниакальном Веблоге. Пока там только одна статья, но, я надеюсь, будут еще.
Художественная литература для программистов