Jump to content

Proteus (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 46.143.248.32 (talk) at 11:30, 14 June 2017 (Language features). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Proteus (PROcessor for TExt Easy to USe) is a fully functional, procedural programming language created in 1998 by Simone Zanella. Proteus incorporates many functions derived from several other languages: C, BASIC, Assembly, Clipper/dBase; it is especially versatile in dealing with strings, having hundreds of dedicated functions; this makes it one of the richest languages for text manipulation.

Proteus owes its name to a Greek god of the sea (Proteus), who took care of Neptune's crowd and gave responses; he was renowned for being able to transform himself, assuming different shapes. Transforming data from one form to another is the main usage of this language.

Introduction

Proteus was initially created as a multiplatform (DOS, Windows, Unix) system utility, to manipulate text and binary files and to create CGI scripts. The language was later focused on Windows, by adding hundreds of specialized functions for: network and serial communication, database interrogation, system service creation, console applications, keyboard emulation, ISAPI scripting (for IIS). Most of these additional functions are only available in the Windows flavour of the interpreter, even though a Linux version is still available.

Proteus was designed to be practical (easy to use, efficient, complete), readable and consistent.

Its strongest points are:

The language can be extended by adding user functions written in Proteus or DLLs created in C/C++.

...

Synopsis and licensing

The main features of this language are:

  • fully functional, procedural language;
  • multi-language support: Proteus is available in several languages (keywords and messages);
  • no data types: all variables can be used as integer numbers, floating point numbers or strings; variables are interpreted according to the functions being applied – Proteus keeps different representations of their values between calls, to decrease execution time in case of frequent conversions between one type and the other;
  • no pre-allocated structures: all data used by Proteus are dynamically allocated at execution time; there are no limits on: recursion, maximum data size, number of variables, etc.;
  • no operators: Proteus is a completely functional language – there are no operators; thus, there is no ambiguity when evaluating expressions and parenthesis are not needed;
  • large library of predefined functions: Proteus is not a toy-language, it comes with hundreds of library functions ready to be used for working on strings, dates, numbers, for sorting, searching and so on;
  • advanced data access (DAO), pipes, Windows sockets, serial ports: in the Windows version, Proteus includes hundreds of system calls which are operating system-specific;
  • clear and comprehensible syntax: the names of the library functions resemble those of corresponding functions in C, Clipper/Flagship and Assembly; by using medium-length keywords, Proteus programs are very easy to understand;
  • native support for high-level data structures: arrays, queues (single or double), stacks, bit maps, sets, AVL trees are already available in Proteus and do not require additional code or libraries to be used;
  • ISAPI DLL and Windows Service versions: Proteus is available as a Windows service or as an ISAPI DLL (for using together with Microsoft Internet Information Server);
  • user libraries: it is possible to write user defined functions (UDF) in separate files, and include them (even conditionally and recursively) inside new programs; UDFs can be referenced before or after the definition; it is also possible to write external functions in Visual C++ and invoke them from a Proteus script;
  • native support for Ms-Dos/Windows, Macintosh and Unix text files (all versions);
  • three models for dates (English, American, Japanese), with functions to check them and to do calculations according to gregorian calendar;
  • epoch setting for 2-digit-year dates;
  • support for time in 12- and 24-hour format;
  • support for simple (Dos-like) and extended (Unix-like) regular expressions, in all versions;
  • intellectual property protection, by using digital signature and cryptography;
  • extensive library of functions to write interactive console programs.

Proteus is available in demo version (script execution limited to three minutes) and registered version, protected by a USB dongle. At the moment, is available as a Windows or Ubuntu package and is distributed by SZP.

Example programs

Hello World

The following example prints out "Hello world!".

CONSOLELN "Hello World!"

Extract two fields

The following example reads the standard input (CSV format, separator ";") and prints out the first two fields separated by "|":

CONSOLELN TOKEN(L, 1, ";") "|" TOKEN(L, 2, ";")

Proteus scripts by default work on an input file and write to an output file; the predefined identifier L gets the value of every line in input. The function TOKEN returns the requested item of the string; the third parameter represents the delimiter. String concatenation is implicit.

The same program can be written in this way:

H = TOKNEW(L, ";")
CONSOLELN TOKGET(H, 1) "|" TOKGET(H, 2)
TOKFREE(H)

In this case, we used another function (TOKGET), which builds the list of the tokens in the line; this is more efficient if we need to access several items in the string.