Кодеры за работой. Размышления о ремесле программиста - [10]
А потом им крупно повезло - их купила компания Netscape. После чего Netscape передала бразды правления этой компании. Но вместо того чтобы отвечать только за почтовую программу, они оказались во главе всего подразделения по разработке клиентской части. Мы с Терри работали над Netscape 2.1, когда это произошло и начался процесс переписывания. Тогда стало понятно, что Netscape 3.0 будет выпущен слишком поздно, и наша версия 2.1 превратилась в версию 3.0, потому что нужно было выпустить на рынок основную версию.
А потом версия 3.0, над которой они начали работу, стала версией 4.0, которая, как вы знаете, стала одной из самых больших неудач в области программных разработок. Главным образом это и погубило компанию. Она умирала долго, но это было неотвратимо. Процесс переписывания был инициирован новоприобретенной компанией, которая ничего особенного не добилась, пренебрегла всей нашей работой и нашими достижениями, а сразу же начала страдать синдромом второй системы и потянула нас ко дну.
Они полагали, что, оказавшись у руля, просто обязаны поступать по-своему. Но когда они делали это по-своему в своей компании, они провалились. И когда люди, добивавшиеся успеха, говорили им: “Послушайте, правда, не используйте C++, не используйте потоки”, они отвечали: “О чем вы говорите? Вы ничего не понимаете”.
Именно такие решения, как отказ от C++ и использования потоков, позволили нам выпустить продукт вовремя. Другой важной составляющей было то, что мы всегда выпускали версии под все платформы одновременно. Это решение они тоже считали глупым: “У 90% пользователей установлена Windows, так что мы сосредоточим усилия на работе версии под Windows, а позже портируем ее под остальные платформы”. Так поступали многие компании, потерпевшие крах. Если вы собираетесь выпускать кроссплатформенный продукт, то история показывает, как именно не следует поступать. Если вы действительно хотите выпускать кроссплатформенное решение, то разрабатывать все нужно одновременно. А портирование приводит к паршивому результату на второй платформе.
Сейбел: Версия 4.0 создавалась с нуля?
Завински: Ну, не то чтобы совсем с нуля, но в итоге они переписали каждую строку кода. И использовали C++ с самого начала. Я боролся против этого изо всех сил и, черт возьми, был прав. Все стало распухать, появились проблемы с совместимостью, потому что когда пишешь на C++, невозможно прийти к согласию, какие именно 10% языка можно безопасно использовать. Кто-нибудь говорит: “Мне нужны шаблоны”, а затем выясняется, что нет двух компиляторов, которые реализуют шаблоны одинаково.
А когда весь опыт написания кода говорит о том, что мультиплатформенный код означает работу и под Windows 3.1, и под Windows 95, вы даже не представляете, насколько это важно. Поэтому разработка версии под UNIX (к счастью, это была уже не моя проблема) стала настоящим кошмаром, как и разработка версии для Мака. Это означало, что стал невозможным выпуск под старые версии Windows, такие как Win16. Пришлось сокращать количество поддерживаемых платформ. Может быть и пришло время так поступить, но причины были ни к черту. В этом не было необходимости.
Может показаться, что это мой горький, сугубо личный взгляд на вещи, будто мы с Терри создали великолепную штуку и теперь наказаны за свой успех, а в качестве наказания нами управляют идиоты. То время в Netscape стало несчастьем для меня. Начался период, когда я оставался в компании, ожидая, когда Netscape перейдет в другие руки.
Сейбел: И вы проработали там пять лет?
Завински: Да. И еще один год после продажи Netscape, потому что незадолго до этого стартовал проект mozilla.org, и снова стало интересно. Так что я остался из-за него.
Сейбел: Вам все-таки пришлось иметь дело с C++?
Завински: Ну, скорее с Java. В какой-то момент мы решили переписать броузер на Java. Мысли у нас были такие: “Ура! Мы выкинем весь код версии 4.0, который грозит потопить нашу компанию, и это точно сработает, ведь мы знаем, что делаем!”
Но не сработало.
Сейбел: Не сработало, потому что язык Java был еще сырым?
Завински: Нет. Нас снова разбили на четко определенные группы. Трое работали над почтовым клиентом. И мы сделали его. Мы сделали действительно отличный почтовый клиент - быстрый, со многими удобными функциями, он лучше сохранял ваши данные и никогда не тормозил при записи больших файлов. Мы воспользовались многими преимуществами механизма многопоточности языка Java, работа с которым оказалась не такой мучительной, как я ожидал. Работать на самом деле было приятно. С помощью разработанного нами API мы видели все направления, в которых он мог бы развиваться.
Кроме одной вещи, с которой он не справлялся, - отображения сообщений. Он генерировал HTML, а для его отображения нужен был слой отображения HTML, который тогда не был готов и не был готов никогда. Работа группы планирования пошла насмарку, и именно они были причиной отмены всего проекта.
Сейбел: Значит, вам приходилось бороться с сырыми на тот момент библиотеками Java для построения пользовательского интерфейса.
Завински: Нет, я бы так не сказал. Все работало. Просто в середине окна был большой белый прямоугольник, где мог отображаться только обычный текст. Они подходили к проекту очень академично, оперировали такими понятиями, как объектная модель документа (Document Object Model, DOM) и описание типа документа (Document Type Definition, DTD). “Нам нужно создать вот тут еще один уровень абстракции и создать здесь делегирование для делегирования вон того делегирования. И может быть, на экране наконец появится буква”.
Наиболее полная на сегодняшний день биография знаменитого генерального секретаря Коминтерна, деятеля болгарского и международного коммунистического и рабочего движения, национального лидера послевоенной Болгарии Георгия Димитрова (1882–1949). Для воссоздания жизненного пути героя автор использовал обширный корпус документальных источников, научных исследований и ранее недоступных архивных материалов, в том числе его не публиковавшийся на русском языке дневник (1933–1949). В биографии Димитрова оставили глубокий и драматичный отпечаток крупнейшие события и явления первой половины XX века — войны, революции, массовые народные движения, победа социализма в СССР, борьба с фашизмом, новаторские социальные проекты, раздел мира на сферы влияния.
В первой части книги «Дедюхино» рассказывается о жителях Никольщины, одного из районов исчезнувшего в середине XX века рабочего поселка. Адресована широкому кругу читателей.
Книга «Школа штурмующих небо» — это документальный очерк о пятидесятилетнем пути Ейского военного училища. Ее страницы прежде всего посвящены младшему поколению воинов-авиаторов и всем тем, кто любит небо. В ней рассказывается о том, как военные летные кадры совершенствуют свое мастерство, готовятся с достоинством и честью защищать любимую Родину, завоевания Великого Октября.
Автор книги Герой Советского Союза, заслуженный мастер спорта СССР Евгений Николаевич Андреев рассказывает о рабочих буднях испытателей парашютов. Вместе с автором читатель «совершит» немало разнообразных прыжков с парашютом, не раз окажется в сложных ситуациях.
Из этой книги вы узнаете о главных событиях из жизни К. Э. Циолковского, о его юности и начале научной работы, о его преподавании в школе.
Со времен Макиавелли образ политика в сознании общества ассоциируется с лицемерием, жестокостью и беспринципностью в борьбе за власть и ее сохранение. Пример Вацлава Гавела доказывает, что авторитетным политиком способен быть человек иного типа – интеллектуал, проповедующий нравственное сопротивление злу и «жизнь в правде». Писатель и драматург, Гавел стал лидером бескровной революции, последним президентом Чехословакии и первым независимой Чехии. Следуя формуле своего героя «Нет жизни вне истории и истории вне жизни», Иван Беляев написал биографию Гавела, каждое событие в жизни которого вплетено в культурный и политический контекст всего XX столетия.