John Carmack on Eclipse performance

deadalnix deadalnix at gmail.com
Fri Oct 4 16:55:17 PDT 2013


On Friday, 4 October 2013 at 23:38:17 UTC, Joseph Rushton 
Wakeling wrote:
> On 01/10/13 14:14, Dicebot wrote:
>> On Tuesday, 1 October 2013 at 12:02:29 UTC, w0rp wrote:
>>> I'm waiting for Carmack to adopt D already. Barring some 
>>> implementation
>>> details (GC issues, shared libraries, bla bla) it's pretty 
>>> much the perfect
>>> language for what he wants to do. (Fast and functional in 
>>> parts.) Plus, if
>>> anyone could work around issues or figure out how to do 
>>> really cool things
>>> with D, it would be Carmack.
>>
>> He is familiar with D and has shown appreciation for D `pure` 
>> functions in his
>> twitter posts.
>
> One thing that I noted in his QuakeCon talk was his remarks 
> about multiparadigm languages versus strictly functional 
> languages, and how the former while they seem superior have the 
> problem that, because you _can_ break the paradigm, you _do_.
>
> I rather suspected he might have had D partially in mind with 
> that remark, although he was gracious enough to not single out 
> any languages.
>
> That said, although I don't feel experienced enough in 
> functional programming to comment with any authority, my 
> impression is that D lets you be as strictly functional as you 
> want to be, and has enough to let software architects impose 
> strict purity etc. on a codebase.  But it is arguably less nice 
> to have to keep marking "pure const nothrow ..." everywhere, 
> plus const/immutable parameters, compared to something like 
> Haskell where everything is that way by default.
>
> I don't suppose it's possible to do that either by scope or 
> even by module?
>
>     module my.module const nothrow pure @safe
>
> or
>
>     const nothrow pure @safe
>     {
>         // my code here ...
>     }

D has some really serious flaw when it come to functionnal style.

  - Function aren't first class.
  - Delegates break type system.
  - Immutable object have identity issue that wouldn't show up in 
a functional language. It is unsure what the semantic around them 
is (and if identity must be preserved, then functional style is 
badly impaired).
  - Many qualifier do start to not make any sense when using 
functions as arguments (inout for instance).
  - Expect for type qualifier, it is impossible to express return 
qualification depending on the input(s qualification (and see 
point above, that do not work when using first class 
functions/delegates).

On implementation side, heap allocated values aren't optimized to 
go on the stack, ever. And the GC is unable to take advantage of 
immutability. Note that because everything is immutable in 
functional programming, both are mandatory if you don't want to 
trash your performances.


More information about the Digitalmars-d mailing list