: In response to thread and email feedback I am revising the programming
: language specification which will implement CBOOP (Component-based
: object-oriented programming).
:
: I only regret that many of you emailed your feedback rather than
: posting it here. The collaborative effort was hindered. But some of
: you are DAMN good at skewering a man on his oversights.

:
: As a resuld of feedback I will change the language as follows:
:
: 1) The language will have two tiers: The first will be a compiler
: language and the second will be the operational language. The compiler
: lanugage will allow the configuration of the compiler within the
: source code to activate and deactivate features such as garbage
: collection, optimization controls, etc.
:
So basically a bit like C's compiler directives, like #if, #define, #pragma?
: 2) The language will maintain c++ appearances to reduce the learning
: curve. But it will be based on expressions only! There will be no
: statements.
So I'm assuming things like:-
a = b + c;
Are classed as expressions, but soemthing like:-
let a = b + c;
Would be classed as a statement? What about:-
goto somewhere;
Is that a statement?
: Everything will be an infix or prefix expression.
Should expression there read operator?
: (Sorry, I am not going to try to parse infix, prefix AND postfix
: expressions. If you want it, write it! I AM NOT A MASOCHIST. But
: the expression- only syntax is a golden idea.)
:
So no:-
x++;
: 3) Parse trees will be binary trees using only one object type for its
: nodes to keep things simple. The expression-only format will make
: this a lot easier. ...Thanks.
:
That's compiler internals over langauge design, I guess.
: 4) Array notation will be the result of a [] group operator. It will
: be based on pointers, allow those of us who love them to use pointers,
: while allowing people like the esteemed Johnathan (the only one of you
: to be brazen enough to post his feedback) to use arrays with bounds
: checking and more.
:
I think bounds checking that only affects things done directly with array notation doesn't buy us that much. For example, in things like:-
char x[100];
strcpy(x, y);
We are passing a pointer here and not an array of known length, right? How are we going to make bounds checking safety presist accross function calls etc if it's tied to a variable declaration?
: 5) Operators replace functions. (This is my own new idea which
: simplifies the language.)
What will this look like? Are you saying "no global functions"? Methods and functions are distinct, yes, so this is nothing to do with methods? What about static methods?
: There are no function pointers or operator pointers.
No operating overloading I can happily live with. No function pointers...that's not so nice, but I guess OOP provides other routes to polymorphism, e.g. inheritance, interfaces, roles, etc.
: So, those not comfortable with them can rest easy. However, those of
: us who love low level code access can create code blocks with the {}
: group operator which returns a reference to the block that can be
: linked to an operator and executed.
:
Ooh, kinda like closures? Will these blocks be able to take parameters? They'll be able to return things, I assume?
: 6) An ASM operator is included to incorporate blocks of assembly.
:
Boom goes the platform independence. Or at least, now our VM has to include an x86 emmulator.
: 7) Each code block {} is its own local namespace
Would this work (pseudo-code):-
{
int x = 2;
{
int x = 3;
print x; # prints 3
}
print x; # prints 2
}
: and can be chained to others.
:
Can you give me an example of what you mean by this?
: Further feedback is needeed. I am tired of rewriting the spec. and
: want to finish this project by Dec 05.
:
Most of the spec is probably a lot clearer in your mind that mine. Will be curious to see the answers to these questions, anyway.
Jonathan
###
for(74,117,115,116){$::a.=chr};(($_.='qwertyui')&&
(tr/yuiqwert/her anot/))for($::b);for($::c){$_.=$^X;
/(p.{2}l)/;$_=$1}$::b=~/(..)$/;print("$::a$::b $::c hack$1.");