Total Commander. Интервью с разработчиком

Представляем вам большое обзорное интервью с автором известной во всем мире программы Total Commander - Кристианом Гислером. Total Commander начинает свою публичную историю в Швейцарии в 1993 году и принадлежит к категории программ, которые принято называть на Западе как Orthodox File Manager (OFM), или, говоря по-русски, двухпанельный файл-менеджер. Мы побеседовали с автором программы о его будущих планах и истории развития проекта, о технических подробностях его разработки, которые обычно остаются в тени для его многочисленных пользователей, а также не оставили без внимания и личные факты, связанные с этим известным разработчиком из Швейцарии.

- Широко известный факт, что вы до сих пор пишете свой файл-менеджер на "допотопном" Delphi 2. С чем это связано?

- Я являюсь обладателем лицензионных версий всех последних Delphi, поэтому достаточно хорошо представляю себе их возможности. Но дело тут вот в чем: компиляция exe-файла в Delphi 2 дает на выходе файл ощутимо меньший по размеру, чем, например, в Delphi 7. Кроме того, тестирование показывает, что exe-шник из-под Delphi 2 работает заметно быстрее, чем его полный аналог, выпущенный компилятором Delphi 7. Я сталкиваюсь с тем, когда люди часто удивляются, что Total по-прежнему работает очень быстро - я собираюсь сохранить эту его особенность, и, отчасти, секрет тут в правильно выбранном компиляторе.

Добавлю, что кроме этого Delphi 2 генерирует очень универсальный код, например, с полной поддержкой 16-битных приложений или Windows 95/98 - у меня до сих пор хватает таких клиентов. В то же самое время TC прекрасно себя чувствует и в Windows 7.

- Ранее многократно вы публично заявляли, что закончили первый этап портирования Total Commander на Lazarus/Free Pascal. Как сейчас продвигается эта работа? Откуда такое экзотическое желание?

- Да, я веду такую работу. Самая главная причина, почему я хотел попытаться портировать TC под Lazarus, это то, что Lazarus может создавать нативные 64-битные приложения, а Delphi - нет. Разработчики Delphi уже много лет анонсируют выход 64-битной версии среды разработки, но её до сих пор нет. В то же самое время уже сейчас, например, в Германии, 46% процентов всех компьютеров продаётся с предустановленной 64-битной версией Windows. Я постоянно сталкиваюсь с тем, что рядовые пользователи, подобно ситуации с мегапикселами в фотокамерах, считают, что чем больше цифра чего-то - тем лучше, и поэтому 64-битные компьютеры гораздо круче 32-битных и, естественно, им нужна 64-битная версия TC. Текущая 32-битная версия TC хорошо работает и в 64-битной среде, но большинство людей не привыкли думать рационально. Сейчас этот вопрос стоит для меня достаточно остро.

- Насколько я знаю, уже существует бета-версия 64-битного компилятора Delphi, как минимум, подписчикам доступна для закачки демо-версия консольной версии 64-битного компилятора. Думаю, осталось ждать совсем немного (прямо сейчас на сайте embarcadero.com написано, что "We expect the 64-bit version of Delphi to be ready in mid-2010.")...

- Ну, первый раз анонс выхода 64-битной версии компилятора появлялся на сайте разработчиков Delphi в 2009 году, потом был перенос на лето 2010, и, кстати говоря, уже наступил 2011-й... Короче, я поверю в это только тогда, когда сам увижу его в работе, и, возможно, если он покажет себя хорошо, сверну разработку версии под Lazarus. Пока же я не намерен больше ждать пустых обещаний. По слухам, Delphi 64-бита или, как минимум, его более-менее рабочая версия появится лишь где-то около 2012 года.

- Ну и как вам Lazarus в сравнении с Delphi?

- Он чрезвычайно неплох для полностью бесплатного продукта, но всё же содержит много проблем и ошибок. Самая большая для меня проблема - отсутствие хорошей документации. Например, я сейчас бьюсь над попыткой понять методом проб и ошибок отличия в реализации inline-ассемблера в Delphi и его аналога в Lazarus. Также время компилирования и линковки в Lazarus намного больше, чем в Delphi. Даже в очищенном от кода отладки исполняемом файле (stripped executable) почему-то всё равно присутствуют данные для отладки, что замедляет выполнение приложения. Ну и в самой реализации компилятора присутствуют ошибки, что требует быть постоянно начеку. Например, функция str() не помещает закрывающий 0 в строку, когда используется массив из переменных.

Есть и приятные моменты. Например, полная поддержка Unicode в TC была написана мной вручную, тогда как в Lazarus все контролы изначально поддерживают Unicode и базируются на UTF-8.

- Очень долгое время ходили слухи, что вы готовите Linux-версию Total Commander'a, чем закончилась эта затея?

- Да, я делал серьёзную попытку переноса TC на Delphi for Linux (Kylix) пару лет тому назад. Но столкнулся с очень глобальными проблемами, которые лежали за пределами самой среды разработки. Хотя вся визуальная часть интерфейса работала отлично, все низкоуровневые эффекты сделали перенос практически невозможным. Например, интенсивная работа с потоками в Linux (копирование в фоне, FTP и другое) окончательно доконала меня своими случайными мистическими ошибками, причины которых установить так и не удалось.

- Интересно, какие ещё были проблемы с Kylix?

- Например, другая большая проблема, что в Linux нет аналога виртуального контрола Listbox, который крайне необходим мне для отображения больших списков. В моем нынешнем Listbox'e при добавлении каждой строки вызывается callback-функция, которая сама заполняет эту строку данными. В реализации Listbox в Linux при заполнении каждой строчки всякий раз создаётся специальный объект(!), что приводит к очень медленной работе со списками. Тем более, Kylix использует Qt toolkit, в котором вообще нет никакого виртуального ListBox'a.

Я хотел было попробовать пройти этот путь до конца и написать виртуальный Listbox для Linux-версии сам, но проблема в том, что аналогов почти половины используемых мною в Windows системных функций под Linux просто нет, т.о. требуется слишком глубокая переработка, вероятно, на уровне алгоритмов (если она вообще возможна), что того явно не стоит. Идеологически всё усложняется тем, что в Linux вообще нет сообщений, все вызывается через callback-функции. Поэтому через полгода напряженной "разведки боем" я сдался.

- Очень жаль, что так всё закончилось... очень многим пользователям Linux не хватает старого-доброго Total Commander'a...

- Возможный выход - использовать Wine. Я специально тестировал совместимость TC с Wine, всё должно работать нормально, хотя и с некоторыми очевидными ограничениями.

- Итак, как я понял, следующая революционная 8-ая версия - это переход на Lazarus и первая полноценная 64-битная версия TC (вместе с 32-битной)?

- Во-первых, разработка 32-битной версии TC останется на Delphi 2.

Во-вторых, насчет инструмента разработки 64-битной версии пока я точно не определился, но движусь в направлении Lazarus. Как результат этих усилий - с этого лета я уже успешно компилирую весь проект TC на Lazarus. Он запускается, но многие функции пока неправильно работают, в основном потому, что Lazarus программно блокирует обработку стандартных сообщений Windows, например, WM_PAINT. Я также завершил перенос кода по работе с OLE2 в Lazarus, здесь отличия в работе были также весьма существенны. Поэтому впереди предстоит еще много работы.

- Иначе говоря, 64 бита - сейчас главная текущая цель?

- Да, но это на самом деле достаточно масштабная цель. Нужно понимать, что даже если мы и выпустим успешную 64-битную версию, это сразу породит новые проблемы, т.к. все имеющиеся плагины - 32-битные. Все они перестанут работать как один, если только авторы плагинов сразу оперативно не перепишут их под 64-бита. Как временный выход, я планирую загружать 32-битные составляющие TC через скрытую отдельную программу (tcmdx32.exe) таким же способом, которым я сейчас вызываю расширения меню в 64-битном Explorer'e.

- Если не секрет, каковы масштабы проекта для текущей версии TC 7.55a?

- Все *.pas-файлы проекта занимают более чем 10 Мб. Всего написано более 200 тыс. строк кода.

- Окей, Кристиан, чтобы понизить градус техничности нашего интервью, вспомните что-нибудь смешное из вашей обширной практики поддержки пользователей со всего мира.

- Лично меня очень смешит, когда я регулярно получаю на свой официальный e-mail (указанный в About программы) вопрос, знаком ли я с автором Total Commander? По секрету скажу, у меня даже есть заготовленный шаблон-ответ для такого случая :-)

- Вероятно, у некоторых ваших клиентов есть представление, что Total Commander - это огромная корпорация. А что на самом деле представляет собой TC и его разработчик?

- Total Commander пишется мною и моим братом. Это работа, которая сейчас занимает у нас весь рабочий день. Непосредственно для программирования у меня зарезервировано 4 утренних часа во все рабочие дни, всё остальное время я занят административными вопросами и поддержкой пользователей. Сейчас мне 40 лет, я профессионально занимаюсь только Total Commander'ом уже 17 лет.

- Что стало отправной точкой, почему вы начали писать свой файл-менеджер?

- Я начал писать TC во время получения образования, в свободное от учебы время по вечерам. Подобные файл менеджеры уже были для DOS, но их не было под Windows. Тогда я мечтал, что хорошо бы было создать такую программу, которая в точности исполняла бы все возможные команды пользователя, давая полный контроль над тогда ещё достаточно экзотическим и сложным компьютером. И вот сейчас это у меня почти получилось!

- Насколько хорошо позволяет зарабатывать Total Commander? Успешна ли коммерчески эта программа?

- Да, вполне. Total Commander позволяет мне поддерживать уровень жизни выше среднего в месте моего проживания.

- Каков секрет успеха в области shareware с вашей точки зрения?

- Во-первых, это способность находить незанятые крупными компаниями ниши, где этим программным гигантам просто невыгодно работать. Например, клиентская ниша TC очень узка, такая компания как Symantec после долгих попыток просто вынуждена была свернуть разработку знаменитого Norton Commander'a - просто потому, что для крупных компаний это, очевидно, убыточное направление.

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

В-третьих, в коммерческой разработке важна способность уделять максимум внимания даже мелочам. Например, мой TC прекрасно работает в Windows 95, также как и в Windows 7, или даже в Wine. Только все тщательно выверенные детали делают продукт в целом совершенным, и пользователи это, поверьте, сразу чувствуют. Я думаю, мало кто способен представить себе, какой гигантский труд скрывается за всеми этими "мелочами".

- Политика разработчика Total Commander традиционно славится своей лояльностью к пиратам и к незарегистрированным пользователям. Например, с незарегистрированной копией TC можно работать вечно, несмотря на 30-дневное ограничение в лицензии использования. С чем связано такое либеральное отношение?

- Наша главная задача и цель - это не уменьшение количества незарегистрированных пользователей программы, а повышение количества платящих пользователей. Чувствуете разницу? Поэтому у TC очень символическая защита от взлома, и он может использоваться неограниченное время после истечения триального времени даже без всяких модификаций программы. Жизнь показывает, что наша вера в пользователей и их преданность всегда в конечном итоге приносит нам прибыль. Например, я часто получаю письма благодарных пользователей, говорящих, что они много лет использовали Total как незарегистрированные пользователи, и вот, наконец, у них есть возможность оплатить TC - и они с большой радостью это делают. Другой распространенный вариант - когда пользователи, которые не могут позволить себе купить TC, приносят его в свои компании и покупают уже коллективные лицензии за счет своей работы. В этом случае наша лицензия позволяет легально использовать такой зарегистрированный Total и на домашнем компьютере любого работника этой организации.

- Кристиан, я знаю, что вы настоящий полиглот, свободно владеете 4 иностранными языками. Откуда вы их так свободно знаете?

- Я учился в литературной гимназии, которую посещал в юности, потому что мне не нравилась обычная школьная программа с её математикой, где нас заставляли зубрить правила и много вычислять в голове. После гимназии я решил идти в университет учиться физике, математике и компьютерным наукам, потому что к тому моменту эти предметы казались мне "достаточно живыми", оттого что я устал бесконечно зазубривать и выучивать уже иностранные языки в литературной гимназии. Я всегда пытался избегать механической рутины, но она постоянно меня преследует :-)

- Какие черты и возможности в TC были наиболее сложны в реализации, какими из них вы гордитесь больше всего?

- Могу достаточно уверенно сказать, что наиболее сложной частью TC является редактор "Сравнить по содержанию", где вы можете параллельно редактировать два файла в соседних панелях, и разница в них каждый раз подсвечивается немедленно. При реализации этого редактора учитывалось очень много тонкостей, порой весьма неочевидных и глубокомысленных, отладка этой части программы также заняла очень много времени и сил.

Я не горжусь никакой из отдельных функций TC, но, оглядываясь назад, очень рад тому, что ещё в начале развития программы я заложил возможность расширения опций программы через внешние плагины. Хотя в те далекие годы были определенные сомнения в целесообразности такого подхода, сейчас это важнейшая возможность программы, которая позволяет независимо от меня (основного разработчика) наращивать любые самые экзотические возможности и функции. Признаю, что жизнь доказала, это один из важных элементов нынешней относительной популярности моей программы. Например, я просто не мог и мечтать, что у программы будет когда-то прямой доступ к Linux-разделам ext2/ext3 или Raiser, но это было реализовано именно в плагинах уже сторонними разработчиками.

Хочу отметить, что мы поддерживаем плагины не только на уровне самой программы, но и на уровне ее частей, например, Lister'a. Так интеграция возможностей сторонней программы IrfanView превращает Lister в чрезвычайно мощный фото-вьювер.

- Что вы думаете про такие популярные языки, как Java и С#? Учитывая вашу склонность к различным экспериментам, почему бы не попробовать переписать TC на одном из этих современных языков?

- Сейчас я работаю над версией TC для Android, которую пишу на Java. И хотя работа ещё в самом начале, уже сейчас для меня очевидно, что общая концепция устройства Android настолько сильно отличается от Windows, что я вынужден начинать с нуля практически во всем. Поэтому это, скорее, не портирование, а именно написание нового приложения, в общих чертах повторяющего функциональность и интерфейс TC.

Что же касается .Net/C#, то написать нечто подобное TC на этом языке - не очень хорошая идея. По ряду причин я не фанат платформы .Net и считаю её малопригодной для shareware-бизнеса.

- Как вы относитесь к свободным проектам и открытому исходному коду?

- Я отношусь к ним положительно, использую их в том числе в своей работе. Я также опубликовал много программ как freeware, например, мои Total Commander for PocketPC, Total Commander for Windows Mobile и Windows CE, которые являются просто хобби на протяжении уже многих лет. Некоторые мои программы распространяются с открытым исходным кодом, например, некоторые плагины. Считаю, что все эти виды программ могут прекрасно сосуществовать, при этом каждая из форм распространения имеет свои преимущества и недостатки, свои разные цели и предназначение.

Например, Linux-версия Total Commander требовала очень значительных временных затрат для её создания, в то время как работа над Windows-версией и так занимает почти все мое время. К тому же философия пользователей Linux такова, что они привыкли получать все бесплатно, а я не могу физически тратить столько своего времени для работы над бесплатной версией. Именно поэтому принято решение разработку Linux-версии TC отложить на неопределенный срок.

- Какую версию Windows используете лично вы и почему?

- На моем компьютере стоит Windows 7, мне она кажется очень удобной, и я нахожу многие её функции по-настоящему удачными и прогрессивными. На моем ноутбуке, которым я также очень интенсивно пользуюсь, установлена Windows XP. Я рекомендую устанавливать Windows 7 пока только на настольные компьютеры, и то если у вас действительно достаточно мощный процессор и установлено много RAM (ОЗУ). Лично я очень не люблю любых задержек и подвисаний, поэтому всегда очень щепетильно слежу, чтобы мой Total оставался всегда таким же быстрым и на любом компьютере.

- И в заключение, над чем вы работаете прямо сейчас?

- Готовится новая версия 7.56, в которую войдут исправления всех ошибок, обнаруженных со времени выхода последнего релиза 7.55a. Я думаю, это будет самая стабильная версия, может быть, даже последняя в 7-й ветке этой программы.

Беседовал Игорь САВЧУК,
www.softkey.info

Версия для печатиВерсия для печати

Номер: 

04 за 2011 год

Рубрика: 

Эксклюзивное интервью
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя НеЩур
Статья очень понравилась.
Аватар пользователя Savely
Аналогично. Хотя я и "Far"щик. Но я и "пасквилянт", и проблемы мне весьма близки...

Хорошие ответы при грамотных вопросах.

Аватар пользователя sw
Исходная статья взята отсюда:

http://www.softkey.info/reviews/review9900.php

Аватар пользователя Savely
И? Автор статьи/интервьюер один тот же. В чем проблема?