All insights

Unifying heterogeneous languages

Comparing different technologies without erasing what makes each one specific.

Begin with stable concepts

Languages differ, but many manipulate comparable concepts: declarations, expressions, calls, control flow, consumed data and produced data. These concepts form the common core.

Retain technology-specific extensions

Not everything fits cleanly into one model. Extensions preserve constructs specific to PySpark, COBOL, SAP BW or another technology without polluting the shared core.

Normalise at the right level

Too little normalisation prevents comparison. Too much destroys information. The right level depends on the objective: lineage, search, validation or translation.

Test representative cases

The quality of the model is measured against real or synthetic programs that cover simple cases, rare constructs and ambiguities. Observed limits become design input.