On Nov 23, 2007, at 5:04 AM, Waldemar Kornewald wrote:
wait for Ian to make an official statement.
Can I make an officious statement instead? ;)
What are the goals for the programming language you are creating?
For the language:
- minimum 'default' syntax[1] and semantics[1] to satisfy the
following bullet points
- malleable syntax, semantics and pragmatics (runtime support/
primitives)
- completely self-describing (from machine insns to HLLs) and self-
hosting
- static and dynamic compilation and anything in between
- support for static[1] and dynamic[2] typing and anything in between[3]
- late-bound implementation that could replace itself completely at
runtime[4]
[1] minimum needed to (1) understand C header files and generate
library glue and check API correctness and (2) for [3] below
[2] including multiple dispatch, since the cost is more than
amortised by simpler back-end and numeric code
[3] e.g., static type annotations that mangle selectors to help
create transparent 'dynamic cast' mechanisms between objects and
primitive types
[4] including function calling conventions, dynamic dispatch
mechanisms, etc.
For the system (as opposed to the language):
As far as I understand the goals for the language are:
* increased productivity (20K lines of code)
* more correct code (?by using better concepts and automatic
checking?)
A goal is certainly to create an environment conducive to these. See
my previous message about intent vs. optimisation.
* ?better performance than Smalltalk?
It entirely depends on what you are trying to do. If you stay
entirely within the functional part of the language and avoid
closures you can expect performance as good as (or even better than)
C. If you spend most of your time sending messages, count on them
costing 150% to 250% of a static (C-like) function call for one
dynamic (single) dispatch. If you build your own inference engine
and feed it prolog, your might never even terminate. ;-)
What about goals that give this language an identity:
? easy to learn
No. Trivial to 'mutate' into a language that is easy to learn: YES!
? minimalistic syntax
Yes.
? very readable code
No. Conducive to creating languages that attempt to optimise
readability: YES!
? free of unnecessary complexity
Yes.
? easy and natural to think in
No (except for a very particular kind of brain). Conducive to
creating systems that are easy and natural: YES!
? attract many mainstream programmers
No. Conducive to creating systems/languages (standard or otherwise)
that will attract the mainstream: YES!
If you say "yes" to most of them could you (and the other VPRI
members) please order them by priority?
All of the above. The 2.5 'yes' responses should fall right out of
the circular system described at the start of this message.
Cheers,
Ian
PS: Seeing the next message in this thread, I agree with everything
Yoshiki said. (He was being way too modest in the last line of his
reply.)
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc