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

Why Yes?

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

Why No?

ADOPTION

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 switching to a new language is too much work for the amount of benefit. Blow argues that engines periodically rewrite their codebase anyway, and since Jai and C are so closely related, C code and Jai code can live side by side while the rewrites that would normally happen anyway take place. Since C and Jai interoperate seamlessly, Jai code can be built on top of existing C libraries. In fact, Blow uses the C interfaces to the OpenGL and stb_image libraries for his Jai test code. So, replacing C and C++ can be done with no added cost to development. Meanwhile, the benefits of replacing C with a language that has all of C’s benefits but fewer drawbacks mean that programmers will be happier, and thus more productive.

USE C++/RUST/GO/D/SWIFT/HASKELL/LISP/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