Олег Калашников: "На Ассемблере писать очень интересно"

В "Компьютерных вестях" часто появляются интервью с известными программистами, создателями интересных интернет-проектов, авторами компьютерной литературы. Олег Калашников объединяет в себе этих трёх персонажей. Он программирует и владеет собственной хостинговой компанией, является создателем портала RusFAQ.ru, а по его учебникам тысячи человек изучают Ассемблер.


О себе

Мне 31 год, женат, сыну 7 лет, родился в Минске, живу в Москве. За последние 10 лет попробовал себя в разных областях: системное администрирование, программирование, юриспруденция, продажа товаров, вёрстка и нарезка сайтов, веб-программирование, доводилось работать супервайзером тотализатора, а также занимать должность переводчика английского и немецкого языков. В настоящий момент являюсь владельцем хостинговой компании "Московский хостер" и портала RusFAQ.ru.


Как у Вас возникла идея проекта RusFAQ.ru?

Идея создания подобного портала родилась чуть позже открытия рассылки "Ассемблер? Это просто! Учимся программировать". После нескольких выпусков мне на почту стали приходить вопросы от подписчиков. Многие из этих вопросов дублировались. Я решил создать сайт, на котором выложить часто задаваемые вопросы по Ассемблеру. В итоге получилась некая элементарная система вопросов и ответов: посетитель задавал вопрос не напрямую на мой электронный адрес, а через специальную форму на сайте. Далее этот вопрос с моим ответом уходил в специализированную FAQ-рассылку, которая считалась приложением к основной рассылке. Со временем отвечать на вопросы стали другие посетители и читатели рассылки по Ассемблеру. Примерно через 6 месяцев посетителей стало гораздо больше, и я решил попробовать открыть подобные FAQ-рассылки по другим направлениям: Delphi, Pascal, C++, базы данных и т.д.

 

И вот уже к 2003 году на портале было около 50 разных рассылок. Дальше проект начал развиваться гораздо интенсивней...

Какие технологии в настоящее время Вы используете для развития существующих проектов? Какие из них, по Вашему мнению, самые удачные?

Технологии в данном случае можно разделить на две категории: программные средства и технологии работы в команде.

Что касается программ и языков программирования, то мы используем в работе языки программирования Perl, PHP, JavaScript; операционные системы Windows и FreeBSD.

Работая командой, мы, прежде всего, исходим из того, что каждый человек индивидуален и силён в своей области. Единое целое больше суммы его частей. Иными словами, вместе мы сила!

Также мы не делим технологии на удачные или неудачные. Правильней было бы сказать - эффективные и неэффективные для выполнения определённой задачи. Каждая технология имеет свои сильные и слабые стороны. Например, небольшие сайты лучше писать на PHP, в то время как сложные проекты - на Perl. Далее мы исходим из способностей членов нашей команды. Если наш программист знает хорошо Perl, а PHP посредственно, то ему нет смысла писать даже маленький сайт на PHP, т.к. в этом случае на Perl он будет написан быстрее.

Не планируете ли в ближайшее время начать новые проекты в духе Web 2.0? Как вообще относитесь к буму Web 2.0 и социальных сетей?

Любое новое я всегда воспринимаю с энтузиазмом. Мир развивается, количество информации растёт каждый день, пользователей Интернета во всём мире становится всё больше. Перед человечеством уже встаёт задача не просто "набить Интернет информацией", а группировать эту информацию для более быстрого поиска. Я также вижу тенденцию сделать "всё в одном". Например, вспомните, каким был "Яндекс" в 2001 году, и посмотрите, какой он сейчас. Это уже не банальная поисковая машина, а целый комплекс услуг, который включает в себя огромное количество дополнительных сервисов: карты, словари, интернет-магазины, блоги, новостные ленты, киноафиши, ТВ-программы, курсы валют и т.д. То же самое можно сказать о mail.ru, google.ru и о других популярных порталах. Т.е. я вижу тенденцию создания гиперпорталов, как в своё время обычные магазины дорастали до супермаркетов. Это вполне естественный процесс, который будет постоянно развиваться в геометрической прогрессии. Не успеем и глазом моргнуть, как появится Web 3.0, 4.0 и т.д. Может, они будут называться по-другому, но сути это не меняет. Структура хранения информации будет другая, поиск и доступ к ней также может кардинально отличаться от сегодняшнего.

Поэтому назвать бумом Web 2.0 я могу лишь с большой натяжкой, т.к. развитие - это вполне естественный процесс. Ведь, согласно закону Мура, количество информации во всём мире удваивается каждые 1,5 года. Сегодня Web 2.0 успешно справляется с текущими объёмами, а завтра появится более совершенная версия...

Если бы Вас попросили назвать самый лучший проект Рунета, какой бы Вы назвали?

Yandex.ru, Google.ru, Mail.ru, Rutube.ru, RBC.ru, а также многие другие, которые ориентированы прежде всего на посетителя, которые стремятся сделать Рунет лучше...

А теперь давайте перейдём к Вашим книгам. Начнём, наверное, издалека: расскажите, пожалуйста, как Вы пришли к программированию на Ассемблере?

Вернёмся немного назад.

1989 год. "Спектрум". Игры. Бейсик. CP/M.

1992 год. ЕС-1840/1849. MS-DOS 3.30. Компьютерные центры. Игры на пятидюймовых дискетах. Отсутствие литературы. Norton Commander с "самопальной" русификацией.

1995 год. IBM PC/AT 386/486. Windows 3.11/95. Интернет по модемам.

Думаю, что многие люди, которым сейчас от 27 до 35 лет, прекрасно помнят эти времена. Каждый по-своему тратил десятки и сотни часов перед монитором: кто-то играл в Wolf3D, кто-то учился справляться с операционными системами, кто-то осваивал языки программирования.

В то далёкое время мне на глаза попадается книга Р. Джордейна "Справочник программиста IBM PC/XT/AT", которая изменяет моё отношение ко многим вещам, в том числе и к компьютерам. Имея небольшие знания в области программирования на Ассемблере для "Спектрумов", идея писать программы на этом языке для "серьёзных машин" меня захватила целиком. Т.к. мнемоника языка - это сокращения английских слов, я параллельно читал много "самоучителей английского языка". Я захотел создать что-то своё, стоящее. Тогда не было Интернета, не было столько информации, сколько сейчас. Джордейн был моим единственным учителем.

На Ассемблере писать очень интересно. Программист как бы проникает внутрь процессора и напрямую руководит его действиями, отдаёт прямые команды. Это и есть самый низкий уровень программирования. В нём есть нечто захватывающее. Представьте, что вы можете изменять ход работы практически любых программ. Т.е., например, "заставить" Norton Commander не копировать файлы, а просто удалять их. А вместо удаления файла - заменять в нём все буквы "о" на "а". Создаётся ощущение некоторой власти над работой машины. Т.е. именно то, что не способны понять программисты, пишущие на языках высокого уровня: Бейсик, Паскаль и т.п.

Ассемблер интересен не только этим. Все программы, написанные на языках высокого уровня, переводятся в машинный код. Обратной дороги нет и быть не может. Но весь интерес в том, что машинный код легко "на лету" переводится в Ассемблер. Это даёт возможность вносить изменения напрямую в скомпилированные файлы типа exe. Именно таким образом раньше взламывались программы.

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

Как только я столкнулся с Ассемблером и понял всю его мощь, я начал экспериментировать, читать дополнительную литературу, которая в те времена стала потихоньку появляться на прилавках...

Чтобы кратко ответить на вопрос о том, как я пришёл к программированию на Ассемблере, достаточно назвать ту самую первую книгу Роберта Джордейна, с которой всё и началось... Но это не считалось бы полным ответом, если бы я предварительно не постарался передать атмосферу тех годов, когда я начал свой путь в познание Ассемблера...

Скажите, а тяжело ли было писать книгу по Ассемблеру, и как вообще появилась её идея?

После того, как я осознал возможности Ассемблера, попробовал его на практике, получил опыт работы с ним, я захотел поделиться этим с остальными людьми. В 2000 году я начал выпускать бесплатную массовую рассылку "Ассемблер? Это просто! Учимся программировать". На неё было подписано порядка 18000 человек. Такого интереса со стороны подписчиков я, конечно же, не ожидал и был очень рад тому, что люди готовы принимать информацию, они учатся чему-то новому, начинают что-то делать, и у них получается!

Всего было сделано 32 выпуска рассылки. В них содержалась почти вся информация об Ассемблере, которая раскрывала его возможности в теории и на практике. Разумеется, мною был проделан большой труд. К каждому выпуску я подходил с душой, много раз перечитывал его перед отправкой, вносил коррективы, добавлял что-то, а уже потом рассылал. Но этот труд мне доставлял только радость, т.к. в то время я фактически занимался своим любимым делом. А работа, которая доставляет удовольствие, может приносить только радость и чувство удовлетворения во всех его проявлениях.

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

Легко ли было писать эту книгу? Учитывая, что рассылки я стал выпускать в 2000 году, а книга вышла в 2005, то на всё это ушло 5 лет. Разумеется, все пять лет я не сидел день и ночь перед монитором. Но, в целом, на написание книги у меня ушёл год непрерывной работы.

Планируете ли ещё книги, и если да, то какие?

Это будет другое направление, работа многих людей одновременно. Материал будет основан на вопросах и ответах портала RusFAQ.ru. Но сейчас рано говорить об этом, т.к. материал только готовится...

Раз книги по Ассемблеру востребованы, значит, востребован и сам язык. А какова, как Вам кажется, сейчас позиция Ассемблера на рынке средств программирования?

В настоящий момент Ассемблер востребован в узких областях: написание драйверов устройств, ядра операционной системы, программ, вшитых в ПЗУ, а также любых других критических участков кода, которые требуют максимально быстрого выполнения и для которых также важен размер итогового кода. Практически все программы в настоящее время пишутся на языках высокого уровня, например, C++ с ассемблерными вставками, что повышает скорость и эффективность их работы.

А программисты на Ассемблере сейчас востребованы?

Программистов, знающих только Ассемблер, мне ещё не доводилось встречать. Если человек знаком с этим языком, то он обязательно освоит и другие языки программирования. Однако, знание Ассемблера считается большим плюсом для программиста при принятии на работу.

Спасибо за интересное интервью!

Интервью провёл Вадим СТАНКЕВИЧ

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

Номер: 

07 за 2008 год

Рубрика: 

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

Комментарии

Страницы

Аватар пользователя Маша
Спасибо Олегу! Его рассылка была самым серьезным толчком в изучении асемблера.
Аватар пользователя Денис
> Однако, знание Ассемблера считается большим плюсом для программиста при принятии на работу.

это в 2008-м то году?) не смешите уважаемый)

Аватар пользователя Anatol
Считается плюсом или нет, но вот вспоминаю, как попался мне в эпоху 386 компьютера графический проигрыватель музыки. Испанский бесплатный. Всё удобное управление, отключение любого канала из MOD, эквалайзер, цветомузыка и никаких тормозов. А в то же время нормальный известный проигрыватель у меня заикался и тормозил.

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

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

Так что просто радостно видеть, что есть ещё люди, уважающие ассемблер. Когда их не станет, мы многим рискуем в будущем.

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

Аватар пользователя mike
>это в 2008-м то году?) не смешите уважаемый)

Как-то Вадим Станкевич обронил типа, что если вы на писали на "Делфи", то с чего начинали? Лично я с асма. И нередко, программируя на языке т.н. "высокого уровня", куда проще сделать вставку на асме, чем ломать голову.

Аватар пользователя Viacheslav Garmash
Денис, Ассемблер - это единственный язык, который понимает процессор. И вам тут совершенно правильно заметили, что без людей, знающих Ассемблер, прогресс просто остановится. Кто же будет писать драйверы для вашей видео- или аудио- карты? А кто напишет прошивку для вашего DVD или роутера, через который вы выходите в интернет? Пока существуют x86-е процессоры, Ассемблер будет жить, не зависимо от того, какие языки высокого уровня используются.

А работу программиста на Ассемблере можно найти даже в Минске и платят за неё больше, чем скажем за Java или .Net...

Аватар пользователя mike
>Ассемблер - это единственный язык, который понимает процессор.

Не так. Он и его не понимает. Без транслятора, ессно.

Аватар пользователя Savely
>Кто же будет писать драйверы для вашей видео- или аудио- карты? А кто напишет прошивку для вашего DVD или роутера, через который вы выходите в интернет?

Программист на C. В принципе проектов на чистом Асме сейчас немного. Но это - база. Знающий Асм знает, как работа его софта выглядит со стороны процессора. У него шире возможности отладки.

Ассемблер не нужно знать разве что Perl/JAVA-программерам, им это ничего не дает.

Аватар пользователя Логик
Savely > Ассемблер не нужно знать разве что Perl/JAVA-программерам, им это ничего не дает.

Им это даже вредно. Если они начнут писать на Java в стиле программирования на Ассемблере (да и на С). ;-)

Аватар пользователя mr
про зрп асм vs java и .net разработчиков ктото погорячился - ни в одной стране мира она не выше

а в минске не больше 10 мест где на нём пишут

Аватар пользователя Savely
>ни в одной стране мира она не выше

Примеры? Дефицит ASM-писателей (да и просто знающих) - налицо. Если есть дефицит - зп автоматом должна быть больше, чем у Java и т.п., которых вагон. И если в проекте нужен низкий уровень и в проекте кто-то заинтересован - придется нанимать знающего как минимум. Поскольку их (знающих/пишущих) мало - придется платить.

Страницы