В этот весенний день мы решили навестить творческую лабораторию известного российского программного разработчика Андрея Бабушкина, чтобы узнать последние подробности о знаменитом Архиваторе Бабушкина из первых рук. Ранее Андрей стал широко известен своим инновационным антивирусом, поэтому мы особенно заинтересовались его объявлением о начале разработки принципиально нового архиватора на базе недавно открытого «кипринг-эффекта» и хорошо известных в математике цепных дробей. Андрей стал ярким олицетворением отечественной реформы образования, на деле демонстрируя инновационный вектор развития для всего молодого ИТ-поколения.
И пока сырой концепт его уже работающего кода выложен на Github, а специалисты до хрипоты спорят о возможности и целесообразности подобного необычного архиватора, мы решили узнать все подробности непосредственно у первоисточника — самого разработчика Babushkin Arch.
— Как было анонсировано, архиватор Бабушкина будет полностью базироваться на недавно открытом европейскими специалистами «эффекте кипринга». Не могли бы вы рассказать читателям dev.by более подробно, в чем суть кипринга?
— Любой современный файл — это последовательность байт. Из-за сложнотехнической специфики, в которую я сейчас не буду углубляться, какая-то часть этих байт является «мусорной». Это попросту служебно-сервисная информация, которая на самом деле не несет никакой полезной нагрузки и является лишь отражением энтропии окружающей среды. При этом заведомо известно, что реально ценная информация более-менее равномерно распределена по всему объему файла. Таким образом, если отсеять этот «мусор», мы можем безболезненно избавиться примерно от 30—40% содержимого файлов. Для этого и понадобился «эффект кипринга», который и позволяет, образно говоря, «отделить мух от котлет».
Единственное ограничение: данный эффект применим лишь для больших файлов с размером более 100 000 Кб. Кроме того, в рамках логического развития открытого «кипринг-эффекта» применяются и другие, более радикальные методы. Как пример: наш архиватор сразу после установки рекурсивно обходит файловую систему компьютера, после чего деинсталлирует все обнаруженное избыточное программное обеспечение. Все делается в приятном фоновом режиме под ненавязчивую музыку, поэтому пользователям нет никаких причин волноваться или опасаться каких-то «тормозов» или негативных последствий.
— Можно более подробно насчет последнего: что в первую очередь подвергается кипрингу?
— Например, мои личные исследования показывают, что .Net Framework на 96% компьютеров из тех, что я видел, совершенно не нужен. Далее, Internet Explorer 9/10 — ими же все равно никто не пользуется, тем более ими нарушается антимонопольное законодательство! Поэтому мы все это дело аккуратно удаляем из пользовательской системы во благо самого пользователя. Или вот зачем в системе файл размером 2 Гб, если атрибуты доступа файла показывают, что к нему обращались в последний раз 5 лет назад?
В среднем каждый новый запуск нашего архиватора освобождает около 30% объема винчестера.
Заархивированные методом кипринга видеоданные
— Я правильно понимаю, что при работе архиватора сжимаемые файлы можно не указывать?
— Совершенно верно! Это так называемый «тихий режим работы», то есть при нехватке места на «винте» достаточно просто запустить наш архиватор, через пару минут его можно закрыть и продолжить работу дальше. Разве что может иногда на перезагрузку компьютера запрос поступить — многие лишние файлы, к сожалению, «лочатся» самой системой; мы сейчас работаем над этой проблемой.
Но это в режиме «по умолчанию». А так, конечно, можно указать конкретный файл, чтобы сжать и его. Сначала все сжималось до 10%, потом удалось повысить плотность архивации до 30%, ну а теперь мы вышли на 80—90%.
— Можно еще немного про .Net: сейчас на нем много чего понаписано, к примеру тот же 1С .Net…
— Нужно настроить список исключений… вообще, наша эвристика позволяет «задетектить» установленные в системе специализированные продукты типа Visual Stusio и так далее, при наличии которых удаление .Net автоматически признается нецелесообразным. Если мы видим, что подобных вещей много, включается блок пользовательских предпочтений, который подстраивается под вкусы конкретного пользователя.
Ну, а вообще говоря — я за нативный код, так сказать за традиционную ориентацию. Современному программисту нужно быть проще, поближе к процессору... я все эти новомодные виртуальные надстройки не приемлю — все это «ложные ценности».
Процесс кипринга видеоданных в динамике
— А что с Java, тоже удалять?
— Да вы не волнуйтесь так, Ява у нас и так эмулируется на уровне ядра архиватора, что же мы совсем звери, что ли? (улыбается, после паузы, серьезно). Тем не менее у нас есть все основания не доверять безопасности импликации родной виртуальной Java-машины, поэтому я переписал ее на Visual Basic’е.
— Как насчет разархивирования данных обратно? Обратим ли «эффект кипринга»?
— (нервно барабанит пальцами по столу) Этот вопрос сейчас находится на заключительной стадии проработки, давайте просто подождем, не будем торопить события.
— Иначе говоря, как скоро пользователи смогут «пощупать» готовую публичную версию вашего архиватора?
— Надо честно признаться, что продукт еще сырой и пока не совсем готов, изучение «эффекта кипринга» еще в полном разгаре. Так, архивация больших объемов данных время от времени приводит к неприятным сбоям в файловой системе, например, альтернативные потоки данных мы используем для хранения тех самых 30—40% «лишней информации». К сожалению, пока этот метод не всегда срабатывает должным образом, но мы не теряем надежды.
Что касается сроков выхода — думаю, что в конце 2013 года наш архиватор выйдет сразу на всех крупных торрент-трекерах мира.
— В самом общем виде: что из себя представляет ваш архиватор?
— Так же, как и наш антивирус, новый Архиватор Бабушкина будет состоять из большого количества сторонних модулей-утилит, найденных мною и моими друзьями из «ВКонтакта» в интернете. Это так называемая «оверлейная модель построения» больших программ. Сложность в том, что не все из найденных утилит поставляются с документированными ключами и спецификациями, поэтому у нас они сначала подвергаются reverse engineering с целью определения полного списка доступных в них команд. Для примера: на фотографии ниже демонстрируется повседневная работа специалиста по перебору всех возможных команд очередной консольной компоненты будущего архиватора.
— Хорошо, кипринг позволяет драматически увеличить процент сжатия файлов, но не увеличит ли это время архивирования?
— Скорость работы традиционных архиваторов, конечно, никуда не годится. Ну, поймите: у меня канал подключения к интернету 10 Mбит/с, получается, чтобы отправить видеофайл в 100 Мб своему коллеге, мне нужно около 10 секунд, а чтобы заархивировать его через устаревший WinRar — может понадобиться несколько десятков минут. Ассиметрия очевидна, поэтому именно архиватор сейчас — узкое место современной компьютерной индустрии.
— Кстати, о видеофайлах. Вы публично пообещали, что Babushkin Arch будет сжимать стандартные 2 Гб-фильмы в файлы-архивы размером 20 Кб. Как это будет выглядеть в реальной жизни?
– Это действительно так, видео поддается кипрингу наиболее эффективно. Больше того: 80% всего существующего видео можно вообще безвозвратно удалить без потери какого-то особого смысла или последствий для своей жизни. Технологическая тонкость в том, чтобы автоматически точно выделить именно эти 80% видео. Уверен, в следующей версии архиватора мы сможем решить и эту задачу, высвободив не только еще больше места на компьютере пользователя, но и дав ему больше свободного времени.
— Продолжая тему практических приложений вашего архиватора: я знаю, Google уже лицензировал Babushkin Arch Engine. Можно рассказать об этом интересном совместном проекте?
— Да, многие, наверное, уже видели версию Google Maps, сгенерированную моим архиватором для различных 8-битовых устройств на базе популярной ОС Android. Карты — это достаточно тяжелый контент, и попытки как-то ужать их в 8 бит делались и раньше, но только кипринг позволил генерить «на лету» весь картографический сервис в версии, приемлемой даже для подобных маломощных устройств.
На самом деле тут предстоит еще очень много работы, я думаю, вы уже слышали о новых разработках фирм Apple и Google — высокоинтеллектуальных наручных часах, последние из которых будут работать на Android и использовать принципиально новую версию высокоэффективного кипринга контента, сжимающую данные до 80—90% и продвигаемую нами под эксклюзивным брендом Laiki. Пока не могу рассказать об этом подробней, но поверьте — настоящий кипринг еще ждет нас впереди.
— Кстати, Андрей, как практикующий программист что предпочитаете больше: аутсорс или продуктовое направление?
— Я, конечно, понимаю весь тревожный подтекст этого вопроса, но попробую ответить откровенно. Конечно, с одной стороны, в аутсорсе сейчас квартиры выдают в кредит, чтобы лучше зафиксировать человека в пространстве, и если чуточку потерпеть, еще лет 5, думаю, будут и более серьезные вещи предлагать… Опять же, лично я считаю, что нужно было сразу честно переходить к бартеру, а то все это какие-то полумеры.
Но, с другой стороны — много ли вы видели антивирусов и архиваторов, написанных по аутсорс-модели? И опять же… у меня своя исследовательская работа, «кипринг-эффект», бюджетники у меня есть… нет, мне в аутсорс нельзя.
— Хорошо, тогда давайте сменим тему. Почему-то когда я читаю новости о Денисе Попове, о ваших антивирусах и архиваторе или самое свежее — о московских преподавателях информатики, основавших клуб бессмертных и облучающих друг друга рентгеновским излучением, я почему-то сразу вспоминаю о нашей реформе образования. Как вы считаете, эта реформа удалась?
— Без образования никак нельзя — это аксиома. Если бы не эта реформа, я не думаю, что мне удалось бы добиться всех поставленных перед собой целей. Взять, например, связывание GUI, написанного на Visual Basic'е, и ядра антивируса, созданного мною на пакетном языке .bat. От коллег я слышал про «симблер» (прим. автора: написание программ на Си с множеством ассемблерных вставок), мною же по полной аналогии были реализованы .bat-вставки в P-код языка Visual Basic. Можно сказать, что старый-добрый «васик» теперь обрел второе дыхание, столь удачно расширенный перспективным языком программирования.
— Специалисты при анализе вашего антивируса насчитали использование в рамках одного проекта более 5 языков: ассемблер, .bat, Visual Basic, C++, VBS. С чем связана такая гремучая «какофония» самых разных технологий?
— Как я уже говорил, само ядро моего антивируса написано на языке .bat, оно интегрируется глубоко в операционную систему — самые серьезные вещи я предпочитаю писать на наиболее высокоуровневом языке из доступных, чтобы исключить любые логические ошибки в принципе. Все остальные обвязки создавались под каждое конкретное направление — например, листинг системных процессов лучше реализовать на С, графическую оболочку я решил сваять на «васике»…
— Для чего был задействован ассемблер?
— Для наиболее критичных, узких мест в программе. У меня он по принципиально новому алгоритму динамически генерирует батник-ядро, которое уникально для каждой отдельной машины и инсталляции. Ассемблер переводит процессор в режим трассировки, перехватывая отладочное прерывание, и в пошаговом режиме генерирует машинозависимый код, чтобы предотвратить несанкционированный перенос bat-ядра архиватора на другой компьютер и попутно пресечь попытку реверса алгоритма этого процесса под отладчиком потенциальным злоумышленником. Кроме того, в систему инсталлируется резидентный драйвер, который контролирует целостность кода батника, сверяя CRC файла после каждого обращения к нему, предотвращая любую его правку и повреждение (функция самовосстановления).
Кстати говоря, у меня часто спрашивают, почему я сохраняю все настройки в своих программах в cpp-файлах, например, так:
#pragma once #include stdio.h #include windows.h main () { int time=170 int inetscreen=1 int confirmver=1 int acttime=60 int flashantiv=1 }
Из описания приведенного выше алгоритма очевидно, что на каждой конкретной машине, а также после изменения любых настроек, происходит динамическая перекомпиляция проекта на С++, чтобы добиться максимально возможной оптимизации к данной конкретной конфигурации/железу пользователя.
— Что насчет деления на 0? Вы говорили ранее, что «тоже утилизировали эту операцию»?
— Это прерывание перехватывается, устанавливается наш собственный обработчик для нужд процесса дешифровки основного кода.
— Если позволите, еще один деликатный вопрос — откуда такая страсть к пакетному языку .bat?
— С детства являюсь сторонником массиво-ориентированного программирования, посему считаю, что в названном пакетном языке эта парадигма реализована наиболее удачно, никаких альтернатив не вижу (задумывается), разве что еще PHP…
— Андрей, в связи с этим серьезный вопрос. Есть такое распространенное мнение, что если студент компьютерных наук рано начинает работу (например, со 2—3 курса), этим он допускает стратегическую ошибку. То есть когда у него есть реальный выбор и возможность — посетить лекции по математике или «покрюнчить» курс комбинаторики, он, пользуясь своими тактическими интересами, халтурит начинающим кодером в какой-нибудь сомнительной софт-компании либо вообще, как и вы, «создает свой собственный продуктовый бизнес». Как вы считаете, столь ранний старт не станет для этого специалиста в будущем, когда уже действительно нужно будет работать на полную катушку и времени на ту же комбинаторику не будет, фальстартом в его карьере?
— Лично я считаю, что нужно сразу учиться зарабатывать деньги. Знания того же языка .bat нужно сразу конвертировать в «наличку», потому что вкусы публики очень переменчивы. Короче — «куй железо, пока горячо» (Андрей загадочно улыбается, помахивая своим знаменитым USB-фломастером).
— Андрей, хочется пожелать не обращать внимания на критику, а научиться на нее реагировать конструктивно. Не хотелось бы, что вы, как и ранее затравленный изобретатель «принципиально новой BolgenOS» Денис Попов, решили совсем уйти из ИТ. Кстати, и на гитаре вы тоже играете, как и Денис…
— Гитара подождет, а пока я «как один из разработчиков Windows 8» заинтересован в постоянном развитии. В частности, буду обязательно выходить за пределы чистого программирования, потому что сам по себе кипринг имеет невероятные масштабы практического применения. Например, по примеру Ричарда Столлмана решил заняться производством стильной одежды для программистов, в частности, выдам небольшой секрет — мною налаживается выпуск специальных кипринговых галстуков для программистов. Экономический секрет в том, что мы смогли сэкономить на дизайнере, так как дизайн и расцветка галстуков динамически генерируется еще одной моей принципиально новой разработкой, написанной на стыке промышленного дизайна и программирования.
Второе узкое место, закрытое нами, — программисты не любят шопинг и редко когда вылазят из-за своего компьютера. И если у женатых еще не все так плохо, то холостякам приходится совсем туго. Именно с учетом этого тренда мы собираемся работать по принципиально новому алгоритму доставки — мы предлагаем распечатывать наш галстук прямо на рабочем месте, используя подручный 3D-принтер. Наши галстуки не только улучшат внешний вид и повысят корпоративную культуру, но и произведут революцию в традиционном текстильном бизнесе.
— Только галстуки у вас какие-то 8-битовые получились, игру Mario напоминает сразу…
— Обсчет оригинальной модели пока занимает слишком много времени, поэтому именно тут и пригодились наработки моего архиватора и его принципиально новый алгоритм Laiki.
— Хорошо, а для девушек-программисток что стильного с кипрингом предложить можете?
— Пока лишь бантик, на что-то сложное вычислительных ресурсов не хватает. Юноши, кстати, тоже могут воспользоваться.
— Андрей, напоследок: как вы вообще относитесь к ИТ-сообществу, которое очень зло раскритиковало вашу флешку-фломастер (антивирус, я считаю, пострадал уже из-за флешки, просто попав под горячую руку)?
— Я очень уважаю всех айтишников, среди них много по-настоящему умных и талантливых людей, но есть и одна распространенная слабость, жертвой которой я стал, — практически никто не разбирается в совершенно новых алгоритмах, именно которыми я очень плотно и занимаюсь. И это в то время, когда правительство провозгласило новый курс на модернизацию и инновации?!
Думаю, со временем должно сформироваться принципиально новое комьюнити, где будут публично разбираться все операционные системы, созданные школьниками «с нуля», все их совершенно новые алгоритмы, а также все другие, порой неожиданные для людей старой закалки технические решения (я имею в виду, например, свою USB-флешку).
Осталось только дождаться этого благословенного времени — новое реформированное образование, уверен, нам в этом всемерно поспособствует…
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.