Skip to content
Paolo Angeli edited this page Oct 6, 2019 · 6 revisions

Why Yes?

It's worthwhile

Its time for the braves to engage an ambitious endeavor (cit.), if it will produce only a 10% improvement in the quality of life of the author, this will be worthwhile alone.

Why No?

Adoption issues

A compelling argument for not writing an entirely new language for games is that the momentum and volume of C and C++ code in current game engines are too high, and the OOP mainstream culture is too radicated. The author argues that engines periodically rewrite their codebase anyway, and since Jai and C produce interoperative machine code they can live side by side while the rewrites, that would normally happen anyway, take place.

In fact, Jai uses C Obj code to use some external libraries like OpenGL and stb_image. So, replacing C and C++ can be done with almost none added cost to development. Meanwhile, the benefits of using Jai could make programmers more productive.

Use one of the other ones instead like C#/Rust/D/Go/Haskell/etc.

Those are strong languages, but none of them contain the right combination of features (or lack of features) that game programmers need. Automatic memory management is a non-starter for game programmers who need direct control over their memory layouts. Any interpreted language will be too slow. Functional-only languages are pointlessly restricting. Object-oriented-only languages are overly complex.

The idea behind Jai is to develop a new language with the qualities that game programmers need, and without the qualities they don’t.


Navigate

Types, constants and variables

  • Variables and assignments
  • Language data types
  • Simple user-defined data types
  • Expressions and operators
  • Type-casting
  • Pointers

Flow control

Procedures and functions

  • Declarations
  • Arguments / Parameters
  • Return values
  • Overloading / Polymorhism
  • Advanced features
  • Lambdas

Aggregated data types

  • Arrays
  • Strings
  • Composition of Structs

Advanced features

Clone this wiki locally