Thread overview | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
September 20, 2014 What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
There was a recent video[1] by Jonathan Blow about what he would want in a programming language designed specifically for game development. Go, Rust, and D were mentioned and his reason for not wanting to use D is is that it is "too much like C++" although he does not really go into it much and it was a very small part of the video it still brings up some questions. What I am curious is what are the worst parts of D? What sort of things would be done differently if we could start over or if we were designing a D3? I am not asking to try and bash D but because it is helpful to know what's bad as well as good. I will start off... GC by default is a big sore point that everyone brings up "is" expressions are pretty wonky Libraries could definitely be split up better What do you think are the worst parts of D? [1] https://www.youtube.com/watch?v=TH9VCN6UkyQ |
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tofu Ninja | On Saturday, 20 September 2014 at 12:39:23 UTC, Tofu Ninja wrote:
> What do you think are the worst parts of D?
1. The whining in the forums.
2. Lacks focus on a dedicated application area.
3. No strategy for getting more people on board.
4. No visible roadmap.
5. Too much focus on retaining C semantics (go does a bit better)
6. Inconsistencies and hacks (too many low hanging fruits)
7. More hacks are being added rather than removing existing ones.
8. Not enough performance oriented process.
9. It's mysteriously addictive and annoying at the same time.
10. It's contagious and now I'm in bed with a cold.
|
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tofu Ninja | On 21/09/2014 12:39 a.m., Tofu Ninja wrote: > GC by default is a big sore point that everyone brings up I like having a GC by default. But we really need to think of it as a last resort sort of thing. > "is" expressions are pretty wonky Ehh yeah, D3 we could I spose. > Libraries could definitely be split up better We can still fix that in D2. Just as a note, we do want AST macros for D3. Which will be awesome! Stuff like linq from c# could be done as a library. |
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rikki Cattermole | On Saturday, 20 September 2014 at 13:31:06 UTC, Rikki Cattermole wrote:
> Just as a note, we do want AST macros for D3. Which will be awesome!
What kind of macros? Generic AST macros probably make source to source translation just as difficult as string mixins, don't they? Some simple term-rewriting is probably cleaner?
|
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ola Fosheim Grostad | On Saturday, 20 September 2014 at 13:30:24 UTC, Ola Fosheim Grostad wrote: > On Saturday, 20 September 2014 at 12:39:23 UTC, Tofu Ninja wrote: >> What do you think are the worst parts of D? > > 1. The whining in the forums. > > 2. Lacks focus on a dedicated application area. > > 3. No strategy for getting more people on board. > > 4. No visible roadmap. Not really a problem with the language. Just problems. > 5. Too much focus on retaining C semantics (go does a bit better) > > 6. Inconsistencies and hacks (too many low hanging fruits) > > 7. More hacks are being added rather than removing existing ones. Definitely can agree, I think it has to do with the sentiment that it is "too much like C++" > 8. Not enough performance oriented process. Not sure what you are saying, are you saying there is not a big enough focus on performance? > 9. It's mysteriously addictive and annoying at the same time. Is that a problem? > 10. It's contagious and now I'm in bed with a cold. :< |
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tofu Ninja | On Saturday, 20 September 2014 at 12:39:23 UTC, Tofu Ninja wrote:
> What do you think are the worst parts of D?
Oh another bad part of D is the attribute names with some being positive(pure) and some being negative(@nogc) and some of them not having an @ on them.
|
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tofu Ninja | On Saturday, 20 September 2014 at 14:22:32 UTC, Tofu Ninja wrote: > Not really a problem with the language. Just problems. It is kind of interlinked in a world that keeps moving forward. I found myself agreeing (or at least empathising) with a lot of what Jonathan Blow said. Of course, since his presentation was laid-back the people on reddit kind of attacked him and who knows, maybe he lost inspiration. He did at least respond on twitter. And his language project probably depends on his next game Witness (which sounds cool) to succeed. Anyway, I think he got the right take on it, reach out to other devs in his own sector and ask them about their practice, then tailor a language with little syntactical overhead for that use scenario. Of course, it won't fly if he doesn't manage to attract people who are more into the semantics of computer languages, but I root for him anyway. I like his attitude. On a related note I also read somewhere that Carmack is looking at GC for the gameplay data. Basically only a heap scanning, but compacting GC, that can run per frame. Seems the game logic usually fits in 5MB, so it might work. > Definitely can agree, I think it has to do with the sentiment that it is "too much like C++" Yes, I think Jonathan got that part right. I guess also that any kind of "unique traits" that feels like "inventions" will be eagerly picked up and hold up as good ideas by enthusiasts. Even if they are just special cases of more general constructs or variations of existing concepts posing under a new name. Perhaps an important aspect of the sociology of computer languages. (Lispers tend to be terribly proud of their language of choice :) >> 8. Not enough performance oriented process. > > Not sure what you are saying, are you saying there is not a big enough focus on performance? I think there is too much focus on features both in language and library. I'd personally prefer smaller and more benchmark focused. It is better to be very good at something limited, IMO. I also think that the big win in the coming years come for the language that most successfully can make elegant low overhead access to SIMD instructions without having to resort to intrinsics. I have no idea what the syntax would be, but that seems to be the most promising area of language design in terms of performance IMO. |
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ola Fosheim Grøstad | Jonathan Blow has expressed himself about D before… http://www.kotaku.com.au/2012/05/most-popular-video-games-are-dumb-can-we-stop-apologising-for-them-now/ It could be incidental, of course. |
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tofu Ninja | I watched Jonathan's talk last night, it was really good. I really like the idea that he wants to make a community designed, platform independent, game specific language. It's too bad he doesn't really want to give D more of chance but for what he's looking for, it'd really need to be designed from the ground up, as he was saying. Also being that he's slowly rejecting C++, then I can see D not making sense since D's slogan is pretty much "A better C++!"; which is accurate but may not be the best marketing scheme. Also D is a general purpose language, so I guess it really wouldn't fit his bill. Though he mentioned Go and Rust a lot, personally I wouldn't really back those languages either, at least not for games. Rust maybe if it ever hits version 1.0 I'll take another look at it. I'm definitely all for the setup he was describing though: all you need is an IDE/text editor and the compiler. I feel like D definitely has the potential to be able to meet that setup someday; I'm just not sure if that setup would be a screw over or not to people of other fields. The platform independent thing would be a HUGE plus! Something D isn't too, too far from, but definitely not there at least of yet. Overall I'd say D has some significant issues: - The documentation is awful. If there's a problem you don't know the answer to, the only three real options are pray that the docs are correct/up to date, go ask someone who possibly does know, or magic. - Bugs. D is like Costco, expect for bugs, and all the bugs are free. - More of a suggestion than a problem: Someone needs to do an O'reilly book series for D; but only after the first two problems I listed are at least suppressed a bit. - Very few native D libraries, and also for C/other libraries almost all D bindings are maintained by usually only one person. Usually very skilled people, but the work load for library development and maintenance would probably thrive best with more people doing more. (The community is probably just too small at the moment) ....I'm sure there was more, but it's just not coming to me at the moment. I'm definitely interested in Jon's theoretical language but I don't think it's gonna take away from D for me. Overall though, I absolutely love D! There's just ALOT of work to be done. :) |
September 20, 2014 Re: What are the worst parts of D? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tofu Ninja | On 9/20/14, 7:42 AM, Tofu Ninja wrote:
> On Saturday, 20 September 2014 at 12:39:23 UTC, Tofu Ninja wrote:
>> What do you think are the worst parts of D?
>
> Oh another bad part of D is the attribute names with some being
> positive(pure) and some being negative(@nogc) and some of them not
> having an @ on them.
If that's among the worst, yay :o).
My pet peeves about D gravitate around the lack of a clear approach to escape analysis and the sometimes confusing interaction of qualifiers with constructors.
For escape analysis, I think the limited form present inside constructors (that enforces forwarded this() calls to execute exactly once) is plenty fine and should be applied in other places as well.
For qualifiers, I think we need an overhaul of the interaction of qualifiers with copy construction.
Andrei
|
Copyright © 1999-2021 by the D Language Foundation