Книга «Пионеры программирования»

book_pionerНедавно прочитал книгу «Пионеры программирования» Федерико Бьянкуцци и Шейна Уордена. Книга довольно необычная по своей сути – это просто сборник интервью, взятый у авторов различных языков программирования. Здесь собраны интервью, взятые у 27 человек, имеющих непосредственное отношение к созданию 17 языков программирования:

  • C++ (Бьёрн Страуструп);
  • Python (Гвидо ван Россум);
  • APL (Эдин Д. Фалкофф);
  • Forth (Чак Мур);
  • Basic (Томас Курц);
  • AWK (Ал Ахо, Брайан Керниган, Питер Вайнбергер);
  • Lua (Роберто Иерусалимский и Луис Энрике де Фигейреду);
  • Haskell (Пол Худак, Джон Хьюз, Саймон Пейтон-Джонс и Филип Уодлер);
  • ML (Робин Милнер);
  • SQL (Дональд Чемберлен, который теперь работает над XQuery);
  • Objective-С (Том Лав, Брэд Кокс);
  • Java (Джеймс Гослинг);
  • C# (Андерс Хейлсберг);
  • UML (Айвар Якобсон, Джеймс Рамбо, Гради Буч);
  • Perl (Ларри Уолл);
  • PostScript (Джон Уорнок и Чарльз Гешке);
  • Eiffel (Бертран Мейер).

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

Читать далее ‘Книга «Пионеры программирования»’ »

Книга Р. С. Мартина и М. Мартина «Принципы, паттерны и методики гибкой разработки на языке C#»

Agile_C#_cover.inddНа днях дочитал книгу двух Мартинов (Роберта и Мики) «Принципы, паттерны и методики гибкой разработки на языке C#». Очень стоящая книга, охватывающая все этапы проектирования софта. Несмотря на то, что в названии фигурирует C#, и все примеры действительно написаны на нем, книгу можно (нужно) читать всем, кто занимается программированием и проектированием. К языку C# описание никак не привязано. Более того, в книге открытым текстом сказано, что изначально некоторые примеры были написаны на C++ или Java, а затем для книги переписаны на C#.

В книге описываются все этапы проектирования с учетом того, как эти этапы выполняются при так называемой «гибкой разработке». Честно говоря, я не очень глубоко разбирался в идеологии экстремального программирования (XP), но описываемая в книге гибкая разработка очень ее напоминает (и авторы ссылаются на XP): здесь и парное программирование, когда за одной клавиатурой сидят двое (у нас было такое в школе, когда не хватало на всех компьютеров 🙂 ), и программирование через тесты (сначала пишутся тесты, потом под них пишется код), и частый выпуск промежуточных работающих версий программы, и утверждение о том, что лучшая документация — это код.

Правда, у авторов отношение к тестам не такое экстремальное. Авторы предлагают не сразу писать большое количество тестов, а затем весь код, а по очереди — написать один тест, написать под него код, причем без учета будущих тестов. Затем пишем следующий тест, после этого подстраиваем код под новые условия. По мнению авторов такой подход позволяет более правильно разработать структуру программы, которая будет гибкой для дальнейших изменений, ведь при разработке софта требования постоянно меняются, и заранее предусмотреть все нюансы невозможно.

В книгу включена одна интересная глава, которая в оригинале была оформлена в виде статьи. Эта глава описывает процесс проектирования и кодирования (эти два процесса перемешаны) программы для подсчета очков при игре в боулинг. Эту главу нужно обязательно показывать тем, кто хочет понять что из себя представляет проектирование софта, а особенно стоит показать начальству, чтобы оно прониклось как происходит рождение программы, и что написание программы — это не просто кодирование в императивном стиле (a la Pascal, Fortran и т.п.).

Читать далее ‘Книга Р. С. Мартина и М. Мартина «Принципы, паттерны и методики гибкой разработки на языке C#»’ »

wxPython и Drag’n’Drop файлов в Linux

wxPython и Drag'n'Drop файлов в Linux

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

Началось все хорошо. Сидя под Windows, реализация возможности перетаскивать файлы в другие приложения заняла считанные строки:

def onBeginDrag(self, event):
	"""
	Начало перетаскивания файлов
	"""
	data = wx.FileDataObject()

	for fname in self.getSelectedFiles():
		# Добавляем вложенные файлы в список.
		data.AddFile (fname)

	dragSource = wx.DropSource (self)
	dragSource.SetData(data)

	result = dragSource.DoDragDrop ()

Читать далее ‘wxPython и Drag’n’Drop файлов в Linux’ »

Стивен Леви. «Хакеры. Герои компьютерной революции»

hackers

Про существование этой книги я узнал в ЖЖ от [ljuser]gremlinable[/ljuser] из комментариев к записи про книгу Линуса Торвальдса. Знаете, давно я не получал такого удовольствия от чтения околокомпьютерных книг, причем «Хакеры», пожалуй, самая грустная IT-книга, которая мне попадалась. С легкой руки журналистов и телевизионщиков сейчас слово «хакер» стали применять к любому моральному уроду, который скачал генератор вирусов. А вот судя по книге, это слово появилось в конце 50-ых, начале 60-ых годов прошлого века в жаргоне программистов, работающих в Массачусетском Технологическом Институте (МТИ, MIT) и обозначало людей, которые досконально знали работу вычислительных машин того времени (назвать их словом «компьютер» у меня не повернутся пальцы). Даже не просто досконально знали, но и буквально фанатели от работы за терминалом.

Эта книга охватывает четыре десятилетия: с конца 50-ых по начало 80-ых годов и начинается с описания клуба технического моделирования железной дороги в том самом МТИ, а первые компьютеры (надо же, повернулись 🙂 ), которые упоминаются — IBM 704 и TX-0 (картинка), потом появились PDP-1 и PDP-6. В книге довольно здорово показано развитие и компьютеров и хакеров в первоначальном смысле этого слова, в основном развитие показано через биографии хакеров.

Книга разделена на три части и посвящена трем поколениям хакеров: первая часть посвящена 50-60-ым годам и хакерам из лаборатории искуственного интеллекта в МТИ, показаны их повадки и среда обитания :).

Читать далее ‘Стивен Леви. «Хакеры. Герои компьютерной революции»’ »

История одного глюка или дело о букве «Р»

История одного глюка или дело о букве "Р"

На днях столкнулся со странным глюком, найденным в OutWiker‘е, на исправление которого вместе с поимкой виновника ушло два вечера.

Не буду долго описывать то, как я наткнулся на этот глюк, лучше перейдем сразу к его сути. А суть состоит в том, что для хранения и парсинга настроек страниц в программе используется стандартный класс ConfigParser (с некоторой тонкой оболочкой над ним, но в данном случае это не важно) — очень уж в нем удобно разбирать строки вида xxx = yyy. Так вот, неожиданно оказалось, что если yyy кончается на русскую букву «Р», то при преобразовании yyy в unicode бросается исключение о том, что кодек utf8 не может преобразовать строку, так как данные неожиданно закончились (‘utf8’ codec can’t decode byte 0xd0 in position __: unexpected end of data). Причем, в середине строки буква «Р» нормально преобразовывалась. Добавление пробела к концу строки, которая кончалась на «Р», ничего не дало, зато навело на мысль, что дело может быть в обрезании строки при выкидывания начальных и концевых пробелов, переводов строк и т.п. При этом все остальные русские буквы на конце обрабатывались без проблем.

Читать далее ‘История одного глюка или дело о букве «Р»’ »

Git, Bazaar и русские имена файлов

Git, Bazaar и русские имена файлов

Я уже давно проникся идеей распределенных систем контроля версий (VCS) и до сих пор использовал Git, которым был в целом доволен. Но так как в последнее время я частично стал пользоваться Linux’ом, то возникла одна проблема с хранением исходников Outwiker’а, о которой я уже как-то говорил, но напомню еще раз.

Суть проблемы состоит в том, что в исходниках Outwiker’а лежат файлы справки, которые имеют русские имена. Эти файлы создавались в Windows, поэтому кодировки имен — cp1251. При получении этих файлов из репозитория под Linux’ом кодировка имен файлов сохраняется, и по умолчанию в консоли показываются вопросики вместо имен. Это решается сменой кодировки консоли, но Outwiker будет видеть эти файлы все-равно искореженными. Имена файлов под Linux’ом можно преобразовать в нужную кодировку, но тогда с точки зрения git это будут новые (точнее переименованные) файлы, что нам не надо.

Читать далее ‘Git, Bazaar и русские имена файлов’ »

Головатый, Каплан-Мосс. «Django. Подробное руководство»

Django. Подробное руководствоНедавно вышла новая книга про Django — фреймворк для веб-приложений -, которая называется «Django. Подробное руководство». Это уже вторая книга про Django на русском языке, про первую я уже писал.

«Django. Подробное руководство» написана двумя авторами самого фреймворка (А. Головатый и Д. Каплан-Мосс), так что эту книгу можно считать источником из первых рук. Если прошлогодняя книга (авторы Дж. Форсье, П. Биссекс и У. Чан) это скорее руководство для ознакомления с Django, то новая книга описывает возможности фреймворка намного подробнее. Авторы во введении признались, что их цель — сделать читателей экспертами по Django.

Перед чтением этой книги уже желательно знать Python. Если у Форсье и др. была глава, посвященная основным конструкциям языка, то здесь отдельно про сам Python ничего не написано, что, на мой взгляд, правильно. Авторы, правда, в первых главах кратенько (одно-два предложения) описывают, что делают некоторые конструкции языка, когда те встречаются в коде программы, но это все не серьезно.

Книга имеет интересную структуру, она разбита на три части и приложения. Первая часть посвящена основам Django. Здесь описываются главные составные элементы фреймворка: установка Django и использование встроенного сервера, как происходит конфигурирование URL, шаблоны, модели, формы, описан административный интерфейс.

Первая часть раскрывает все то, что написано в книге Форсье и co. Дело в том, что предыдущая книга содержала в себе много больших законченных примеров, а в этой книге все примеры написаны как можно более сжато (максимум полстраницы), чтобы показать какую-то отдельную деталь Django, многостраничных приложений здесь нет.

Читать далее ‘Головатый, Каплан-Мосс. «Django. Подробное руководство»’ »

Алекс Макки. «Введение в .NET 4.0 и Visual Studio 2010 для профессионалов»

Макки. Введение в .NET 4.0В апреле Microsoft выпустил 4-ю версию .NET Framework. Полистав обзоры новых возможностей в интернете, решил, что пора переходить на эту новую версию (сейчас использую .NET 2.0), а для этого желательно что-нибудь поподробнее почитать про новый Framework. Неожиданно попалась книжка А. Макки «Введение в .NET 4.0 и Visual Studio 2010 для профессионалов», в которой как раз и описываются изменения, произошедшие в .NET 4.0. Вчера дочитал эту книжку и могу сказать, что она ужасна, но давайте все по порядку.

В принципе, в книге описывается все то, что я от нее ожидал — только изменения в .NET 4 без описания языка C#, а то попадалась одна книжка, где на обложке красуется C# 2010, но 90% содержание там — обучение языку C#. В этой книге все нормально, считается, что сам язык и основные библиотеки вы уже знаете на уровне .NET 3.5, и по сути автор предлагает развернутый changelog.

Начинается книга с обзора новых возможностей среды Visual Studio 2010, где автор пробегается но основным новым фичам. Такой беглый обзор раздражает, потому что представление об одной возможности еще не успевает сложиться, а автор уже переключается на другую. Правда, автор еще во введении предупреждает, что он не собирается описывать каждое нововведение очень уж подробно, а жаль, я, конечно, не ждал от него уровня Рихтера, но хотелось бы что-то похожее. Кстати, Рихтер уже написал новое издание книги CLR VIA C#, где описаны возможности .NET 4.0, когда она выйдет на русском языке неизвестно, но на английском ее уже можно скачать.

Читать далее ‘Алекс Макки. «Введение в .NET 4.0 и Visual Studio 2010 для профессионалов»’ »

wxPython. Windows vs. Linux

wxPython. Windows vs. Linux

Хоть мне и нравится библиотека wxPython для создания интерфейса питоновских программ, но есть в ней одна неприятная особенность. Дело в том, что часто поведение одного и того же кода в разных операционках у библотеки отличается. В таких случаях приходится плясать с бубном и что-то подправлять таким образом, чтобы, с одной стороны, поведение программы в одной ОС осталось таким каким же, как оно было задумано и как уже работает, а, с другой стороны, чтобы в других ОС работало точно так же.

Иногда эти шаманства связаны с махинациями сайзерами, а вот вчера я столкнулся с очень неприятным поведением класса wx.Image, от которого не ждал никакого подвоха.

Итак, предыстория. Сижу под Windows, делаю OutWiker (скоро выложу новую версию). Все крупные изменения уже сделаны, под Windows все нормально, пришло время проверить их под Linux. Запускаю VirtualBox с Ubuntu 10.04, запускаю там OutWiker и… все работает. Не веря своему счастью, запускаю юнит-тесты, надеясь, что, раз внешне все нормально, то запуск этих тестов станет простой формальностью.

Читать далее ‘wxPython. Windows vs. Linux’ »

Книга Джошуа Кериевски «Рефакторинг с использованием шаблонов»

Рефакторинг с использованием шаблоновДочитал на днях сабжевую книжку. Вышла она еще в 2008 году, но мне она попалась только недавно. По идее, читать ее надо было бы после книги Фаулера «Рефакторинг. Улучшение существующего кода», на которую Кириевски постоянно ссылается, но до Фаулера я пока не добрался, хотя это и не особо затруднило чтение. Вторая книга, которую лучше всего прочитать заранее, это «Приемы объектно-ориентированного проектирования. Паттерны проектирования» банды четырех.

Суть книги «Рефакторинг с использованием шаблонов» состоит в том, что в книге автор собрал 27 довольно сложных рефакторингов, большинство которых предназначены для того, чтобы как можно более безболезненно ввести в архитектуру программы паттерны, описываемые в книге банды четырех. Как пишет в начале Кириевски, часто он начинает программировать без использования паттернов до тех пор пока этот участок кода не надо расширять, тогда он принимается за рефакторинг. Правда, в книге есть еще один рефакторинг, который наоборот избавляет код от использования синглтонов (автор называет болезнь, когда используют синглтоны по любому поводу, синглтонизмом и предлагает открыть общество анонимных синглтоников).

После первого (и пока единственного) прочтения я особо не проникся идеей книги, потому что многие из описываемых рефакторингов довольно сложные (в том смысле, что их не автоматизируешь, хочется верить, что пока), а тупо повторятьописываемые шаги не получится, потмоу что каждый код имеет свои особенности. Главное понять общие идеи отдельных шагов рефакторинга и, опираясь на них, уже переделывать свой код. К сожалению, я это понял уже ближе к концу книги, поэтому через какое-то время собираюсь перечитать книгу еще раз.

Читать далее ‘Книга Джошуа Кериевски «Рефакторинг с использованием шаблонов»’ »