Coders at Work: Reflections on the craft of programming / Программисты на работе: Размышления о ремесле программирования: Jamie Zawinski
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Хакеры языка Lisp, ранние разработчики графического интерфейса Netscape и владелец ночного клуба Джеймс Завински, иначе JWZ, являются членами избранной группы хакеров, которые известны по трем буквам инициалов их полных имен. catekaterina 01.03.12 в 06:42 Гуру лиспа, разработчик браузера Netscape и владелец ночного клуба Джеймс Завински, также известный как jwz, относится к той группе хакеров, чьи трехбуквенные прозвища, также хороше известны как и полные имена. freecozoid 01.05.12 в 17:43 |
|
|
Завински начал работать программистом в подростковом возрасте, когда он был нанят, чтобы взломать Lisp в лаборатории искусственного интеллекта Карнеги-Меллона. catekaterina 01.03.12 в 07:54 |
||
|
Он работал в Калифорнийском университете в Беркли на Питера Норвига, который описал его как "одного из лучших программистов, которых он когда-либо нанимал", и позднее в Lucid, лисповой компании, где он завершил ведущую роль в разработке Lucid Emacs, позднее переименованного в XEmacs, который впоследствии привел к великому расколу Emacs, одному из самых известных форков в мире open source. starius 06.03.12 в 23:15 |
||
|
В 1994 он окончательно ушел из Lucid и мира Lisp и присоединился к Netscape, тогда молодому начинанию, где он был одним из первых разработчиков версии браузера Netscape для Unix и позднее почтового клиента Netscape. starius 06.03.12 в 23:19 |
||
|
В 1998 году Завински был одним из главных инициаторов, вместе с Бренданом Ич, за mozilla.org, организации, которая взяла Netscape браузер с открытым исходным кодом. catekaterina 11.03.12 в 11:46 |
||
|
В этом интервью мы говорили, среди прочего, о том, почему C + + является мерзостью, радость, которую имеют миллионы людей используя программное обеспечение, а также важность мастерить для начинающих программистов. catekaterina 15.03.12 в 09:29 |
||
|
Сейбел: Как вы научились программированию? catekaterina 15.03.12 в 09:30 |
||
|
Завински: Вау, это было так давно, что я с трудом могу вспомнить. Первый раз я на самом деле использовал компьютер в связи с программированием где-то в восьмом классе, кажется. У нас было несколько TRS-80s и возможность немного повозиться с BASIC. Не уверен, были ли это даже занятия - скорее что-то внеклассное. Я помню что не было способа сохранять программы, так что мы просто перебивали их вручную из журналов и всего такого. Думаю, потом я прочитал кучу книг. Помню как я читал книги о языках, которые у меня не было возможности запустить и писала на бумаге программы для языков, о которых мне приходилось только читать. Voldemar88 15.03.12 в 10:24 |
||
|
Сибел: И какие это были языки? Voldemar88 15.03.12 в 10:25 |
||
|
Завински: Одним из них, я помню, был APL. Я прочел о нем статью и мне он казался очень изящным. Voldemar88 15.03.12 в 10:26 |
||
|
Seibel: Ну, это избавляет от необходимости иметь воображение клавиатуры. Когда вы были в школе у вас все классы были с компьютерами? catekaterina 16.03.12 в 11:07 |
||
|
Завински: В старших классах я изучал Фортран. Вот и все. Voldemar88 15.03.12 в 10:28 |
||
|
Seibel: И как-то вы были увлечены Lisp. catekaterina 16.03.12 в 11:09 |
||
|
Завински: Я читал много фантастики. catekaterina 16.03.12 в 11:49 |
||
|
Seibel: Это был первый шанс, на самом деле вам пришлось бежать из Lisp, там в CMU. catekaterina 16.03.12 в 11:51 |
||
|
Завински: Я так думаю. Я знаю, в какой-то момент мы отдыхали с XLISP, которая работала на Макинтош.Но я думаю, что было потом. Но это было действительно занимательной чертой в этой группе. Я узнал, какова программа для реального использования рабочих станций PERQ, которые были частью Spice проекта, используя Spice Lisp который стал CMU Common Lisp. catekaterina 21.03.12 в 11:25 |
||
|
Seibel: Я написал Фалману, и он сказал, что ты талантливый и очень быстро учишься. Но он также упомянул, что ты немного недисциплинированный. Как он выразился: "Мы попытались научить его работать в группе и писать код, который ты сам, или кто-то другой, сможет разобрать через месяц". Помнишь какие-нибудь из этих уроков? karinoso 19.04.12 в 23:23 |
||
|
Завински: Но не их изучение. Конечно, одна из самых важных вещей-писать код, к которому ты можешь вернуться позже. Но мне почти 39, а тогда мне было 15, так что это все немного расплывчато. karinoso 19.04.12 в 23:24 |
||
|
Seibel: В каком году ты начал? karinoso 19.04.12 в 23:25 |
||
|
Завински: Это был 84-ый или 85-ый. Мне кажется, я начал летом между 10 и 11 классами. После школы, в 4 часа, я шел прямо туда и оставался до 8 или 9. Не думаю, что так было каждый день, но я провел там достаточное количество времени. karinoso 19.04.12 в 23:26 |
||
|
Seibel: И ты почти сразу пошел в CMU после того, как закончил школу. karinoso 19.04.12 в 23:27 |
||
|
Завински: Да. Получилось так, что я ненавидел школу. Это было худшее время в моей жизни. Почти перед выпуском я спросил у Фалмана, возьмет ли он меня на постоянную работу, а он сказал: "Нет, но у меня есть друзья, которые запускают старт-ап; иди, поговори с ними". Это были Expert Technologies-ETI. Мне кажется, он был в их команде. Они делали эту экспертную систему, чтобы автоматически нумеровать желтые страницы. Они использовали Lisp, и я знал нескольких человек, которые уже были в группе Фалмана. Они наняли меня, и все шло отлично, но через год я запаниковал: "О, господи! Я попал на эту работу только по счастливой случайности. Такого больше не случится. Когда я перестану здесь работать, я буду продавать бургеры, если у меня не будет диплома колледжа, так что мне надо пойти и получить его" karinoso 19.04.12 в 23:32 |
||
|
План состоял в том, что я буду работать асть времени в ETI, и тогда я буду часть времени посещать школу. Это превратилось в то, что я работал полный рабочий день и ходил в школу полный день и это продолжалось, я думаю, шесть недель. Может быть, это было девять недель. Я знаю, это продолжалось достаточно долго, что я пропустил период ввода/вывода, так что я не получил своих денег обратно. Но не достаточно долго, что я на самом деле получал любые оценки. Так что сомнительно, что я на самом деле заполучил. catekaterina 25.07.12 в 05:25 |
||
|
Это было ужасно. Когда ты учишься в школе, все говорят тебе: "Тут очень много повторяющегося дерьма и стандартных тестов. Все будет лучше, когда ты поступишь в колледж." И потом начинается твой первый год в колледже, и они говорят: "О нет, лучше становится только в аспиратуре". Так что это то же самое дерьмо каждый день - я не мог этого выдержать. Вставать в 8 утра, постоянно что-то запоминать. Они не разрешали мне пропускать предмет, который назывался Знакомство с основами, где они учили тебя, как обращаться с мышкой. Я говорил что-то вроде: "Я работаю в этом университете полтора года, я знаю как обращаться с мышкой". Но меня не выпускали - "Таковы правила". И все в таком духе. Я не мог это терпеть, поэтому я ушел. И я рад, что сделал это. karinoso 19.04.12 в 23:44 |
||
|
Потом я работал в ETI еще 4 года, пока компания не начала испаряться. Мы использовали машины TI Explorer Lisp в ETI, поэтому я тратил кучу времени не только на работу над экспертной системой, но и на разбор пользовательского интерфейса и копание в том, как эти штуки работают. Мне они нравились-мне нравилось копаться в операционной системе и узнавать, как это все работало вместе. karinoso 19.04.12 в 23:47 |
||
|
Я написал кучу кода, и там была какая-то новостная группа, куда я написал о том, что ищу работу, и, кстати, вот вам куча кода. Питер Норвиг увидел это и назначил мне интервью. Моя девушка в это время переехала учиться в Беркли, и я последовал за ней. karinoso 19.04.12 в 23:49 |
||
|
Seibel: Норвиг тогда был в Беркли? karinoso 19.04.12 в 23:49 |
||
|
Завински: Да. Это была очень странная работа. Там была целая толпа аспирантов, которые исследовали понимание естественного языка. Они были лингвистами, которые немного разбирались в программировании. Поэтому им нужен был человек, который соберет оставленные ими куски куда в одну работающую программу. karinoso 19.04.12 в 23:50 |
||
|
Это было необычайно сложно, потому что у меня не было никакой базы знаний, чтобы понять, чем они вообще занимались. Поэтому часто было так: я смотрел на что-то; я полностью зависал. Я не имею ни малейшего понятия, что это значит, что мне делать дальше, что мне нужно прочитать, чтобы понять это. Тогда я спрашивал Питера. Он относился с пониманием - он говорил: "Это нормально, что ты этого пока не понимаешь. Я сяду и объясню тебе это во вторник". Так что теперь мне нечего делать. Поэтому я тратил кучу времени на развлечение с окошками, заставками и всякими штуками из серии пользовательского интерфейса, с которыми я развлекался раньше. karinoso 19.04.12 в 23:54 |
||
|
После 6 или 8 таких месяцев у меня было чувство вроде "вау, да я правда просто теряю время, я же ничего для них не делаю", и я чувствовал себя на отдыхе. Были времена, когда я правда очень много работал, и тогда я оглядывался назад и думал "Зачем ты бросил эту работу-отдых? Они же платили тебе, чтобы ты писал заставки". karinoso 19.04.12 в 23:58 |
||
|
Я ушел из Lucid. В то время она была одной из двух организаций, занимающейся разработкой на Lisp.Основная причина по которой я ушел, было осознание того, что я не сделал ничего. К тому же я был окружен людьми, которые по сути не были программистами. Я до сих пор дружу с некоторыми из них, они клёвый народ, но они лингвисты. Их гораздо больше интересовали какие-то абстрактные вещи, чем решение конкретных проблем.А я хотел сделать что-то, после чего мог бы сказать "Смотри, эту классную штуку я сделал" (анонимно) 12.05.12 в 07:16 |
||
|
Сейблl: Ваша работа на Lucid в конечном счете привела к XEmacs, но когда вы попали туда, первоначально вы работали над сутью Lisp? catekaterina 25.07.12 в 05:31 |
||
|
Да, одним из первых проектов над которым я работал был - не помню, как называлась та машина, это был 16-процессорный параллельный компьютер, мы использовали версию Common Lisp компании Lucid, и некоторые управляющие структуры, позволяющие распараллелить вычисления между несколькими процессорами. freecozoid 12.05.12 в 11:02 |
||
|
Я работал немного на заднем конце того чтобы накладные расходы на порожденный процесс были ниже, чтобы вы могли сделать что-то вроде параллельной реализации Фибоначчи, который был не только полностью завален издержками на создание новой группы для каждого потока . Я действительно наслаждался этим. Это был первый раз, когда я получил использовать довольно странные машины в этом роде. catekaterina 25.07.12 в 06:38 |
||
|
До этого я был воспитанн на новых машинах Лисп. Это означает, в основном, что кто-то уже написал в конце компилятор назад для новой архитектуры, а затем они собрали загрузки кусок кода. Так что я получил этот файл, полный двоичный исполняемый код якобы для этого другой машине и теперь я должен расшифровать их погрузчика формате, так что я могу написать небольшую программу, C, которая будет загружать в том, что, сделать страницу исполняемого файла, и переходить к нему. Тогда, надеюсь, вы получите приглашение Lisp и в этот момент вы можете начать загрузку программы вручную. catekaterina 25.07.12 в 06:58 |
||
|
Какая для каждой архитектуры было странно, потому что это никогде на было документально провильно. Так что это вопрос составления программы С с последующей, глядя на него байт в байт-байт редактирования в Emacs. Давайте посмотрим, что произойдет, если я изменю это на нуль, оно прекратится? catekaterina 25.07.12 в 07:12 |
||
|
Seibel: Когда вы говорите, он не был документально прав, было, что он не был документально корректен, иначе не был описан всеми? catekaterina 25.07.12 в 07:38 |
||
|
Завински: Это, как правило, документально, и это, как правило, неправильно. Или, может быть, это было всего лишь осле трех изменений - кто знает? Но в какой-то момент вы настраиваете немного, а затем он будет недолго счить, что это был исполняемый файл, и вы должны были понять, что там происходит. catekaterina 26.07.12 в 07:51 |
||
|
Seibel: Вот то, что происходит все время, начиная с нижнего уровня системы программирования высокого уровня API, где вещи просто не работают так, как вы ожидали, или, как они описаны. Как вы справляетесь с этим? catekaterina 26.07.12 в 07:54 Seibel: Вот то, что происходит все время, начиная с нижнего уровня системы программирования высокого уровня API, где вещи просто не работают так, как вы ожидали, или, как они описаны. Как вы справляетесь с этим? catekaterina 26.07.12 в 07:54 |
||
|
Завински: Ну, вы только приехали, чтобы ожидать этого. Чем раньше вы осознаете, что ваша карта является неправильной, тем быстрее вы сможете выяснить, где что-то пошло не так. В моем случае, я стараюсь производить исполняемый файл. Ну, я знаю,что компилятор C будет производить кто-то один. Возьмите что-то хорошее и начните преобразовывать это в плохое, пока это не перестает работать. Это основной инструмент обратной инженерии. catekaterina 06.09.12 в 12:30 |
||
