Frequently Asked Questions
Q: Why does the world need yet another programming language?
A: We need (and constantly use) abstractions for dealing with all types of problems. Designing the GeLB domain-specific language was our attempt to provide such abstractions also for LBM.
Q: What's wrong with libraries?
A: Libraries are great. However, because most library code is executed at runtime (after compilation), libraries also come with limitations that can only be "lifted" by a compiler/transpiler; for example:
It is much harder to implement optimal code in a library, because it does not have a complete view of the entire application. A compiler/transpiler (such as GeLB) does have all of that information (and it can leverage it, to perform more advanced optimizations).
Also because of the narrower perspective of a library, it is harder to give informative error messages when something is wrong with the code. GeLB error messages are generally much more informative (and we are constantly working on improving them).)
Libraries are commonly used together with general-purpose programming languages, which give users a lot of freedom, and many ways to express the same algorithm. Our goal when designing the GeLB language was to make it so that there is only one intuitive (even obvious) way to express your LBM algorithm, which is as close as possible to the mathematical description. Because this description is lacking any hardware-specific implementation details, it is a much better starting point for automatically producing code with good performance.
Q: ...?
A: ...