Domain-specific languages

DSLs as extensions of general-purpose languages

Ateji believes that developers using domain-specific language deserve the same language quality, completeness and tool support than those using mainstream general-purpose languages. Thanks to an original language composition technology, Ateji is able to design DSLs that are not small languages allowing to express only domain specific concepts, but rather large languages built on top of existing general-purpose languages. By design, the application programming language and the domain specific language share the same data representations, the same type systems, and the same programming tools. The language barrier disappears.

The case of modeling systems

The modeling community itself is acknowledging the problem. In a Cosytec white paper, the analysis of a large scheduling application has found that only 9% of the code is related to optimization. The relative sizes of the other parts are given in the following table:

Part of application % of overall size
Database / integration 46%
Graphics 19%
Graphics libraries 14%
Problem solver 9%
Static program parts (I/O, dialog description) 6%
Others 6%

Because of these integration problems, including performance problems, modeling languages are often seen as prototyping-only languages, useful for tuning the design of an optimization model, but not to be used for deployment.

Optimization for Java developers

OptimJ is not targeted only at optimization experts. We believe that it also provides an easy path for mainstream developers to embed optimization techniques into their applications: Same environment: Java developers can continue to use their favorite language and tools. No need to write integration code: OptimJ and Java share the same execution model. Easy installation: OptimJ is an Eclipse plugin. Steep learning curve: Java developers need to learn what constraint are, but not how to write them (constraints in OptimJ are plain Java expressions).

Language-level integration

Imagine that you order today to your favourite software shop an application for handling customer orders on the web. This application will most probably be architectured around a Java core. The core communicates with a database for storing and retrieving orders, communicates with a web server for handling user requests, and communicates with an optimization engine for scheduling an optimal delivery plan.

 

Language integration

 

Today this simple application will require at least 7 programming languages to handle these application domains.
The application requires many different languages for the different application domains. Each language boundary requires the development of a specific interface.

 

Language integration

 

ateji is developing Java extensions for all of these application domains.
With ateji’s technology, the whole application is written in one single language, namely the combination of Java extensions appropriate for the application. There are no language boundaries anymore.

 

SEO by AceSEF