PROSE Programming Language

From PROSE Programming Language - Wiki
Revision as of 17:12, 19 March 2013 by Cambridge (Talk | contribs)

Jump to: navigation, search

The PROSE Programming Language

PROSE is a cross-platform programming environment designed to simplify the development of small and large-scale networked applications.

What is it?

In distributed computing environments, getting software components to integrate and communicate with each other can involve large teams of developers, and involve significant amounts of time and money. Such projects can be very difficult to manage.

PROSE is designed from the ground-up to address these challenges with a range of innovative features that are unique to the language. It consists of:

  • A high-level modular scripting language, which compiles into bytecode
  • An assembly language for low-level bytecode development
  • An execution engine, which interprets the bytecode
  • A hierarchical object tree through which all components are addressed

Rapid application development

Designed for application prototyping as well as production releases, PROSE will use a grammar that is intuitive and flexible. It will feel familiar to C/C++ and Java programmers, and has features taken from UNIX scripting languages. By intelligent use of tree structures, hash tables, dynamic arrays and multi-precision arithmetic libraries; PROSE enables the developer to write applications that both perform well and are immediately scalable, without requiring the development time normally associated with enterprise-class applications.

The language is designed entirely around a hierarchical framework (called the nexus), so accessing any kind of data that is already hierarchical in nature becomes very simple. Files and directories, process control, DNS and LDAP directories are some examples of this.

By providing a well-defined and simple standard for accessing APIs through the nexus, developers need less time to become familiar with new modules and interfaces, allowing your application code to be more flexible, so you can adapt quickly to changing requirements.

Platform independent bytecode

PROSE scripts compile into bytecode that is interpreted by the PROSE engine. This bytecode is highly optimised to keep it small and fast, and can also be coded by hand using the PROSE Assembly Language (PAL). The bytecode is feature-rich, allowing data, stacks, arrays, objects, classes, attributes and functions to be manipulated efficiently.

Fix bugs with no downtime

The modular design of the PROSE programming environment allows bugs to be identified and fixed in-line, without requiring application downtime. New modules can be prepared offline, and then integrated into a running engine.

Grid computing

The PROSE engine will be tightly integrated with the network, and the features required for successful interaction between multiple compute nodes is inherent in the design of the language, allowing programs to interact easily with one another over networks or the internet, even at the bytecode level. Multi-node computing features enable applications to distribute operations across compute grids, and move running modules from one node to another in realtime.

Where do I get it?

PROSE is in the pre-alpha development stage at this time. The latest release can be obtained from http://sourceforge.net/project/showfiles.php?group_id=50184.

The releases are packaged C source files, which can be compiled on a wide range of UNIX and UNIX-like platforms including Sun Solaris, SuSE Linux, Redhat Linux, FreeBSD, DJGPP (Dos/Windows) and MacOS X. It is very likely to compile on many more platforms than this. Let me know if you have it working on a platform I haven't mentioned.

Latest release (0.9.1)

The latest pre-alpha release is version 0.9.1. See the Release Notes for details about this release.

Only a subset of PAL instructions are available in this release, and an engine that will execute those instructions. PAL is the assembly language that can be used to create bytecode directly. There are a number of powerful bytecode features available which are worth investigating if you are a low-level programmer or aspire to be one, but it is purely academic at this time.

The PROSE scripting language does not yet exist, although an early sketch exists in the document http://prose.sourceforge.net/Prose_SDS_0-6.pdf. This specification is likely to change quite significantly, and we're open to all kinds of novel and innovative ideas at this time. A copy is available on this site only so that when the real language is designed, the best ideas might prevail.

Next release (0.10.0)

The next major release will be version 0.10.0 and is currently in development. Details about this release will follow in the coming months.

Can I get involved?

Yes! We are open to contributions at any level. Please see How to get involved for more information.

Related articles

Further articles about the PROSE project can be found here:

Project links

Use the following links to learn more about the PROSE project:

About the author

The concept of PROSE was first devised by Mark R. Bannister in 2001, and he has spent many evenings between 2002 and the present day writing and optimising thousands of lines of code. He is a thoroughbred geek who lives in London, England. Outside of computer programming, he enjoys hiking, acting and playing the piano. He is also a proud father who wishes that some day his children might follow in his footsteps and achieve greater things.

Since he has become a family man, time for programming has unfortunately been reduced to journeys to and from his real job on the train. So, while development continues in earnest on PROSE, there will be longer gaps between releases. If you are a C developer and would like to help speed along the development of this exciting project, your time would be greatly appreciated. Please contact the author.

Wiki help

Consult the User's Guide for information on using the wiki software.

Getting started

Click on the following image to upload a new version of the PNG logo image for your project:

MediaWikiSidebarLogo.png