Egoless Language Design

EgolessProgramming is one thing, but what do you suppose happens when one applies that approach to library & language design?

Something novel, that's what.

One would start with TakeOverTheWorld? mentality. This sounds counterproductive. It turns out that a language not designed to do everything other than kernel programming cannot be a good enough general purpose language to be generally useful. We know C++/CLR generally failed to find wide usage; however its TakeOverTheWorldMentality? was the only thing that in the end gave enough power to be the interop glue language it is now. Corollary: the language must be cross platform. Further Corollary: the language must be able to fix endian problems in input.

But one must then remember that this language is not going to actually TakeOverTheWorld?. This means the interop gateway must be sufficiently well featured and easy to use so that it can interop with thousands of existing languages. This also means able to start your runtime from any thread, and possibly the ability to host several copies of the runtime in the same memory space.

One would have to design the language to be multi-paradigm, with at least FunctionalProgramming, ObjectOrientedProgramming, and ProceduralProgramming.

The language's standard library would have to be written mostly in the language. As a modern language needs a large runtime library, it is not reasonable to assume the library will be bug free. This means, and this is the horrifying part, the application programmer must have the means of fixing library bugs w/o modifying the library as installed on the system.

The modern world has imposed another requirement: the language must be able to provide a sandboxed execution environment for untrusted code. You may think this conflicts with the above; however I have in hand a proof it does not.

Let us see how this fits for C++:

And for Java:

And for C#:

How about SmallTalk. Somoebody please correct this if wrong:

Please somebody do a chart for CommonLisp.

Unless one of the many LispVariant?s qualifies than it is likely no language in existence qualifies under these constraints.


Oh, come on: One needs to have a pretty big ego to go off and design your own language. ;->

Quite. Making an egoless one must require disciplined effort to do so.


Oh, come on: One needs to have a pretty big ego to go off and design your own language. ;->

The low-ego variation is to create a language that makes very few permanent design decisions (i.e. keep everything - including semantics, support for GC, etc. - mutable by the application architect). I can think of several such projects. But I have a bad feeling about interop and reuse, even of regular libraries, in these languages.

Funny, I don't.


Examples? Could we see some examples?

With a mere search query in Google, one can discover far more examples than can be expressed here:

Exercising EgolessLanguageDesign is not about having a big ego. Confidence, ego and ambition are driving personality forces existing in people who accomplish things. It is about designing languages that are UsefulUsableUsed. If one were not egoless in their approach, they would design a PrivateLanguage, useful for their own personal requirements.


JanuaryEleven CategoryLanguageImplementation


EditText of this page (last edited January 31, 2011) or FindPage with title or text search