[comp.lang.misc] Would you use this language?

bill@cwi.UUCP (Mr. Bill ) (02/22/90)

The following is a description of an integrated programming language/
command language system with a variety of interesting properties. We
would like to solicit general reactions to this description to determine
whether there would be any interest in this as a product or otherwise.

The programming language provides the usual features of a
general-purpose, block-structured programming language, but also
provides a number of higher-level features. It is intended to be
suitable for the kinds of programming chores to which the UNIX shells
and languages like Perl are suited to, but has adequate capabilities
and performance for a variety of uses.

The following is a summary of the major features of the language:

*	Combines several features common to interpreted languages (e.g.
	flexibility, portability, dynamic linkage, etc.) with those
	common to compiled languages (e.g. strict type checking,
	run-time efficiency).

*	Supports modular and functional decomposition and information hiding.

*	Provides a large set of predefined data types including integers,
	floating-point numbers, booleans, date/time values,
	variable-length strings, arrays, and associative look-up tables.

*	Provides parameterized array and table types (e.g. the user can
	define arrays of other types, or tables keyed by one type and
	storing values of another type).

*	Provides a ``generic'' data type for flexibility, which can hold
	values of any other data type. The type of data stored in a generic
	variable may be determined at run-time. 

*	Supports user-defined types including enumerations and composite
	structures.

*	Supports some aspects of object-oriented programming (e.g.
	composite ``objects'' that contain ``methods'', and limited
	inheritance of methods).

*	Automates data storage management (i.e. no explicit allocation 
	or de-allocation needed) for all varible-size data types.

*	Supports a full set of arithmetic, relational, logical, bit, string,
	array, and table operations; and type conversion operators.

*	Provides a large set of methods for built-in types, so that types
	such as array and table can also behave as a variety of other data
	types (e.g. stacks, queues, ...).

*	Provides direct access to foreign (e.g. C) language (and library)
	functions, and a means for the user to extend the set of available
	foreign functions.

*	Provides direct access to host O/S functions and applications
	(i.e. general operation of child processes).

*	Supports ``call-by-value'' and ``call-by-reference'' function
	argument types.

*	Provides a general mechanism for inter-process communication,
	by allowing any normal function call to cross process, machine
	and even architectural boundaries. These "remote function calls"
	can also broadcast to multiple, logically addressed recipients.

*	Supports a machine-independent representation of all data and
	data types, and provides functions to convert between internal
	and external representations. (This can be used, for example,
	for storage and retrieval of arbitrary data structures in files.)

The command language is primarily a tool with which to create custom
command sets. Its basic capability is that of parsing and executing
user defined commands. 

The following is a summary of the basic features of the command
language:

*	Completely user extensible. The user may define new commands, 
	and implement the commands using the previously described language.

*	Individual users may define there own command sets. 

*	The command parser supports alias expansion similar to that of csh.

*	Supports variable definition and expansion within commands.

*	Supports subcommand execution and expansion (like `...` in csh).

*	Supports redirection and piping of command output. 

Any and all responses would be appreciated, via e-mail or posted replies.

uunet!cwi!bill
bill@cwi.com