Кодеры за работой. Размышления о ремесле программиста - [7]
У него неплохая коллекция библиотек. Часто есть библиотека, позволяющая делать именно то, что тебе нужно. Пусть библиотеки иногда неважно работают, но это уже что-то. Не то, что с Java, когда пишешь что-нибудь на этом языке и пытаешься понять, что вышло. Я сам с трудом установил Java на своем компьютере. Это ужасно. Мне кажется, Perl - противный язык. Если научиться использовать его хоть немного, можно сделать его похожим на Си или, скорее, на JavaScript. Сумасшедший синтаксис, непонятные структуры данных. Немного хорошего можно сказать о Perl.
Сейбел: Но он не так плох, как C++.
Завински: Нет, конечно, нет. Они созданы для разных задач. Есть задачи, которые намного проще реализовать на Perl (или подобном ему языке), чем на Си, только потому, что все так называемые скриптовые языки ориентированы на работу с текстом. Вот чего я действительно не понимаю, так это различия между “программированием” и “написанием скриптов”. По-моему, чепуха все это. Но если основная твоя работа заключается в обработке текста или запуске программ (например, запустить wget[11], получить от нее какой-то HTML и сопоставить его с образцом), то гораздо легче это сделать на Perl, чем даже на Emacs Lisp.
Сейбел: Не говоря о том, что Emacs Lisp не слишком удобен для работы с утилитами командной строки.
Завински: Ну да, хотя я все время писал разные мелкие утилиты с помощью Emacs. Было время, на раннем этапе работы в Netscape, когда часть процесса сборки включала запуск скриптов с помощью команды emacs -batch для работы с некоторыми файлами. Это никому не нравилось.
Сейбел: Представляю... А как насчет XScreenSaver[12] - все еще работаете над ним?
Завински: Я до сих пор пишу новые скринсейверы - только ради развлечения и только на Си.
Сейбел: Применяете ли вы какую-нибудь интегрированную среду разработки?
Завински: В основном Emacs. Правда, недавно я портировал XScreen-Saver на OS X. Я сделал это так: реализовал заново Xlib на базе Cocoa (графической основе Маков), поэтому мне не пришлось переписывать код всех скринсейверов. Они все еще обращаются к Xlib, но я реализовал все соответствующие методы. Сделано это было на Objective-C, который оказался отличным языком программирования, и работа доставила мне огромное удовольствие. Он определенно напоминает Java в лучших его проявлениях, но также напоминает и Си. То есть в основном это Си, и можно напрямую использовать Си-код, вызывая нужные функции без лишних усилий.
Сейбел: Работая в компании Lucid, что вы узнали по технической части кроме политической составляющей разработки Emacs?
Завински: Работая там, я точно стал более хорошим программистом. Во многом потому, что был окружен действительно очень умными людьми. Все, кто там работал, были великолепны. Просто здорово находиться в коллективе, в котором, если кто-то скажет: “Это чепуха” или “Нужно сделать это вот так”, - можно просто верить на слово, не сомневаясь, что он знает, о чем говорит. Это было на самом деле здорово. Не скажу, что раньше я не бывал среди умных людей, но это был именно коллектив высококлассных специалистов в равной степени.
Сейбел: А насколько велика была команда разработчиков?
Завински: В компании было человек 70 - точно не знаю, и около 40 из них разработчики. В команде Energize было 20-25 человек. Все разработчики делились по направлениям. Кто-то работал над компиляторами, кто-то над серверной частью базы данных. Кто-то работал над пользовательским интерфейсом, не связанным с Emacs. Я и еще двое-трое занимались интегрированием Emacs с внешним окружением. Так получилось, что я работал в основном над Emacs, пытаясь сделать так, чтобы нашим редактором Emacs 19 можно было пользоваться, чтобы он не падал то и дело и чтобы под ним запускались все пакеты, которые должны запускаться.
Сейбел: То есть вы хотели, чтобы Emacs, который являлся составной частью вашего продукта, был полнофункциональной версией Emacs.
Завински: Изначально мы не собирались включать Emacs в наш продукт. Идея была такая: на вашей машине уже стоит Emacs, вы берете наш продукт, и они совместно работают. Например, на вашей машине установлен компилятор GCC и наш продукт, и они совместно работают.
Кажется, одним из первых кодовых названий нашего продукта было что-то вроде Hitchhiker (попутчик), так как идея была в том, что он будет брать и интегрировать все имеющиеся у вас инструменты - заставит их “общаться” между собой, предоставив им необходимый уровень коммуникации.
Но это не сработало. Мы стали выпускать собственные версии GCC и GDB, потому что не успевали за изменениями этих систем, по крайней мере, успевали не всегда. То же самое было и с Emacs. Поэтому мы выпустили все целиком. В конце концов мы пошли таким путем: “Так, мы заменили Emacs. Черт. Нам пришлось это сделать, поэтому нужно заставить его работать нормально”. Только на режим эмуляции vi я потратил уйму времени.
Сейбел: И это несколько недель вашей жизни, которые вам никогда не хотелось бы пережить снова.
Завински: И не говорите. Это было настоящее испытание. Кажется, в результате все заработало. Настоящая проблема была не в том, что режим эмуляции vi работал плохо, а в том, что пользователи были вынуждены постоянно выходить и перезапускать vi. И что бы я ни делал, эту проблему никак не удавалось решить. Пользователь говорил: “Я думал, она будет запускаться за полсекунды, а она запускается за четырнадцать. Это просто смешно. Я не могу этим пользоваться”.
Наиболее полная на сегодняшний день биография знаменитого генерального секретаря Коминтерна, деятеля болгарского и международного коммунистического и рабочего движения, национального лидера послевоенной Болгарии Георгия Димитрова (1882–1949). Для воссоздания жизненного пути героя автор использовал обширный корпус документальных источников, научных исследований и ранее недоступных архивных материалов, в том числе его не публиковавшийся на русском языке дневник (1933–1949). В биографии Димитрова оставили глубокий и драматичный отпечаток крупнейшие события и явления первой половины XX века — войны, революции, массовые народные движения, победа социализма в СССР, борьба с фашизмом, новаторские социальные проекты, раздел мира на сферы влияния.
В первой части книги «Дедюхино» рассказывается о жителях Никольщины, одного из районов исчезнувшего в середине XX века рабочего поселка. Адресована широкому кругу читателей.
Книга «Школа штурмующих небо» — это документальный очерк о пятидесятилетнем пути Ейского военного училища. Ее страницы прежде всего посвящены младшему поколению воинов-авиаторов и всем тем, кто любит небо. В ней рассказывается о том, как военные летные кадры совершенствуют свое мастерство, готовятся с достоинством и честью защищать любимую Родину, завоевания Великого Октября.
Автор книги Герой Советского Союза, заслуженный мастер спорта СССР Евгений Николаевич Андреев рассказывает о рабочих буднях испытателей парашютов. Вместе с автором читатель «совершит» немало разнообразных прыжков с парашютом, не раз окажется в сложных ситуациях.
Из этой книги вы узнаете о главных событиях из жизни К. Э. Циолковского, о его юности и начале научной работы, о его преподавании в школе.
Со времен Макиавелли образ политика в сознании общества ассоциируется с лицемерием, жестокостью и беспринципностью в борьбе за власть и ее сохранение. Пример Вацлава Гавела доказывает, что авторитетным политиком способен быть человек иного типа – интеллектуал, проповедующий нравственное сопротивление злу и «жизнь в правде». Писатель и драматург, Гавел стал лидером бескровной революции, последним президентом Чехословакии и первым независимой Чехии. Следуя формуле своего героя «Нет жизни вне истории и истории вне жизни», Иван Беляев написал биографию Гавела, каждое событие в жизни которого вплетено в культурный и политический контекст всего XX столетия.