Proteus (язык программирования) - Proteus (programming language)
Протей (PROцессор для TExt Easy to насе) - это полнофункциональный процедурный язык программирования, созданный в 1998 году Симон Дзанелла. Proteus включает в себя множество функций, заимствованных из нескольких других языков: C, БАЗОВЫЙ, сборка, Машинка для стрижки / dBase; он особенно универсален при работе со строками, имея сотни специализированных функций; это делает его одним из самых богатых языков для обработки текста.
Протей получил свое название от греческого бога моря (Протей ), который заботился о толпе Нептуна и давал ответы; он был известен своей способностью трансформировать себя, принимая различные формы. Преобразование данных из одной формы в другую - основное использование этого языка.
Вступление
Proteus изначально создавался как мультиплатформенный (ДОС, Windows, Unix ) системная утилита для управления текстовыми и двоичными файлами и для создания CGI скрипты. Позднее язык был сфокусирован на Windows, добавив сотни специализированных функций для: сетевой и последовательной связи, запроса базы данных, создания системных служб, консольных приложений, эмуляции клавиатуры, ISAPI скриптинг (для IIS Большинство из этих дополнительных функций доступны только в интерпретаторе Windows, хотя Linux версия все еще доступна.
Proteus был разработан, чтобы быть практичным (простым в использовании, эффективным, полным), читабельным и последовательным.
Его самые сильные стороны:
- мощные струнные манипуляции;
- понятность скриптов 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), которая строит список токенов в строке; это более эффективно, если нам нужно получить доступ к нескольким элементам в строке.