Coding Languages


 
 
Ada
 

A large number of the Agency satellites that have been flown include Ada83 code. This language is preferred for critical software such as platform command and control. A large amount of technology has been made available around Ada, such as HOOD-to-Ada code generators, Ada83 compilers suitable for schedulability analysis, etc. The transition from Ada83 to Ada95 has been prepared .

Ada is recommended as the integration language of critical software, to build the core architecture that will host the various application components, be they written in another language. A Guide for the Use of Ada Programming Language in High Integrity Systems and the ESA Ada Coding Standard are available on the right menu.


 
 
C and C++
 

The C language is used for payloads, for Digital Signal Processing software and for small instruments. It is seen also on some platforms. It is also a language commonly used by automatic code generators. C can also be used for less critical software, or when C is the core of the team experience.

C++ implements the flexibility and the complexity of object orientation, but with poor semantic control. Its use for space on-board software must be considered with care. In particular, two documents are applicable for the use of C++:

  • the Embedded C++ (EC++) standard, mandated in the ESA C/C++ coding standard ,and implemented by the GreenHills compiler
  • the guidelines for using object-oriented programs on-board aircraft produced by the Aerospace Vehicule Systems Institute. Some information can also be found at the Object Oriented Technology in Aviation (OOTiA)


 
 
Java
 

Java looks appealing in particular for its property to easily accept the exchange of program elements at run-time. However, concerns like performance, suitability of the Java Virtual Machine for on-board software, needs further investigation and prevents currently the use of Java in space segment projects without previous R&D experiments.

Several R&D experiments have been performed:

  • The AERO project has used the Jamaica virtual machine to secure the real-time behaviour of a typical on-board application
  • The Real Time Java Framework project has ported the AOCS Framework to a real-time version of Java
  • The JPUS project run by ESA trainees has started to port OBOSS in Java,
  • A survey of the real-time Java market (in March 2004) by an ESA trainee
  • A port of the PERC and JRTK technology from Aonix on the Leon is starting and under evaluation


 
 
 
Last update: 2 August 2006


More information


Ada

 •  High Integrity Ada (pdf) (ftp://ftp.estec.esa.nl/pub/wm/anonymous/wme/Web/High Integrity iso standard.pdf)
 •  ESA Ada coding standard (pdf) (ftp://ftp.estec.esa.nl/pub/wm/anonymous/wme/bssc/bssc983.pdf)

C/C++

 •  Embedded C++ standard (http://www.caravan.net/ec2plus/)
 •  ESA C/C++ coding standard (pdf) (ftp://ftp.estec.esa.nl/pub/wm/anonymous/wme/bssc/bssc2000(1)i10.PDF)
 •  GreenHills (http://www.ghs.com/products/optimizingC++EC++Compilers.html)
 •  Object Oriented guidelines (http://www.faa.gov/certification/aircraft/av-info/software/CAST_Papers.htm)
 •  OOTiA (http://shemesh.larc.nasa.gov/foot/)

Java

 •  AERO project (http://www.aero-project.org)
 •  Jamaïca VM (http://www.aicas.com/sites/jamaica.html)
 •  Real-Time Java Framework (http://control.ee.ethz.ch/~ceg/RealTimeJavaFramework/doc/index.html)
 •  JPUS project (pdf) (ftp://ftp.estec.esa.nl/pub/wm/anonymous/wme/Web/Final_Report.pdf)
 •  JPUS project slides (ppt) (ftp://ftp.estec.esa.nl/pub/wm/anonymous/wme/Web/JPUS presentation.ppt)
 •  JPUS project doc (zip) (ftp://ftp.estec.esa.nl/pub/wm/anonymous/wme/Web/J_PUS_Project.zip)
 •  Java Market Survey (2004) (pdf) (ftp://ftp.estec.esa.nl/pub/wm/anonymous/wme/Web/Real Time Java Survey 2.0.pdf)
 •  Aonix Real-Time Java (http://www.aonix.com/real_time_java.html)