Алхимики XXI века
АрхивКолонка ЗолотоваМечтаете об универсальном эмуляторе, который позволит переносить программы из одной операционной системы в другую, не принимая во внимание на тип процессора? Не далее как вчера компания Transitive Corp. сообщила о выпуске именно такого продукта.
Помните, когда-то давным-давно, когда ещё не было сформулировано понятие научного подхода, жили и работали в тиши своих древних лабораторий алхимики, верившие, что весь мир составлен из четырёх элементов, и тщившиеся превратить свинец в золото одним касанием привидевшегося, не иначе как в пьяном угаре, философского камня. Алхимиков ждало неизбежное разочарование, а псевдонаучную их теорию - завбение. Впрочем, алхимики были и будут во все времена, и даже в XXI веке есть место для тех, кто, выражаясь, конечно, уже фигурально, надеется осуществить завещанное предками. Ну, как ещё, если не компьютерной алхимией, можно назвать попытки запустить (без внесения изменений в код!) программу, написанную для одной операционной системы и процессора, на других процессорах и системах? Кажется, сами устои индустрии программного обеспечения пошатнутся, если пользователь сможет переносить программы, скажем, из-под Microsoft Windows на Mac OS X или Linux. Между тем, именно это обещают программисты англо-американской компании Transitive Corp. Вы ещё не слышали? Выпущенный ими вчера программный продукт QuickTransit (точнее, серия однотипных продуктов, "заточенных" под разные процессоры, но в данном случае это не важно) позволяет без потерь производительности, без доступа к исходным текстам, без предварительной перекомпиляции и внесения любых видимых изменений в код, запускать программы, разработанные для одной архитектуры и платформы под любым другим сочетанием процессора-операционки. Хотите, и Quake III для Linux работает в Mac OS X, хотите, и GIMP для Linux работает под MS Windows. Сенсация!
QuickTransit, который хочется назвать универсальным эмулятором, а создатели именуют продуктом аппаратной виртуализации (hardware virtualization product), представляет из себя своеобразный транслятор машинного кода, напоминающий по принципу действия автоматические переводчики с иностранных языков. В таких переводчиках выражение на одном языке сначала транслируется в выражение на некоем среднем, синтетическом языке, понятном только программе-переводчику, а уже после производится перевод его на язык, понятный человеку. Продукт Transitive Corp. действует в точности так же: как только вы попытаетесь запустить, к примеру, на x86-совместимом процессоре программу в кодах семейства PowerPC, QuickTransit на лету займётся переводом машинных инструкций программы, написанной для одного чипа (в нашем примере PowerPC-команды), в инструкции, понятные тому процессору, на котором производится выполнение (в нашем примере команды x86). Плюс, вступает в действие инструментарий мэппинга операционных систем: QuickTransit отлавливает обращения транслируемой программы к ОС и переводит их в вызовы той системы, под которой ведётся работа. Благодаря оптимизации в большинстве случаев производительность транслируемой программы достигает 80% от исходной.
QuickTransit, как минимум, интересный продукт, но на роль философского камня XXI века он, увы, не тянет. И дело здесь в тонких технических деталях, которыми популярная пресса, раздувающая сенсацию, как ей и полагается, пренебрегла. Достаточно внимательно прочесть описание программы на сайте компании-разработчика, чтобы понять, что абсолютной свободой переноса здесь и не пахнет. Во-первых, надеяться на относительно успешный перенос можно только в случае программ, написанных для UNIX-систем (обладающих строго однотипным программным интерфейсом). Транслируя обращения к операционной системе QuickTransit использует таблицу соответствия, которая для всех "Юниксов" (в том числе и Linux) одинакова. О Microsoft Windows, известной своими многочисленными API, упоминания на сайте Transitive нет вообще. Запуск Linux-программ в среде Windows с помощью QuickTransit (и обратное преобразование), о котором говорят некоторые очевидцы, вероятно, возможен, но с серьёзными ограничениями: переносимая программа должна строго соответствовать стандартам POSIX, что исключает перенос игр, да и вообще продуктов, использующих особенности своей операционной системы. Во-вторых, даже при переносе программы с одного варианта UNIX на другой, могут случаться проблемы, обусловленные хитрыми приёмами программирования. Если программист использовал в коде особенности конкретной аппаратуры или недокументированные особенности системы, никакие мэппинг и умная трансляция кода не помогут.
Так что QuickTransit и в самом деле может быть полезен, но только узкому кругу специалистов, которые, в частности, решают задачу переноса программных комплексов со старых машин на современные архитектуры. Впрочем, возвращаясь к алхимии: философский камень, как известно, не нашли, зато так было заложено основание химии. Кто знает, может быть и усилия Transitive Corp. (которая, конечно, не единственная и уж точно не первая, достаточно вспомнить, что многие современные CISC-микропроцессоры семейства x86 на самом деле работают на собственном внутреннем RISC-языке) со временем помогут стереть границы между архитектурами и платформами?