Однажды, читая статью, в которой сравнивались различные языки программирования, я увидел необычную диаграмму - в форме цветка. "Цветок" имел широкие "лепестки", которые, сходясь к центру, сливались в круглую "чашечку". "Чашечка цветка" обозначала те возможности языков программирования, которые есть у каждого языка - операции сложения и вычитания, операторы присваивания, условные операторы и операторы циклов... "Лепестки" же обозначали те возможности языков, которые характерны лишь для одного из них - скажем, классы-шаблоны С++. Программа, использующая только "чашечку цветка", легко переводится с любого из языков, отображенных на диаграмме, на любой. Если программа использует ещё и "лепестки", то осуществить перевод крайне трудно.
Мне доводилось слышать о попытках простроить трансляторы с одного языка на другой, успешно работающие без участия человека - очень часто участие человека всё-таки требовалось. Причиной, вызывающей это, являлось то, что эти трансляторы переводили всё множество языка - в том числе и сложные для обработки "лепестки". Поэтому при разработке своего языка и транслятора мне пришлось оставлять в языке только те возможности, которые лежат в центре диаграммы. Тем не менее, мир не идеален - для математических алгоритмов необходимы массивы, причем динамически меняющиеся, да ещё и с произвольной нумерацией элементов (не от ноля). А даже простые массивы реализуются по-разному в разных языках, а уж столь специфический тип массивов есть далеко не в каждом языке. Решением проблемы было создание библиотек классов для тех языков, которые не поддерживают необходимые для работы возможности. Кроме массивов в библиотеках классов есть также набор тех основных математических функций, которые не поддерживаются в стандартных библиотеках данного языка.
Первым шагом при трансляции кода с AlgoPascal является подключение к проекту на целевом языке стандартной библиотеки AP, реализованной для целевого языка. Если в языке нет функции Sign, то в стандартной библиотеке она есть (аналогично для других стандартных функций). Если в языке нет динамических массивов с переменной нижней границей, то в стандартной библиотеке есть класс, поддерживающий эту возможность.
Трансляцию алгоритма можно проводить двумя способами - через меню "Транслятор" и через меню "Просмотр". Меню "Просмотр" позволяет просмотреть результат прямо в программе-трансляторе, не создавая внешних файлов, и скопировать его в буфер обмена. Меню "Транслятор" позволяет провести трансляцию и сохранить результат в файл. Следует отметить, что комментарии не переносятся в процессе трансляции из файла алгоритма в целевой файл. Т.е. если в файле алгоритма есть комментарий к процедуре с объяснением смысла параметров, то в сгенерированном файле этого комментария не будет. Поэтому перед трансляцией следует изучить исходный файл алгоритма - даже если вы не знаете Паскаль (обычный или алгоритмический), всё равно вы можете извлечь полезную (а порой - необходимую) информацию из комментариев.
Напоследок - для использования алгоритмов, лежащих на сайте, не требуется знание языка AlgoPascal - как правило достаточно просто загрузить алгоритм и провести трансляцию. Но в некоторых случаях для трансляции может потребоваться знание структуры модуля в AlgoPascal, о которой можно узнать в разделе "Структура модуля", особое внимание следует уделить подразделу, посвященному ключевому слову declaration.