Чтение онлайн

на главную - закладки

Жанры

Кодеры за работой. Размышления о ремесле программиста
Шрифт:

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

Стил: Да. В комитете по разработке Common Lisp мы часами обсуждали конец строки, чтобы добиться совместимости с UNIX, где есть только символ перевода строки, и с системами PDP-10, где используется CR LF. Надо было приспособить перевод строки для обоих систем. Настоящий кошмар.

Сейбел: Что можно посоветовать читателям этой книги, тем, кто будет писать программы будущего, чтобы избежать этих проблем? Можем ли мы быть умнее наших предшественников? Или все это — неизбежное

следствие эволюции программирования?

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

10. Дэн Ингаллс

Если Алан Кэй — отец языка Smalltalk, то Дэн Ингаллс — его мать: может, идея Smalltalk и блеснула Алану Кэю, но именно Ингаллс немало потрудился, чтобы явить его миру. Начав с первой реализации Smalltalk, написанной на Бейсике на основе одной страницы заметок Кэя, Ингаллс участвовал в реализации семи поколений Smalltalk — от первого прототипа до нынешней версии с открытым исходным кодом — Squeak.

Физик по образованию, Ингаллс начал программировать на Фортране, зарабатывал на продаже профилировщика, который написал еще в школе, и со временем оказался в Xerox PARC, где присоединился к Кэю и его группе исследования обучения, которая создала Smalltalk и исследовала применение компьютеров в обучении детей.

Работая в PARC, Ингаллс также придумал BitBIt — операцию, используемую в растровой графике, и запрограммировал ее в виде микрокода для компьютера PARC Alto, обеспечив ускоренную обработку растровой графики, благодаря чему стали возможны такие новшества пользовательского интерфейса, как всплывающие меню, которые сейчас кажутся нам совершенно обыденными. (На одной из первых внутренних демонстраций системы Smalltalk всплывающее меню так впечатлило Питера Дойча — интервью с ним в следующей главе, — что он вскочил и закричал: «Ты и правда сделал это — или мне показалось?»)

Ныне Ингаллс, выдающийся инженер Sun Microsystems, работает над Lively Kernel — программной средой типа Smalltalk, которая полностью выполняется в браузере с использованием JavaScript и предоставляемой браузером графики. За работу над Smalltalk он получил от Ассоциации вычислительной техники в 1984 году премию имени Грейс Мюррей Хоппер, а в 1987 году — премию ACM Software System Award. В 2002 году был удостоен награды Dr. Dobb's Excellence in Programming Award.

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

Сейбел: Для начала: как вы пришли в программирование?

Ингаллс: Давайте посмотрим. Я всегда хотел быть изобретателем, а для этого лучше всего подходит физика, так что в колледже выбрал ее в качестве специальности. Я пошел в Гарвард, и там был курс программирования на Фортране.

Сейбел: Когда это было?

Ингаллс: Я учился в Гарварде с 1962 по 1966 год. Программирование изучал по двум направлениям: курс Фортрана и курс по аналоговым компьютерам. В подвале одного из корпусов была отличная лаборатория, занимающаяся аналоговыми компьютерами,

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

В результате я решил, что, возможно, меня заинтересует электротехника. Я поступил на это направление в Стэнфорде, записался на несколько курсов по компьютерным наукам, и мне очень понравилось. Электротехника не занимала у меня много времени. Я попал на курс к Дональду Кнуту, это был курс по оценке программ, и он пришелся мне по душе. Я, собственно, уже работал над программой, которая анализировала бы другие программы, и ушел из Стэнфорда, чтобы сделать на ней бизнес. На следующий год я поступил в магистратуру, а потом ушел. В 1968 году, полагаю.

Сейбел: То есть вы бросили магистратуру?

Ингаллс: Да, на кафедре радиотехники факультета электротехники Стэнфорда.

Сейбел: Что представляла собой программа, с которой вы начали свое дело?

Ингаллс: Все началось еще у Кнута в рамках его семинара по оценке программ и их динамического поведения.

Сейбел: То есть по профилированию?

Ингаллс: Ну, да. Была программа, которая внедрялась в программу на Фортране и вставляла счетчики во все точки ветвления. Я сделал версию посимпатичнее, в ней было прерывание по таймеру, так что она могла записывать, сколько времени потрачено в разных частях программы.

Сейбел: То есть фактически дискретный профилировщик?

Ингаллс: Да. И что еще тут важно: раньше профилирование по времени обычно работало в терминах адресов памяти и требовалась чуть ли не квантовая механика, чтобы понять, что означают полученные результаты. Здесь же работа шла в терминах исходного кода, и вы видели: «Вот, все время расходуется здесь». То есть пользователь мог немедленно воспользоваться информацией. Я понял: «О! На этом можно сыграть».

Сейбел: Вы занимались этим, пока не пришли в Xerox PARC ?

Ингаллс: В общем, да. Вот как я оказался в PARC. Я много времени проводил в местных сервисных центрах: один принадлежал Control Data, а другой — IBM. И я носил свою программу в разные места, чтобы убедиться, что она запустится на конкретном компьютере.

Сейбел: Это по-прежнему был код профилирования Фортрана?

Ингаллс: Да. Но я выяснил кое-что интересное. Кто в основном использует Фортран? Те, кто работает с объемными научными вычислениями. А на кого они обычно работают? На правительство. Интересно им, насколько эффективна их программа? На самом деле, нет. Чаще всего они как раз хотят показать, что их компьютер перегружен, что им нужен новый компьютер и больше денег. Я показал свою программу в паре компаний, и там сказали: «Эх, вот для Кобола — было бы отлично».

Сейбел: Потому что больше денег для крутого железа под Кобол им бы никто не дал.

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

Поделиться:
Популярные книги

Кротовский, вы сдурели

Парсиев Дмитрий
4. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
рпг
5.00
рейтинг книги
Кротовский, вы сдурели

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник

Кодекс Крови. Книга VI

Борзых М.
6. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VI

Младший сын князя. Том 2

Ткачев Андрей Юрьевич
2. Аналитик
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Младший сын князя. Том 2

Кодекс Охотника. Книга IX

Винокуров Юрий
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга IX

Кротовский, побойтесь бога

Парсиев Дмитрий
6. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кротовский, побойтесь бога

Под маской моего мужа

Рам Янка
Любовные романы:
современные любовные романы
5.67
рейтинг книги
Под маской моего мужа

Новый Рал 8

Северный Лис
8. Рал!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Новый Рал 8

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Секреты серой Мыши

Страйк Кира
Любовные романы:
любовно-фантастические романы
6.60
рейтинг книги
Секреты серой Мыши

Толян и его команда

Иванов Дмитрий
6. Девяностые
Фантастика:
попаданцы
альтернативная история
7.17
рейтинг книги
Толян и его команда

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Жена неверного ректора Полицейской академии

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного ректора Полицейской академии