Unofficial wish list status.(Jul 2008)

Yigal Chripun yigal100 at gmail.com
Wed Jul 23 14:37:48 PDT 2008


Walter,
Thanks for replying, please see my notes in the body of the text

Walter Bright wrote:
> Yigal Chripun wrote:
>> The word example is wrong in that, in your example, bill doesn't need
>> feature #1678, and sue doesn't need #543. The answer to that is a model
>> similar to eclipse: both sue and bill can use eclipse but since bill
>> works with c/c++ he can get a pre-packaged version with CDT which is
>> much smaller than the entire eclipse project, and sue can get her
>> eclipse pre-packaged with JDT since she works with Java. This is why
>> Eclipse is so popular and supported by many large companies like oracle,
>> IBM, etc.. The same goes to the popular browser Firefox and its
>> extensions. No need to bundle everything like Microsoft word does, it's
>> much better to have a system to allow users to integrate features they
>> require beyond the lean & mean core.
> 
> What you're saying is provide a lean & mean core with a pluggable
> architecture that can be extended by 3rd parties. I think you're quite
> right that that is a better system than all-in-one.
> 
> D has a lot of support for "pluggable architecture", such as template
> metaprogramming and string mixins. Lisp is famous for being a very
> pluggable language.
> 
> Unfortunately, I don't see any way to be able to "plug in" the needed
> support for functional coding, there just isn't enough basic capability
> in the language. We're trying to fix that.

Walter, please take a look at the design used by Nemerle.
The language designers of Nemerle achieved a _very_ pluggable
architecture via Macros (probably identical to your idea of AST macros).
their system allows to implement whole subsets of the language
*including the syntax* as plugins which in D are now part of the
language. They have DBC, concurrency, etc implemented like that. they
have a plan to make an AOP plugin as well.
look at:
http://nemerle.org/Macros
http://nemerle.org/Syntax_extensions
http://nemerle.org/doc/Nemerle.Compiler.html
etc..

> 
>> C++ as an example: its syntax is horrible due to the fact that it can do
>> so much.
> 
> I don't agree with that being the reason its syntax is horrible. The
> reason is more related to efforts to preserve backwards syntax
> compatibility, and because some expert advice was ignored in the case of
> using < > for templates.
> 
> 
>> if I only do OOP, I'll prefer a syntax like Ruby or Smalltalk
>> or something like that. if I want to do procedural code I'll prefer C
>> syntax instead, but I definitely do not want to have a compromise of
>> both syntaxes in one language (we all know that a programing language is
>> an agreed upon compromise) that will not allow me to express my OOP code
>> in a concise OOP way and also will not allow me to express my procedural
>> code in a concise procedural way.
>>
>> an everything-including-the-kitchen-sink language cannot provide concise
>> syntax for any of the paradigms it supports.
> 
> You're right, it can't, but it can provide good enough syntax that
> overweights the large disadvantages of trying to get two very different
> languages to work together.

It depends on what kind of languages you try to integrate, C and python
probably will have issues since they use very different run-times.
But, compare that with Java and [J]Ruby both running on the same JVM in
one process. you can use classes from both languages together with no
trouble at all. you get all the benefits of combining the strengths of
both without any drawbacks.
in the same way you can instantiate Java classes inside Scala since,
again, both run in the same JVM.



More information about the Digitalmars-d mailing list