A concept of a new PL for embedded applications

Thread Starter

Hutorny

Joined Aug 30, 2006
4
I would like to discuss with you my ideas on a new programming language for embedded applications, denoted further as e#. Here I post only the core concept. More details can be found on this link

The core concept
e# is a tool language that should be suitable for all kind of embedded-related development activities, starting from defining the device architecture and its instruction set, documenting device specifics and finishing with programming the device with a developed application. Instead of allowing the developer to write an arbitrary language constructions and pushing the compiler to made an executable out of it, e# should let a developer (a device vendor) to express the device resources, capabilities and constraints in the language terms. These capabilities and constraints than are applied to the application sources, simulation model and executable image. If any of the constraints are violated the e# builder would produce error, either compilation, simulation or code generation time.
It should retain major assembler’s capability to express application’s logic in terms of processors instructions, where each statement is translated into known number of know instruction of a given CPU/MCU.
The language should allow writing generic libraries for a given architecture operating on common architecture-wide facilities expressed in terms of a lowest subset of ‘abstract device instructions’ declared for the architecture, which then, at application level, are implemented/instantiated for a given MCU.
Shortly e# can be defined as a compilable code generator – at first sources are compiled then they are executed and, as a result of this execution, application code is generated. Compilation should not generate any target device code, it should only verify syntax and generate instructions on how to generate target device code. e# definitely is a high level programming language, however, applications written in it should still be able to use features of a low-level programming language, such as access to all available device resources.
It is believed that the concept could be applicable to RISC, CISC and VLIW architectures, although, the latter one will require more efforts on describing the device.
 

Dave

Joined Nov 17, 2003
6,970
I have heard it was developed for military?
To quote the Wikipedia article on the Ada Programming Language:

In the 1970s, the US Department of Defense (DoD) was concerned by the number of different programming languages being used for its embedded computer system projects, many of which were obsolete or hardware-dependent, and none of which supported safe modular programming. In 1975 the Higher Order Language Working Group (HOLWG) was formed with the intent of reducing this number by finding or creating a programming language generally suitable for the department's requirements; the result was Ada. The total number of high-level programming languages in use for such projects fell from over 450 in 1983 to 37 by 1996.

The working group created a series of language requirements documents—the Strawman, Woodenman, Tinman, Ironman and Steelman documents. Many existing languages were formally reviewed, but the team concluded in 1977 that no existing language met the specifications.

Requests for proposals for a new programming language were issued and four contractors were hired to develop their proposals under the names of Red (Intermetrics led by Benjamin Brosgol), Green (CII Honeywell Bull, led by Jean Ichbiah), Blue (SofTech, led by John Goodenough), and Yellow (SRI International, led by Jay Spitzen ). In April 1978, after public scrutiny, the Red and Green proposals passed to the next phase. In May of 1979, the Green proposal, designed by Jean Ichbiah at CII Honeywell Bull, was chosen and given the name Ada—after Augusta Ada, Countess of Lovelace. This proposal was influenced by the programming language LIS that Ichbiah and his group had developed in the 1970s. The preliminary Ada reference manual was published in ACM SIGPLAN Notices in June 1979. The Military Standard reference manual was approved on December 10, 1980 (Ada Lovelace's birthday), and given the number MIL-STD-1815 in honor of Ada Lovelace's birth year.

In 1987, the US Department of Defense began to require the use of Ada (the Ada mandate) for every software project where new code was more than 30% of result, though exceptions to this rule were often granted. This requirement was effectively removed in 1997, as the DoD began to embrace COTS (commercial off-the-shelf) technology. Similar requirements existed in other North Atlantic Treaty Organisation countries.

Because Ada is a strongly-typed language, it has been used outside the military in commercial aviation projects, where a software bug can mean fatalities. The fly-by-wire system in the Boeing 777 runs software written in Ada.

The language became an ANSI standard in 1983 (ANSI/MIL-STD 1815A), and without any further changes became an ISO standard in 1987 (ISO-8652:1987). This version of the language is commonly known as Ada 83, from the date of its adoption by ANSI, but is sometimes referred to also as Ada 87, from the date of its adoption by ISO.

Ada 95, the joint ISO/ANSI standard (ISO-8652:1995) is the latest standard for Ada. It was published in February 1995 (making Ada 95 the first ISO standard object-oriented programming language). To help with the standard revision and future acceptance, the US Air Force funded the development of the GNAT Compiler. Nowadays the GNAT Compiler is part of the GNU Compiler Collection.

Work continues on improving and updating the technical content of the Ada programming language. A Technical Corrigendum to Ada 95 was published in October 2001. Presently, more work is being done to produce the roughly once-a-decade major update to Ada, expected in 2007 (see official schedule). This new version is commonly known as Ada 2005, just as Ada 95 was commonly known as Ada 94 prior to its publication.
Since I am currently a little strapped for time, so I can't at this moment look at you proposals fully, can you give me a concise list of the reasons why I as an embedded system software developer would want to use e# as oppose to some other language, say for example C?

Thanks.

Dave
 

Thread Starter

Hutorny

Joined Aug 30, 2006
4
Dave, thanks for a good question and for pointing to ADA (I still have my book I've bought in school, so I'll look at it)
In a day or two I promise to give you an answer.
 

Thread Starter

Hutorny

Joined Aug 30, 2006
4
Since I am currently a little strapped for time, so I can't at this moment look at you proposals fully, can you give me a concise list of the reasons why I as an embedded system software developer would want to use e# as oppose to some other language, say for example C?

Thanks.

Dave
I have looked it ADA. Thanks again, while looking for ADA I found some sources on how to properly design a language.

ADA is a high level language and e# is not going to compete with ADA, Pascal or C. I propose e# as a replacement of assemblers.

I envision the following benefits of using e#

  1. It will allow writing better quality code in shorter time
  2. It will reduce maintenance cost by providing abilities for regression testing (on a simulator or in-circuit debugger)
  3. It will reduce impact of migrating to another device/platform
Elaboration on theses can be found in this post

BTW, as I see, OO wave hit the ADA rock and the only archipelago not (yet?) reached by OO are assemblers.
 
Top