C++, Java, Python, Javascript

Over the last 16 years, Cosylab has developed a multitude of high-level software applications. The programming language of choice was often dictated by the project setting and specifics on the customer’s side. Particle accelerators are very complex machines: there is no single language that is a best fit for all aspects of the system. As a result our application development group is fluent in all the leading high-level programming languages.

So when you engage Cosylab for high-level software application development, the programming language can be decided on what is the best fit for your project needs. This is actually a general approach to customer’s projects at Cosylab, extending beyond the choice of language.


C++

C++ is a good choice for making middleware frameworks in the context of high-availability distributed control systems. Strong typing and compile-time syntax checking avoid basic run-time errors that interpreted languages can encounter, while providing with the portability and performance that other languages cannot.

At Cosylab we mostly use C++11 and newer iterations of the language, which improve productivity and reliability of the resulting code, together with more advanced tools for static and dynamic analysis.

For example the extensive work on EPICS V3 by our expert Matej Šekoranja is done in C++.




The C language

The C language is still the primary language of Linux kernel and many other applications for its simplicity and power. Cosylab is using C on a varietry of projects that need either real-time control or that integrate hardware devices into Unix-based operating systems. For example we developed kernel drivers for timing (pxi6682) and DAQ devices (pxi6259) for PXI form factor for ITER. We also developed low level libraries for embedded systems for communicating with WMBUS and WiFi modules for Letrika Sol.

Java

Java offers a wealth of applications and functionality and is widely used in software development, as it is still in one of the top 3 places in many programming language lists.
The Java landscape is abundant with code analysis and testing tools which the Cosylab engineers use to great extent to write efficient code of high quality.
Cosylab's Java projects are complex multi-tier frameworks and applications, spanning thousands of lines of code. Starting with ACS that runs the ALMA telescope, EPICS database editor VisualDCT, EPICS services written for ESS and the DISCS community (Java EE), and plugin development for CS-Studio, which is an Eclipse RCP application for EPICS control.
Our applications connect to databases, communicate to hundreds of devices using different middleware solutions, some of which were also developed by Cosylab engineers, process data in real time and integrate many different systems.
Using Java EE technology we have developed control system services for European Spallation Source ERIC to manage configuration related information:

For our customers we have also written custom Maven (Java build tool) and Jenkins (continuous integration server), end user GUI applications based on Swing and JavaFx.

Python

Python is widely used especially in the scientific community. Its syntax makes the code easily readable and its interoperability with C, R, Matlab and other languages makes it a first choice for many programmers. Apart from that, there are many important libraries written for it that appeal to a lot of people, for example NumPy, SciPy, PyTables, PyQt, etc.

Cosylab uses Python on many projects, mainly for developing communication interfaces and GUIs for embedded devices, various harware simulators and management GUIs. We developed PyQt GUIs for SLAC Emcor controller, PyGtk GUI for managing ITER's CODAC installations, etc.



Javascript

Similar to Java, JavaScript is also one of the most widely used programming languages in the world. In runs practically all active content on the web.

Cosylab has written many active web application, utilizing frameworks like jQuery, Angular, Node.js, Ember and React. Many of the control system services in the DISCS framewrok are written in mainly in JavaScript, or application written in Java EE also heavily rely on JavaScript through frameworks like PrimeFaces.

An example, with jQuery: https://github.com/Olog/logbook