Second and Third
Coordination Session: JellyJ
Design Group
Date: April 15th & 17th, 2002
Participants:
Behrooz
Nobakht, behrooznn@users.sourceforge.net
Seyyed
Jamaleddin Pishvayi, seyyedjamal@users.sourceforge.ent
Hojjat Sheikhattar, hojjat@users.sourceforge.net
Session Report:
In these two sessions we focused on the language design principles and its purposes.
Following is the result of our debates:
{
We are going to design an educational (and simple) language.
So we try to:
1. Reduce exceptional conditions in the language. (The language rules should be consistent and pervasive).
2. Use meaningful, clean and simple modifiers for each language concept.
3. Place some redundant keywords in the language to increase error detection.
4. Check most of thing at compile time (as much as possible).
5. Reduce conceptual redundancy the in language and put a clean way for each of our programmers needs.
6. Let the programmer to put asserts, invariants, etc. in his/her code.
Our language should be a pure
pretty object oriented language, thus:
1. The language doesn’t permit to have any non-class based code.
2. Garbage collector is responsible for objects life.
3. Primitive types are also class, and we do not discriminate between types and classes. (Type and Class are two synonym concept here)
4. Class scope methods (static methods) can only be called via class name. (Calling these methods via object identifiers is forbidden)
5. Constructor is assumed as a class scope method.
6. There are some built-in classes that handle some of language tasks. (i.e. DEBUG, RUNTIME, COMPILER classes)
7. We may support type parameterization (Generic Class) in the language to reduce casts.
JellyJ should be quasi with one of popular languages, Java was chosen for this purpose, so:
1. We try to preserve java syntax (and even concepts) as well as possible. (But in many cases we have to change them!)
2. Should be possible to compile JellyJ codes to standard JVM bytecode.
We are trying to design a pretty, educational, pure object oriented Java!!!
}