Как я писал книгу «Python для инженерных задач»

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

Пост о том, как появилась идея написать книгу «Python для инженерных задач», и о том, как эта идея реализовывалась.
Всем привет. В этой статье я хочу рассказать о разработке программы с открытым исходным кодом для оффлайнового хранения заметок — OutWiker. Этим проектом я занимаюсь в свободное время, первая версия программы вышла в далеком 2010 году, и OutWiker до сих пор продолжает развиваться. Так уж исторически сложилось, что кодом я занимаюсь практически в одиночку (хотя изредка получаю полезные отдельные патчи), но зато пользователи активно участвуют в переводе программы на свой родной язык и иногда присылают стили оформления для страниц, которые затем я включаю в сборку. А уж о том, сколько интересных идей они присылают, и говорить не стоит.
Когда-то я писал об этой программе на Хабре, но это было так давно, что прежде чем говорить об особенностях внутреннего устройства и процесса разработки, нужно сказать, что представляет собой программа с точки зрения пользователя. Все ссылки, связанные с проектом даны в конце статьи. Итак, OutWiker — это программа для хранения заметок в виде дерева, в англоязычном интернете такой софт обычно называют outliner (поэтому у программы такое название). Среди более известных «коллег» OutWiker с подобным функционалом можно назвать Zim, WikidPad, CherryTree, и множество других (ну и, разумеется, org mode для Emacs). Логичный вопрос с точки зрения пользователя — чем OutWiker отличается от других представителей древовидных записных книжек. На данный момент, по прошествии такого количества времени с момента начала разработки, я уже не готов развернуто сравнить весь этот софт. В стародавние времена я перепробовал десятки outliner-ов, штук пять использовал достаточно долгое время, но везде чего-то не хватало, хотелось одну возможность взять из WikidPad, другую — из викидвижка, который может работать оффлайново и т.д. Поэтому в качестве ответа на такой вопрос просто перечислю основные особенности, которыми обладает OutWiker.

Как же здорово иногда почитать качественные книги, в которых на популярном языке рассказывается о сложных научных теориях. Конечно, после таких книг нельзя говорить, что ты разбираешься в этих теориях, но получить хотя бы общее представление о них полезно. Одной из таких замечательных книг является «Битва при черной дыре» физика-теоретика Леонарда Сасскинда. Второе название книги «Мое сражение со Стивеном Хокингом за мир, безопасный для квантовой механики».Стержень книги — это научный спор автора и его сторонников со Стивеном Хогингом (и его сторонников) по вопросу о том, пропадает ли информация, попавшая в черную дыру бесследно, или все-таки каким-то образом ее можно оттуда извлечь (теоретически). Хокинг считал, что информация пропадает, но это значит, что в этом случае должен переставать работать один из основных принципов квантовой механики, что обеспокоило Сасскинда и его друга, лауреата Нобелевской премии Герарда ’т Хоофта (интересно, что означает такой апостроф в начале фамилии?) Сасскинд пытался доказать, что информацию можно извлечь (опять же, теоретически), собрав частицы, которые образуются при испарения черной дыры. Самое интересное, что это самое испарение черных дыр предсказал и обосновал все тот же Хокинг в далеком 1974 году, и сейчас это излучение носит его имя.
Сасскинд рассказывает, как в течение долгих лет (начиная с 1983 года и до двухтысячных годов) появлялись различные теории, которые между собой взаимодействовали, и которые в результате помогли ответить на поставленный вопрос, разумеется, в пользу автора книги.
Самое замечательное во всей этой истории то, что этот спор был чисто научный, не перерос полемику и не сказался на отношениях между двумя сторонами.

Дочитал на днях сабжевую книжку. Вышла она еще в 2008 году (а предыдущее издание и того раньше), но мне она попалась только недавно. По идее, читать ее надо было бы после книги Фаулера «Рефакторинг. Улучшение существующего кода», на которую Кириевски постоянно ссылается, но до Фаулера я пока не добрался, хотя это и не особо затруднило чтение. Вторая книга, которую лучше всего прочитать заранее, это «Приемы объектно-ориентированного проектирования. Паттерны проектирования» банды четырех.
Знаете, люблю я книжки про всякие интересные алгоритмы, и вот недавно попалась еще одна такая книжка. Книга «Программируем коллективный разум» в основном посвящена алгоритмам классификации и кластеризации, хотя есть главы, посвященные другим темам вроде создания собственного поисковика, генетическим алгоритмам и генетическому программированию. Почти все описанные алгоритмы применяются в духе Web 2.0, используя анализ поведения пользователей на разных сайтах, которые предоставляют свой API. Но что особенно приятно удивило, так это то, что все примеры написаны на языке Python.
Вот какие алгоритмы описываются в книге:
Два года назад для аспирантуры писал реферат по истории развития электродинамики. А тут про него вспомнил и решил сделать из него несколько записей в блоге, чего добру пропадать. :) Правда, пока готовил этот пост от реферата мало что осталось в первозданном виде, но это даже хорошо. А то тогда мне главное было его сдать, а теперь можно зарыться во всякие интересные книжки и ссылки и дополнить его интересными фактами.