Введение

Что такое AlgoPascal? AlgoPascal (алгоритмический Паскаль) - язык высокого уровня, по синтаксису близкий к Паскалю. Этот язык создан специально для библиотеки алгоритмов как способ хранения алгоритмов математического характера с возможностью автоматического перевода в читаемый код на максимально возможном числе языков программирования. Для перевода алгоритмов разработана программа-транслятор, включающая в себя кроме транслятора ещё и редактор с синтаксической подсветкой (использовались компоненты SynEdit).

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

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

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

Теперь о языке. Поскольку язык специализируется на математике (своего рода новый Фортран:) ), то в него не входят многие возможности, не необходимые для математических расчётов. Язык реализует целый, вещественный и булевый типы данных, а также одномерные и многомерные массивы. В язык входят комментарии (а как же без них?) и структурные операторы, подпрограммы и, в специфической форме, модульность. Но в язык не входят строки и побитовые операции над целыми числами, классы и записи (может, в будущем записи появятся). Возможно, кому-то набор возможностей покажется слишком бедным, но он достаточен для подавляющего большинства математических задач и допускает автоматический перевод на другие языки, чего не скажешь о более богатых подмножествах языка Паскаль.

Скорее всего, сейчас вас интересует вопрос: неужели мне надо изучать всё это, весь язык? Ответ таков: нет, не надо. Если вы скачали транслятор для использования одного из алгоритмов, то вам незачем постигать все тонкости языка - прочтя введение, читайте только раздел "Трансляция" (см. ниже в содержании). Если же вы хотите разобраться в языке, то для вас есть примеры программ на нем и краткое (возможно слишком краткое, но есть более необходимые вещи) описание.

Бочканов Сергей, shadeofgray@yandex.ru

Содержание

Трансляция

  1. Общие замечания по трансляции
  2. Трансляция в C++
  3. Трансляция в Delphi
  4. Трансляция в Visual Basic 6.0

Примеры программ

  1. Расчёт производной. Пример на использование declaration
  2. Проверка системы лин. уравнений на совместность
  3. Поиск минимума функции методом золотого сечения
  4. Обращение матрицы алгоритмом Гаусса
  5. Пример импорта в Delphi поиска кратчайшего пути на графе

Описание языка. Грамматика.

  1. Структура модуля
  2. Типы данных
  3. Объявления переменных/констант
  4. Объявления подпрограмм
  5. Операторы
  6. Выражения и операции
  7. Стандартная библиотека функций
  8. Отличия языка от Паскаля