Меню

ЭЛЛОЧКА И КОМПЬЮТЕР

(С) Гаузер Э.Г., Баку, 13.06.01
website: www.erichware.com

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

Однако, как 20 лет назад, так и сейчас, сам по себе компьютер - это просто груда железа. Для того, чтобы он стал чем-то полезным, необходимо снабдить его соответствующими программами. Создание компьютерных программ - очень увлекательный, но и очень сложный процесс. Компьютер не понимает человеческого языка и для того, чтобы заставить его выполнять какие-либо действия, необходимо разговаривать на его языке. Собственный язык компьютеров за все эти годы не изменился: кроме сложения нулей и единиц компьютер ничего делать не умеет. Но этот его внутренний язык настолько далек от языка человеческого, что пользоваться им практически невозможно. Что же делать?

Практически одновременно с появлением компьютеров появились и т.н. языки программирования. Все они так или иначе были чем-то средним между языком человека и языком компьютера. Разные задачи требовали разных решений, разные авторы находили разные решения - в результате получилось так, что языков программирования (плюс разные их версии и диалекты) стало много. Фортран появился для решения математических задач, Паскаль - для обучения, Бейсик - для миникомпьютеров и тоже для обучения, Си - для создания системных приложений, Пролог - для создания экспертных систем и искусственного интеллекта, Клиппер - для написания программ поддержки баз данных. Есть еще Ада, Кобол, ПЛ, Форт, Фокал, Лисп и т.д., особняком стоит Ассемблер, который очень близок к собственному внутреннему языку компьютера.

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

Кроме того, любую программу, написанную на одном из этих языков, нужно еще перевести в команды компьютера, в тот самый его внутренний язык. Для этого применяются специальные программы-трансляторы, написанные специалистами и обычно на Ассемблере. Чем ближе язык программирования к человеческому, чем большие возможности он предоставляет, тем, соответственно, больше и сложнее и программа-транслятор. Современные системы программирования, включающие в себя текстовый редактор, транслятор, отладчик и различные вспомогательные компоненты, могут занимать несколько десятков Мб дискового пространства, да и на освоение всех их возможностей даже у профессионала уйдет не одна неделя, а то и не один месяц.

В принципе трансляторы делятся на компиляторы и интерпретаторы. Компиляторы переводят написанную человеком программу в машинные коды и после этого полученный выполняемый файл уже невозможно редактировать, корректировать и исправлять. Интерпретаторы работают с исходным (написанным человеком) текстом программы, читая каждую инструкцию, анализируя и выполняя ее. Работа с интерпретатором позволяет вмешиваться в процесс выполнения программы, по ходу дела внося изменения как в программу, так и в данные, с которыми она работает, но за это удобство приходится платить скоростью выполнения программы. Современные системы программирования обычно включают в себя как интерпретатор (для создания программы и ее отладки), так и компилятор, позволяющий перевести готовый продукт в машинные коды для последующего использования.

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

Из такой практической потребности и родилась идея создания совсем простого языка программирования с минимальным набором необходимых возможностей и простым синтаксисом, что, в частности, позволило бы создать компактный и простой транслятор. Такой язык, названный "Ellochka" ("Эллочка") по имени известного литературного персонажа, был создан мной в 1999 году. Для выполнения программ, написанных на этом языке, была создана программа "Dikar" (поскольку только дикарь мог понять людоедку-Эллочку).

"Dikar" представляет собой транслятор-интерпретатор. Он позволяет создавать и редактировать программы на языке "Ellochka" (для файлов с такими программами принято расширение ".ela"), а также выполнять и отлаживать их.

За прошедшие два года активного использования были созданы несколько версий как самого языка "Ellochka", так и транслятора "Dikar", поскольку первые версии оказались слишком ограниченными по возможностям и неудобными для пользования. В результате естественного отбора получился язык с весьма широкими возможностями, но при этом достаточно простой, чтобы программы на нем мог научиться писать человек без специального компьютерного образования и за приемлемое время. Разумеется, у этого человека должен быть хотя бы школьный уровень знаний, но это требование вряд ли можно считать чрезмерным.

Несмотря на всеобщую глобализацию, я считал и считаю, что для решения любой задачи надо использовать минимальные средства. Если надо решить квадратное уравнение, можно, конечно, написать программу и на C++, но лучше, я думаю, на Ellochkе...