Журнал LinuxFormat - перейти на главную

LXF78:Интервью

Материал из Linuxformat
Перейти к: навигация, поиск


Mono-глоты

Linux Format встретился с Эдом Дамбиллом (Edd Dumbill) и Нилом Борнштейном (Niel Bornstein), авторами недавно вышедшей книги о прелестях Mono.



Споры по поводу Mono наэлектризовали свободное сообщество. Должны ли мы писать программы, которые целиком и полностью зависят от изобретения Microsoft? Не нарвемся ли мы на патентные иски? Долго ли еще играть в догонялки с инновациями Microsoft? Некоторые считают, что инновации .NET слишком серьезны, чтобы занять позицию «изобретено не здесь» и проигнорировать их, и полагают, что Mono (открытая реализация .NET) и C# могли бы стать наилучшим выбором для будущих разработок.

Эд Дамбилл и Нил Борнштейн – двое из вышеупомянутых некоторых; они соавторы книги «Mono: Блокнот разработчика» (Mono: A Developer’s Notebook), ставшей настольным лабораторным путеводителем для программистов, которые делают на пути Mono первые шаги. Мы поймали писательский дуэт на OSCon, чтобы узнать, что подвигло их на создание этого труда и почему они избегают C++, и, конечно, расспросить о книге.

Linux Format: Вы, парни, работаете с Linux много лет. Как вы вышли на Mono, и чем занимались все годы до него?

Эд Дамбилл (ЭД): Я работал над проектом рабочего стола Gnome и тесно соприкасался с вещами, которые приходилось делать ребятам из Ximian. На Mono вышел потому, что это позволило мне добиться большей продуктивности в написании Gnome-приложений, совершив скачок на C# из C.

Так что для меня дело было не в кросс-платформности, а просто Mono – отличная среда для работы. Я принял участие в проекте, который запустил [основатель Ximian и Mono] Нат Фридман (Nat Friedman) под названием Dashboard, на какое-то время проект завис, а потом превратился в поисковый инструмент под названием Beagle. Вот так я и пришел к Mono.

Нил Борнштейн (НБ): Что до меня, я перешел от Java к .NET под Windows, и меня всегда интересовали возможности Open Source в этой области. Эд как-то пришел и сказал, что хочет написать книгу [о Mono], ну и я вроде как заинтересовался. Я пришел к Mono от книги, а не наоборот – к книге от Mono.


LXF: До сих пор кое-кто не доверяет Mono, так как боится проблем с патентами. Вы, ребята, с Mono уже сравнительно давно. Вы знали об угрозе патентных исков, и все-таки решились нырнуть в него с головой?

ЭД: Люди, которым я доверяю, Нат и Мигель [де Икаса (de Icaza), сооснователь Mono], потратили на Mono очень много времени, для меня лично это в некотором смысле достаточно надежная гарантия. Я тогда не представлял никакую корпорацию, просто был программистом. И потом, каждый раз, когда вы пишете программу, вы почти наверняка нарушаете чейнибудь патент. Но даже если конкретно такого патента нет, при желании можно найти похожий, и вас все равно потащат в суд.


LXF: Но это же не считается умышленным нарушением?

ЭД: Нет, но проблема в том, что если вы – мелкая рыбешка, а патентные условия сформулированы достаточно расплывчато, причем в США в большинстве случаев так и есть, то за вами начнут охоту. И еще до суда у вас не останется денег на борьбу. Проблемы с патентами в большей степени касаются той части Mono, которая не является стандартом ECMA [European Computer Manufacturers Association, Европейская Ассоциация Производителей Компьютеров], то есть эмулирующей Windows, а я никак не использую эту часть платформы. Windows Forms, ASP .NET...

НБ: Microsoft опубликовала эти стандарты, то есть передала их в ECMA, и теперь они общественные – так почему бы и не воспользоваться ими? А остальное… кто знает, что будет? Мне ничто не мешает использовать это остальное, и не помешало бы мне предлагать другим его использовать, если надо.


LXF: Перейдя на Mono, какие главные преимущества вы нашли для себя?

ЭД: Главное различие – в переходе с C на C# и написании программ для рабочего стола Gnome. Этим занималось немало людей в среде Gnome с помощью по-настоящему интересных и полезных приложений, которые сейчас быстро развиваются.

Одно из основных преимуществ перехода на зрелый объектно-ориентированный язык – большое количество возможностей. Настольные приложения Mono сегодня просто первоклассные, в них есть наследование, события и прочее. Все это, конечно, есть и в Java, но в C# вы чувствуете себя преемником программистов С. Я никогда не мог по-настоящему привыкнуть к Java, потому что в нем слишком много ограничений на то, чем я занимался.

НБ: Да еще в C# имеется много приманок, которых не было – а некоторых и сейчас нет – в Java. Так что мне, когда я отошел от Java, было очень приятно продолжить работать на C# (мне он понравился еще под Windows) и использовать его для Linux, Mac и всех других платформ.

ЭД: Еще одно серьезное преимущество – вы не теряете свои старые наработки на С из-за всяких P/invoke. Можно выполнять «родной» код из программы C# и не писать все эти оболочки и тому подобное, а при работе в Python, скорее всего, пришлось бы задействовать SWIG. И это был бы долгий-долгий обходной путь. Вот вам и преимущество.

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


LXF: Вы сказали, что переход на C# дает вам наследование, а оно есть также и в C++. Разве перейти на C++ не так же легко?

ЭД: По-моему, надо быть мазохистом, чтобы перейти на C++. Есть причины, по которым проект Gnome этого не сделал. Такой переход влечет множество тягот, а мне их не надо. Я думаю, это дело личного убеждения.

И потом, намного разумнее работать с языком, который впитал опыт использования С, С++, Java. Такой язык берет все хорошее и выбрасывает все плохое, потому что это плохое путается под ногами. Ну, вы знаете, все эти случайности с файлами заголовков, все эти штуки из С, С++… Одна большая головная боль. Нужны были прототипы, по два места для вашего класса.

НБ: Да, грустно. Я совсем забросил указатели. Пользоваться [в Mono] ими можно, но я не вижу для этого причин, если вы пишете портируемый код и не используете унаследованных библиотек. Я не писал на С уже лет пять или шесть.

ЭД: Я думаю, управление памятью – это отличная вещь. Работа в среде управляемого кода.


LXF: Как сказал Мигель: «В твоей жизни наступает момент, когда ты понимаешь, что слишком большую ее часть потратил на создание собственной системы сборки мусора».

ЭД: Да, пора начать доверять кому-то еще, и мы как раз подошли к этому моменту.

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


LXF: Вы, значит, думаете, что если придется программировать GTK, вы прямиком двинетесь к Mono? Или вы скажете: «С тут подойдет лучше»?

ЭД: Не думаю, что кто-либо в здравом уме будет и дальше работать на С. Основная причина, почему изрядная часть Gnome по-прежнему на С – потому что с этим согласилось большинство народа. Точнее, все сошлись на том, что хотят использовать язык высокого уровня, [но] какой – Python? Или C#? Или новый classpath Java? Я думаю, что С выбран просто благодаря его фундаментальным библиотекам. Но попытайтесь создавать объекты в С или GTK, и очень скоро увидите, как это мучительно.

Я думаю, что достоинства есть и у Mono, и у Python. Возможно, Python быстрее по части создания прото типов, но зато типобезопасность C# создает уверенность в том, что ваша программа ни с того ни с сего не сломается. Сейчас реально существует среднее звено – с Boo и IronPython, мы на той стадии, когда имеются достойные интерпретируемые языки, способные запускаться в той же среде. Я бы с удовольствием использовал их и для создания прототипов, не такой уж я упертый.


LXF: Участвовали ли вы в попытках ввести в проект Gnome другие языки высокого уровня?

ЭД: Ну, в какой-то мере меня втянули в дебаты, в первый раз это было около года назад. Дебаты всех утомили, но ни к какому решению не привели. По-прежнему пребываем в состоянии неопределенности. Все участники проекта Gnome работают на разные корпорации. У Red Hat есть эта их здоровая штуковина на Java для работы с classpath и так далее. Парни из Canonical в восторге от Python – и они вовсе даже не спешат его покинуть.


LXF: Novell, Red Hat и Canonical: три разных фирмы, три разных языка!

ЭД: Ну и что? У DVD большая емкость; в наши дни у людей увеличилась ширина канала. Надо будет загрузить три виртуальные машины на три среды выполнения и создать мосты, –создадим. Если это – цена создания достойных приложений для Gnome, то мы готовы ее заплатить. Не проблема. Я думаю, именно в этом направлении и следует идти – пусть каждый делает свою работу, а в конце концов объединимся.

Приложение Gnome определятся не языком, на котором оно написано, а собственным стилем – функция drag&drop работает определенным образом, темы подобраны определенным образом, и так далее. А если говорить о пользователях, то им язык абсолютно безразличен.

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


LXF: Для конечных пользователей Mono – сплошь крутые приложения: F-Spot – крут, Beagle – тоже крут, Blam – ну очень крут! На самом деле, лично мне полезен iFolder. Это что, из-за того, что над Mono трудятся только крутые хакеры, и создают только крутые программы?

НБ: Фирмы, которые уже используют .NET и хотят перейти на свободные платформы, начинают с этой целью использовать Mono. В последние полгода я общался со многими фирмами, интересующимися Mono – они пока еще не перешли на него, но хотят знать: «Что надо сделать? Что это вообще такое? Поможет ли это нам перейти на ASP.NET или писать переносимый код на .NET?» Так что в фирмах движение есть, а вот в продуктах, возможно, оно не столь заметно.

ЭД: Проекты, которые вы упомянули, были созданы для рабочего стола Gnome в Mono. Поймите, немало открытых проектов, которые начинались в .NET, работают и в Mono, поэтому нет особого смысла в написании другой версии. Есть шансы, что большинство проектов либо сразу заработают в Mono, либо потребуют очень незначительной перекомпиляции, чтобы уйти от специфики Windows – вроде обратного слэша в имени файла или еще какой-нибудь ерунды, которую программистам и допускать-то не следует.

И потом, неудивительно, что вывидите только крутые программы: ну что еще вам покажут за пять минут?


LXF: Нужна ли перекомпиляция для таких ситуаций, как вызов P/invoke, где программист, возможно, захочет вернуться в цикл сообщений Windows?

ЭД: Дело даже не в этом. Такая проблема существует и в Java: вместо того, чтобы использовать класс пути, чтобы создать ссылку на имя файла, разработчик просто присоединяет обратные слэши. [Потому что разработчики] постоянно прикидывают: сколько будет дисков, где будет храниться результат, как добраться до домашней папки и т.д. Но если вы все делаете правильно, то это не помешает портированию. Мы приводим в книге несколько основных правил для написания переносимых приложений. Не так уж все сложно, но вы удивитесь: оказывается, на свете полно ленивых разработчиков!


LXF: Поговорим о книге. Это часть целой серии?

ЭД: Да, серии «Блокнот Разработчика O’Рейли» (O’Reilly’s Developer’s Notebook). Я думаю, что она отражает суть работы большинства разработчиков: берешь практический пример, прорабатываешь его, ну, может, лезешь в справочник – и вперед! Менталитет «кода по примеру» присущ большинству программистов.

Книга отражает эту ментальность [на] серии «лабораторных задач». Берем пример, показываем, как он работает, и развиваем его – что будет, если сделать так? А если сделать этак? Или иначе? – а потом подсказываем, где можно найти более подробную информацию о данном предмете. Мы немало потрудились, чтобы обеспечить по каждому вопросу дополнительный материал и чтобы вы смогли двигаться дальше, обучаясь самостоятельно.

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

ЭД: Писать было очень интересно, и, я полагаю, это сказывается. Если вы писали книгу с удовольствием, то и читать ее приятно.


LXF: У меня на нее было всего два часа вчера вечером, но по моему впечатлению, она коротковата.

ЭД: Ну, рискну предположить, что вы за нее не платили, но объем книги соответствует ее цене. Это не энциклопедия…

НБ: … а стартовая площадка.

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

Мы, естественно, представляли себе тех, кто будет читать эту книгу. Самое главное, что это люди, которых не надо кормить с ложечки – это же разработчики, а они способны учиться сами. Книгу надо читать, имея под рукой клавиатуру.

НБ: И книга отнюдь не задумана как исчерпывающая.


LXF: Что вы могли бы рассказать о создании для Mono альтернативы Glade [визуальный редактор интерфейса для Gnome and GTK]?

ЭД: В процессе разработки находятся два преемника Glade. Один из них по некой причине называется Stetic. Предстоит выбор, на каком из них остановиться – один из них пишется на Python, а другой – на C# , возможно, здесь и заключается ответ на вопрос о том, что происходит. Возможно, произойдет интеграция.

MonoDevelop неплохо интегрируется. Недавно появилось дополнение NUnit, так что на боковой панели вы сможете увидеть результаты своих тестов – сколько было успешных, сколько неудачных, а также график, отображающий результаты тестирования во времени. Я думаю, что улучшения еще будут, но для достижения уровня Visual Studio или Eclipse, например, потребуется пройти долгий путь. Если мы хотим убедить людей перейти с Windows на Linux, нужно, чтобы им было удобно, чтобы у них были все те удобные функции, что и в Visual Studio. Достойная программа для создания форм – одна из них.

Есть и другие аспекты. Люди покидают мир Windows с его ужасным абсолютным позиционированием элементов на форме и приходят в Gtk с его компоновщиками (box model). Вы можете растягивать окна, как хотите, они легко адаптируются. В принципе, с тем же самым сталкиваются дизайнеры при переходе от печатной работы на HTML: им тоже нужно адаптироваться.


LXF: Что бы вы посоветовали тем, кто уже использует Qt или GTK и собирается попробовать Mono? Ну, кроме «Читайте нашу чудную книгу»?

ЭД: Я бы сказал: засучите рукава и беритесь за работу над кодом, и как можно быстрее. В смысле, когда вы меняете род деятельности, лучшее, что может вам помочь – это практический опыт. Некоторые проекты Mono, вроде Blam и Monopod (это мой клиент Интернет-вещания), достаточно малы, чтобы не заблудиться. Просто скачайте их – и поройтесь в исходном коде. Попробуйте его и так, и этак, пришлите заплатку. По моему мнению, собственного практического опыта ничто не заменит.

НБ: Читайте MSDN [1]. Самая лучшая документация по языку C# и библиотекам классов находится на сайте Microsoft. Так что если вы действительно хотите узнать что-то о языке и о библиотеках –вам туда.

Персональные инструменты
купить
подписаться
Яндекс.Метрика