Proteus (язык программирования) - Proteus (programming language)

Протей (PROцессор для TExt Easy to насе) - это полнофункциональный процедурный язык программирования, созданный в 1998 году Симон Дзанелла. Proteus включает в себя множество функций, заимствованных из нескольких других языков: C, БАЗОВЫЙ, сборка, Машинка для стрижки / dBase; он особенно универсален при работе со строками, имея сотни специализированных функций; это делает его одним из самых богатых языков для обработки текста.

Протей получил свое название от греческого бога моря (Протей ), который заботился о толпе Нептуна и давал ответы; он был известен своей способностью трансформировать себя, принимая различные формы. Преобразование данных из одной формы в другую - основное использование этого языка.

Вступление

Proteus изначально создавался как мультиплатформенный (ДОС, Windows, Unix ) системная утилита для управления текстовыми и двоичными файлами и для создания CGI скрипты. Позднее язык был сфокусирован на Windows, добавив сотни специализированных функций для: сетевой и последовательной связи, запроса базы данных, создания системных служб, консольных приложений, эмуляции клавиатуры, ISAPI скриптинг (для IIS Большинство из этих дополнительных функций доступны только в интерпретаторе Windows, хотя Linux версия все еще доступна.

Proteus был разработан, чтобы быть практичным (простым в использовании, эффективным, полным), читабельным и последовательным.

Его самые сильные стороны:

Язык можно расширить, добавив пользовательские функции, написанные на Proteus или DLL создан в C /C ++.

Особенности языка

На первый взгляд Proteus может показаться похожим на Basic из-за его прямого синтаксиса, но сходство ограничено внешне:

  • Proteus имеет полностью функциональный процедурный подход;
  • переменные не типизированы, их не нужно объявлять, они могут быть локальными или общедоступными и могут передаваться по значению или по ссылке;
  • доступны все типичные управляющие структуры (if-then-else; for-next; while-loop; repeat-until; switch-case);
  • новые функции можно определять и использовать как собственные.

Proteus поддерживает только три типа данных: целые числа, числа с плавающей запятой и строки. Доступ к расширенным структурам данных (файлы, массивы, очереди, стеки, деревья AVL, наборы и т. Д.) Осуществляется с помощью ручки, т.е. целые числа, возвращаемые функциями создания элементов.

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

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

Proteus включает сотни функций для:

  • доступ к файловой системе;
  • сортировка данных;
  • манипулирование датами и строками;
  • взаимодействие с пользователем (функции консоли)
  • вычисление логических и математических выражений.

Proteus поддерживает ассоциативные массивы (называемые наборами) и деревья AVL, которые очень полезны и эффективны для быстрой сортировки и поиска значений.

Два типа обычные выражения поддерживаются:

  • расширенный (как в Unix);
  • базовый (например, с подстановочными знаками «?» и «*»).

Оба типа выражений можно использовать для анализа и сравнения данных.

Функциональный подход и обширная библиотека встроенных функций позволяют писать очень короткие, но мощные скрипты; чтобы они оставались понятными, были приняты ключевые слова средней длины.

Пользователь, помимо написания новых высокоуровневых функций в Proteus, может добавлять новые функции в C / C ++, следуя инструкциям и используя шаблоны, доступные в комплекте разработки программного обеспечения; новые функции можно вызывать точно так же, как и предопределенные, передавая выражения по значению или переменные по ссылке.

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

Одна из самых интересных особенностей Proteus - это возможность запускать скрипты как Сервисы или жеISAPI скрипты.

Запуск сценария Proteus как службы, запускаемый сразу после завершения загрузки операционной системы, дает множество преимуществ:

  • пользователю не требуется входить в систему для запуска скрипта;
  • служба может запускаться с разными привилегиями, поэтому ее не может остановить пользователь.

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

Версия Proteus ISAPI может использоваться для создания сценариев, запускаемых через Internet Information Services, и снабжена определенными функциями для взаимодействия с веб-сервером.

Для защиты интеллектуальной собственности Proteus предоставляет:

  • шифрование скрипта;
  • цифровая подпись скриптов с использованием ключа разработки (уникального);
  • возможность включить или отключить выполнение сценария (или его части) с помощью ключа клиента.

Proteus ценится за то, что писать короткие, мощные и понятные сценарии относительно легко; Большое количество встроенных функций вместе с примерами в руководстве сокращают время обучения.

Среда разработки включает в себя редактор исходного кода с подсветкой синтаксиса и контекстно-зависимым руководством. Proteus не требуется устанавливать: интерпретатор представляет собой отдельный исполняемый файл (менее 400 КБ), который не требует запуска дополнительных библиотек DLL в последних системах Windows.

Синопсис и лицензирование

Основные особенности этого языка:

  • полностью функциональный, процедурный язык;
  • многоязычная поддержка: Proteus доступен на нескольких языках (ключевые слова и сообщения);
  • нет типов данных: все переменные могут использоваться как целые числа, числа с плавающей запятой или строки; переменные интерпретируются в соответствии с применяемыми функциями - Proteus сохраняет различные представления их значений между вызовами, чтобы уменьшить время выполнения в случае частых преобразований между одним типом и другим;
  • нет предварительно выделенных структур: все данные, используемые Proteus, динамически распределяются во время выполнения; нет ограничений на: рекурсию, максимальный размер данных, количество переменных и т.д .;
  • нет операторов: Proteus - полностью функциональный язык - нет операторов; таким образом, нет двусмысленности, когда вычисление выражений и скобок не требуется;
  • большая библиотека предопределенных функций: Proteus не является игрушечным языком, он поставляется с сотнями библиотечных функций, готовых к использованию для работы со строками, датами, числами, для сортировки, поиска и так далее;
  • расширенный доступ к данным (DAO), каналы, сокеты Windows, последовательные порты: в версии для Windows Proteus включает сотни системных вызовов, зависящих от операционной системы;
  • ясный и понятный синтаксис: имена библиотечных функций напоминают имена соответствующих функций в C, Clipper / Flagship и Assembly; Используя ключевые слова средней длины, программы Proteus очень легко понять;
  • встроенная поддержка высокоуровневых структур данных: массивы, очереди (одиночные или двойные), стеки, битовые карты, наборы, деревья AVL уже доступны в Proteus и не требуют использования дополнительного кода или библиотек;
  • Версии ISAPI DLL и Windows Service: Proteus доступен как служба Windows или как ISAPI DLL (для использования вместе с Microsoft Internet Information Server);
  • пользовательские библиотеки: можно записывать пользовательские функции (UDF) в отдельные файлы и включать их (даже условно и рекурсивно) в новые программы; На UDF можно ссылаться до или после определения; также возможно писать внешние функции на Visual C ++ и вызывать их из скрипта Proteus;
  • встроенная поддержка текстовых файлов Ms-Dos / Windows, Macintosh и Unix (все версии);
  • три модели дат (английская, американская, японская) с функциями их проверки и расчетов по григорианскому календарю;
  • установка эпохи для дат, состоящих из двух цифр;
  • поддержка времени в 12- и 24-часовом формате;
  • поддержка простых (Dos-подобных) и расширенных (Unix-подобных) регулярных выражений во всех версиях;
  • защита интеллектуальной собственности с помощью цифровой подписи и криптографии;
  • обширная библиотека функций для написания интерактивных консольных программ.

Proteus доступен в демонстрационной версии (время выполнения сценария ограничено тремя минутами) и зарегистрированной версии, защищенной USB-ключом. На данный момент доступен в виде пакета Windows или Ubuntu и распространяетсяСЗП.

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

Привет, мир

В следующем примере выводится «Hello world!».

КОНСОЛИН "Привет, мир!"

Извлечь два поля

В следующем примере читается стандартный ввод (CSV формат, разделитель ";") и выводит первые два поля, разделенные знаком "|":

КОНСОЛЬНЫЙ ЖЕТОН (L, 1, ";") "|" ТОКЕН (L; 2; ";")

Скрипты Proteus по умолчанию работают с входным файлом и записываются в выходной файл; предопределенный идентификатор L получает значение каждой строки ввода. Функция TOKEN возвращает запрошенный элемент строки; третий параметр представляет собой разделитель. Конкатенация строк неявная.

Эту же программу можно написать так:

H = TOKNEW (L; ";")
CONSOLELN TOKGET (H, 1) "|" ТОКГЕТ (H; 2)
TOKFREE (H)

В этом случае мы использовали другую функцию (TOKGET), которая строит список токенов в строке; это более эффективно, если нам нужно получить доступ к нескольким элементам в строке.

внешняя ссылка