To make modifiable software into reality while maintaining clean architecture, we apply polyglot programming pyramid. It’s a concept in software development that emphasizes the use of multiple programming languages for different purposes, based on their strengths and weaknesses.

The polyglot programming pyramid consists of three layers:

  1. The base layer is made up of stable languages, such as Java, C++, or Python, (we use Java mostly, with spring) that are well-established and widely used in the industry. These languages are known for their reliability, scalability, and robustness, and are often used for core system development, backend development, or performance-critical applications.
  2. The middle layer consists of dynamic languages, such as Ruby, JavaScript, or Python, that are known for their flexibility, productivity, and ease of use. These languages are often used for web development, scripting, prototyping, or rapid application development, where quick iteration and experimentation are more important than performance or scalability.
  3. The top layer is composed of domain-specific languages (DSLs), which are tailored to specific problem domains or application areas, such as SQL, R, or MATLAB. These languages are designed to express complex domain-specific concepts or operations in a concise and intuitive way, often using a specialized syntax or vocabulary.

By using a mix of stable, dynamic, and domain-specific languages, developers can take advantage of the strengths of each language to build more efficient, maintainable, and expressive software systems. Here domain specific language come to play. For example, they can use stable languages for performance-critical code, dynamic languages for prototyping or web development, and DSLs for domain-specific tasks such as business rule modeling, formula scripting, data aggregation for analysis and visualization.


Use of JavaScript for Second Layer

One of popular scripting language is JavaScript, here code example to use JavaScript as scripting language (aka domain specific language) on top of Java application.

Use of DSL

Apply DSL into Openbravo Payroll

One real-world example, our payroll module, use DSL to define salary formula, give ultimate flexibility to define salary component calculation.

Openbravo Payroll - Salary Formula
Openbravo Payroll – Salary Formula
Openbravo payroll - salary formula result
Openbravo payroll – salary formula result

Apply DSL to Openbravo Approval workflow

Another real-world example, we develop an approval module for Openbravo ERP. Instead of manual traditional role-based authentication, we implement integrate BPM (business process management) project, ActivitiBPM, and make workflow on it. Hence, we extract customer specific domain knowledge, using BPMN (Business Process Management Notation) DSL, to separate it from bottom layer. This also means that you can make changes your workflow without the need for extensive re-development. This makes it easy to add new features, integrate with other systems, and adapt to changing business needs. This flexibility can help your business stay competitive and agile in a rapidly changing business environment.

Openbravo approval workflow
Openbravo approval workflow

Get in touch

If you’re looking for a software development partner that can create modifiable software that is cost-effective in the long run, look no further than Wirabumi Software. Contact us today to learn more about our services and how we can help your enterprise thrive.