GOOC - Game Oriented Object C

GOOC - Game Oriented Object C

Next: Examples, Previous: Introduction, Up: Top
[Contents]

2. Why Not Lisp?

2. Why Not Lisp?

While GOOL is based on Common Lisp, GOOC is "based" on C. Why was that decision made, and how does it affect the GOOC language itself?

One of Lisp's selling features is its limitless flexibility. Its list-based source code allow it to adapt to any type of data and function as desired. Its simple-yet-effective syntax also allows for an extremely powerful macro system, allowing the addition of new operations and functions without changing the core flow of the source code much if at all.

However, despite its unparalleled potential for a task like game object programming and customizable syntax, Lisp is simply not suited for a project like GOOC which aims to make the task of programming GOOL objects simple and easy. Lisp is a naturally complex language to learn and write effectively, and debugging it can be rather difficulty, specially with the lack of a built-in GOOL debugger. Since the capabilities of the GOOL engine are not going to change much either, the task adaptability of the language itself is not as necessary for this scenario. The syntax and features of the language are instead passed on to the compiler. GOOL (source code) is also not entirely public, so many of its features simply cannot be ported over and would have had to be "made-up" for the sake of language completion anyway.

C is one of the most popular programming languages out there and is a language that served as the basis for many of other really popular languages (with Python being one major exception) and a language many people - professional programmers, hobbyists, etc. - are bound to learn and understand. This makes GOOC far more approachable at the expense of a bit of purism. The name "Game Oriented Object C" stems from the basic syntactic features borrowed from C, and also a nice opportunity at a quirky backronym.

GOOC borrows certain syntactic features from Lisp and GOOL, which are explained later in this manual, such as slightly more advanced variable scoping. Its keyword list is also not fully borrowed from C or Lisp, and is an entirely specialized set.

In the end no language is ever perfect or usable in all scenarios, any suggestions or improvements to GOOC are welcome and encouraged, as the language and program are far from complete.