|
Compilers with safety in mind |
|
[Added Aug/01/2004:]
Confluence is a language for synchronous reactive system design. A Confluence program can generate digital logic for an FPGA or ASIC platform, or C code for hard real-time software.
Confluence combines the component-based methodologies of Verilog and VHDL with the expressiveness of higher order functional programming.
In comparison to Verilog, VHDL, and C, systems designed in Confluence result in 50% to 80% fewer lines of code, making the source easier to manage and reuse. And because Confluence relies on a correct-by-construction compiler, bugs are reduced -- some are prevented altogether -- thus reducing the overall verification effort.
[Previous:]
"The Ada programming language is designed for embedded systems, safety-critical software, and large projects that require portability and maintainability. For example, over 99 percent of the aviation software in the Boeing 777 is in Ada. Not surprisingly, Ada was the first object-oriented design programming language to be accepted as an International Standard.
The language is named after Ada Byron, Countess of Lovelace, who was the first published computer programmer and daughter of the poet Lord Byron.
Ada has kept its promise made over twenty years ago to save life cycle costs from planning software to updating legacy systems. Easily reused and maintained, readable and user friendly, Ada code facilitates such massive software projects as the Space Station and the Paris Metro. It has proven to be extraordinarily robust in decades' worth of daily field tests under the most rigorous conditions in which millions of lives have been at stake. The language dominates air transport and subways and runs everything from video security systems to pollution monitoring devices." -- Ada Information Clearinghouse
Ada Core Technologies, developer and maintainer of the Ada 95 GNAT Pro Development Environment.
Ada for GNU/Linux Team, which is working to make it easy to use Ada on GNU/Linux.
A Safe Dialect of C
from AT&T
Research. As example of embeddable code the Cyclone, version 0.8 compiler will cross-compiling to Nintendo Gameboy. Download a copy and try it out for yourself. Read! the documentation. Join! Cyclone mailing lists or send comments Cyclone is mirrored at Cornell and AT&T Labs Research. |
Cyclone is a programming language based on C that is safe, meaning that it rules out programs that have buffer overflows, dangling pointers, format string attacks, and so on. High-level, type-safe languages, such as Java, Scheme, or ML also provide safety, but they don't give the same control over data representations and memory management that C does (witness the fact that the run-time systems for these languages are usually written in C.) Furthermore, porting legacy C code to these languages or interfacing with legacy C libraries is a difficult and error-prone process. The goal of Cyclone is to give programmers the same low-level control and performance of C without sacrificing safety, and to make it easy to port or interface with legacy C code.
Cyclone achieves safety while remaining compatible with C by:
The Cyclone compiler and tools, as well as some benchmark programs, are freely available for download.
The Functional Programming Language Clean, is based on the concept of mathematical functions.
Clean is a pure functional language, there is not such a thing as an assignment. This has a big advantage: a function cannot have a side-effect. A Clean function is referential transparent: the result of a function only depends on the value of the function arguments and on nothing else.
This has important consequences:
Esterel is a system-design language that can be used to generate complex state machines automatically. Because of its textual (rather than graphical) nature, and because of its compositional facilities, you can use it to write compact specifications for systems with complex state machines. Here's an overview of Esterel's syntax and usage by Girish Keshav Palshikar.
The ESTEREL Language |
---|
ArgoUML is a modeling tool that helps you do your design using UML.