***
   Именно эти подкожные червячки годами зудели, подталкивая в тысяча первый раз к тестированию очередного вьюера. О каких-то более или менее удачных решениях рассказывал в «Голубятнях», однако идеала так и не находил. Компромиссно-желеобразное равновесие удалось обрести в совместном существовании на компьютере IrfanView — исключительно для изменения размеров изображений, и ACDSee версии 2.4 (1998 год!) — для быстрого просмотра (при сохранении пристойного рендеринга) и работы с тумбнайлами. Решение хоть и суррогатное, но пристойное.
***
   Чем же покорил меня FastStone Image Viewer? Вкратце: на сегодняшний день это наиболее приближенный к идеалу вариант вьюера. Теперь — подробности.
   Качество рендеринга этой программы существенно выше, чем у ACDSee 2.4, и несоизмеримо выше, чем у IrfanView.
   Скорость загрузки изображений сопоставима с теми же эталонными программами.
   Инструментарий редактирования изображений приближается к ACDSee последней версии, при том что и по быстродействию, и по размеру FastStone Image Viewer раз в десять ее опережает.
   Работа с тумбнайлами на порядок быстрее, чем у всех эталонов, а по функциональности и удобству интерфейс тумбнайл-браузера просто вне конкуренции.
   Общая концепция интерфейса FastStone Image Viewer хоть и не может похвастаться эвристичностью, зато по реализации (вопрос «как?») доводит буквально до софтверного экстаза.
   Исходить слюной цифр и сравнительных таблиц, разумеется, не буду — в конце концов, «Голубятня» — субъективистский культур-мультур, а не тестовая лаборатория. Поэтому единственным аргументом всех этих «загрузок быстрее» и «картинок качественнее» полагаю собственные ощущения, коих мне лично хватило для окончательного отказа и от ACDSee, и от IrfanView. Гораздо конструктивнее остановиться именно на общем интерфейсе программы и тумбнайл-браузере, чьи преимущества видны любому человеку невооруженным взглядом. Итак, открываем фотографию в полноэкранном режиме.
   Из более или менее стандартного контекстного меню можно выделить обилие клавиатурных шорткатов практически для любого действия, а также очень удобную опцию Edit with External Program, которую вы настраиваете на свое усмотрение (у меня подключен «Фотошоп»). Теперь начинается самое захватывающее: перемещаем курсор мыши к верхней части экрана. Молниеносно всплывает мини-браузер для работы с текущей папкой, открывающий доступ к элементарным операциям: копирование, удаление, перенос и сравнение изображений. Направляем мышку к левому краю экрана. Перед нами мощнейшее меню редакторских функций программы: запуск слайд-шоу, вращение изображений, обрезка, изменение размера изображений (даже удобнее, чем в IrfanView), яркость, контраст, гамма, насыщение, уровень RGB, гистограмма, десяток полезнейших эффектов (удаление красных глаз, морфинг, сепия и т. п.). Перемещаем курсор мыши к правому краю экрана… и получаем исчерпывающую информацию о технических характеристиках изображения (метадата EXIF) плюс возможность добавления собственного комментария.
   Маленькая вкуснятинка: курсор мыши на изображении постоянно пребывает в форме лупы — достаточно нажать на левую кнопку, и картинка тут же увеличится до заданного вами в настройках программы размера (от 1:1 до 1:3).
   Такой вот потрясающий подарок сделал нам Андрей Куньхуевич Лю, дай бог ему здоровья и долгих лет жизни!
   Линки, помянутые в «Голубятне», вы найдете на домашней странице internettrading.net/guru.

ОКНО ДИАЛОГА: Желуди марки «Java»

   В начале сентября в санкт-петербуржской гостинице «Пулковская» компания Sun Microsystems провела конференцию для Java-разработчиков.
   И в качестве сливок к крепкому кофейному напитку разработчики получили доклад главного идеолога языка Java.
   Джеймс Гослинг (James Gosling) — личность воистину легендарная. Он стоял у самых истоков проекта «Oak», который позднее был переименован в «Java». Разговаривая накануне с коллегами-журналистами, я получил следующее описание Джеймса: «А-а-а, это такой крупный человек, который всегда носит безразмерную майку и ест сосиски руками…»
   Могу заявить — сосиски он ел вилкой, а майка на нем была по размеру. По его очень большому размеру.
   В интервью с Джеймсом приняла участие Анна Барски[Anya Barski — Анна закончила Санкт-Петербургский технический университет, а затем переехала в «Кремниевую Долину», где, поработав в одном из стартапов, перешла в Sun], возглавляющая
   Санкт-Петербургский
   центр разработки Sun.
   Вас наверняка тысячу раз об этом спрашивали, но все же: почему — Java?
   Д.Г.: Ну, должны же мы были как-то его назвать?! Нет, это не аббревиатура, название выбрано наугад. В 1990 году мы начали проект, целью которого было вовлечение неспециалистов в компьютерные технологии. Тогда речь еще не шла о всемирной сети Интернет, мы искали возможности применения цифровых технологий в различных областях потребительского рынка, в частности в сетях кабельного телевидения. И, столкнувшись с проблемой подключения абсолютно разных устройств, я начал искать язык, на котором можно было бы писать для них программы. Но чем дальше, тем становилось яснее, что ни один из существовавших языков не отвечал требованиям универсальности и простоты освоения. Тогда появилась идея создать новый язык. Сначала я назвал его Oak — «Дуб» (за окном нашего тогдашнего офиса рос красивый дуб). Но перед регистрацией этого названия была проведена экспертиза, и наши юристы обнаружили, что оно уже занято. Тогда мы устроили многочасовой мозговой штурм. Все предложения были аккуратно записаны в столбик на бумажку и переданы юристам. Они поочередно проверяли их, и первым незанятым названием из списка оказалась любимая нами марка кофе «Java». В общем, как всегда, все решили юристы[Мне встречалась и другая версия. Якобы название языка составлено из первых букв имен главных участников проекта: James Gosling, Arthur Van Рoff, Andy Bechtolsheim].
   Почему Java стала вездесущей, ведь Sun — частная корпорация?
   А.Б.: Sun уделяет очень большое внимание разработкам и инновациям. У нас существует сеть научных центров, разбросанных по всему миру, где работают совершенно разные люди. При выборе тех или иных технологий мы всегда проводим консультации с экспертами, поэтому неудивительно, что у нас появляются весьма удачные и удобные решения для очень широкого круга задач.
   Анна, в питерском отделении работает около трехсот человек. Какие у вас планы на ближайший год? Нравится ли вам работать в России? Есть ли проблемы с кадрами?
   А.Б.: В России очень хорошие кадры. И у нас очень хорошие рекрутеры. В общем, я не могу сказать, что мы испытываем трудности с поиском людей. Да, конечно, иногда приходится интервьюировать до пятнадцати человек на некоторые позиции, но когда нужно, мы всегда находим человека. Мы надеемся к июню будущего года (у нашей компании финансовый год заканчивается именно в июне) довести количество работников до 400—500. Главные направления — это инструментарий разработчика: Java Studio Enterprise, Jini и т. п.
   Кстати, мы работаем и с вузами: студенты проходят у нас практику, даже участвуют в проектах. Мы также планируем участвовать в учебном процессе — читать лекции, проводить конкурсы…
   Многие ваши сотрудники ведут общедоступные блоги, это помогает или мешает работе компании?
   Д.Г.: Хех, мы же открытая компания. Как людям удобнее, так пусть и поступают: нередко это оказывается очень хорошим способом для обсуждения тех или иных технических вопросов. Единственные, может, требования к сотрудникам — это чтобы не было ничего противозаконного и не раскрывались корпоративные секреты. Но у нас секретов мало.
   Может быть, провокационный вопрос: а кто ваши конкуренты?
   Д.Г.: Тут нельзя ответить однозначно. Если речь идет о Java, то, может, в некоторых областях — .NET. Если об инструментарии, то, пожалуй, IBM и Microsoft. Если же об аппаратуре — я бы назвал HP, IBM, Dell.
   А.Б.: Хочу добавить: меня, как ни странно, порадовало бы, если б в России открыла свой центр разработки компания Google. Там тоже высоко ценят инженерный талант. Для нас это было бы важным знаком, к тому же очень интересно взглянуть на динамику развития рынка в такой ситуации…
   Не боитесь, что они уведут ваших разработчиков?
   А.Б.: Да нет, каждый выбирает ту атмосферу, в которой ему лучше работать, у нас она уникальная — вряд ли уйдут. Разработчики смогут выбирать между той или иной идеологией управления.
   А что желают ваши клиенты? Что их сейчас волнует?
   Д.Г.: Клиентам нужно все! Я бы выделил масштабируемость, надежность и облегчение последующей разработки приложений. Еще в фаворе совместимость с продуктами Microsoft (в первую очередь на основе .NET и веб-сервисов).
   А можно использовать и то и другое, или лучше выбрать что-то одно?
   Д.Г.: Можно серверную часть сделать на Java, клиенты — на .NET, но мое личное мнение — что смешивать не надо, это всегда хуже управляется.
   А какие, на ваш взгляд, недостатки есть у технологии .NET?
   Д.Г.: О, это нетрудно. Из основных — плохая производительность в крупных системах; технология не реализована ни в Linux, ни в системах Apple, ни в таких устройствах, как смартфоны. Это решение одного производителя, так что вы вынуждены рассчитывать только на одного поставщика. Вы не можете сравнить конкурирующие продукты и выбрать лучший. Решения же на основе Java предлагает множество компаний, и вы всегда можете остановиться на том, которое вам нужно, и за те деньги, которые вас устраивают. Для примера могу привести конкурирующие решения от IBM и Oracle.
   Вы раньше сотрудничали с компанией Microsoft. Сейчас у вас есть какие-либо совместные проекты?
   Д.Г.: Тесного сотрудничества у нас никогда не было. Чаще между нами возникали конфликты, потому что наша работа противоречит бизнес-процедурам и идеологии Microsoft. Однако мы участвуем вместе с этой компанией в выработке стандартов для веб-сервисов. Сейчас мы тесно сотрудничаем в области разработки технологий идентификации пользователя, здесь у нас много общих интересов.
   Сейчас активно обсуждается тема безопасности. Особенно пользователей беспокоит ситуация со смартфонами. Вы хорошо знаете историю с SymbianOS и вирусами для нее…
   Д.Г.: Java — абсолютно безопасный и защищенный язык. У него нет проблем с безопасностью. Эти вирусы эксплуатируют вовсе не слабости языка Java, а ошибки в конкретной реализации протокола Bluetooth. Кстати, мы наняли разработчика вирусов для этой системы. Очень умный и хороший программист.
   А как же проблемы с совместимостью? Ведь не секрет, что скачанное из Интернета для веб-браузера я не могу запустить на телефоне, а игры с телефона бесполезно запускать на, к примеру, КПК…
   Д.Г.: Проблема несовместимости в основном касается первого поколения смартфонов, в которых реализация Java не полностью соответствовала спецификациям. Мы сейчас активно работаем с производителями, и во втором поколении смартфонов спецификации соблюдаются уже более точно. Потом надо понимать, что есть большая разница между корпоративными приложениями, где важна абсолютная платформонезависимость, и играми для смартфонов, где есть такие параметры, как разрешение экрана и видеоускорение. Как правило, программисты игр сознательно идут на использование специальных возможностей конкретной реализации Java в ущерб стандартам и спецификациям. В корпоративном секторе таких проблем нет.
   Увеличение абстракции языка программирования повышает требования к аппаратному обеспечению. Чем легче программисту, тем труднее конечному пользователю: ему приходится постоянно обновлять аппаратное обеспечение. Не приведет ли дальнейшее развитие языка Java к такой «гонке вооружений»?
   Д.Г.: Да, это проблема Java. И все же если сравнивать производительность с программами на C и C++, то Java нередко выигрывает. Особенно в системах хранения данных. В этих языках дорого обходится независимость от аппаратного обеспечения. Когда мы говорим про продукты на С и С++, оптимизация нужна. Особенно для нестандартных процессоров. У Java же нет необходимости модифицировать саму программу. Она будет работать везде, где реализована виртуальная Java-машина (JVM). Достаточно один раз хорошо сделать (строго следуя спецификациям) JVM, и у вас будет работать любое программное обеспечение, иногда даже быстрее ассемблерного кода, написанного неспециалистом. Компилятор конкретной виртуальной машины уже оптимизирован профессионалами под ту платформу, на которой она реализована. Поэтому Java-приложения работают очень быстро.
   Вы сказали — компилятор, то есть здесь как бы двухэтапная компиляция?
   Д.Г.: Да, технология даже состоит, скорее, из трех этапов: в среде разработки пишется программа на Java, вы отлаживаете ее там и встроенным компилятором получаете универсальный байт-код. Затем вы этот код можете запустить на любой виртуальной машине, где он будет оптимально откомпилирован под конкретный процессор.
   Ну хорошо, давайте поговорим об OpenSolaris[opensolaris.org/os. Суть проекта — в открытии исходных кодов операционной системы Sun Solaris. Однако лицензия CDDL, под которой распространяется ее код, не эквивалентна лицензии GPL, хотя и имеет с нею много общих положений]. Какие надежды вы на нее возлагали и оправдались ли они?
   Д.Г.: Язык Java открыт уже больше десяти лет, и это очень способствовало разработке и совершенствованию технологии. Многие проблемы были обнаружены на самой ранней стадии, и мы благодарны энтузиастам, которые помогли их исправить. Проект OpenSolaris стартовал совсем недавно, так что выводы делать рано. Мы, разумеется, ожидаем позитивный результат. Главная цель этого шага — вовлечение в совершенствование продукта наших клиентов. Мы хотим их сделать нашими партнерами.
   Мы не только ждем развития Solaris от сторонних разработчиков, в других системах уже появляются и наши решения. Например, утилита DTrace, которой мы по праву гордимся, портирована во FreeBSD.
   Не планируете ли вы выйти с Solaris на рынок конечных пользователей?
   Д.Г.: Мы вообще очень любим конечных пользователей, однако пока нет идеи, каким образом на этом рынке можно работать. У нас нет бизнес-модели. Нужно иметь обширную службу поддержки. Операционная система должна быть протестирована и отлажена на большом количестве оборудования и т. п. В общем, мы пока не думаем на эту тему.
   Участвует ли Sun в государственных программах, включая такие неоднозначные, как Digital Passport?
   Д.Г.: Да, мы участвуем во множестве различных государственных программ. Наиболее тесно компания сотрудничает с государственными учреждениями Бразилии. Там уже работают наши решения в системе здравоохранения и в налоговой службе.
   А.Б.: Насколько я знаю, в России Sun не работает напрямую с клиентами, но наши партнеры участвуют в подобных программах. Однако представителей Sun нередко приглашают на правительственные совещания для консультаций.
   Java использовался в марсианском проекте, вы не расскажете подробности?
   Д.Г.: В первой части проекта использовался язык Java, но только в наземном оборудовании. В самих марсоходах, которые бороздят поверхность четвертой планеты, применены другие технологии. Однако американский президент решил поскорее отправить на Марс человека, и вторая часть проекта, связанная с посылкой автоматизированных систем, приостановлена. Хотя многое уже было сделано.
   Вы, конечно, знаете об ANSI C, ведь это тоже универсальный стандартизованный язык, так зачем понадобилась Java?
   Д.Г.: Если писать сложные программы, особенно для очень разных платформ, то проект на основе ANSI C будет долгим и дорогим. На Java решение таких задач обходится вдвое дешевле. К тому же у Java более понятный код и проще отладка. В программе на С очень трудно искать ошибки, так как место ошибки и место ее проявления могут быть сильно разнесены в тексте программного проекта. Например, если вы ошибетесь в хедере[Часть программы на С с описаниями переменных и классов, которая может быть вынесена в отдельный файл], то выловить эту ошибку порой невероятно трудно. В Java баги так глубоко не прячутся, и обнаружить их чаще всего не составляет труда.
   А почему программы на Java медленнее, чем на С или ассемблере?
   Д.Г.: Я бы так не сказал. В клиент-серверных приложениях они быстрее программ на С или .NET. Откровенно говоря, разработчики нередко слишком увлекаются дополнительными сервисами и «примочками» на Java. Хорошо написанный Java-код часто работает быстрее приложений на языке C. То есть скорость во многом зависит от квалификации программиста, и мне кажется, что программист средней квалификации напишет на Java лучший код.
   Касательно ассемблера следует отметить, что в реальном времени Java работает очень быстро. Если проект большой, то делать его на ассемблере трудно и дорого. В первую очередь — из-за сложности отладки. К тому же такие программы практически не масштабируются, плохо защищены, имеют нечитаемый код.
   Теперь личный вопрос: как ваша общественная деятельность в должности «Джеймса Гослинга» сочетается с работой программистом?
   Д.Г. (смеется): Очень трудно оценить. Да, сейчас практическая часть сокращается, я все больше времени провожу на различных встречах и конференциях, подобных этой. Часто встречаюсь с клиентами, но не для того, чтобы убедить их в чем-то, а скорее, чтобы всегда быть в курсе их потребностей. Но программы я все еще пишу.
   Джеймс, а что для вас значит «корпоративная дисциплина»?
   Д.Г. (смеется): Я не заметил никакой корпоративной дисциплины. Мне иногда кажется, что все у нас происходит хаотично и спонтанно. Наша система управления очень децентрализована, как мы шутим — «e-mail management». То есть большинство решений мы принимаем, обмениваясь сообщениями по электронной почте.
   А.Б.: Да, у нас управление не на основе авторитета, а только на основе компетентности. Выбор стратегии никогда не бывает единоличным решением. У нас нет ситуаций: «Будет так, потому я выше по должности». Прав тот, кто лучше знает предмет. Прежде чем принять то или иное важное решение, мы всегда выслушиваем мнение экспертов.
   Вы знакомы с Ричардом Столменом[Richard M. Stallman — основатель и руководитель Free Software Foundation, известный борец за свободу программного обеспечения. Активно критиковал положения лицензии OpenSolaris]?
   Д.Г.: Хм, это странное знакомство. Да, мы встречались, и я не хотел бы публично обсуждать наш разговор. Но я подал бы иск на него за нарушение интеллектуальной собственности. Не могу сказать, что мы друзья.
   И напоследок такой вопрос: я знаю, что дома вы работаете за компьютером производства Apple, с чем связан ваш выбор? Почему не Sun?
   Д.Г.: Потому, что Sun не делает лэптопов. Почему не PC? Потому, что они очень неудобные, а их дизайн ужасен. Когда работаешь с ноутбуком, часто открываешь и закрываешь экран. На PC, после открытия крышки, приходится ждать кучу времени, пока система снова заработает, а Powerbook начинает работать сразу.
   Большое спасибо за интервью. Надеюсь, вы заглянете в ближайшее время и к нам в Москву.

Наука: На полпути к сверхчеловеку

   Брюс Лан (Bruce Lahn) из Чикагского университета сообщил в журнале Science, что биологическая эволюция человеческого мозга продолжается и в настоящее время. Возглавляемая им группа исследователей изучала распространение двух генов, нарушение работы которых приводит к микроцефалии (резкому уменьшению размера мозга).
   Выяснилось, что у здоровых людей встречаются разные аллели (состояния) таких генов. Предположение, что эти аллели функционально идентичны, опровергается тем, что в их распространении среди населения нашей планеты наблюдаются следы действия отбора. Более старые аллели описанных генов чаще встречаются в Африке, но по мере расселения человека частоты эволюционно более молодых аллелей в популяциях возрастали.
***
   Гены, о которых идет речь, интенсивнее эволюционировали у предков людей, нежели в родственных группах млекопитающих. Можно допустить, что их нормальное функционирование не только спасает от микроцефалии, но и способствуют лучшему развитию мозга у здоровых индивидов. Значит, мозги коренных европейцев, азиатов и американцев «умнее», чем мозги коренных африканцев?
   Выводы Лана противоречат сложившемуся мнению о том, что примерно 50—100 тысяч лет назад направленная биологическая эволюция нашего вида прекратилась. С этого времени жизненный успех или неудача особи, как считают, стали определяться не столько врожденными задатками, сколько тем, чему она научилась. По традиционным представлениям, отбор в последнее время носил в основном отрицательный характер, отсеивая нежизнеспособных или «глухих к учебе» индивидов, а не давая преимущество высокоадаптивным или высокоинтеллектуальным.
   Изложенная точка зрения имеет важное политическое следствие. Если эволюция человека давно прекратилась, нет оснований придавать принципиальное значение отличиям между расами, которые сформировались позже этого срока. Здесь действует такая логика: если мы укажем на существование каких-либо отличий между определенными группами людей (представителями разных рас, мужчинами и женщинами, брюнетками и блондинками и т. п.), кто-то сделает вывод, что одна из этих групп лучше, чем другая. Такой вывод может привести к действиям, не одобряемым в свободном демократическом обществе, и ответственность за эти действия должны нести исследователи, посмевшие сравнивать. Отсюда следует, что никаких отличий между разными группами людей не должно быть вообще, а исследования, направленные на их поиск, аморальны.
   Увы, это не шутка. Феминистские общества публикуют многостраничные работы, где доказывают, что между мужчинами и женщинами нет никаких биологических отличий[В том числе и в работе мозга. А это, конечно, не так: недавно British Journal of Psychology, например, опубликовал статью ученых из Ольстерского и Манчестерского университетов, которые показали, что мужчины имеют достоверно более высокий IQ. Кстати, это может отчасти объясняться примерно на 10% большим объемом мозга у мужчин, чем у женщин (впрочем, не следует забывать, что тесты на IQ далеко не идеальное мерило интеллекта)], а голливудские продюсеры следят за тем, чтобы в экранной реальности не все представители того или иного нацменьшинства оказались отрицательными персонажами. Конечно, при беспристрастном рассмотрении проблема оказывается дутой. Отношение «лучше-хуже» является производным от отношения «хорошо-плохо», которое применимо только к ситуациям морального выбора. А какой моральный выбор может быть в том, что персона А родилась женщиной, способна рожать и вскармливать грудью детей, а персона Б родилась мужчиной и никогда не станет матерью?
   Ситуация усложняется, когда мы переходим от сравнения полов к сравнению рас, как в работе Лана. При всей сложности отношений полов мужчины без женщин и женщины без мужчин пока не обойдутся. Эволюция вшила в большинство из нас механизм интереса и влечения к иному полу. Увы, в отношении представителей других рас биологически предопределена скорее ксенофобия. Плохо, когда то, к чему подталкивает примитивный групповой эгоизм, поддерживается рациональными аргументами. «Научные» объяснения расизма нанесли человечеству немалый вред и подорвали авторитет соответствующих разделов антропологии.
   Вероятно, следует блокировать не научные исследования, из которых можно сделать неверные выводы, а сами эти выводы. Но в любом случае результаты подобных исследований следует хорошо обосновывать. И в отношении выводов Лана в воздухе повис ряд вопросов. Зарегистрирован отбор по двум генам, влияющим на мозг. Означает ли это, что отбор связан именно с совершенствованием формирования мозга, а не, допустим, устойчивостью к инфекционным болезням?
   Приведем пример. У зеленых лягушек встречаются два вида окраски: с полосой по хребту и без нее (пятнистая). Их развитие определяется одним геном. Анализ частот двух окрасок показывает, что их соотношение в популяции меняется в течение года. Дело в том, что одна из них более холодостойка и лучше переносит холодные зимы, а другая более устойчива к токсинам и лучше выживает в загрязненных водоемах. Наблюдатель, который решил бы, что отбор направлен на наличие или отсутствие полосы на спине, допустил бы серьезную ошибку.