digitalmars.D - D vs Go in real life
- Atila Neves (38/38) Nov 05 2013 So my buddy Jeff at work is a massive Go fan and goes on about it
- Dicebot (4/4) Nov 05 2013 Yeah, unfortunately there were lot of 2.063.2 bugs that vibe.d
- Dicebot (3/7) Nov 05 2013 P.S. Also there are speculations about performance regressions,
- Atila Neves (4/6) Nov 05 2013 So I read while looking around for info on how to use vibe.d
- John Colvin (3/43) Nov 05 2013 this is with dmd? I wonder how those numbers would look if you
- Atila Neves (5/7) Nov 05 2013 Yep, dmd. I mentioned the problems getting the whole thing
- Alexandr Druzhinin (2/8) Nov 05 2013 Did you try --compiler=ldmd2 to use ldc? May be it helps.
- Atila Neves (1/2) Nov 05 2013 I tried every combination I could think of, including that one.
- Jesse Phillips (2/2) Nov 05 2013 So, is he writing D code now :D. Or did he complain about the
- Jonathan M Davis (12/14) Nov 05 2013 LOL. I doubt that someone who's that big a fan of Go would switch thanks...
- Jesse Phillips (10/14) Nov 05 2013 Of course not, Go puts the types on the wrong side for me to
- Jonathan M Davis (6/23) Nov 05 2013 Yikes. Sorting time in D is trivial. It would never occur to me that tha...
- Jesse Phillips (13/15) Nov 06 2013 I know, it's something I use. Something one probably expects to
- Dmitry Olshansky (5/19) Nov 06 2013 I swear when I glanced at [1] I thought it was sarcasm. Reading it again...
- Paulo Pinto (5/20) Nov 06 2013 You will find lots of similar explanations from Go devotees when reading...
- Jesse Phillips (10/13) Nov 06 2013 I know it. But I was already aware the author was very pro-Go
- Kagamin (6/7) Nov 06 2013 Hmm... if sort.Sort accepts a sortable interface, they could
- Jesse Phillips (4/11) Nov 06 2013 It does not. A specific type must be created and the functions
- Kagamin (3/10) Nov 07 2013 So methods are tightly coupled with types after all. Doesn't look
- Paulo Pinto (17/39) Nov 05 2013 I rather use D than Go, but it has more to do with Go's community
- deadalnix (3/8) Nov 05 2013 You may want to look at scala then.
- Bienlein (23/32) Nov 06 2013 Go IMHO is a modernized C and there is nothing in addition from
- Paulo Pinto (7/16) Nov 06 2013 Which are also available in many JVM implementations and in .NET
- Bienlein (9/13) Nov 06 2013 I'm sure about that. When you block a thread in Java it is no
- Bienlein (7/16) Nov 06 2013 Ah, unhappily Groovy CSP also can't do this: "Some
- Russel Winder (28/37) Nov 06 2013 Anyone using thread management explicitly in Java is doing it wrong. The
- qznc (4/11) Nov 06 2013 Use std.parallelism.Task or core.thread.Fiber. This is also
- Daniel Davidson (14/23) Nov 06 2013 Do you really make heavy use of immutable objects and pure
- Bienlein (15/19) Nov 06 2013 What I meant to say was that Scala wants to call itself
- Bienlein (6/10) Nov 06 2013 I fear the language on the JVM in 95% of all cases will be Java.
- Paulo Pinto (6/17) Nov 06 2013 I do know Scala, but my co-workers do not.
- Russel Winder (14/18) Nov 06 2013 Or are willing to be trained in. The problem is not the status quo in
- Paulo Pinto (9/26) Nov 06 2013 It does not work on my field, because my employer does consulting
- Bienlein (17/22) Nov 06 2013 I'm out of the consulting business for quite a while now. Now I'm
- Paulo Pinto (3/29) Nov 06 2013 Yeah, I am pretty old at this game. I already lost count how many
- Russel Winder (9/11) Nov 06 2013 1986. You are a youngster then. ;-)
- Paulo Pinto (2/7) Nov 06 2013 Started using computers at the age of 10, so 1986 - 10 ...
- Bienlein (2/12) Nov 06 2013 1976? Man, you are a teenager then ;-)
- Russel Winder (15/16) Nov 06 2013 The year I went apesh!t when I found that the elliptic integral solver
- Mike James (5/23) Nov 07 2013 Mmmm - that reminds me...
- Walter Bright (6/12) Nov 06 2013 While your comment seems to be a commonsense truism, there are so many n...
- Russel Winder (11/13) Nov 06 2013 Or possibly Ceylon or Kotlin.
- Russel Winder (26/41) Nov 06 2013 I find the Go community excellent. The mailing list is only a small part
- Paulo Pinto (15/61) Nov 06 2013 A bit far away from Düsseldorf. :)
- Andrei Alexandrescu (24/47) Nov 06 2013 I disagree with this relativism that makes all language communities
- Max Samukha (5/6) Nov 22 2013 Not adding generics was Go's deliberate decision. For that
- Andrei Alexandrescu (6/12) Nov 22 2013 http://golang.org/doc/faq#generics
- Max Samukha (4/20) Nov 30 2013 Ok, I stand corrected.
- Max Samukha (7/31) Nov 30 2013 To clarify:
- Walter Bright (5/8) Nov 06 2013 I know that D carries forward some attitudes from the 1980's, particular...
- Russel Winder (38/42) Nov 06 2013 I would suggest that this is the core of the point: programming language
- Bienlein (8/12) Nov 07 2013 Well, I don't know what muscle Mozilla has. I don't really
- Russel Winder (15/20) Nov 07 2013 I guess the question is whether Canonical and Google end up rewriting
- Bienlein (15/18) Nov 21 2013 Well, I think that says it all. Go is made by C programmers for C
- Bienlein (3/18) Nov 21 2013 I forgot to say that I really don't know what this will end up in
- Chris (14/38) Nov 21 2013 I'm wary of languages that are hyped by big companies or the web
- Paulo Pinto (10/49) Nov 21 2013 You mean like C and C++ were by AT&T? Or FORTRAN and PL/I/M by
- Chris (7/61) Nov 21 2013 D's advantage is that there is no committee, laboratory or
- Andrei Alexandrescu (8/11) Nov 21 2013 Each language has its story, but it's undeniable that corporate
- Gary Willoughby (3/4) Nov 21 2013 Please, do tell. ;)
- Andrei Alexandrescu (9/12) Nov 21 2013 Not much that people don't know already. We have one solid D project
- bearophile (6/8) Nov 21 2013 At this point what's important is to perform the small breaking
- Shammah Chancellor (2/12) Nov 21 2013 +1
- Dmitry Olshansky (4/12) Nov 22 2013 --
- eles (3/7) Nov 22 2013 @property
- Jacob Carlborg (5/6) Nov 22 2013 This would hopefully not be a braking change. The dollar sign can't be
- Jonathan M Davis (5/10) Nov 22 2013 What would that even mean? The only thing that $ is used for is for
- bearophile (10/16) Nov 22 2013 It's not nonsensical, it's a new tiny feature. It means the
- Namespace (3/18) Nov 21 2013 Any plans for rvalue references before D gets stable?
- John Colvin (8/23) Nov 21 2013 Just reiterating a common point:
- Ary Borenszweig (3/12) Nov 22 2013 I would have expected a lot more speedup than just 2x, D being a
- bearophile (6/8) Nov 22 2013 I have seen many cases where Python is faster than D: reading
- Andrei Alexandrescu (3/16) Nov 22 2013 Amdahl's law.
- SomeDude (4/25) Nov 24 2013 BTW, D needs a multithreading example here:
- Bienlein (14/16) Nov 22 2013 I think books for some new language being available is also an
- Chris (9/25) Nov 22 2013 Yes, yes, yes. You are of course right that corporate backing
- Joseph Rushton Wakeling (6/13) Nov 22 2013 You're talking about corporate _management_ rather than corporate
- Chris (8/21) Nov 22 2013 You cannot separate the two. Management will creep into
- Tobias Pankrath (2/8) Nov 22 2013 Attention of and negclection from the people payed by facebook.
- bearophile (5/9) Nov 22 2013 Do you know one or two cases where this phenomenon has happened
- Chris (25/35) Nov 22 2013 Good question! To be honest I cannot put my finger on any module
- Chris (17/55) Nov 22 2013 What I'm saying is basically:
- Paulo Pinto (9/34) Nov 22 2013 You know that this comes from the original concept of what OOP is
- Chris (7/43) Nov 22 2013 I don't blame Java for Smalltalk. I just don't like ideological
- Paulo Pinto (8/55) Nov 22 2013 Just get Aonix, J9, RoboVM, JET, Jasmine, JikesRVM, just to cite
- Chris (3/60) Nov 22 2013 Which kind of proves my point. There is demand for it. Why not
- Jesse Phillips (9/11) Nov 22 2013 I think you are attributing results to the wrong thing. Go isn't
- Paulo Pinto (10/21) Nov 22 2013 Go simplicity is easy to understand once you know the background
- Jesse Phillips (4/5) Nov 22 2013 Which just reinforces my point. It is the language designer
- Chris (10/15) Nov 22 2013 But being a corporation bars the community from influencing the
- Jesse Phillips (7/17) Nov 22 2013 It doesn't, it is the creator which causes it. I think Go and C#
- Chris (5/24) Nov 22 2013 I remember the hype around C# when it was claimed that it was
- bearophile (5/7) Nov 22 2013 You could write a blog post/article to explain why you think
- Chris (6/13) Nov 23 2013 Sure. One of the reasons is that you have the choice. OO,
- Paulo Pinto (7/22) Nov 23 2013 Well,
- Chris (5/33) Nov 25 2013 That's my point. D had / has it all, while Java is bringing it in
- Joseph Rushton Wakeling (4/7) Nov 25 2013 D obtained it over years, too, and has been much less constrained by the...
- Chris (29/40) Nov 25 2013 Yes, D could breathe, which only goes to show that
- Bienlein (6/10) Nov 25 2013 Well, I think the guys at Sun back then thought anonymous inner
- Bienlein (17/24) Nov 28 2013 I basically I agree with this. But lately, I was asking myself,
- Andrei Alexandrescu (4/19) Nov 28 2013 Interesting. Could you please create a paste with the two code samples?
- Bienlein (73/77) Nov 29 2013 Hello,
- Chris (14/95) Nov 29 2013 Thanks for the example. To be honest the Go code looks like a
- bearophile (5/8) Nov 29 2013 I read that type "array of byte(s)", I find it a bit better than
- John Colvin (3/12) Nov 29 2013 "byte array named a" vs "a is an array of bytes". Either is fine.
- Russel Winder (8/16) Nov 29 2013 I believe it should be read as "slice of bytes" not "array of bytes".
- Bienlein (10/12) Nov 29 2013 My theory is that Go is from the beginning intended to be a
- Chris (25/38) Nov 29 2013 bearophile
- Bienlein (30/39) Nov 29 2013 Agree. If I accept a language that simple then it needs to
- Chris Cain (12/14) Nov 29 2013 I'll answer for you: C was very counter intuitive which is why no
- Chris (17/32) Nov 29 2013 I agree that D, too, can be a bit confusing. I sometimes have
- Chris Cain (24/33) Nov 30 2013 Actually it is. D is pretty good about being consistently read
- Walter Bright (5/6) Nov 30 2013 The trick to reading C declarations is the form matches exactly how it i...
- eles (5/9) Dec 04 2013 They acknowledge that here:
- Chris Cain (8/11) Dec 04 2013 Yep. Spiral reading on this:
- Chris (10/23) Dec 04 2013 C's
- Chris Cain (8/18) Dec 04 2013 Yeah. D's is mostly fine on this. I wouldn't at all recommend a
- Walter Bright (2/12) Dec 04 2013 It's not a counterexample. It's still the same as how you'd use it in an...
- eles (4/13) Dec 04 2013 yes, it is not a counter-example to the C's choice, only to the
- Jesse Phillips (11/20) Dec 02 2013 string[string][string] hm;
- Chris Cain (4/11) Dec 02 2013 Maybe it's just me, but if you said that (or wrote that) without
- Jesse Phillips (7/19) Dec 02 2013 Thats ok, I can say the same thing about what you wrote. There
- eles (8/27) Dec 04 2013 For the record, this is the idea behind the Go's declaration
- Jacob Carlborg (6/81) Nov 29 2013 You can do the exact thing in D with the help of UFCS. BTW, you need to
- Walter Bright (9/17) Nov 30 2013 It's easier than that:
- Bienlein (25/45) Nov 30 2013 D is always full of surprises ;-). Now the only feature in Go
- Walter Bright (2/3) Nov 30 2013 The syntax for alias this is a bit off-putting to me, but it works great...
- Bienlein (4/12) Dec 02 2013 Are there any plans so that you can have multiple aliases per
- H. S. Teoh (5/21) Dec 02 2013 +1. Can we have multiple alias this? Pretty please? :)
- Dicebot (2/3) Dec 02 2013 It think it is all about "pretty pulls please" ;)
- H. S. Teoh (10/14) Dec 02 2013 I know, I know... I just need to find the time to sit down and dig into
- Daniel Murphy (4/15) Dec 02 2013 The D version is automatically generated from the C++ version, so time s...
- Shammah Chancellor (2/21) Dec 03 2013 Please tell me more. Is this actually happening? Where's it at?
- Daniel Murphy (9/30) Dec 03 2013 Yeah. See:
- Shammah Chancellor (6/41) Dec 04 2013 This is AWESOME!!!! Keep up the good work. Can't wait to see how the
- Walter Bright (6/8) Dec 04 2013 I'm opposed to it.
- Jacob Carlborg (6/8) Dec 05 2013 The answer to that would be: contribute that implementation to LLVM. But...
- Walter Bright (9/15) Dec 05 2013 Easy to say, but doing Win64 was a major effort:
- Jacob Carlborg (8/16) Dec 05 2013 Yes, I understand that. Hopefully you wouldn't have moved to LLVM and at...
- Joseph Rushton Wakeling (12/17) Dec 06 2013 The problem we have is that while all 3 implementations are equivalent, ...
- Craig Dillabaugh (8/33) Dec 06 2013 But is D not still doing a better job than Microsoft is of
- Joseph Rushton Wakeling (14/19) Dec 06 2013 I'm not making any comparisons here, I'm simply saying that this is some...
- Chris (3/30) Dec 06 2013 Shhhhhhhhhhhhhhhhhhhhhh! Don't tell anyone!
- Walter Bright (2/4) Dec 12 2013 Or, you could contribute to the gdc and ldc projects!
- Joseph Rushton Wakeling (11/16) Dec 12 2013 Well, when I first contributed to Phobos I looked into getting
- Iain Buclaw (17/35) Dec 13 2013 Well patches that go into phobos will soon hit gdc (eventually) - and
- Daniel Murphy (3/43) Dec 13 2013 Well, you know how I feel about 2594. If you merge that ddmd will FTBFS...
- Iain Buclaw (3/53) Dec 13 2013 Yeah, it's my fault really. I should have foresaw how the change would
- Daniel Murphy (9/23) Dec 04 2013 From a quick test, compiling ddmd with ddmd takes about 80% longer than
- H. S. Teoh (13/24) Dec 04 2013 I'm looking forward to that. Recently I've been working on a
- Joseph Rushton Wakeling (6/10) Dec 06 2013 .... just as I brought the topic up in another branch of this thread [*]...
- Daniel Murphy (10/23) Dec 06 2013 It's going very slowly. There have been a few pulls working on some are...
- Joseph Rushton Wakeling (8/16) Dec 06 2013 OK, clear. It's kind of what I'd expected; I'm glad to see that it's pl...
- Daniel Murphy (6/10) Dec 10 2013 The TODO list is basically the diff between dmd's and ldc/gdc's frontend...
- =?UTF-8?B?Ikx1w61z?= Marques" (7/15) Dec 05 2013 The other day in IRC I asked about the transition to the newer
- Dicebot (6/8) Nov 28 2013 IMHO, problem with go simplicity is not as much as being not
- Chris (4/26) Nov 22 2013 To be clear, this doesn't mean that this is happening, it's not,
- Andrei Alexandrescu (3/28) Nov 22 2013 Oh please.
- Chris (4/49) Nov 22 2013 Yeah, you're right. Sometimes I get carried away and dramatize
- SomeDude (10/25) Nov 21 2013 That actually makes it a good first language to learn programming
- Jesse Phillips (9/14) Nov 21 2013 Or a second language. Simple to learn makes it easy for one of
- Nick Sabalausky (4/9) Nov 07 2013 Primarily from Google, AIUI. From what I've read on Wikipedia, the vast
- Gary Willoughby (4/18) Nov 05 2013 Are all of these issues noted on bugzilla? If not are you able to
- Walter Bright (3/7) Nov 05 2013 These too in the dub system.
- Dicebot (2/4) Nov 05 2013 At least this one will be fixed in 2.064
- Benjamin Thaut (6/10) Nov 06 2013 Are you sure? There are still 5 open ICE-bugs with -inline
- Dicebot (5/7) Nov 06 2013 Probably not all of them but at least on of "-inline" ICE's I got
- Atila Neves (4/15) Nov 06 2013 I submitted the -inline bug. The other one with TaskPool.map was
- brad clawsie (48/48) Nov 28 2013 this has been a great thread and I've found a lot of the replies
- Craig Dillabaugh (20/69) Nov 28 2013 So when you say you would install Go using the default build,
- Andrei Alexandrescu (9/17) Nov 29 2013 Thanks Brad for the compare & contrast. Craig, I think funding is part
- Chris Cain (39/46) Nov 28 2013 I really have to agree. I recently had to set up an environment
- Dicebot (13/22) Nov 29 2013 Huh?
- Jacob Carlborg (4/6) Nov 29 2013 dmd.conf.default is only for Linux. There's also no sc.ini for Windows.
- Dicebot (4/10) Nov 29 2013 Pardon my ignorance, I have never used D on Windows. Well, I
- Paolo Invernizzi (14/19) Nov 28 2013 This reply is not intended as a specific reply to Brad, so no pun
- Jacob Carlborg (6/35) Nov 29 2013 Why did you install dmd from source and not the same way as Go? It's a
- Joseph Rushton Wakeling (10/12) Dec 03 2013 There is absolutely no point trying to complain about "unfair comparison...
- eles (4/9) Dec 03 2013 At least let it be a *proeminent* link towards the "Downloads &
- Andrei Alexandrescu (4/12) Dec 03 2013 Pull request please. Also does everybody like the graphics at the top of...
- Craig Dillabaugh (10/28) Dec 03 2013 I do, nice and clean.
- Andrei Alexandrescu (5/30) Dec 03 2013 Thanks. I was asking mainly hoping that someone would say it's horrible
- Meta (3/6) Dec 03 2013 The space between the 0, 1 and 4 in 2014 is making me cringe.
- Philippe Sigaud (3/10) Dec 03 2013 Compulsory XKCD link:
- Jacob Carlborg (5/7) Dec 03 2013 Honestly, no. It's very, yellow. Although I'm no designer so I won't try...
- Joseph Rushton Wakeling (12/13) Dec 04 2013 I've no objection to that, but in this case I think I'd rather donate to...
- Chris (16/34) Dec 04 2013 The yellow doesn't "stand" well on the dark gray background. It
- Martin Nowak (3/5) Dec 04 2013 Frankly, it's awful.
- Andrei Alexandrescu (3/8) Dec 05 2013 I agree!!
- Jonathan M Davis (7/15) Dec 06 2013 As do I. The font is not particularly pretty, and the yellow is way to h...
- Tourist (6/15) Dec 06 2013 I'm not a designer, but I think whatever alternative is better.
- Tourist (3/20) Dec 06 2013 Oops, 2014 of course :)
- eles (4/15) Dec 06 2013 Too bad. I really loved the way that you rounded the 4 until it
- Chris (8/25) Dec 06 2013 Just add some letter spacing and bin that effin yellow. It will
- Andrei Alexandrescu (3/18) Dec 06 2013 s/2013/2014/
- Tourist (4/27) Dec 06 2013 lol, I saw you've pulled the 2013 one.
- Jacob Carlborg (5/11) Dec 03 2013 I thought that was just what I asked. Sure I could have skipped the
- Joseph Rushton Wakeling (3/5) Dec 03 2013 Had you created a dmd.conf file containing the right locations for
So my buddy Jeff at work is a massive Go fan and goes on about it all the time. He even got me to try it once but I mostly hated it. To each his own. However, he laid down the gauntlet last Thursday saying his MQTT broker implementation in Go couldn't be beaten in performance. For those not in the know, MQTT is a publish/subscribe network protocol. And Go is all about parallel network programming, so what could beat it, right? Always up for a challenge, I went ahead and implemented enough of an MQTT broker to handle the functionality required by the benchmark program he wrote to test his own code. In D of course, with the network code coming from vibe.d. The result? 11% - 34% faster than the Go implementation depending on the workload (34%, 30%, 11%, 30%). The low end of that was with a higher number of connected clients, and that could always be me not using vibe.d well (I'd never used it before last Friday). I also measured Mosquitto, an open-source C implementation. It mostly beat my D one, and went from 1% slower to 17% faster than the D/vibe.d combo depending on workload, with that 17% being an outlier (-1%, 5%, 17%, 3%, 3%). I actually have error bars for all those values but thought it'd be too much to post them here. D FTW! Atila P.S. Not all was roses. Although getting to write D again was awesome (and I beat him), I ran into multiple problems: - Trying to use dub to compile the project in release or profile mode flat out didn't work. I had to take the verbose output of dub, use it to compile vibe.d in debug mode into an object file and compile my own code separately and link it in. I believe this was a dmd regression. Speaking of which, why does dub recompile the world instead of tracking dependencies (I tried the rdmd option once but that didn't work, I can't remember why)? - I ran into a dmd bug when I tried to use TaskPool.map with a delegate so I had to give up trying that possible optimisation. - I ran into another dmd bug (it crashed) at one point if -inline was used. - dub build with LDC and GDC failed miserably. I think it was because of vibe.d.
Nov 05 2013
Yeah, unfortunately there were lot of 2.063.2 bugs that vibe.d triggered during transition to 2.064, it was quite a mess for some time. I expect out-of-the-box experience to be much better at point of 2.064 release.
Nov 05 2013
On Tuesday, 5 November 2013 at 13:11:26 UTC, Dicebot wrote:Yeah, unfortunately there were lot of 2.063.2 bugs that vibe.d triggered during transition to 2.064, it was quite a mess for some time. I expect out-of-the-box experience to be much better at point of 2.064 release.P.S. Also there are speculations about performance regressions, once those are figured out it may yield even better results :)
Nov 05 2013
On Tuesday, 5 November 2013 at 13:12:33 UTC, Dicebot wrote:P.S. Also there are speculations about performance regressions, once those are figured out it may yield even better results :)So I read while looking around for info on how to use vibe.d properly. I might revisit and remeasure once a see a post about it and rub it in my buddy's face again. :)
Nov 05 2013
On Tuesday, 5 November 2013 at 13:05:21 UTC, Atila Neves wrote:So my buddy Jeff at work is a massive Go fan and goes on about it all the time. He even got me to try it once but I mostly hated it. To each his own. However, he laid down the gauntlet last Thursday saying his MQTT broker implementation in Go couldn't be beaten in performance. For those not in the know, MQTT is a publish/subscribe network protocol. And Go is all about parallel network programming, so what could beat it, right? Always up for a challenge, I went ahead and implemented enough of an MQTT broker to handle the functionality required by the benchmark program he wrote to test his own code. In D of course, with the network code coming from vibe.d. The result? 11% - 34% faster than the Go implementation depending on the workload (34%, 30%, 11%, 30%). The low end of that was with a higher number of connected clients, and that could always be me not using vibe.d well (I'd never used it before last Friday). I also measured Mosquitto, an open-source C implementation. It mostly beat my D one, and went from 1% slower to 17% faster than the D/vibe.d combo depending on workload, with that 17% being an outlier (-1%, 5%, 17%, 3%, 3%). I actually have error bars for all those values but thought it'd be too much to post them here. D FTW! Atila P.S. Not all was roses. Although getting to write D again was awesome (and I beat him), I ran into multiple problems: - Trying to use dub to compile the project in release or profile mode flat out didn't work. I had to take the verbose output of dub, use it to compile vibe.d in debug mode into an object file and compile my own code separately and link it in. I believe this was a dmd regression. Speaking of which, why does dub recompile the world instead of tracking dependencies (I tried the rdmd option once but that didn't work, I can't remember why)? - I ran into a dmd bug when I tried to use TaskPool.map with a delegate so I had to give up trying that possible optimisation. - I ran into another dmd bug (it crashed) at one point if -inline was used. - dub build with LDC and GDC failed miserably. I think it was because of vibe.d.this is with dmd? I wonder how those numbers would look if you could get ldc/gdc up and running.
Nov 05 2013
this is with dmd? I wonder how those numbers would look if you could get ldc/gdc up and running.Yep, dmd. I mentioned the problems getting the whole thing (including vibe.d) to compile with ldc and gdc because I was trying those two exactly to try and eke more performance out. Neither worked with dub and I think running them manually got me into problems too.
Nov 05 2013
05.11.2013 22:17, Atila Neves пишет:Did you try --compiler=ldmd2 to use ldc? May be it helps.this is with dmd? I wonder how those numbers would look if you could get ldc/gdc up and running.Yep, dmd. I mentioned the problems getting the whole thing (including vibe.d) to compile with ldc and gdc because I was trying those two exactly to try and eke more performance out. Neither worked with dub and I think running them manually got me into problems too.
Nov 05 2013
Did you try --compiler=ldmd2 to use ldc? May be it helps.I tried every combination I could think of, including that one.
Nov 05 2013
So, is he writing D code now :D. Or did he complain about the syntax, all the types being on the left?
Nov 05 2013
On Tuesday, November 05, 2013 16:27:39 Jesse Phillips wrote:So, is he writing D code now :D. Or did he complain about the syntax, all the types being on the left?LOL. I doubt that someone who's that big a fan of Go would switch thanks to that (would you have switched to Go if the Go implementation had won?) - especially when Go and D are so dissimilar. In general, I would expect fans of Go to dislike D and fans of D to dislike Go simply because of how very different their designs are. But it _would_ show him that D can compete with Go for performance even in Go's area of expertise. Go is on the list of languages that I'd like to spend more time becoming familiar with, because I think that it's good to know lots of programming languages, but the more I learn about it, the less I like it. Its design philosophies are just too different from my preferences. - Jonathan M Davis
Nov 05 2013
On Wednesday, 6 November 2013 at 05:38:54 UTC, Jonathan M Davis wrote:LOL. I doubt that someone who's that big a fan of Go would switch thanks to that (would you have switched to Go if the Go implementation had won?) -Of course not, Go puts the types on the wrong side for me to switch. Had a coworker mention to me that I should look into the philosophy of Go amongst other points (not enough tech talk around). After a little bit of discussion (mostly not around Go) I let him know I was already aware of Go's philosophy and it didn't match my desires. Citing my attempt at Sorting Time[1] as an example. He agreed, lack of generics sucks. 1. http://he-the-great.livejournal.com/49072.html
Nov 05 2013
On Wednesday, November 06, 2013 07:18:43 Jesse Phillips wrote:On Wednesday, 6 November 2013 at 05:38:54 UTC, Jonathan M Davis wrote:Yikes. Sorting time in D is trivial. It would never occur to me that that would be hard. But I'm so sold on D's way of doing things with ranges and generic code that most any other language is likely to seem worse in comparison. - Jonathan M DavisLOL. I doubt that someone who's that big a fan of Go would switch thanks to that (would you have switched to Go if the Go implementation had won?) -Of course not, Go puts the types on the wrong side for me to switch. Had a coworker mention to me that I should look into the philosophy of Go amongst other points (not enough tech talk around). After a little bit of discussion (mostly not around Go) I let him know I was already aware of Go's philosophy and it didn't match my desires. Citing my attempt at Sorting Time[1] as an example. He agreed, lack of generics sucks. 1. http://he-the-great.livejournal.com/49072.html
Nov 05 2013
On Wednesday, 6 November 2013 at 07:02:20 UTC, Jonathan M Davis wrote:Yikes. Sorting time in D is trivial. It would never occur to me that that would be hard.I know, it's something I use. Something one probably expects to Just Work. I thought for sure Go would have provided the needed functions, but no they didn't. While I was trying to find additional information I came across this blog[1] which had such a fitting quote, "The sort package in Go is pretty neat." Directly followed by "there are some specific functions for sort some of the basic types." When trying to write a blog which centers around the sort packaging being *the* example of why Go's lack of generics sucks, reading that the package is "neat" was not something I expected. 1. http://blog.jessta.id.au/2012/06/gos-sort-package.html
Nov 06 2013
06-Nov-2013 19:34, Jesse Phillips пишет:On Wednesday, 6 November 2013 at 07:02:20 UTC, Jonathan M Davis wrote:I swear when I glanced at [1] I thought it was sarcasm. Reading it again - I see it wasn't :)Yikes. Sorting time in D is trivial. It would never occur to me that that would be hard.I know, it's something I use. Something one probably expects to Just Work. I thought for sure Go would have provided the needed functions, but no they didn't. While I was trying to find additional information I came across this blog[1] which had such a fitting quote, "The sort package in Go is pretty neat." Directly followed by "there are some specific functions for sort some of the basic types."When trying to write a blog which centers around the sort packaging being *the* example of why Go's lack of generics sucks, reading that the package is "neat" was not something I expected. 1. http://blog.jessta.id.au/2012/06/gos-sort-package.html-- Dmitry Olshansky
Nov 06 2013
Am 06.11.2013 19:45, schrieb Dmitry Olshansky:06-Nov-2013 19:34, Jesse Phillips пишет:You will find lots of similar explanations from Go devotees when reading gonuts mailing list. :) -- PauloOn Wednesday, 6 November 2013 at 07:02:20 UTC, Jonathan M Davis wrote:I swear when I glanced at [1] I thought it was sarcasm. Reading it again - I see it wasn't :)Yikes. Sorting time in D is trivial. It would never occur to me that that would be hard.I know, it's something I use. Something one probably expects to Just Work. I thought for sure Go would have provided the needed functions, but no they didn't. While I was trying to find additional information I came across this blog[1] which had such a fitting quote, "The sort package in Go is pretty neat." Directly followed by "there are some specific functions for sort some of the basic types."
Nov 06 2013
On Wednesday, 6 November 2013 at 18:45:49 UTC, Dmitry Olshansky wrote:I swear when I glanced at [1] I thought it was sarcasm. Reading it again - I see it wasn't :)I know it. But I was already aware the author was very pro-Go from [2], "Interfaces in Go are very powerful, but their power comes from being generic." FYI, the blogs are actually good for learning Go (in the small scale), but they didn't contain quite enough information that I needed to reference them (just reiterated less information than I already had).2. http://blog.jessta.id.au/2011/06/golang-interfaces.html1. http://blog.jessta.id.au/2012/06/gos-sort-package.html
Nov 06 2013
On Wednesday, 6 November 2013 at 15:34:54 UTC, Jesse Phillips wrote:1. http://blog.jessta.id.au/2012/06/gos-sort-package.htmlHmm... if sort.Sort accepts a sortable interface, they could define those 3 methods for respective arrays so that they would satisfy the interface, and sort.Sort would accept them transparently. Well, if go allows extending array's interface.
Nov 06 2013
On Wednesday, 6 November 2013 at 20:52:41 UTC, Kagamin wrote:On Wednesday, 6 November 2013 at 15:34:54 UTC, Jesse Phillips wrote:It does not. A specific type must be created and the functions defined for it. Was one of the first WTFs I hit. It doesn't solve the lack of generics problem, which is much more important.1. http://blog.jessta.id.au/2012/06/gos-sort-package.htmlHmm... if sort.Sort accepts a sortable interface, they could define those 3 methods for respective arrays so that they would satisfy the interface, and sort.Sort would accept them transparently. Well, if go allows extending array's interface.
Nov 06 2013
Heh, from http://research.swtch.com/interfacesAmong other metadata, the type description structure contains a list of the methods implemented by that type. Similarly, the compiler generates a (different) type description structure for each interface type like Stringer; it too contains a method list. The interface runtime computes the itable by looking for each method listed in the interface type's method table in the concrete type's method table.So methods are tightly coupled with types after all. Doesn't look like what go claims about decoupling types and methods.
Nov 07 2013
On Wednesday, 6 November 2013 at 05:38:54 UTC, Jonathan M Davis wrote:On Tuesday, November 05, 2013 16:27:39 Jesse Phillips wrote:I rather use D than Go, but it has more to do with Go's community with their religion decisions about generics, dynamic loading, exceptions, enumerations, package management than anything else. The language follows the Pascal tradition of type declarations and safety before performance dirty tricks. I find quite appealing its Oberon and Alef/Lingo influences. It is good enough for many cases where people, wrongly, still use C. For example, the complete UNIX user space. Now for those of us that have become used to the niceties the mainstream languages have adopted from academia in the last 30 years, Go feels a bit too light. Anyway on my day job, we will not be moving away from JVM/.NET world any time soon. -- PauloSo, is he writing D code now :D. Or did he complain about the syntax, all the types being on the left?LOL. I doubt that someone who's that big a fan of Go would switch thanks to that (would you have switched to Go if the Go implementation had won?) - especially when Go and D are so dissimilar. In general, I would expect fans of Go to dislike D and fans of D to dislike Go simply because of how very different their designs are. But it _would_ show him that D can compete with Go for performance even in Go's area of expertise. Go is on the list of languages that I'd like to spend more time becoming familiar with, because I think that it's good to know lots of programming languages, but the more I learn about it, the less I like it. Its design philosophies are just too different from my preferences. - Jonathan M Davis
Nov 05 2013
On Wednesday, 6 November 2013 at 07:26:42 UTC, Paulo Pinto wrote:The language follows the Pascal tradition of type declarations and safety before performance dirty tricks. I find quite appealing its Oberon and Alef/Lingo influences.And still it is not quite safe.Anyway on my day job, we will not be moving away from JVM/.NET world any time soon.You may want to look at scala then.
Nov 05 2013
Go is on the list of languages that I'd like to spend more time becoming familiar with, because I think that it's good to know lots of programming languages, but the more I learn about it, the less I like it. Its design philosophies are just too different from my preferences.Go IMHO is a modernized C and there is nothing in addition from what I can see (except CSP). It is what turns out if someone nowadays did something exactly like C with modern means.I rather use D than Go, but it has more to do with Go's community with their religion decisions about generics, dynamic loading,I spent some time reading postings in the Go user forum. Go is today what for us earlier was Basic or Pascal. Something very exciting to get into all this stuff. People seem to be quite religious about it in the sense that it feels holes of boredom in your life by getting exciting about a programming language.You may want to look at scala then.Then have a look at this thread in the Scala user forum: https://groups.google.com/forum/?hl=de#!topic/scala-user/D9QDOnHSUu8 It is about build times in Scala not scaling up. One reply was "Do you have very fast SSDs in your computer?". When I read that I decided only to do a little spare time Scala project and that's it. Might serve me to find a better Java job one day. D has immutable objects and pure functions. I rather do D than Scala, actually ... Lightweight Threads in Go and Rust What is a *BIG* plus for Go and Rust are lightweight threads. You can spawn some thousand of them and it's no problem. I really wished D had that kind of threads as well. For nowaydays server-side development where applications need to bear heavy load and load peaks this is an important thing. -- Bienlein
Nov 06 2013
On Wednesday, 6 November 2013 at 08:22:36 UTC, Bienlein wrote:.. Lightweight Threads in Go and Rust What is a *BIG* plus for Go and Rust are lightweight threads. You can spawn some thousand of them and it's no problem. I really wished D had that kind of threads as well. For nowaydays server-side development where applications need to bear heavy load and load peaks this is an important thing. -- BienleinWhich are also available in many JVM implementations and in .NET as tasks and asynch. Although, it is nice PR for HN guys that ignore what these platforms offer. -- Paulo
Nov 06 2013
Which are also available in many JVM implementations and in .NET as tasks and asynch. Although, it is nice PR for HN guys that ignore what these platforms offer.I'm sure about that. When you block a thread in Java it is no longer available for the thread pool and increasing the size of it cannot be done at will, because creating new threads is not lightweigt on the JVM. There is a CSP implemention for Java made by some English university: http://www.cs.kent.ac.uk/projects/ofa/jcsp/ Groovy CSP makes use of it: http://www.gpars.org/1.0.0/guide/guide/GroovyCSP.html But I haven't tried what happens when you block threads.
Nov 06 2013
On Wednesday, 6 November 2013 at 10:10:06 UTC, Bienlein wrote:Ah, unhappily Groovy CSP also can't do this: "Some implementations (e.g. GoLang) can also detach the thread from the CSP process when blocked on a channel." Source: http://www.gpars.org/1.0.0/guide/guide/GroovyCSP.html So it's basically non-blocking IO. -- BienleinWhich are also available in many JVM implementations and in .NET as tasks and asynch. Although, it is nice PR for HN guys that ignore what these platforms offer.I'm sure about that. When you block a thread in Java it is no longer available for the thread pool and increasing the size of it cannot be done at will, because creating new threads is not lightweigt on the JVM.
Nov 06 2013
On Wed, 2013-11-06 at 11:10 +0100, Bienlein wrote: […]I'm sure about that. When you block a thread in Java it is no longer available for the thread pool and increasing the size of it cannot be done at will, because creating new threads is not lightweigt on the JVM.Anyone using thread management explicitly in Java is doing it wrong. The one thing Go has totally right is "share data by passing messages" (*), even the functional programming community know this one. Kernel threads are not lightweight on any system, hence threads pools and fibres (**).There is a CSP implemention for Java made by some English university: http://www.cs.kent.ac.uk/projects/ofa/jcsp/ Groovy CSP makes use of it: http://www.gpars.org/1.0.0/guide/guide/GroovyCSP.html But I haven't tried what happens when you block threads.JCSP has many problems, not least it hasn't been formally released in eons. People are still working on it but their concerns are academic focussed rather than production focussed. Long story elided. Groovy CSP is an integral part of GPars, but Václav Pech and I have been wanting to create a new CSP realization in GPars directly rather than using JCSP as a delegate. Sadly neither of us have the time these days. The whole idea of even knowing about threads when using CSP, especially Groovy CSP, and GPars in general, is total anathema. The whole point is that the comutational model is about messages and the events they cause. Threads are a hidden animating infrastructure. Programmers working with CSP should never think about threads. (*) There are some reasonable exceptions, but they are fewer and further between than most people think. (**) Which are really just threads from the 1970s and 1980s. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 06 2013
On Wednesday, 6 November 2013 at 08:22:36 UTC, Bienlein wrote:Lightweight Threads in Go and Rust What is a *BIG* plus for Go and Rust are lightweight threads. You can spawn some thousand of them and it's no problem. I really wished D had that kind of threads as well. For nowaydays server-side development where applications need to bear heavy load and load peaks this is an important thing.Use std.parallelism.Task or core.thread.Fiber. This is also conveniently packaged in Vibe.d. They have some syntactic sugar, though.
Nov 06 2013
On Wednesday, 6 November 2013 at 08:22:36 UTC, Bienlein wrote:Then have a look at this thread in the Scala user forum: https://groups.google.com/forum/?hl=de#!topic/scala-user/D9QDOnHSUu8 It is about build times in Scala not scaling up. One reply was "Do you have very fast SSDs in your computer?". When I read that I decided only to do a little spare time Scala project and that's it. Might serve me to find a better Java job one day. D has immutable objects and pure functions. I rather do D than Scala, actually ...Do you really make heavy use of immutable objects and pure functions and get benefit from it? I've been trying for quite a while and there are many many impediments. The fact that const/immutable and postblits don't mix is a big issue. The fact that many functions in the library are not pure that you might want to use in a pure context (.dup, text with doubles, etc) reduces pure's value in a viral manner. Hopefully there will be a solution for const/immutable members with mutable aliasing in structs. Hopefully what should be pure in the libraries will be made pure. Hopefully the inference of purity in functions like chain will improve. But when you describe immutable and purity as a plus, are you describing the idea of its use as positive (which I agree is) or the actual use of it (which I think needs work)?
Nov 06 2013
in functions like chain will improve. But when you describe immutable and purity as a plus, are you describing the idea of its use as positive (which I agree is) or the actual use of it (which I think needs work)?What I meant to say was that Scala wants to call itself functional to a certain extend. But as a matter of fact a language like D that doesn't claim to belong to the functional camp has better support for FP than Scala. In case I do heavy concurrent stuff immutable objects and pure functions are of enourmous help. Did some heavy concurrent stuff for some years and I can see that immutability has great value in that regards. But I wouldn't make everything immutable. Only the objects I hand over to some actor or to some parallel computation. Yeah, the problem that in the end some C function is not const and all your const correctnes in C++ becomes void I know. Again, If I know something is happening concurrently I would take the effort to copy the data into some immutable data structure just to be on the save side that no other thread can mess around with my data.
Nov 06 2013
I fear the language on the JVM in 95% of all cases will be Java. Sad, but I guess it is true. But it helps to talk about it ... ;-). You might have a look at Kotlin: http://kotlin.jetbrains.org/ I like it very much: Scala without the mistakes that were made in Scala. But it will take another year till Kotlin turns 1.0.Anyway on my day job, we will not be moving away from JVM/.NET world any time soon.You may want to look at scala then.
Nov 06 2013
On Wednesday, 6 November 2013 at 07:33:54 UTC, deadalnix wrote:On Wednesday, 6 November 2013 at 07:26:42 UTC, Paulo Pinto wrote:I do know Scala, but my co-workers do not. When you work in large organizations, you are constrained to what everyone knows. -- PauloThe language follows the Pascal tradition of type declarations and safety before performance dirty tricks. I find quite appealing its Oberon and Alef/Lingo influences.And still it is not quite safe.Anyway on my day job, we will not be moving away from JVM/.NET world any time soon.You may want to look at scala then.
Nov 06 2013
On Wed, 2013-11-06 at 10:53 +0100, Paulo Pinto wrote: […]I do know Scala, but my co-workers do not. When you work in large organizations, you are constrained to what everyone knows.Or are willing to be trained in. The problem is not the status quo in the organization, the problem is the intransigent inability to learn that far too many programmers seem to display. People should be wanting to use new technologies if available and appropriate. Of course the current language is a candidate and may be the right choice, it just shouldn't be assumed it is the only choice. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 06 2013
On Wednesday, 6 November 2013 at 14:06:19 UTC, Russel Winder wrote:On Wed, 2013-11-06 at 10:53 +0100, Paulo Pinto wrote: […]It does not work on my field, because my employer does consulting for Fortune 500 companies usually multi-site with off-shoring component, where the technology stack is given by the customers themselves. So unless Scala,D, Go, ... are requested, they won't be used. -- PauloI do know Scala, but my co-workers do not. When you work in large organizations, you are constrained to what everyone knows.Or are willing to be trained in. The problem is not the status quo in the organization, the problem is the intransigent inability to learn that far too many programmers seem to display. People should be wanting to use new technologies if available and appropriate. Of course the current language is a candidate and may be the right choice, it just shouldn't be assumed it is the only choice.
Nov 06 2013
It does not work on my field, because my employer does consulting for Fortune 500 companies usually multi-site with off-shoring component, where the technology stack is given by the customers themselves. So unless Scala,D, Go, ... are requested, they won't be used.I'm out of the consulting business for quite a while now. Now I'm an internal employee and have to put up with what the architects decide. And my company is not a large organization. The CTO things you need an architect and then your software development is fine. The architect is good at drawing system diagrams and theoretical things. He doesn't care about languages, would never talk to some developer, neither would the CTO. If you want a change to JDK8 within 2020 you have to explain to the architect what a closure is and why it is beneficial. I think it will be very hard ... The problem is in general that company internal development is not on a good technical level. You have to work for some startup or a good technical company such as Google, Facebook, Apple, Yahoo, etc. Those guys are out of the league of most "ordinary" developers. So it will be Java and something else in your spare time. Not wanting to be fatalistic, but this is how I see the situation. -- Bienlein
Nov 06 2013
On Wednesday, 6 November 2013 at 14:41:45 UTC, Bienlein wrote:Yeah, I am pretty old at this game. I already lost count how many technologies I have used since 1986. :)It does not work on my field, because my employer does consulting for Fortune 500 companies usually multi-site with off-shoring component, where the technology stack is given by the customers themselves. So unless Scala,D, Go, ... are requested, they won't be used.I'm out of the consulting business for quite a while now. Now I'm an internal employee and have to put up with what the architects decide. And my company is not a large organization. The CTO things you need an architect and then your software development is fine. The architect is good at drawing system diagrams and theoretical things. He doesn't care about languages, would never talk to some developer, neither would the CTO. If you want a change to JDK8 within 2020 you have to explain to the architect what a closure is and why it is beneficial. I think it will be very hard ... The problem is in general that company internal development is not on a good technical level. You have to work for some startup or a good technical company such as Google, Facebook, Apple, Yahoo, etc. Those guys are out of the league of most "ordinary" developers. So it will be Java and something else in your spare time. Not wanting to be fatalistic, but this is how I see the situation. -- Bienlein
Nov 06 2013
On Wed, 2013-11-06 at 15:59 +0100, Paulo Pinto wrote: […]Yeah, I am pretty old at this game. I already lost count how many technologies I have used since 1986. :)1986. You are a youngster then. ;-) -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 06 2013
Am 06.11.2013 16:10, schrieb Russel Winder:On Wed, 2013-11-06 at 15:59 +0100, Paulo Pinto wrote: […]Started using computers at the age of 10, so 1986 - 10 ...Yeah, I am pretty old at this game. I already lost count how many technologies I have used since 1986. :)1986. You are a youngster then. ;-)
Nov 06 2013
On Wednesday, 6 November 2013 at 16:24:12 UTC, Paulo Pinto wrote:Am 06.11.2013 16:10, schrieb Russel Winder:1976? Man, you are a teenager then ;-)On Wed, 2013-11-06 at 15:59 +0100, Paulo Pinto wrote: […]Started using computers at the age of 10, so 1986 - 10 ...Yeah, I am pretty old at this game. I already lost count how many technologies I have used since 1986. :)1986. You are a youngster then. ;-)
Nov 06 2013
On Wed, 2013-11-06 at 17:39 +0100, Bienlein wrote: […]1976? Man, you are a teenager then ;-)The year I went apesh!t when I found that the elliptic integral solver routines in the NAG library were broken. I idled away the time by creating idioms for writing abstract data type code in FORTRAN 66. Bizarrely, analogous tricks appear to be essential in JavaScript. It was also the third year of listening to Dark Side of the Moon and the first year of Wish You Were Here which is much better. But you didn't want to know this. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 06 2013
Mmmm - that reminds me... http://www.youtube.com/watch?v=VKHFZBUTA4k -=mike=- "Russel Winder" <russel winder.org.uk> wrote in message news:mailman.230.1383757333.9546.digitalmars-d puremagic.com...On Wed, 2013-11-06 at 17:39 +0100, Bienlein wrote: […]1976? Man, you are a teenager then ;-)The year I went apesh!t when I found that the elliptic integral solver routines in the NAG library were broken. I idled away the time by creating idioms for writing abstract data type code in FORTRAN 66. Bizarrely, analogous tricks appear to be essential in JavaScript. It was also the third year of listening to Dark Side of the Moon and the first year of Wish You Were Here which is much better. But you didn't want to know this. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 07 2013
On 11/6/2013 6:05 AM, Russel Winder wrote:Or are willing to be trained in. The problem is not the status quo in the organization, the problem is the intransigent inability to learn that far too many programmers seem to display. People should be wanting to use new technologies if available and appropriate. Of course the current language is a candidate and may be the right choice, it just shouldn't be assumed it is the only choice.While your comment seems to be a commonsense truism, there are so many new things constantly coming out that one cannot possibly learn them all and pick the best, and even then there's another one that just appeared. It is not an unreasonable strategy to wait a bit and see which ones have staying power. Most don't, and in hindsight would have been a waste of time to learn.
Nov 06 2013
On Wed, 2013-11-06 at 08:33 +0100, deadalnix wrote: […]You may want to look at scala then.Or possibly Ceylon or Kotlin. Or Groovy. At least on the JVM -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 06 2013
On Wed, 2013-11-06 at 08:26 +0100, Paulo Pinto wrote: […]I rather use D than Go, but it has more to do with Go's community with their religion decisions about generics, dynamic loading, exceptions, enumerations, package management than anything else.I find the Go community excellent. The mailing list is only a small part of the community. Try coming to one of the monthly Go user group meetings in London. All communities are "religious". This D community takes religious decisions just as much as the Go, Scala, C++, etc. ones. The position on generics is not strange if you understand the Go language, it's computational model and philosophy. Go is taking a non-standard position, but it is not wrong, it just means that approaches to algorithms you would take in Ada, C++, D, Rust, Java, Scala, etc. do not apply directly to Go. It is a shift of mindset and view. If this doesn't work for you, fine.The language follows the Pascal tradition of type declarations and safety before performance dirty tricks. I find quite appealing its Oberon and Alef/Lingo influences. It is good enough for many cases where people, wrongly, still use C. For example, the complete UNIX user space. Now for those of us that have become used to the niceties the mainstream languages have adopted from academia in the last 30 years, Go feels a bit too light.But for those people seeking a native code language coming from Python, Go is a breath of fresh air where D, C++, etc. are claustrophobic language stuck in the attitudes of the 1970s.Anyway on my day job, we will not be moving away from JVM/.NET world any time soon.You and most of the rest of the world. This is why Java 8, Ceylon, C, C++, D, Go, Rust. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 06 2013
On Wednesday, 6 November 2013 at 13:39:51 UTC, Russel Winder wrote:On Wed, 2013-11-06 at 08:26 +0100, Paulo Pinto wrote: […]A bit far away from Düsseldorf. :)I rather use D than Go, but it has more to do with Go's community with their religion decisions about generics, dynamic loading, exceptions, enumerations, package management than anything else.I find the Go community excellent. The mailing list is only a small part of the community. Try coming to one of the monthly Go user group meetings in London.All communities are "religious". This D community takes religious decisions just as much as the Go, Scala, C++, etc. ones. The position on generics is not strange if you understand the Go language, it's computational model and philosophy. Go is taking a non-standard position, but it is not wrong, it just means that approaches to algorithms you would take in Ada, C++, D, Rust, Java, Scala, etc. do not apply directly to Go. It is a shift of mindset and view. If this doesn't work for you, fine.I think the main issue is that many of those developers never learned the toolchains of Pascal family of languages and have so far mixed the C/C++ toolchains with native development.The language follows the Pascal tradition of type declarations and safety before performance dirty tricks. I find quite appealing its Oberon and Alef/Lingo influences. It is good enough for many cases where people, wrongly, still use C. For example, the complete UNIX user space. Now for those of us that have become used to the niceties the mainstream languages have adopted from academia in the last 30 years, Go feels a bit too light.But for those people seeking a native code language coming from Python, Go is a breath of fresh air where D, C++, etc. are claustrophobic language stuck in the attitudes of the 1970s.Yep, on my area of work I can only use those languages on hobby projects. My last C++ work project was in 2006 and we routinely replace C/C++ systems by JVM/.NET based ones, with C/C++ leftovers for the few cases where no other solution is possible. Even for gaming hobby stuff I am using Unity/LibGDX which are good enough for my humble graphic skills. -- PauloAnyway on my day job, we will not be moving away from JVM/.NET world any time soon.You and most of the rest of the world. This is why Java 8, Ceylon, Kotlin, and Groovy (not to mention Clojure) on the one hand and programmers than C, C++, D, Go, Rust.
Nov 06 2013
On 11/6/13 5:38 AM, Russel Winder wrote:On Wed, 2013-11-06 at 08:26 +0100, Paulo Pinto wrote: […]Online fora are the universal place where the community meets.I rather use D than Go, but it has more to do with Go's community with their religion decisions about generics, dynamic loading, exceptions, enumerations, package management than anything else.I find the Go community excellent. The mailing list is only a small part of the community. Try coming to one of the monthly Go user group meetings in London.All communities are "religious". This D community takes religious decisions just as much as the Go, Scala, C++, etc. ones.I disagree with this relativism that makes all language communities somehow idempotent. Programming languages' communities are very strongly influenced by their leaders. I'm friends with Walter so I can't be objective on that one, but let me just say his core values are well propagated within the community. I'll abstain to comment much about the Go community beyond this: it doesn't seem my cup of tea (even leaving aside technical issues).The position on generics is not strange if you understand the Go language, it's computational model and philosophy. Go is taking a non-standard position, but it is not wrong, it just means that approaches to algorithms you would take in Ada, C++, D, Rust, Java, Scala, etc. do not apply directly to Go. It is a shift of mindset and view. If this doesn't work for you, fine.I also disagree with this "agree to disagree" that leaves everybody vacuously lukewarm. I think there are things that are just right and things that are just wrong. Go's team was unable to add generics to the language. That locks Go out of a variety of tools and techniques, which does not make it only "different", it effectively pauperizes the language leaving it the sole advantage that it's smaller. One non-technical current that I find quite difficult to like is that the Go proponents have not only shun generics, but effectively made it a politically incorrect topic in their community. All discussion on generics on the go forums are quickly shushed away.Interesting. Why would be D in the same category with C++ 1970s-attidude-wise, and how is Go a breath of fresh air? If anything, the latter seems to me it kinda implements ideas that seemed cool in the 1970s, but nothing since. AndreiNow for those of us that have become used to the niceties the mainstream languages have adopted from academia in the last 30 years, Go feels a bit too light.But for those people seeking a native code language coming from Python, Go is a breath of fresh air where D, C++, etc. are claustrophobic language stuck in the attitudes of the 1970s.
Nov 06 2013
On Wednesday, 6 November 2013 at 19:42:21 UTC, Andrei Alexandrescu wrote:Go's team was unable to add generics to the language.Not adding generics was Go's deliberate decision. For that matter, D got its type system all wrong compared to Haskell. So why won't we all move there?
Nov 22 2013
On 11/22/13 1:49 PM, Max Samukha wrote:On Wednesday, 6 November 2013 at 19:42:21 UTC, Andrei Alexandrescu wrote:http://golang.org/doc/faq#generics "We haven't yet found a design that gives value proportionate to the complexity, although we continue to think about it."Go's team was unable to add generics to the language.Not adding generics was Go's deliberate decision.For that matter, D got its type system all wrong compared to Haskell. So why won't we all move there?Move where? Andrei
Nov 22 2013
On Friday, 22 November 2013 at 23:08:38 UTC, Andrei Alexandrescu wrote:On 11/22/13 1:49 PM, Max Samukha wrote:Ok, I stand corrected.On Wednesday, 6 November 2013 at 19:42:21 UTC, Andrei Alexandrescu wrote:http://golang.org/doc/faq#generics "We haven't yet found a design that gives value proportionate to the complexity, although we continue to think about it."Go's team was unable to add generics to the language.Not adding generics was Go's deliberate decision.Tried to implement a GADT in D?For that matter, D got its type system all wrong compared to Haskell. So why won't we all move there?Move where?Andrei
Nov 30 2013
On Saturday, 30 November 2013 at 21:14:53 UTC, Max Samukha wrote:On Friday, 22 November 2013 at 23:08:38 UTC, Andrei Alexandrescu wrote:To clarify: "Go's built-in maps and slices, plus the ability to use the empty interface to construct containers (with explicit unboxing) mean in many cases it is possible to write code that does what generics would enable, if less smoothly." Can you implement a GADT in D as "smoothly" as in Haskell?On 11/22/13 1:49 PM, Max Samukha wrote:Ok, I stand corrected.On Wednesday, 6 November 2013 at 19:42:21 UTC, Andrei Alexandrescu wrote:http://golang.org/doc/faq#generics "We haven't yet found a design that gives value proportionate to the complexity, although we continue to think about it."Go's team was unable to add generics to the language.Not adding generics was Go's deliberate decision.Tried to implement a GADT in D?For that matter, D got its type system all wrong compared to Haskell. So why won't we all move there?Move where?
Nov 30 2013
On 11/6/2013 5:38 AM, Russel Winder wrote:But for those people seeking a native code language coming from Python, Go is a breath of fresh air where D, C++, etc. are claustrophobic language stuck in the attitudes of the 1970s.I know that D carries forward some attitudes from the 1980's, particularly in its orientation towards supporting the separate compilation model, its dependency on object file formats and standard linkers, etc. But other than that I do not know what you mean about D.
Nov 06 2013
On Tue, 2013-11-05 at 21:38 -0800, Jonathan M Davis wrote: […]Go is on the list of languages that I'd like to spend more time becoming familiar with, because I think that it's good to know lots of programming languages, but the more I learn about it, the less I like it. Its design philosophies are just too different from my preferences.I would suggest that this is the core of the point: programming language is about personal preference as much as it is about language features. There are many dimensions to the scale including language complexity, ability to easily express algorithms, ease of handling errors and exceptions, context of use, problems being addressed, composition of team programming, individual preference, etc., etc. Go is a very small language, with great data communication mechanisms, a simple build and deploy strategy, a view that DVCS (Git, Mercurial and Bazaar) is all the version management you need, all pivoting around static compilation of executables. I really like it, except for the obsession with error codes and no exceptions (except one which is the "terminate now" exception. Go is being pushed by Google and now Canonical, so its market penetration and traction in the programming community is assured. Rust is an interesting language, not least because it is taking many, many lessons from the functional programming community and transporting them into the imperative native code world. cf. the influence of ML and especially OCaml. Like C++ and D, Rust is actually a big language and aimed at the same sort of context and problem. And, of course, Rust has Mozilla pushing it. Go and Rust are, of course, new languages, C++ and D are old language. For D this is a bad thing. D is always playing "catch up" and has no big influential organization saying "this is the language we use for our developments (in such and such an area)". Given the current situation, I would advocate creating a new language, call it Brite say, which is an evolution of D2 (where the difference is in reality zero), and push the LDC2 realization of it as the primary implementation, with the GCC version a proud second. This way you get "new", "llvm", and a high quality statically typed native code language out there for people to go "wow" to. -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 06 2013
And, of course, Rust has Mozilla pushing it.Well, I don't know what muscle Mozilla has. I don't really understand where they get their money from (in part from Google?). Mozilla backing Rust is on a smaller scale than M$Go is being pushed by Google and now Canonical, so its market penetration and traction in the programming community is assured.The Go user forum is the most active one I have seen besides the one from Python. But it doesn't look like Go is a success inside Google itself so far. For both, Go and Rust, wait and see might be a good strategy.
Nov 07 2013
On Thu, 2013-11-07 at 13:04 +0100, Bienlein wrote: […]The Go user forum is the most active one I have seen besides the one from Python. But it doesn't look like Go is a success inside Google itself so far. For both, Go and Rust, wait and see might be a good strategy.I guess the question is whether Canonical and Google end up rewriting the systems currently using Go in something else sometime down the line. There are a lot of SMEs in London using Go as their core language. Their enthusiasm stems, I think, from otherwise having to use C. None of them have used or even heard of D (until I mention it to them in conversation). -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 07 2013
There are a lot of SMEs in London using Go as their core language. Their enthusiasm stems, I think, from otherwise having to use C.Well, I think that says it all. Go is made by C programmers for C programmers. I would say that this is even objectively correct. What puzzles me is the enormous activity in the Go forum. Only the Python forum has that much traffic. It seems to me that people are all that happy if they have a language with which they can just start hacking around on something. That is because Go doesn't force anyone to think about design. The only design-level construct it has is the class an that's it. Embedding is truly only to save coding effort not having to type in dereferenciation chains as in C. There is nothing except classes, but no inheritance, traits, mixins, overriding, etc. So there is nothing that forces you to think about your design in Go. And you don't have to know about manual memory management as in Rust. -- Bienlein
Nov 21 2013
On Thursday, 21 November 2013 at 09:33:04 UTC, Bienlein wrote:What puzzles me is the enormous activity in the Go forum. Only the Python forum has that much traffic. It seems to me that people are all that happy if they have a language with which they can just start hacking around on something. That is because Go doesn't force anyone to think about design. The only design-level construct it has is the class an that's it. Embedding is truly only to save coding effort not having to type in dereferenciation chains as in C. There is nothing except classes, but no inheritance, traits, mixins, overriding, etc. So there is nothing that forces you to think about your design in Go. And you don't have to know about manual memory management as in Rust. -- BienleinI forgot to say that I really don't know what this will end up in ...
Nov 21 2013
On Thursday, 21 November 2013 at 09:57:35 UTC, Bienlein wrote:On Thursday, 21 November 2013 at 09:33:04 UTC, Bienlein wrote:I'm wary of languages that are hyped by big companies or the web programming community. First there was Java which is still getting face lifts and plastic surgery. Then there was Ruby, "the way to go", but it hasn't convinced me yet. If all these languages are "soooo good", why do people still feel the need to come up with new solutions (cf. all the new languages for the JVM)? The answer is probably "tunnel vision" design and development. The language designers offer one ideology and users don't have to think when designing their programs. Simple as that. If you have a big company to back this up, people will think "it's THE ultimate best ever" language. Personally, I enjoy the freedom of D programming, even though with this freedom come tough questions as to the design of the program.What puzzles me is the enormous activity in the Go forum. Only the Python forum has that much traffic. It seems to me that people are all that happy if they have a language with which they can just start hacking around on something. That is because Go doesn't force anyone to think about design. The only design-level construct it has is the class an that's it. Embedding is truly only to save coding effort not having to type in dereferenciation chains as in C. There is nothing except classes, but no inheritance, traits, mixins, overriding, etc. So there is nothing that forces you to think about your design in Go. And you don't have to know about manual memory management as in Rust. -- BienleinI forgot to say that I really don't know what this will end up in ...
Nov 21 2013
On Thursday, 21 November 2013 at 11:07:15 UTC, Chris wrote:On Thursday, 21 November 2013 at 09:57:35 UTC, Bienlein wrote:You mean like C and C++ were by AT&T? Or FORTRAN and PL/I/M by IBM? Java was not the first one. Languages need a corporate sponsor or a killer framework to gain market share. Luckily we can now point to Facebook as possible corporate sponsor. -- PauloOn Thursday, 21 November 2013 at 09:33:04 UTC, Bienlein wrote:I'm wary of languages that are hyped by big companies or the web programming community. First there was Java which is still getting face lifts and plastic surgery. Then there was Ruby, "the way to go", but it hasn't convinced me yet. If all these languages are "soooo good", why do people still feel the need to come up with new solutions (cf. all the new languages for the JVM)? The answer is probably "tunnel vision" design and development. The language designers offer one ideology and users don't have to think when designing their programs. Simple as that. If you have a big company to back this up, people will think "it's THE ultimate best ever" language. Personally, I enjoy the freedom of D programming, even though with this freedom come tough questions as to the design of the program.What puzzles me is the enormous activity in the Go forum. Only the Python forum has that much traffic. It seems to me that people are all that happy if they have a language with which they can just start hacking around on something. That is because Go doesn't force anyone to think about design. The only design-level construct it has is the class an that's it. Embedding is truly only to save coding effort not having to type in dereferenciation chains as in C. There is nothing except classes, but no inheritance, traits, mixins, overriding, etc. So there is nothing that forces you to think about your design in Go. And you don't have to know about manual memory management as in Rust. -- BienleinI forgot to say that I really don't know what this will end up in ...
Nov 21 2013
On Thursday, 21 November 2013 at 12:14:09 UTC, Paulo Pinto wrote:On Thursday, 21 November 2013 at 11:07:15 UTC, Chris wrote:D's advantage is that there is no committee, laboratory or marketing department that decides which features to implement. It's as close to a grassroots thing as you can get, I think.On Thursday, 21 November 2013 at 09:57:35 UTC, Bienlein wrote:You mean like C and C++ were by AT&T? Or FORTRAN and PL/I/M by IBM? Java was not the first one. Languages need a corporate sponsor or a killer framework to gain market share.On Thursday, 21 November 2013 at 09:33:04 UTC, Bienlein wrote:I'm wary of languages that are hyped by big companies or the web programming community. First there was Java which is still getting face lifts and plastic surgery. Then there was Ruby, "the way to go", but it hasn't convinced me yet. If all these languages are "soooo good", why do people still feel the need to come up with new solutions (cf. all the new languages for the JVM)? The answer is probably "tunnel vision" design and development. The language designers offer one ideology and users don't have to think when designing their programs. Simple as that. If you have a big company to back this up, people will think "it's THE ultimate best ever" language. Personally, I enjoy the freedom of D programming, even though with this freedom come tough questions as to the design of the program.What puzzles me is the enormous activity in the Go forum. Only the Python forum has that much traffic. It seems to me that people are all that happy if they have a language with which they can just start hacking around on something. That is because Go doesn't force anyone to think about design. The only design-level construct it has is the class an that's it. Embedding is truly only to save coding effort not having to type in dereferenciation chains as in C. There is nothing except classes, but no inheritance, traits, mixins, overriding, etc. So there is nothing that forces you to think about your design in Go. And you don't have to know about manual memory management as in Rust. -- BienleinI forgot to say that I really don't know what this will end up in ...Luckily we can now point to Facebook as possible corporate sponsor.But that's post-factum. The language already happily exists outside the corporate sphere, unlike Java that was a product from the very beginning.-- Paulo
Nov 21 2013
On 11/21/13 7:31 AM, Chris wrote:Each language has its story, but it's undeniable that corporate sponsorship offers a lot of liftoff. Back in 2010 (I think) a highly influential manager at Facebook said "I'd much more support use of Go than D at Facebook because Go has Google behind it." That was an assessment based exclusively on social proof, before (and instead of) any technical argument. Fortunately a lot has changed since :o). AndreiLuckily we can now point to Facebook as possible corporate sponsor.But that's post-factum. The language already happily exists outside the corporate sphere, unlike Java that was a product from the very beginning.
Nov 21 2013
On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Fortunately a lot has changed since :o).Please, do tell. ;)
Nov 21 2013
On 11/21/13 1:16 PM, Gary Willoughby wrote:On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Not much that people don't know already. We have one solid D project installed and a couple of heavy-hitting engineers have started using D for scripts and tools (e.g. replacing Python for a 2x speedup for the same source code size/complexity). Walter and I are working on a second large project, which is quite likely to be a hit. The bug bounty is an obvious nod of interest. Things are happening. At this point focusing on making D solid and reliable is the best thing to do. AndreiFortunately a lot has changed since :o).Please, do tell. ;)
Nov 21 2013
Andrei Alexandrescu:At this point focusing on making D solid and reliable is the best thing to do.At this point what's important is to perform the small breaking changes that are left to do (and deprecate what needs to be deprecated), because doing that even later will be a problem. Bye, bearophile
Nov 21 2013
On 2013-11-21 22:17:05 +0000, bearophile said:Andrei Alexandrescu:+1At this point focusing on making D solid and reliable is the best thing to do.At this point what's important is to perform the small breaking changes that are left to do (and deprecate what needs to be deprecated), because doing that even later will be a problem. Bye, bearophile
Nov 21 2013
22-Nov-2013 02:17, bearophile пишет:Andrei Alexandrescu:Spot on, +1 from me.At this point focusing on making D solid and reliable is the best thing to do.At this point what's important is to perform the small breaking changes that are left to do (and deprecate what needs to be deprecated), because doing that even later will be a problem.Bye, bearophile-- Dmitry Olshansky
Nov 22 2013
On Thursday, 21 November 2013 at 22:17:07 UTC, bearophile wrote:Andrei Alexandrescu:At this point focusing on making D solid and reliable is the best thing to do.changes that are left to doproperty int[$] x=[1,2,3];
Nov 22 2013
On 2013-11-22 09:56, eles wrote:int[$] x=[1,2,3];This would hopefully not be a braking change. The dollar sign can't be used like that currently? -- /Jacob Carlborg
Nov 22 2013
On Friday, November 22, 2013 11:20:41 Jacob Carlborg wrote:On 2013-11-22 09:56, eles wrote:What would that even mean? The only thing that $ is used for is for representing the length of the array in an indexing or slicing operation. That statement is trying to use it in a declaration, which is nonsensical. - Jonathan M Davisint[$] x=[1,2,3];This would hopefully not be a braking change. The dollar sign can't be used like that currently?
Nov 22 2013
Jonathan M Davis:What would that even mean? The only thing that $ is used for is for representing the length of the array in an indexing or slicing operation. That statement is trying to use it in a declaration, which is nonsensical.It's not nonsensical, it's a new tiny feature. It means the lenght of x is statically determined by the literal. So this: int[$] x=[1,2,3]; means: int[3] x=[1,2,3]; But this is not a breaking change, it's just an additive change, so it's not urgent. Bye, bearophile
Nov 22 2013
On Thursday, 21 November 2013 at 21:36:28 UTC, Andrei Alexandrescu wrote:On 11/21/13 1:16 PM, Gary Willoughby wrote:Any plans for rvalue references before D gets stable?On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Not much that people don't know already. We have one solid D project installed and a couple of heavy-hitting engineers have started using D for scripts and tools (e.g. replacing Python for a 2x speedup for the same source code size/complexity). Walter and I are working on a second large project, which is quite likely to be a hit. The bug bounty is an obvious nod of interest. Things are happening. At this point focusing on making D solid and reliable is the best thing to do. AndreiFortunately a lot has changed since :o).Please, do tell. ;)
Nov 21 2013
On Thursday, 21 November 2013 at 21:36:28 UTC, Andrei Alexandrescu wrote:On 11/21/13 1:16 PM, Gary Willoughby wrote:Just reiterating a common point: We have a smattering of things that need fixing that involve breakage. Surely we should make said changes now, not later? Or is it implicit in what you're saying that things like rvalue ref, property etc. are now won't-fix until D3 or whatever comes next?On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Not much that people don't know already. We have one solid D project installed and a couple of heavy-hitting engineers have started using D for scripts and tools (e.g. replacing Python for a 2x speedup for the same source code size/complexity). Walter and I are working on a second large project, which is quite likely to be a hit. The bug bounty is an obvious nod of interest. Things are happening. At this point focusing on making D solid and reliable is the best thing to do. AndreiFortunately a lot has changed since :o).Please, do tell. ;)
Nov 21 2013
On 11/21/13 6:36 PM, Andrei Alexandrescu wrote:On 11/21/13 1:16 PM, Gary Willoughby wrote:I would have expected a lot more speedup than just 2x, D being a compiled language.On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Not much that people don't know already. We have one solid D project installed and a couple of heavy-hitting engineers have started using D for scripts and tools (e.g. replacing Python for a 2x speedup for the same source code size/complexity).Fortunately a lot has changed since :o).Please, do tell. ;)
Nov 22 2013
Ary Borenszweig:I would have expected a lot more speedup than just 2x, D being a compiled language.I have seen many cases where Python is faster than D: reading files by line, some cases of associative array creation, and more. Python contains many very efficient routines written in C. Bye, bearophile
Nov 22 2013
Ary Borenszweig <ary esperanto.org.ar> wrote:On 11/21/13 6:36 PM, Andrei Alexandrescu wrote:Amdahl's law. AndreiOn 11/21/13 1:16 PM, Gary Willoughby wrote:I would have expected a lot more speedup than just 2x, D being a compiled language.On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Not much that people don't know already. We have one solid D project installed and a couple of heavy-hitting engineers have started using D for scripts and tools (e.g. replacing Python for a 2x speedup for the same source code size/complexity).Fortunately a lot has changed since :o).Please, do tell. ;)
Nov 22 2013
On Friday, 22 November 2013 at 15:52:31 UTC, Andrei Alexandrescu wrote:Ary Borenszweig <ary esperanto.org.ar> wrote:BTW, D needs a multithreading example here: http://saml.rilspace.org/moar-languagez-gc-content-in-python-d-fpc-c-and-cOn 11/21/13 6:36 PM, Andrei Alexandrescu wrote:Amdahl's law. AndreiOn 11/21/13 1:16 PM, Gary Willoughby wrote:I would have expected a lot more speedup than just 2x, D being a compiled language.On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Not much that people don't know already. We have one solid D project installed and a couple of heavy-hitting engineers have started using D for scripts and tools (e.g. replacing Python for a 2x speedup for the same source code size/complexity).Fortunately a lot has changed since :o).Please, do tell. ;)
Nov 24 2013
On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:Each language has its story, but it's undeniable that corporate sponsorship offers a lot of liftoff.I think books for some new language being available is also an important factor. It tells people that some language has already received some attention and an investment in that new language is less likely to be in vain. I remember that Scala received a lot of attention in my Java community when the Scala book by Martin Odersky was published. Last week Dart went 1.0. You can already now buy 4 books about it, one from a renowned author such as Gilad Braha. I think the book about D by Andrei was very important and it would be a good thing if during the years more books about D would follow. -- Bienlein
Nov 22 2013
On Thursday, 21 November 2013 at 16:23:07 UTC, Andrei Alexandrescu wrote:On 11/21/13 7:31 AM, Chris wrote:Yes, yes, yes. You are of course right that corporate backing gives a language a boost, even if it's a mediocre language. But as soon as corporate thinking comes into a language (profit, ideology, branding, hype and whatnot), it's doomed. D has to breathe, and I admire all the people who have made D happen, and who are making it happen. I've learned a lot just by listening (well, reading).Each language has its story, but it's undeniable that corporate sponsorship offers a lot of liftoff. Back in 2010 (I think) a highly influential manager at Facebook said "I'd much more support use of Go than D at Facebook because Go has Google behind it." That was an assessment based exclusively on social proof, before (and instead of) any technical argument. Fortunately a lot has changed since :o). AndreiLuckily we can now point to Facebook as possible corporate sponsor.But that's post-factum. The language already happily exists outside the corporate sphere, unlike Java that was a product from the very beginning.
Nov 22 2013
On Friday, 22 November 2013 at 10:29:35 UTC, Chris wrote:Yes, yes, yes. You are of course right that corporate backing gives a language a boost, even if it's a mediocre language. But as soon as corporate thinking comes into a language (profit, ideology, branding, hype and whatnot), it's doomed. D has to breathe, and I admire all the people who have made D happen, and who are making it happen. I've learned a lot just by listening (well, reading).You're talking about corporate _management_ rather than corporate backing. The former can obviously lead to problems (though it doesn't have to) -- the latter is almost invariably good, as it means there's someone who can serve as guarantor that any necessary work will get done.
Nov 22 2013
On Friday, 22 November 2013 at 12:34:23 UTC, Joseph Rushton Wakeling wrote:On Friday, 22 November 2013 at 10:29:35 UTC, Chris wrote:You cannot separate the two. Management will creep into development sooner or later. E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Yes, yes, yes. You are of course right that corporate backing gives a language a boost, even if it's a mediocre language. But as soon as corporate thinking comes into a language (profit, ideology, branding, hype and whatnot), it's doomed. D has to breathe, and I admire all the people who have made D happen, and who are making it happen. I've learned a lot just by listening (well, reading).You're talking about corporate _management_ rather than corporate backing. The former can obviously lead to problems (though it doesn't have to) -- the latter is almost invariably good, as it means there's someone who can serve as guarantor that any necessary work will get done.
Nov 22 2013
On Friday, 22 November 2013 at 13:22:10 UTC, Chris wrote:You cannot separate the two. Management will creep into development sooner or later. E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Attention of and negclection from the people payed by facebook.
Nov 22 2013
Chris wrote:E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Do you know one or two cases where this phenomenon has happened to a language? Bye, bearophile
Nov 22 2013
On Friday, 22 November 2013 at 14:11:50 UTC, bearophile wrote:Chris wrote:Good question! To be honest I cannot put my finger on any module of any language in particular. Maybe Objective-C would be an example where sometimes things would advance at breakneck pace in Cocoa, while some handy features in the standard Objective-C library (e.g. in NSString) would still be missing (but that's years ago now, I haven't used it for a while, so I dunno how it has developed). Java is a good example of how (corporate) ideology (and management) ruins things. Everything is a class, if you don't want this, you create a class and declare static functions to turn off OOP. Well, ... You can see that people are trying to redefine Java, to come up with a better Java. Why is that? Because there is a committee that decides and won't have any criticism. So people say "Hold on, this is not really practicable, let's try something else!", and D already is the something else. What attracts me to D (among other things) is its practical approach. Go is web-oriented, so it seems, and I'm sure it will be marketed as the "one size fits all" solution for web development, multi-core and whatnot. But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable. I know that this approach doesn't sell, but it's the best I've ever come across. D makes you think and re-assess your own code time and again.E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Do you know one or two cases where this phenomenon has happened to a language? Bye, bearophile
Nov 22 2013
On Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:On Friday, 22 November 2013 at 14:11:50 UTC, bearophile wrote:What I'm saying is basically: "D is what happens when you take language design away from the realms of the committee." (http://www.gamedev.net/page/resources/_/technical/general-programming/what-language-do-i-use-r3318) Later it says: "That is to say that D would be the best of all worlds if it gained more support. It simply doesn't yet have the huge libraries of code, wealth of tools, and base of user support of the other languages. Hopefully its support will grow and it will receive the attention it deserves, but that will take some time." The problem is that people flock to languages like Python and Java etc. because of all the tools and libraries. You can easily send an email in Python, download extensions blah blah. But people often confuse "usability" as in libraries & tools with "usability" as in program design (options), robustness and performance.Chris wrote:Good question! To be honest I cannot put my finger on any module of any language in particular. Maybe Objective-C would be an example where sometimes things would advance at breakneck pace in Cocoa, while some handy features in the standard Objective-C library (e.g. in NSString) would still be missing (but that's years ago now, I haven't used it for a while, so I dunno how it has developed). Java is a good example of how (corporate) ideology (and management) ruins things. Everything is a class, if you don't want this, you create a class and declare static functions to turn off OOP. Well, ... You can see that people are trying to redefine Java, to come up with a better Java. Why is that? Because there is a committee that decides and won't have any criticism. So people say "Hold on, this is not really practicable, let's try something else!", and D already is the something else. What attracts me to D (among other things) is its practical approach. Go is web-oriented, so it seems, and I'm sure it will be marketed as the "one size fits all" solution for web development, multi-core and whatnot. But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable. I know that this approach doesn't sell, but it's the best I've ever come across. D makes you think and re-assess your own code time and again.E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Do you know one or two cases where this phenomenon has happened to a language? Bye, bearophile
Nov 22 2013
On Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:On Friday, 22 November 2013 at 14:11:50 UTC, bearophile wrote:You know that this comes from the original concept of what OOP is all about and Smalltalk, right? There are no free functions in pure OO languages, like there are no objects in pure FP languages. Of course, meanwhile we have learned there are other ways to do OO, but don't blame Java for Smalltalk concepts. -- PauloChris wrote:Good question! To be honest I cannot put my finger on any module of any language in particular. Maybe Objective-C would be an example where sometimes things would advance at breakneck pace in Cocoa, while some handy features in the standard Objective-C library (e.g. in NSString) would still be missing (but that's years ago now, I haven't used it for a while, so I dunno how it has developed). Java is a good example of how (corporate) ideology (and management) ruins things. Everything is a class, if you don't want this, you create a class and declare static functions to turn off OOP.E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Do you know one or two cases where this phenomenon has happened to a language? Bye, bearophile
Nov 22 2013
On Friday, 22 November 2013 at 15:31:18 UTC, Paulo Pinto wrote:On Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:I don't blame Java for Smalltalk. I just don't like ideological constraints. As you said, we've learned that there are other ways of doing OO, but how can people cling to things when they know they are not good. I can't get my head around it. Same goes for JVM. If you have JIT, why not go all the way and have the _option_ to compile it to machine code?On Friday, 22 November 2013 at 14:11:50 UTC, bearophile wrote:You know that this comes from the original concept of what OOP is all about and Smalltalk, right? There are no free functions in pure OO languages, like there are no objects in pure FP languages. Of course, meanwhile we have learned there are other ways to do OO, but don't blame Java for Smalltalk concepts. -- PauloChris wrote:Good question! To be honest I cannot put my finger on any module of any language in particular. Maybe Objective-C would be an example where sometimes things would advance at breakneck pace in Cocoa, while some handy features in the standard Objective-C library (e.g. in NSString) would still be missing (but that's years ago now, I haven't used it for a while, so I dunno how it has developed). Java is a good example of how (corporate) ideology (and management) ruins things. Everything is a class, if you don't want this, you create a class and declare static functions to turn off OOP.E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Do you know one or two cases where this phenomenon has happened to a language? Bye, bearophile
Nov 22 2013
On Friday, 22 November 2013 at 15:36:43 UTC, Chris wrote:On Friday, 22 November 2013 at 15:31:18 UTC, Paulo Pinto wrote:Just get Aonix, J9, RoboVM, JET, Jasmine, JikesRVM, just to cite a few examples. There are plenty AOT compilers to chose from for Java. Oracle JVM is not the only JDK around, although people tend to think so. -- PauloOn Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:I don't blame Java for Smalltalk. I just don't like ideological constraints. As you said, we've learned that there are other ways of doing OO, but how can people cling to things when they know they are not good. I can't get my head around it. Same goes for JVM. If you have JIT, why not go all the way and have the _option_ to compile it to machine code?On Friday, 22 November 2013 at 14:11:50 UTC, bearophile wrote:You know that this comes from the original concept of what OOP is all about and Smalltalk, right? There are no free functions in pure OO languages, like there are no objects in pure FP languages. Of course, meanwhile we have learned there are other ways to do OO, but don't blame Java for Smalltalk concepts. -- PauloChris wrote:Good question! To be honest I cannot put my finger on any module of any language in particular. Maybe Objective-C would be an example where sometimes things would advance at breakneck pace in Cocoa, while some handy features in the standard Objective-C library (e.g. in NSString) would still be missing (but that's years ago now, I haven't used it for a while, so I dunno how it has developed). Java is a good example of how (corporate) ideology (and management) ruins things. Everything is a class, if you don't want this, you create a class and declare static functions to turn off OOP.E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Do you know one or two cases where this phenomenon has happened to a language? Bye, bearophile
Nov 22 2013
On Friday, 22 November 2013 at 15:40:07 UTC, Paulo Pinto wrote:On Friday, 22 November 2013 at 15:36:43 UTC, Chris wrote:Which kind of proves my point. There is demand for it. Why not ship Java with a machine code compiler? javac -native MyClass.javaOn Friday, 22 November 2013 at 15:31:18 UTC, Paulo Pinto wrote:Just get Aonix, J9, RoboVM, JET, Jasmine, JikesRVM, just to cite a few examples. There are plenty AOT compilers to chose from for Java. Oracle JVM is not the only JDK around, although people tend to think so. -- PauloOn Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:I don't blame Java for Smalltalk. I just don't like ideological constraints. As you said, we've learned that there are other ways of doing OO, but how can people cling to things when they know they are not good. I can't get my head around it. Same goes for JVM. If you have JIT, why not go all the way and have the _option_ to compile it to machine code?On Friday, 22 November 2013 at 14:11:50 UTC, bearophile wrote:You know that this comes from the original concept of what OOP is all about and Smalltalk, right? There are no free functions in pure OO languages, like there are no objects in pure FP languages. Of course, meanwhile we have learned there are other ways to do OO, but don't blame Java for Smalltalk concepts. -- PauloChris wrote:Good question! To be honest I cannot put my finger on any module of any language in particular. Maybe Objective-C would be an example where sometimes things would advance at breakneck pace in Cocoa, while some handy features in the standard Objective-C library (e.g. in NSString) would still be missing (but that's years ago now, I haven't used it for a while, so I dunno how it has developed). Java is a good example of how (corporate) ideology (and management) ruins things. Everything is a class, if you don't want this, you create a class and declare static functions to turn off OOP.E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Do you know one or two cases where this phenomenon has happened to a language? Bye, bearophile
Nov 22 2013
On Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:Java is a good example of how (corporate) ideology (and management) ruins things.I think you are attributing results to the wrong thing. Go isn't simplistic because of Google corporate management, it is because the creators decided that was what it would be. Java isn't ruined because of the corporation behind it is because of the vision and goals of its creator, which happens to be a corporation. D hasn't become what it is because of a lack of corporate backing, but because its creator decided being influenced by the community would be beneficial.
Nov 22 2013
On Friday, 22 November 2013 at 15:36:08 UTC, Jesse Phillips wrote:On Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:Go simplicity is easy to understand once you know the background of language designers. It has Oberon-2 method syntax and the simplicity design advocated by Niklaus Wirth, starting with the Oberon project. Robert Griesemer did part of his studies at ETHZ. Go also has many similarities to Alef (Plan9) and Limbo(Inferno). Projects where Rob Pike and Ken Thompson were part of. -- PauloJava is a good example of how (corporate) ideology (and management) ruins things.I think you are attributing results to the wrong thing. Go isn't simplistic because of Google corporate management, it is because the creators decided that was what it would be. Java isn't ruined because of the corporation behind it is because of the vision and goals of its creator, which happens to be a corporation. D hasn't become what it is because of a lack of corporate backing, but because its creator decided being influenced by the community would be beneficial.
Nov 22 2013
On Friday, 22 November 2013 at 15:56:14 UTC, Paulo Pinto wrote:background of language designers.Which just reinforces my point. It is the language designer (creator) which dictates the result of the language. Being a corporation isn't what is going to drive it (much).
Nov 22 2013
On Friday, 22 November 2013 at 16:24:25 UTC, Jesse Phillips wrote:On Friday, 22 November 2013 at 15:56:14 UTC, Paulo Pinto wrote:But being a corporation bars the community from influencing the language design. It reinforces self-righteousness and tunnel vision, committee thinking. And of course the language will go in a direction that suits its application within the corporation (web, gaming and the like). There are just too many things attached to a language developed by a corporation, things that have nothing to do with the language as such. (And don't forget BIG EGOS, we tend to forget that language designers are human beings with all their flaws and shortcomings).background of language designers.Which just reinforces my point. It is the language designer (creator) which dictates the result of the language. Being a corporation isn't what is going to drive it (much).
Nov 22 2013
On Friday, 22 November 2013 at 16:34:06 UTC, Chris wrote:On Friday, 22 November 2013 at 16:24:25 UTC, Jesse Phillips wrote:both prove that. Go has corporate backing, but it would be silly to say the design is coming from Google and not the creators (though they claim the community has influence in its direction). anything but corporate interest driving it.On Friday, 22 November 2013 at 15:56:14 UTC, Paulo Pinto wrote:But being a corporation bars the community from influencing the language design.background of language designers.Which just reinforces my point. It is the language designer (creator) which dictates the result of the language. Being a corporation isn't what is going to drive it (much).
Nov 22 2013
On Friday, 22 November 2013 at 18:11:34 UTC, Jesse Phillips wrote:On Friday, 22 November 2013 at 16:34:06 UTC, Chris wrote:better than Java, then D. True or not, I don't like that kind of propaganda. I think it's better if a company uses a language, but the design is done somewhere else.On Friday, 22 November 2013 at 16:24:25 UTC, Jesse Phillips wrote:It doesn't, it is the creator which causes it. I think Go and silly to say the design is coming from Google and not the creators (though they claim the community has influence in its to claim had anything but corporate interest driving it.On Friday, 22 November 2013 at 15:56:14 UTC, Paulo Pinto wrote:But being a corporation bars the community from influencing the language design.background of language designers.Which just reinforces my point. It is the language designer (creator) which dictates the result of the language. Being a corporation isn't what is going to drive it (much).
Nov 22 2013
Chris:But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable.You could write a blog post/article to explain why you think this, with some examples. Bye, bearophile
Nov 22 2013
On Saturday, 23 November 2013 at 00:13:03 UTC, bearophile wrote:Chris:Sure. One of the reasons is that you have the choice. OO, structs, ranges, functional. This makes me think about how to solve which problem. In Java you get one concept, OO, and that's it. What do you do? Write a class, what ever the task at hand may be.But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable.You could write a blog post/article to explain why you think this, with some examples. Bye, bearophile
Nov 23 2013
Am 23.11.2013 15:16, schrieb Chris:On Saturday, 23 November 2013 at 00:13:03 UTC, bearophile wrote:Well, structs => Packed Objects (IBM J9, being discussed for Java 9) ranges => Iterator/Iterable/Streams (Java 8) functional => Method handles/Lambda (Java 8) -- PauloChris:Sure. One of the reasons is that you have the choice. OO, structs, ranges, functional. This makes me think about how to solve which problem. In Java you get one concept, OO, and that's it. What do you do? Write a class, what ever the task at hand may be.But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable.You could write a blog post/article to explain why you think this, with some examples. Bye, bearophile
Nov 23 2013
On Sunday, 24 November 2013 at 05:45:05 UTC, Paulo Pinto wrote:Am 23.11.2013 15:16, schrieb Chris:That's my point. D had / has it all, while Java is bringing it in bit by bit after years, and people have to re-learn Java with every new update. But maybe that's by design, because there's a huge Java-certificate industry out there.On Saturday, 23 November 2013 at 00:13:03 UTC, bearophile wrote:Well, structs => Packed Objects (IBM J9, being discussed for Java 9) ranges => Iterator/Iterable/Streams (Java 8) functional => Method handles/Lambda (Java 8) -- PauloChris:Sure. One of the reasons is that you have the choice. OO, structs, ranges, functional. This makes me think about how to solve which problem. In Java you get one concept, OO, and that's it. What do you do? Write a class, what ever the task at hand may be.But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable.You could write a blog post/article to explain why you think this, with some examples. Bye, bearophile
Nov 25 2013
On 25/11/13 11:10, Chris wrote:That's my point. D had / has it all, while Java is bringing it in bit by bit after years, and people have to re-learn Java with every new update. But maybe that's by design, because there's a huge Java-certificate industry out there.D obtained it over years, too, and has been much less constrained by the need to support a huge existing user-base ... I think you are once again letting your distaste for corporate management get the better of you ;-)
Nov 25 2013
On Monday, 25 November 2013 at 10:28:12 UTC, Joseph Rushton Wakeling wrote:On 25/11/13 11:10, Chris wrote:Yes, D could breathe, which only goes to show that commercialization can seriously slow down the introduction of useful features.That's my point. D had / has it all, while Java is bringing it in bit by bit after years, and people have to re-learn Java with every new update. But maybe that's by design, because there's a huge Java-certificate industry out there.D obtained it over years, too, and has been much less constrained by the need to support a huge existing user-base... I think you are once again letting your distaste for corporate management get the better of you ;-)I agree, I wasn't clear about it. Corporate management does not mean that the product is bad. But it means that a bad product gets more attention, hype and finally users than a good product that is not developed within a big corporation. I think it is only logical that as soon as a language becomes a product designed within a corporation, the language's design may suffer from external factors that have nothing to do with language design itself. As you said, you have to support an existing user-base. There are marketing issues, the company offers courses (these have to be re-designed, if the language is being re-designed). There is a whole array of external factors that hamper the development of the language. It has nothing to do with my liking or disliking corporate thinking. It's just a logical consequence. some market shares, and of course in order to do so, they had to make it (at least a bit) better. But strategic thinking and marketing played a big role, thus the language is naturally affected by it. corporate thinking influences and impedes language design. I'm almost sure that there is some kind of "corporate ideology". I'm saying this as someone who actually liked Java and did a lot of Java programming.
Nov 25 2013
That's my point. D had / has it all, while Java is bringing it in bit by bit after years, and people have to re-learn Java with every new update. But maybe that's by design, because there's a huge Java-certificate industry out there.Well, I think the guys at Sun back then thought anonymous inner class would get them around having to add closures to the language. Maybe they thought they would get away with that quick hack and later found out it only results in a lot of boilerplate code. Then it turned out they have to put them in as every other JVM language has closures baked in from the beginning...
Nov 25 2013
On Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:Go is web-oriented, so it seems, and I'm sure it will be marketed as the "one size fits all" solution for web development, multi-core and whatnot. But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable. I know that this approach doesn't sell, but it's the best I've ever come across. D makes you think and re-assess your own code time and again.I basically I agree with this. But lately, I was asking myself, though, whether me classifying Go as simplistic was wrong. I programmed the canonical Scala trait sample in Go. In that sample from the Scala book there is a trait Rectangular with a upperLeft and bottomRight point. Some class Rectangle extends trait Rectangular. I could get the same accomplished using delegation in Go. The solution in Go is much much simpler and from what I can tell the power is the same. So this made me think. I guess the solution in Scala is easier to recognize for the reader as the code is more structured using specific language constructs. Therefore someone reading the code would easier see the structure in the code and understand the solution. Nevertheless, with a simple construct like delegation with some compromises in visibility you get almost the same power as with inheritance, traits/mixins, etc. This is still amazing to me. -- Bienlein
Nov 28 2013
On 11/28/13 8:07 AM, Bienlein wrote:On Friday, 22 November 2013 at 14:43:11 UTC, Chris wrote:Interesting. Could you please create a paste with the two code samples? Thanks, AndreiGo is web-oriented, so it seems, and I'm sure it will be marketed as the "one size fits all" solution for web development, multi-core and whatnot. But D goes deeper. D raises fundamental questions about how a good program should look like, what is good / practicable. I know that this approach doesn't sell, but it's the best I've ever come across. D makes you think and re-assess your own code time and again.I basically I agree with this. But lately, I was asking myself, though, whether me classifying Go as simplistic was wrong. I programmed the canonical Scala trait sample in Go. In that sample from the Scala book there is a trait Rectangular with a upperLeft and bottomRight point. Some class Rectangle extends trait Rectangular. I could get the same accomplished using delegation in Go. The solution in Go is much much simpler and from what I can tell the power is the same. So this made me think.
Nov 28 2013
On Thursday, 28 November 2013 at 19:22:06 UTC, Andrei Alexandrescu wrote:Interesting. Could you please create a paste with the two code samples? Thanks, AndreiHello, here is the Go code: package main import ( "fmt" ) type Point struct { x, y int } type Rectangular struct { topLeft, bottomRight Point } func (self Rectangular) Left() int { return self.topLeft.x } func (self Rectangular) Right() int { return self.bottomRight.x } func (self Rectangular) Width() int { return self.Right() - self.Left() } type Rectangle struct { Rectangular } func NewRectangle(topLeft, bottomRight Point) *Rectangle { rectangle := new(Rectangle) rectangle.Rectangular.topLeft = topLeft rectangle.Rectangular.bottomRight = bottomRight return rectangle } func main() { rectangle := NewRectangle(Point{1, 2}, Point{12, 2}) fmt.Println(rectangle.Width()) } And this is the Scala code: import java.awt.Point trait Rectangular { protected val topLeft: Point protected val bottomRight: Point def width : Int = bottomRight.x - topLeft.x } class Rectangle(val topLeft: Point, val bottomRight: Point) extends Rectangular object RunIt extends Application { val rectangle = new Rectangle(new Point(1, 2), new Point(12, 2)) println(rectangle.width) } I guess in D you would do something like this: mixin template Rectangular() { Point x, y; } mixin Rectangular; struct Rectangle { mixin Rectangular; } Note that in the Scala code Rectangular.topLeft and Rectangular.bottomRight are protected. Since the solution in Go makes use of delegation this can only be accomplished in Go through making getters public or defining Rectangle in the same package as Rectangular. Since Go does not have constructors the way to initialize a Rectangle in Go looks more clumsy. An interesting point to me is that Rectangular in Go is just an ordinary struct whereas Rectangular is a special construct in Scala (being a trait) and in D (being a mixin). So Scala and D force you to design ahead, e.g. you have to decide in advance whether to make Rectangular a trait or mixin. Thereafter, Rectangular is not of use on its own, only when used as a trait or mixin. What makes me think is whether delegation as a language construct has been underrated and whether Go now makes this obvious. -- Bienlein
Nov 29 2013
On Friday, 29 November 2013 at 08:29:04 UTC, Bienlein wrote:On Thursday, 28 November 2013 at 19:22:06 UTC, Andrei Alexandrescu wrote:Thanks for the example. To be honest the Go code looks like a glorified version of JavaScript to me. I think it is way too "obfuscated", and Go syntax seems a bit like someone _always_ wanted to do it differently, just a personal preference, no matter what people intuitively expect.[1] x, y int I prefer left-to-right: "type integer named x (or whatever)", i.e. int x; But why on earth (a []byte)? The type is important, not the name. I can give it any name. a, inComing, inBytes, response, draculaBytes ... [1] Raises the question whether we've been conditioned by C or whether C was intuitive.Interesting. Could you please create a paste with the two code samples? Thanks, AndreiHello, here is the Go code: package main import ( "fmt" ) type Point struct { x, y int } type Rectangular struct { topLeft, bottomRight Point } func (self Rectangular) Left() int { return self.topLeft.x } func (self Rectangular) Right() int { return self.bottomRight.x } func (self Rectangular) Width() int { return self.Right() - self.Left() } type Rectangle struct { Rectangular } func NewRectangle(topLeft, bottomRight Point) *Rectangle { rectangle := new(Rectangle) rectangle.Rectangular.topLeft = topLeft rectangle.Rectangular.bottomRight = bottomRight return rectangle } func main() { rectangle := NewRectangle(Point{1, 2}, Point{12, 2}) fmt.Println(rectangle.Width()) } And this is the Scala code: import java.awt.Point trait Rectangular { protected val topLeft: Point protected val bottomRight: Point def width : Int = bottomRight.x - topLeft.x } class Rectangle(val topLeft: Point, val bottomRight: Point) extends Rectangular object RunIt extends Application { val rectangle = new Rectangle(new Point(1, 2), new Point(12, 2)) println(rectangle.width) } I guess in D you would do something like this: mixin template Rectangular() { Point x, y; } mixin Rectangular; struct Rectangle { mixin Rectangular; } Note that in the Scala code Rectangular.topLeft and Rectangular.bottomRight are protected. Since the solution in Go makes use of delegation this can only be accomplished in Go through making getters public or defining Rectangle in the same package as Rectangular. Since Go does not have constructors the way to initialize a Rectangle in Go looks more clumsy. An interesting point to me is that Rectangular in Go is just an ordinary struct whereas Rectangular is a special construct in Scala (being a trait) and in D (being a mixin). So Scala and D force you to design ahead, e.g. you have to decide in advance whether to make Rectangular a trait or mixin. Thereafter, Rectangular is not of use on its own, only when used as a trait or mixin. What makes me think is whether delegation as a language construct has been underrated and whether Go now makes this obvious. -- Bienlein
Nov 29 2013
Chris:But why on earth (a []byte)? The type is important, not the name. I can give it any name. a, inComing, inBytes, response, draculaBytes ...I read that type "array of byte(s)", I find it a bit better than D syntax, especially when types become a little more complex. Bye, bearophile
Nov 29 2013
On Friday, 29 November 2013 at 12:11:26 UTC, bearophile wrote:Chris:"byte array named a" vs "a is an array of bytes". Either is fine. I agree that sometimes the latter is better for complex types.But why on earth (a []byte)? The type is important, not the name. I can give it any name. a, inComing, inBytes, response, draculaBytes ...I read that type "array of byte(s)", I find it a bit better than D syntax, especially when types become a little more complex. Bye, bearophile
Nov 29 2013
On Fri, 2013-11-29 at 13:11 +0100, bearophile wrote:Chris:I believe it should be read as "slice of bytes" not "array of bytes". -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winderBut why on earth (a []byte)? The type is important, not the name. I can give it any name. a, inComing, inBytes, response, draculaBytes ...I read that type "array of byte(s)", I find it a bit better than D syntax, especially when types become a little more complex.
Nov 29 2013
On Friday, 29 November 2013 at 12:06:17 UTC, Chris wrote:[1] Raises the question whether we've been conditioned by C or whether C was intuitive.My theory is that Go is from the beginning intended to be a modernized C. If I look at C from that perspective I can always explain why things in Go are the way they are. The syntax is only in part awkward as Go is in some ways inspired by Oberon. But what suprises me is that with a language feature as simple as delegates you can solve so many design problems that well. I wonder whether this is a result of a lot of thought or only a result of adding some language feature that frees you from having to write myStruct1->field1->myStruct2->field2-> ...
Nov 29 2013
bearophile I wonder, if it's just the way I've learned how to program that I prefer byte[] buf; to buf []byte; // Which seems a bit awkward to me. "it's called 'buf' and it is an array of ... of what???? Drum roll r-r-r-r-r ... Of bytes! Yeah!!! Maybe it's because in my culture we read (and think?) from left to right. Mind you, the apple symbol on the Mac is in the upper left corner. The "Launcher" in Ubuntu is on the left hand side by default. The folders and contacts in Gmail are on the left hand side. Your mouse cursor is in the left half of the screen most of the time. On Friday, 29 November 2013 at 12:16:07 UTC, Bienlein wrote:On Friday, 29 November 2013 at 12:06:17 UTC, Chris wrote:Very good point. But do we need to modernize C? C is only one step away form assembly. So if you modernize this, your still on the same level.[1] Raises the question whether we've been conditioned by C or whether C was intuitive.My theory is that Go is from the beginning intended to be a modernized C. If I look at C from that perspective I can always explain why things in Go are the way they are. The syntax is only in part awkward as Go is in some ways inspired by Oberon.But what suprises me is that with a language feature as simple as delegates you can solve so many design problems that well. I wonder whether this is a result of a lot of thought or only a result of adding some language feature that frees you from having to write myStruct1->field1->myStruct2->field2-> ...I like structs and classes for the fact that they can handle stuff on their own. But we do have delegation in D and it is a useful feature in Objective-C too. structs/classes and delegation are not mutually exclusive. And your question is very good. Is delegation in Go a "work around" within a limited language or is it a design feature? If Go is modernized C, will it end up like C++?
Nov 29 2013
On Friday, 29 November 2013 at 12:53:02 UTC, Chris wrote:Very good point. But do we need to modernize C? C is only one step away form assembly. So if you modernize this, your still on the same level.Agree. If I accept a language that simple then it needs to deliver execution speed. And Go fails in that domain.delegation are not mutually exclusive. And your question is very good. Is delegation in Go a "work around" within a limited language or is it a design feature?The question I ask myself whether delegation is a nglected gross concept. I don't mean 1:1 associations as such, of course, but I mean that you can simply say myStruct1-fieldN instead of myStruct1->field1-> ... myStructN->fieldN.But we do have delegation in D and it is a useful feature in Objective-C too.Concerning D you mean mixins? Yeah, I wonder why no JVM language has them. On the JVM all languages on a higher level than Java have chosen to go with traits only (Scala, Kotlin). Groovy has the Delegate annotation, but the Groovy compiler doesn't complain in case some diamond problem pops up in your code. So it's not truly for real. With regard to Objective-C you mean the instancesRespondToSelector: thing? But this is some kind of hack. In Go the compiler checks for correctness.If Go is modernized C, will it end up like C++?Well, at least Go is very consistent. No tons of complicated special cases you need to know about. Rust did things very well here. It is made for speed and low memory consumption. The way it adds OO elements to the language is not that minimalistic. I don't see how Go can compete with Java when a company is already using Java as Go runs at about the same speed. They have done concurrency very well with goroutines and channels. Some of the excitement about Go clearly comes from concurrency being well done. They have a tool that can analyse the channels in some Go code and tell you whether a deadlock is inevitably bound to happen. That's not bad. I think Go is more for C or Python people and for Java/.NET people that want to do a little bit of system programming in their spare time. -- Bienlein
Nov 29 2013
On Friday, 29 November 2013 at 12:06:17 UTC, Chris wrote:[1] Raises the question whether we've been conditioned by C or whether C was intuitive.I'll answer for you: C was very counter intuitive which is why no one has done exactly what it did since. Look up the spiral rule for reading types in C. Most often it can be thought of being read from right to left, but that's not the actual reading. http://c-faq.com/decl/spiral.anderson.html D fixes this massive issue to a certain degree, but it still feels backwards to me, despite me having been raised with "types on the left of the name". After using a language doing it "the right way" for awhile, you quickly adapt and realize it makes the most sense. At least, that's the way that I feel.
Nov 29 2013
On Friday, 29 November 2013 at 15:21:26 UTC, Chris Cain wrote:On Friday, 29 November 2013 at 12:06:17 UTC, Chris wrote:I agree that D, too, can be a bit confusing. I sometimes have problems with AA declarations. Example: string[string][string] hm; // What am I? But I don't think it's the reading direction. I wonder why you would want the variable name first. var omitNewline bool or func (r RepeatByte) Read(p []byte) (n int, err error) or ":=" or "var". _Of course_ it's a variable: bool yes; string answer; For my liking Go code looks too cluttered (pointing out the obvious). But I guess it's just the way you're "brought up" with a language. Maybe I'm a dinosaur.[1] Raises the question whether we've been conditioned by C or whether C was intuitive.I'll answer for you: C was very counter intuitive which is why no one has done exactly what it did since. Look up the spiral rule for reading types in C. Most often it can be thought of being read from right to left, but that's not the actual reading. http://c-faq.com/decl/spiral.anderson.html D fixes this massive issue to a certain degree, but it still feels backwards to me, despite me having been raised with "types on the left of the name". After using a language doing it "the right way" for awhile, you quickly adapt and realize it makes the most sense. At least, that's the way that I feel.
Nov 29 2013
On Friday, 29 November 2013 at 16:15:10 UTC, Chris wrote:I agree that D, too, can be a bit confusing. I sometimes have problems with AA declarations. Example: string[string][string] hm; // What am I? But I don't think it's the reading direction.Actually it is. D is pretty good about being consistently read backwards (which, as you can tell, is a tiny bit awkward, hence why I think "the other way" is better). hm is an associative array mapping string to another associative array mapping string to string. Pseudocode: hm [string][string]string; How about something *ridiculous* in right-to-left reading: rofl *[string][]*bool; Try to read that before seeing what's below: ----- rofl is a pointer to an associative array mapping strings to arrays of pointers to bools. Very simple and very intuitive. After reading a few things like that you become very comfortable with it.I wonder why you would want the variable name first.It's really irrelevant either way, but it "reads out loud" much better in my experienceFor my liking Go code looks too cluttered (pointing out the obvious). But I guess it's just the way you're "brought up" with a language. Maybe I'm a dinosaur.I'm not suggesting Go got it perfectly. I've seen a lot of languages that have cleaner declarations, IMO. To be honest, Go looks kind of cluttered in my eyes too. But the right-to-left reading order is something I'm a very strong proponent of. I'm fine with D, however, since you can usually reliably read it backwards. C, however, is a horrific mess.
Nov 30 2013
On 11/30/2013 1:19 PM, Chris Cain wrote:C, however, is a horrific mess.The trick to reading C declarations is the form matches exactly how it is used in an expression. For example, a function pointer fp: int (*fp)(int); // declare (*fp)(3); // use
Nov 30 2013
On Sunday, 1 December 2013 at 06:43:13 UTC, Walter Bright wrote:On 11/30/2013 1:19 PM, Chris Cain wrote:They acknowledge that here: http://blog.golang.org/gos-declaration-syntax but they give a nice convoluted counter-example; read this: int (*(*fp)(int (*)(int, int), int))(int, int)C, however, is a horrific mess.The trick to reading C declarations is the form matches exactly how it is used in an expression. For example, a function
Dec 04 2013
On Wednesday, 4 December 2013 at 10:33:02 UTC, eles wrote:http://blog.golang.org/gos-declaration-syntax but they give a nice convoluted counter-example; read this: int (*(*fp)(int (*)(int, int), int))(int, int)Yep. Spiral reading on this: fp is a pointer to a function taking in ( a pointer to a function taking in an int and another int returning an int ) and an int returning a pointer to a function taking in an int and an int returning an int. Although it's an artificially really complex example, it's ridiculous you have to read it in a spiral to understand it.
Dec 04 2013
On Wednesday, 4 December 2013 at 11:12:00 UTC, Chris Cain wrote:On Wednesday, 4 December 2013 at 10:33:02 UTC, eles wrote:C's int numbers[]; is really awkward. But I think that D's int[] numbers; is just as clear as Go's right-to-left declaration. I think the problem is not really the reading _direction_ but the reading _logic_ that makes clear what belongs to what. int[] is an array of integers, just as []int is an array of integers. It's clear because it's glued to the type and not to the variable name.http://blog.golang.org/gos-declaration-syntax but they give a nice convoluted counter-example; read this: int (*(*fp)(int (*)(int, int), int))(int, int)Yep. Spiral reading on this: fp is a pointer to a function taking in ( a pointer to a function taking in an int and another int returning an int ) and an int returning a pointer to a function taking in an int and an int returning an int. Although it's an artificially really complex example, it's ridiculous you have to read it in a spiral to understand it.
Dec 04 2013
On Wednesday, 4 December 2013 at 11:23:35 UTC, Chris wrote:C's int numbers[]; is really awkward. But I think that D's int[] numbers; is just as clear as Go's right-to-left declaration. I think the problem is not really the reading _direction_ but the reading _logic_ that makes clear what belongs to what. int[] is an array of integers, just as []int is an array of integers. It's clear because it's glued to the type and not to the variable name.Yeah. D's is mostly fine on this. I wouldn't at all recommend a change on this (even for D3). I'm just bringing up the point that it's more natural to read "the other way around". And that C's reading is terrible in this regard. I've never had an issue with understanding D's reading (but, that said, C's reading hasn't confused me after I learned the spiral rule, it's just annoyed me).
Dec 04 2013
On 12/4/2013 2:33 AM, eles wrote:On Sunday, 1 December 2013 at 06:43:13 UTC, Walter Bright wrote:It's not a counterexample. It's still the same as how you'd use it in an expression.On 11/30/2013 1:19 PM, Chris Cain wrote:They acknowledge that here: http://blog.golang.org/gos-declaration-syntax but they give a nice convoluted counter-example; read this: int (*(*fp)(int (*)(int, int), int))(int, int)C, however, is a horrific mess.The trick to reading C declarations is the form matches exactly how it is used in an expression. For example, a function
Dec 04 2013
On Wednesday, 4 December 2013 at 22:11:46 UTC, Walter Bright wrote:On 12/4/2013 2:33 AM, eles wrote:On Sunday, 1 December 2013 at 06:43:13 UTC, Walter Bright wrote:On 11/30/2013 1:19 PM, Chris Cain wrote:yes, it is not a counter-example to the C's choice, only to the human capacity to read declarations.but they give a nice convoluted counter-example; read this: int (*(*fp)(int (*)(int, int), int))(int, int)It's not a counterexample. It's still the same as how you'd use it in an expression.
Dec 04 2013
On Saturday, 30 November 2013 at 21:19:15 UTC, Chris Cain wrote:On Friday, 29 November 2013 at 16:15:10 UTC, Chris wrote:string[string][string] hm; The result is a string, obtained through associative array with key string, obtained through associative array with key string which is located at hm.I agree that D, too, can be a bit confusing. I sometimes have problems with AA declarations. Example: string[string][string] hm; // What am I?How about something *ridiculous* in right-to-left reading: rofl *[string][]*bool;bool*[][string]* rofl; The result is bool, through a pointer, stored in an array, obtained through associative array with key of string, stored in array, and all pointeded to from a location rofl. It really doesn't matter to me, but I'm not use to Go's backward style so I prefer D's choice.
Dec 02 2013
On Monday, 2 December 2013 at 21:33:19 UTC, Jesse Phillips wrote:The result is a string, obtained through associative array with key string, obtained through associative array with key string which is located at hm. ... The result is bool, through a pointer, stored in an array, obtained through associative array with key of string, stored in array, and all pointeded to from a location rofl.Maybe it's just me, but if you said that (or wrote that) without the code I wouldn't have the beginnings of understanding what you were talking about.
Dec 02 2013
On Tuesday, 3 December 2013 at 00:24:08 UTC, Chris Cain wrote:On Monday, 2 December 2013 at 21:33:19 UTC, Jesse Phillips wrote:Thats ok, I can say the same thing about what you wrote. There are just too many details to keep in my head, so a nice succinct syntax is greatly appreciated. IMO English isn't the language to use for these complex descriptions e.g.[1]. 1.The result is a string, obtained through associative array with key string, obtained through associative array with key string which is located at hm. ... The result is bool, through a pointer, stored in an array, obtained through associative array with key of string, stored in array, and all pointeded to from a location rofl.Maybe it's just me, but if you said that (or wrote that) without the code I wouldn't have the beginnings of understanding what you were talking about.
Dec 02 2013
On Monday, 2 December 2013 at 21:33:19 UTC, Jesse Phillips wrote:On Saturday, 30 November 2013 at 21:19:15 UTC, Chris Cain wrote:For the record, this is the idea behind the Go's declaration syntax: http://blog.golang.org/gos-declaration-syntax I liked their idea about declaring left-to-right, but using right-to-left (that is the distinction between type syntax and expression syntax). Shame that they didn't make the right choice for the pointer syntax.On Friday, 29 November 2013 at 16:15:10 UTC, Chris wrote:string[string][string] hm; The result is a string, obtained through associative array with key string, obtained through associative array with key string which is located at hm.I agree that D, too, can be a bit confusing. I sometimes have problems with AA declarations. Example: string[string][string] hm; // What am I?How about something *ridiculous* in right-to-left reading: rofl *[string][]*bool;bool*[][string]* rofl; The result is bool, through a pointer, stored in an array, obtained through associative array with key of string, stored in array, and all pointeded to from a location rofl.
Dec 04 2013
On 2013-11-29 09:29, Bienlein wrote:On Thursday, 28 November 2013 at 19:22:06 UTC, Andrei Alexandrescu wrote:You can do the exact thing in D with the help of UFCS. BTW, you need to decide in advance if you should use a class or a struct in D. That's basically the same thing as choosing if you need a template. -- /Jacob CarlborgInteresting. Could you please create a paste with the two code samples? Thanks, AndreiHello, here is the Go code: package main import ( "fmt" ) type Point struct { x, y int } type Rectangular struct { topLeft, bottomRight Point } func (self Rectangular) Left() int { return self.topLeft.x } func (self Rectangular) Right() int { return self.bottomRight.x } func (self Rectangular) Width() int { return self.Right() - self.Left() } type Rectangle struct { Rectangular } func NewRectangle(topLeft, bottomRight Point) *Rectangle { rectangle := new(Rectangle) rectangle.Rectangular.topLeft = topLeft rectangle.Rectangular.bottomRight = bottomRight return rectangle } func main() { rectangle := NewRectangle(Point{1, 2}, Point{12, 2}) fmt.Println(rectangle.Width()) } And this is the Scala code: import java.awt.Point trait Rectangular { protected val topLeft: Point protected val bottomRight: Point def width : Int = bottomRight.x - topLeft.x } class Rectangle(val topLeft: Point, val bottomRight: Point) extends Rectangular object RunIt extends Application { val rectangle = new Rectangle(new Point(1, 2), new Point(12, 2)) println(rectangle.width) } I guess in D you would do something like this: mixin template Rectangular() { Point x, y; } mixin Rectangular; struct Rectangle { mixin Rectangular; } Note that in the Scala code Rectangular.topLeft and Rectangular.bottomRight are protected. Since the solution in Go makes use of delegation this can only be accomplished in Go through making getters public or defining Rectangle in the same package as Rectangular. Since Go does not have constructors the way to initialize a Rectangle in Go looks more clumsy. An interesting point to me is that Rectangular in Go is just an ordinary struct whereas Rectangular is a special construct in Scala (being a trait) and in D (being a mixin). So Scala and D force you to design ahead, e.g. you have to decide in advance whether to make Rectangular a trait or mixin. Thereafter, Rectangular is not of use on its own, only when used as a trait or mixin. What makes me think is whether delegation as a language construct has been underrated and whether Go now makes this obvious.
Nov 29 2013
On 11/29/2013 12:29 AM, Bienlein wrote:I guess in D you would do something like this: mixin template Rectangular() { Point x, y; } mixin Rectangular; struct Rectangle { mixin Rectangular; }It's easier than that: struct Rectangular { Point x,y; } struct Rectangular { Rectangle rectangle; alias this rectangle; }
Nov 30 2013
On Saturday, 30 November 2013 at 18:16:23 UTC, Walter Bright wrote:On 11/29/2013 12:29 AM, Bienlein wrote:D is always full of surprises ;-). Now the only feature in Go that sets it apart from other languages is CSP. I got this to work with help from the book by Ali Çehreli: struct Point { int x,y; } struct Rectangular { Point x,y; } struct Rectangle { Rectangular rectangular; Rectangular rect() const { return rectangular; } alias rect this; } void main(string[] args) { Rectangle rectangle = Rectangle(); rectangle.x = Point(); }I guess in D you would do something like this: mixin template Rectangular() { Point x, y; } mixin Rectangular; struct Rectangle { mixin Rectangular; }It's easier than that: struct Rectangular { Point x,y; } struct Rectangular { Rectangle rectangle; alias this rectangle; }
Nov 30 2013
On 11/30/2013 12:36 PM, Bienlein wrote:D is always full of surprises ;-).The syntax for alias this is a bit off-putting to me, but it works great.
Nov 30 2013
On Saturday, 30 November 2013 at 18:16:23 UTC, Walter Bright wrote:It's easier than that: struct Rectangular { Point x,y; } struct Rectangular { Rectangle rectangle; alias this rectangle; }Are there any plans so that you can have multiple aliases per struct/class? That would be really awesome :-).
Dec 02 2013
On Mon, Dec 02, 2013 at 05:12:47PM +0100, Bienlein wrote:On Saturday, 30 November 2013 at 18:16:23 UTC, Walter Bright wrote:+1. Can we have multiple alias this? Pretty please? :) T -- A mathematician is a device for turning coffee into theorems. -- P. ErdosIt's easier than that: struct Rectangular { Point x,y; } struct Rectangular { Rectangle rectangle; alias this rectangle; }Are there any plans so that you can have multiple aliases per struct/class? That would be really awesome :-).
Dec 02 2013
On Monday, 2 December 2013 at 16:19:11 UTC, H. S. Teoh wrote:+1. Can we have multiple alias this? Pretty please? :)It think it is all about "pretty pulls please" ;)
Dec 02 2013
On Mon, Dec 02, 2013 at 05:34:12PM +0100, Dicebot wrote:On Monday, 2 December 2013 at 16:19:11 UTC, H. S. Teoh wrote:I know, I know... I just need to find the time to sit down and dig into the dmd code. Unfortunately, unlike Phobos where the code is easy to understand (thanks to being written in D), the dmd code is harder. Well, that, and I just haven't had the time to look over it more carefully. OTOH, there's also the temptation to wait until we've bootstrapped dmd into D, so that I can work with D source code instead of C++. :) T -- Guns don't kill people. Bullets do.+1. Can we have multiple alias this? Pretty please? :)It think it is all about "pretty pulls please" ;)
Dec 02 2013
"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.208.1386005781.3242.digitalmars-d puremagic.com...On Mon, Dec 02, 2013 at 05:34:12PM +0100, Dicebot wrote:The D version is automatically generated from the C++ version, so time spent learning the C++ code would not be wasted.On Monday, 2 December 2013 at 16:19:11 UTC, H. S. Teoh wrote:I know, I know... I just need to find the time to sit down and dig into the dmd code. Unfortunately, unlike Phobos where the code is easy to understand (thanks to being written in D), the dmd code is harder. Well, that, and I just haven't had the time to look over it more carefully. OTOH, there's also the temptation to wait until we've bootstrapped dmd into D, so that I can work with D source code instead of C++. :)+1. Can we have multiple alias this? Pretty please? :)It think it is all about "pretty pulls please" ;)
Dec 02 2013
On 2013-12-03 03:33:32 +0000, Daniel Murphy said:"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.208.1386005781.3242.digitalmars-d puremagic.com...Please tell me more. Is this actually happening? Where's it at?On Mon, Dec 02, 2013 at 05:34:12PM +0100, Dicebot wrote:The D version is automatically generated from the C++ version, so time spent learning the C++ code would not be wasted.On Monday, 2 December 2013 at 16:19:11 UTC, H. S. Teoh wrote:I know, I know... I just need to find the time to sit down and dig into the dmd code. Unfortunately, unlike Phobos where the code is easy to understand (thanks to being written in D), the dmd code is harder. Well, that, and I just haven't had the time to look over it more carefully. OTOH, there's also the temptation to wait until we've bootstrapped dmd into D, so that I can work with D source code instead of C++. :)+1. Can we have multiple alias this? Pretty please? :)It think it is all about "pretty pulls please" ;)
Dec 03 2013
"Shammah Chancellor" <anonymous coward.com> wrote in message news:l7lrsm$2s0c$1 digitalmars.com...On 2013-12-03 03:33:32 +0000, Daniel Murphy said:Yeah. See: http://forum.dlang.org/post/khkst4$13ad$1 digitalmars.com http://forum.dlang.org/post/jqvduhyvfufpzovpyqbj forum.dlang.org Patches against dmd: https://github.com/D-Programming-Language/dmd/pull/1980 Converter tool: https://github.com/yebblies/magicport2 Pull requests marked DDMD: https://github.com/D-Programming-Language/dmd/pulls/yebblies"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.208.1386005781.3242.digitalmars-d puremagic.com...Please tell me more. Is this actually happening? Where's it at?On Mon, Dec 02, 2013 at 05:34:12PM +0100, Dicebot wrote:The D version is automatically generated from the C++ version, so time spent learning the C++ code would not be wasted.On Monday, 2 December 2013 at 16:19:11 UTC, H. S. Teoh wrote:I know, I know... I just need to find the time to sit down and dig into the dmd code. Unfortunately, unlike Phobos where the code is easy to understand (thanks to being written in D), the dmd code is harder. Well, that, and I just haven't had the time to look over it more carefully. OTOH, there's also the temptation to wait until we've bootstrapped dmd into D, so that I can work with D source code instead of C++. :)+1. Can we have multiple alias this? Pretty please? :)It think it is all about "pretty pulls please" ;)
Dec 03 2013
On 2013-12-04 03:19:45 +0000, Daniel Murphy said:"Shammah Chancellor" <anonymous coward.com> wrote in message news:l7lrsm$2s0c$1 digitalmars.com...This is AWESOME!!!! Keep up the good work. Can't wait to see how the DMD frontend performs in D. With the version, is there any chance of LLVM being the default backend -- or is Walter opposed to that? -ShammahOn 2013-12-03 03:33:32 +0000, Daniel Murphy said:Yeah. See: http://forum.dlang.org/post/khkst4$13ad$1 digitalmars.com http://forum.dlang.org/post/jqvduhyvfufpzovpyqbj forum.dlang.org Patches against dmd: https://github.com/D-Programming-Language/dmd/pull/1980 Converter tool: https://github.com/yebblies/magicport2 Pull requests marked DDMD: https://github.com/D-Programming-Language/dmd/pulls/yebblies"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.208.1386005781.3242.digitalmars-d puremagic.com...Please tell me more. Is this actually happening? Where's it at?On Mon, Dec 02, 2013 at 05:34:12PM +0100, Dicebot wrote:The D version is automatically generated from the C++ version, so time spent learning the C++ code would not be wasted.On Monday, 2 December 2013 at 16:19:11 UTC, H. S. Teoh wrote:I know, I know... I just need to find the time to sit down and dig into the dmd code. Unfortunately, unlike Phobos where the code is easy to understand (thanks to being written in D), the dmd code is harder. Well, that, and I just haven't had the time to look over it more carefully. OTOH, there's also the temptation to wait until we've bootstrapped dmd into D, so that I can work with D source code instead of C++. :)+1. Can we have multiple alias this? Pretty please? :)It think it is all about "pretty pulls please" ;)
Dec 04 2013
On 12/4/2013 4:16 AM, Shammah Chancellor wrote:With the version, is there any chance of LLVM being the default backend -- or is Walter opposed to that?I'm opposed to it. For one example, a year ago I had to make dmd work on Win64. LLVM didn't support Win64. I would have been stymied. It is very good for D to have 3 equivalent implementations - dmd, gdc, and ldc. Each has its strengths and weaknesses. It makes for a very strong ecosystem.
Dec 04 2013
On 2013-12-04 23:14, Walter Bright wrote:For one example, a year ago I had to make dmd work on Win64. LLVM didn't support Win64. I would have been stymied.The answer to that would be: contribute that implementation to LLVM. But I know you're opposed to that as well. If they don't accept the contributions, use a fork. -- /Jacob Carlborg
Dec 05 2013
On 12/5/2013 12:11 AM, Jacob Carlborg wrote:On 2013-12-04 23:14, Walter Bright wrote:Easy to say, but doing Win64 was a major effort: 1. bizarre function calling conventions 2. undocumented symbolic debug info format 3. new object file format Making such changes on a backend without thoroughly understanding how the backend works would be quite a challenge. I seriously doubt anyone could have done that on the tight schedule I was under. Besides, forking LLVM subverts most of the advantages of using it.For one example, a year ago I had to make dmd work on Win64. LLVM didn't support Win64. I would have been stymied.The answer to that would be: contribute that implementation to LLVM. But I know you're opposed to that as well. If they don't accept the contributions, use a fork.
Dec 05 2013
On 2013-12-06 03:02, Walter Bright wrote:Easy to say, but doing Win64 was a major effort: 1. bizarre function calling conventions 2. undocumented symbolic debug info format 3. new object file format Making such changes on a backend without thoroughly understanding how the backend works would be quite a challenge. I seriously doubt anyone could have done that on the tight schedule I was under.Yes, I understand that. Hopefully you wouldn't have moved to LLVM and at the same time implement Win64. Meaning that hopefully you would have had better knowledge about the LLVM source code when starting with Win64.Besides, forking LLVM subverts most of the advantages of using it.Just fold in the changes from upstream. Yes, I know that won't be as easy as having the code merged with upstream. -- /Jacob Carlborg
Dec 05 2013
On 04/12/13 23:14, Walter Bright wrote:I'm opposed to it. For one example, a year ago I had to make dmd work on Win64. LLVM didn't support Win64. I would have been stymied. It is very good for D to have 3 equivalent implementations - dmd, gdc, and ldc. Each has its strengths and weaknesses. It makes for a very strong ecosystem.The problem we have is that while all 3 implementations are equivalent, some implementations are more equivalent than others ... :-) Sometimes this can be a downstream problem -- people testing code with DMD but not LDC or GDC, so bugs or issues don't get recognized (or they do, but the bugs don't get reported to the compiler teams). But more fundamentally, it's that if you're running git-HEAD DMD, you're running the very latest code, whereas if you're running git-HEAD LDC or GDC, you're still running only the latest stable frontend/runtime/standard library releases. So, that means that if you need the ability to get fast turnaround on bugfixes or new features, you HAVE to run DMD. That really seems a constraint that we ought to be free of.
Dec 06 2013
On Friday, 6 December 2013 at 12:13:28 UTC, Joseph Rushton Wakeling wrote:On 04/12/13 23:14, Walter Bright wrote:But is D not still doing a better job than Microsoft is of keeping their C++ compiler up to the latest C++ standard? In fact in the C++ world all the compilers lag the standard to some extent. Its hard to expect that D would have all the compilers exactly in sync, though with the common front-end it should help.I'm opposed to it. For one example, a year ago I had to make dmd work on Win64. LLVM didn't support Win64. I would have been stymied. It is very good for D to have 3 equivalent implementations - dmd, gdc, and ldc. Each has its strengths and weaknesses. It makes for a very strong ecosystem.The problem we have is that while all 3 implementations are equivalent, some implementations are more equivalent than others ... :-) Sometimes this can be a downstream problem -- people testing code with DMD but not LDC or GDC, so bugs or issues don't get recognized (or they do, but the bugs don't get reported to the compiler teams). But more fundamentally, it's that if you're running git-HEAD DMD, you're running the very latest code, whereas if you're running git-HEAD LDC or GDC, you're still running only the latest stable frontend/runtime/standard library releases. So, that means that if you need the ability to get fast turnaround on bugfixes or new features, you HAVE to run DMD. That really seems a constraint that we ought to be free of.
Dec 06 2013
On 06/12/13 13:38, Craig Dillabaugh wrote:But is D not still doing a better job than Microsoft is of keeping their C++ compiler up to the latest C++ standard?I'm not making any comparisons here, I'm simply saying that this is something it could be helpful to address, for D's own sake. Comparisons to Microsoft are not very helpful anyway, because Microsoft is to a great extent in the position of being able to effectively dictate solutions, even where they clash with or fail to live up to standards. That's both their advantage and their weakness.In fact in the C++ world all the compilers lag the standard to some extent. Its hard to expect that D would have all the compilers exactly in sync, though with the common front-end it should help.That's the point -- with D we are in the lucky situation that not only do all our compilers share common frontends, runtimes and standard libraries, but all the developers are friends working together in a cooperative community. We have all the resources in place to ensure that the 3 compilers are truly equal players. All it will take is time and effort and a focus on making it happen. I should add that (since bounties have been mentioned) this is another thing I'd happily put money towards, if it would help.
Dec 06 2013
On Friday, 6 December 2013 at 14:33:59 UTC, Joseph Rushton Wakeling wrote:On 06/12/13 13:38, Craig Dillabaugh wrote:But is D not still doing a better job than Microsoft is of keeping their C++ compiler up to the latest C++ standard?I'm not making any comparisons here, I'm simply saying that this is something it could be helpful to address, for D's own sake. Comparisons to Microsoft are not very helpful anyway, because Microsoft is to a great extent in the position of being able to effectively dictate solutions, even where they clash with or fail to live up to standards. That's both their advantage and their weakness.In fact in the C++ world all the compilers lag the standard to some extent. Its hard to expect that D would have all the compilers exactly in sync, though with the common front-end it should help.That's the point -- with D we are in the lucky situation that not only do all our compilers share common frontends, runtimes and standard libraries,but all the developers are friends working together in a cooperative community.Shhhhhhhhhhhhhhhhhhhhhh! Don't tell anyone!We have all the resources in place to ensure that the 3 compilers are truly equal players. All it will take is time and effort and a focus on making it happen. I should add that (since bounties have been mentioned) this is another thing I'd happily put money towards, if it would help.
Dec 06 2013
On 12/6/2013 4:13 AM, Joseph Rushton Wakeling wrote:So, that means that if you need the ability to get fast turnaround on bugfixes or new features, you HAVE to run DMD.Or, you could contribute to the gdc and ldc projects!
Dec 12 2013
On Thursday, 12 December 2013 at 22:46:26 UTC, Walter Bright wrote:On 12/6/2013 4:13 AM, Joseph Rushton Wakeling wrote:Well, when I first contributed to Phobos I looked into getting the same patches accepted into GDC, not least because I wanted the functionality for my own work. It wasn't really a workable thing to do, both because of the lack of common git history and because GDC (as LDC) works by matching the features of the current stable release -- so adding stuff only available via git-HEAD Phobos wasn't really an option. That situation would be much different if the frontend were truly common across all backends.So, that means that if you need the ability to get fast turnaround on bugfixes or new features, you HAVE to run DMD.Or, you could contribute to the gdc and ldc projects!
Dec 12 2013
On 12 December 2013 23:01, Joseph Rushton Wakeling <joseph.wakeling webdrake.net> wrote:On Thursday, 12 December 2013 at 22:46:26 UTC, Walter Bright wrote:Well patches that go into phobos will soon hit gdc (eventually) - and there's nothing wrong with cherry picking much needed patches prior to release, if you can't wait 6 months for the next release and your bug to be fixed. Of course, what you can't guarantee is if fixing a bug in phobos has some dependency on semantic changes/but fixed in the frontend.On 12/6/2013 4:13 AM, Joseph Rushton Wakeling wrote:Well, when I first contributed to Phobos I looked into getting the same patches accepted into GDC, not least because I wanted the functionality for my own work. It wasn't really a workable thing to do, both because of the lack of common git history and because GDC (as LDC) works by matching the features of the current stable release -- so adding stuff only available via git-HEAD Phobos wasn't really an option.So, that means that if you need the ability to get fast turnaround on bugfixes or new features, you HAVE to run DMD.Or, you could contribute to the gdc and ldc projects!That situation would be much different if the frontend were truly common across all backends.It's not too bad nowadays, I'll update the differences list sometime today, but the only notable differences now between the two are: https://github.com/D-Programming-Language/dmd/pull/2694 https://github.com/D-Programming-Language/dmd/pull/2200 https://github.com/D-Programming-Language/dmd/pull/2176 Regards Iain.
Dec 13 2013
"Iain Buclaw" <ibuclaw gdcproject.org> wrote in message news:mailman.525.1386923049.3242.digitalmars-d puremagic.com...On 12 December 2013 23:01, Joseph Rushton Wakeling <joseph.wakeling webdrake.net> wrote:Well, you know how I feel about 2594. If you merge that ddmd will FTBFS.On Thursday, 12 December 2013 at 22:46:26 UTC, Walter Bright wrote:Well patches that go into phobos will soon hit gdc (eventually) - and there's nothing wrong with cherry picking much needed patches prior to release, if you can't wait 6 months for the next release and your bug to be fixed. Of course, what you can't guarantee is if fixing a bug in phobos has some dependency on semantic changes/but fixed in the frontend.On 12/6/2013 4:13 AM, Joseph Rushton Wakeling wrote:Well, when I first contributed to Phobos I looked into getting the same patches accepted into GDC, not least because I wanted the functionality for my own work. It wasn't really a workable thing to do, both because of the lack of common git history and because GDC (as LDC) works by matching the features of the current stable release -- so adding stuff only available via git-HEAD Phobos wasn't really an option.So, that means that if you need the ability to get fast turnaround on bugfixes or new features, you HAVE to run DMD.Or, you could contribute to the gdc and ldc projects!That situation would be much different if the frontend were truly common across all backends.It's not too bad nowadays, I'll update the differences list sometime today, but the only notable differences now between the two are: https://github.com/D-Programming-Language/dmd/pull/2694 https://github.com/D-Programming-Language/dmd/pull/2200 https://github.com/D-Programming-Language/dmd/pull/2176 Regards Iain.
Dec 13 2013
On 13 December 2013 11:11, Daniel Murphy <yebblies nospamgmail.com> wrote:"Iain Buclaw" <ibuclaw gdcproject.org> wrote in message news:mailman.525.1386923049.3242.digitalmars-d puremagic.com...Yeah, it's my fault really. I should have foresaw how the change would have affected me *before* I hit merge. Curse you hindsight! :o)On 12 December 2013 23:01, Joseph Rushton Wakeling <joseph.wakeling webdrake.net> wrote:Well, you know how I feel about 2594. If you merge that ddmd will FTBFS.On Thursday, 12 December 2013 at 22:46:26 UTC, Walter Bright wrote:Well patches that go into phobos will soon hit gdc (eventually) - and there's nothing wrong with cherry picking much needed patches prior to release, if you can't wait 6 months for the next release and your bug to be fixed. Of course, what you can't guarantee is if fixing a bug in phobos has some dependency on semantic changes/but fixed in the frontend.On 12/6/2013 4:13 AM, Joseph Rushton Wakeling wrote:Well, when I first contributed to Phobos I looked into getting the same patches accepted into GDC, not least because I wanted the functionality for my own work. It wasn't really a workable thing to do, both because of the lack of common git history and because GDC (as LDC) works by matching the features of the current stable release -- so adding stuff only available via git-HEAD Phobos wasn't really an option.So, that means that if you need the ability to get fast turnaround on bugfixes or new features, you HAVE to run DMD.Or, you could contribute to the gdc and ldc projects!That situation would be much different if the frontend were truly common across all backends.It's not too bad nowadays, I'll update the differences list sometime today, but the only notable differences now between the two are: https://github.com/D-Programming-Language/dmd/pull/2694 https://github.com/D-Programming-Language/dmd/pull/2200 https://github.com/D-Programming-Language/dmd/pull/2176 Regards Iain.
Dec 13 2013
"Shammah Chancellor" <anonymous coward.com> wrote in message news:l7n6fh$16s0$1 digitalmars.com...From a quick test, compiling ddmd with ddmd takes about 80% longer than compiling ddmd with c++dmd. I suspect a lot of this is from not using the tuned allocator from the C++ version.Yeah. See: http://forum.dlang.org/post/khkst4$13ad$1 digitalmars.com http://forum.dlang.org/post/jqvduhyvfufpzovpyqbj forum.dlang.org Patches against dmd: https://github.com/D-Programming-Language/dmd/pull/1980 Converter tool: https://github.com/yebblies/magicport2 Pull requests marked DDMD: https://github.com/D-Programming-Language/dmd/pulls/yebbliesThis is AWESOME!!!! Keep up the good work. Can't wait to see how the DMD frontend performs in D.With the version, is there any chance of LLVM being the default backend -- or is Walter opposed to that?As Walter said, there is no chance of that happening. However, we are slowly working to integrate or refactor away all gdc/ldc patches against the frontend. This should greatly reduce the effort to merge patches, hopefully resulting in all three compilers permanently being in sync.
Dec 04 2013
On Thu, Dec 05, 2013 at 02:08:34PM +1100, Daniel Murphy wrote:"Shammah Chancellor" <anonymous coward.com> wrote in message news:l7n6fh$16s0$1 digitalmars.com...[...]I'm looking forward to that. Recently I've been working on a compute-intensive program, and I've been hoping to test it with gdc to get maximal performance, but since I developed the code mainly with dmd git HEAD, it doesn't compile with gdc, which is rather frustrating. It would be great if the three compilers are always in sync -- if gdc could, for example, just pull straight from DFE git HEAD and Just Work(tm). T -- "The number you have dialed is imaginary. Please rotate your phone 90 degrees and try again."With the version, is there any chance of LLVM being the default backend -- or is Walter opposed to that?As Walter said, there is no chance of that happening. However, we are slowly working to integrate or refactor away all gdc/ldc patches against the frontend. This should greatly reduce the effort to merge patches, hopefully resulting in all three compilers permanently being in sync.
Dec 04 2013
On 05/12/13 04:08, Daniel Murphy wrote:As Walter said, there is no chance of that happening. However, we are slowly working to integrate or refactor away all gdc/ldc patches against the frontend. This should greatly reduce the effort to merge patches, hopefully resulting in all three compilers permanently being in sync..... just as I brought the topic up in another branch of this thread [*] ... :-) How are things going with that, what's the current status in terms of GDC/LDC patches being eliminated? Do you have any idea of the timeframe within which it'll be complete, and does it rely at all on the C++ --> D transition? [* I'm not sure this mix of metaphors really works.]
Dec 06 2013
"Joseph Rushton Wakeling" <joseph.wakeling webdrake.net> wrote in message news:mailman.304.1386341329.3242.digitalmars-d puremagic.com...On 05/12/13 04:08, Daniel Murphy wrote:It's going very slowly. There have been a few pulls working on some areas, but most of my effort has been on the d port. The frontend unification does not depend on the D port, and the D port is not technically blocked by it, but we will need to finish it before abandoning the C++ version of the frontend. I'd love to give a timeframe, but I don't have that much control over it. A fairly important step is currently blocked because Walter is sitting on a pull request. (https://github.com/D-Programming-Language/dmd/pull/2754)As Walter said, there is no chance of that happening. However, we are slowly working to integrate or refactor away all gdc/ldc patches against the frontend. This should greatly reduce the effort to merge patches, hopefully resulting in all three compilers permanently being in sync..... just as I brought the topic up in another branch of this thread [*] ... :-) How are things going with that, what's the current status in terms of GDC/LDC patches being eliminated? Do you have any idea of the timeframe within which it'll be complete, and does it rely at all on the C++ --> D transition?
Dec 06 2013
On 06/12/13 16:37, Daniel Murphy wrote:It's going very slowly. There have been a few pulls working on some areas, but most of my effort has been on the d port. The frontend unification does not depend on the D port, and the D port is not technically blocked by it, but we will need to finish it before abandoning the C++ version of the frontend.OK, clear. It's kind of what I'd expected; I'm glad to see that it's planned as a precursor to the D transition rather than something to take place as part of it.I'd love to give a timeframe, but I don't have that much control over it. A fairly important step is currently blocked because Walter is sitting on a pull request. (https://github.com/D-Programming-Language/dmd/pull/2754)That's a shame though I guess somewhat inevitable given that we're talking about quite significant changes. Is there a documented TODO list anywhere? And is there anything that those of us not contributing frontend code can do to help? (No, not spamming Walter with "Please look at Pull Request 2754!" messages:-)
Dec 06 2013
"Joseph Rushton Wakeling" <joseph.wakeling webdrake.net> wrote in message news:mailman.307.1386345047.3242.digitalmars-d puremagic.com...On 06/12/13 16:37, Daniel Murphy wrote: Is there a documented TODO list anywhere? And is there anything that those of us not contributing frontend code can do to help? (No, not spamming Walter with "Please look at Pull Request 2754!" messages:-)The TODO list is basically the diff between dmd's and ldc/gdc's frontends. I don't know of anything to do outside of the code, this is pretty much an internal refactoring and shouldn't have any visible effects on anything else.
Dec 10 2013
On Saturday, 30 November 2013 at 18:16:23 UTC, Walter Bright wrote:It's easier than that: struct Rectangular { Point x,y; } struct Rectangular { Rectangle rectangle; alias this rectangle; }The other day in IRC I asked about the transition to the newer alias X = Type syntax (I would love to see it everywhere!), and someone was saying that the "alias this" syntax always tripped him, because the name misleadingly suggests that the 'this' comes after the 'alias'. I guess it trips everybody :-)
Dec 05 2013
On Thursday, 28 November 2013 at 16:07:47 UTC, Bienlein wrote:... -- BienleinIMHO, problem with go simplicity is not as much as being not expressive enough to do something as with being forced to move lot of things to run-time. Which is not actually a problem for many applications but very discouraging for certain type of programmers.
Nov 28 2013
On Thursday, 28 November 2013 at 19:25:56 UTC, Dicebot wrote:On Thursday, 28 November 2013 at 16:07:47 UTC, Bienlein wrote:Could you just quickly describe what you mean by "being forced to move lot of things to run-time"? I simply don't see what you are refering to. Thanks.... -- BienleinIMHO, problem with go simplicity is not as much as being not expressive enough to do something as with being forced to move lot of things to run-time.
Nov 29 2013
On Friday, 29 November 2013 at 08:35:58 UTC, Bienlein wrote:Could you just quickly describe what you mean by "being forced to move lot of things to run-time"? I simply don't see what you are refering to.For example the dreaded generics issue. You can workaround it in many cases by using common polymorphic storage types but it costs. Or some applications of declarative programming in D - one can avoid using reflection and just move base data to runtime values but that requires to do processing during runtime. In your Rectangular example the difference will start to appear when one wants to express a function that accepts any Rectangular type. As far as I know, in Go only option uses fat pointer. In D you can also express it as template constrain and thus can make more finely tuned design decision.
Nov 29 2013
On Friday, 22 November 2013 at 13:22:10 UTC, Chris wrote:On Friday, 22 November 2013 at 12:34:23 UTC, Joseph Rushton Wakeling wrote:To be clear, this doesn't mean that this is happening, it's not, and it is good that Facebook now uses D. But the two should be separate. What D does should not be influenced by any company.On Friday, 22 November 2013 at 10:29:35 UTC, Chris wrote:You cannot separate the two. Management will creep into development sooner or later. E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Yes, yes, yes. You are of course right that corporate backing gives a language a boost, even if it's a mediocre language. But as soon as corporate thinking comes into a language (profit, ideology, branding, hype and whatnot), it's doomed. D has to breathe, and I admire all the people who have made D happen, and who are making it happen. I've learned a lot just by listening (well, reading).You're talking about corporate _management_ rather than corporate backing. The former can obviously lead to problems (though it doesn't have to) -- the latter is almost invariably good, as it means there's someone who can serve as guarantor that any necessary work will get done.
Nov 22 2013
On 11/22/13 9:38 AM, Chris wrote:On Friday, 22 November 2013 at 13:22:10 UTC, Chris wrote:Oh please. AndreiOn Friday, 22 November 2013 at 12:34:23 UTC, Joseph Rushton Wakeling wrote:To be clear, this doesn't mean that this is happening, it's not, and it is good that Facebook now uses D. But the two should be separate. What D does should not be influenced by any company.On Friday, 22 November 2013 at 10:29:35 UTC, Chris wrote:You cannot separate the two. Management will creep into development sooner or later. E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Yes, yes, yes. You are of course right that corporate backing gives a language a boost, even if it's a mediocre language. But as soon as corporate thinking comes into a language (profit, ideology, branding, hype and whatnot), it's doomed. D has to breathe, and I admire all the people who have made D happen, and who are making it happen. I've learned a lot just by listening (well, reading).You're talking about corporate _management_ rather than corporate backing. The former can obviously lead to problems (though it doesn't have to) -- the latter is almost invariably good, as it means there's someone who can serve as guarantor that any necessary work will get done.
Nov 22 2013
On Friday, 22 November 2013 at 17:43:06 UTC, Andrei Alexandrescu wrote:On 11/22/13 9:38 AM, Chris wrote:Yeah, you're right. Sometimes I get carried away and dramatize things.On Friday, 22 November 2013 at 13:22:10 UTC, Chris wrote:Oh please. AndreiOn Friday, 22 November 2013 at 12:34:23 UTC, Joseph Rushton Wakeling wrote:To be clear, this doesn't mean that this is happening, it's not, and it is good that Facebook now uses D. But the two should be separate. What D does should not be influenced by any company.On Friday, 22 November 2013 at 10:29:35 UTC, Chris wrote:You cannot separate the two. Management will creep into development sooner or later. E.g. one day D might implement features that have to do with what Facebook needs more than features that programmers need in general. So a module std.webshite.upload.latest.picture gets all the attention while std.reallyhandy is being neglected.Yes, yes, yes. You are of course right that corporate backing gives a language a boost, even if it's a mediocre language. But as soon as corporate thinking comes into a language (profit, ideology, branding, hype and whatnot), it's doomed. D has to breathe, and I admire all the people who have made D happen, and who are making it happen. I've learned a lot just by listening (well, reading).You're talking about corporate _management_ rather than corporate backing. The former can obviously lead to problems (though it doesn't have to) -- the latter is almost invariably good, as it means there's someone who can serve as guarantor that any necessary work will get done.
Nov 22 2013
On Thursday, 21 November 2013 at 09:33:04 UTC, Bienlein wrote:What puzzles me is the enormous activity in the Go forum. Only the Python forum has that much traffic. It seems to me that people are all that happy if they have a language with which they can just start hacking around on something. That is because Go doesn't force anyone to think about design. The only design-level construct it has is the class an that's it. Embedding is truly only to save coding effort not having to type in dereferenciation chains as in C. There is nothing except classes, but no inheritance, traits, mixins, overriding, etc. So there is nothing that forces you to think about your design in Go. And you don't have to know about manual memory management as in Rust. -- BienleinThat actually makes it a good first language to learn programming (and also bad programming). Simplicity is appealing. A language that can be learnt in a couple of afternoons is always pleasant and will draw masses. OTOH, if it doesn't force you to think about design, I guess the absence of design bites you in the long term. Then, the simplicity of the language added to the fact that it's statically typed might allow for fairly sophisticated refactoring using tooling. These are just suppositions, I don't have any experience with Go.
Nov 21 2013
On Friday, 22 November 2013 at 02:25:22 UTC, SomeDude wrote:Or a second language. Simple to learn makes it easy for one of any skill to pick it up. I don't think any language forces one to think about design. Go just removes design options. D allows for the same quick fix, but it makes it 100x easier to work that quick fix into a design. I'm not a fan of object oriented programming. Its strength is its weakness. It provides structure, structure is resistant to change. Change is what we do, problems come from change.That is because Go doesn't force anyone to think about design. The only design-level construct it has is the class an that's it.That actually makes it a good first language to learn programming (and also bad programming). Simplicity is appealing.
Nov 21 2013
On 11/7/2013 7:04 AM, Bienlein wrote:Primarily from Google, AIUI. From what I've read on Wikipedia, the vast majority of Mozilla's income is apparently from Google paying them to be Firefox's default search engine.And, of course, Rust has Mozilla pushing it.Well, I don't know what muscle Mozilla has. I don't really understand where they get their money from (in part from Google?).
Nov 07 2013
On Tuesday, 5 November 2013 at 13:05:21 UTC, Atila Neves wrote:- Trying to use dub to compile the project in release or profile mode flat out didn't work. I had to take the verbose output of dub, use it to compile vibe.d in debug mode into an object file and compile my own code separately and link it in. I believe this was a dmd regression. Speaking of which, why does dub recompile the world instead of tracking dependencies (I tried the rdmd option once but that didn't work, I can't remember why)? - I ran into a dmd bug when I tried to use TaskPool.map with a delegate so I had to give up trying that possible optimisation. - I ran into another dmd bug (it crashed) at one point if -inline was used. - dub build with LDC and GDC failed miserably. I think it was because of vibe.d.Are all of these issues noted on bugzilla? If not are you able to add them please? They sound serious and don't want to be forgotten about.
Nov 05 2013
On 11/5/2013 5:05 AM, Atila Neves wrote:- I ran into a dmd bug when I tried to use TaskPool.map with a delegate so I had to give up trying that possible optimisation. - I ran into another dmd bug (it crashed) at one point if -inline was used.It's very important to file these issues in bugzilla.- dub build with LDC and GDC failed miserably. I think it was because of vibe.d.These too in the dub system.
Nov 05 2013
On Tuesday, 5 November 2013 at 19:57:07 UTC, Walter Bright wrote:At least this one will be fixed in 2.064- I ran into another dmd bug (it crashed) at one point if -inline was used.
Nov 05 2013
Am 05.11.2013 21:33, schrieb Dicebot:On Tuesday, 5 November 2013 at 19:57:07 UTC, Walter Bright wrote:Are you sure? There are still 5 open ICE-bugs with -inline https://d.puremagic.com/issues/buglist.cgi?query_format=advanced&short_desc=-inline%20ICE&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&short_desc_type=allwordssubstr&component=DMD&product=D -- Kind Regards Benjamin ThautAt least this one will be fixed in 2.064- I ran into another dmd bug (it crashed) at one point if -inline was used.
Nov 06 2013
On Wednesday, 6 November 2013 at 11:27:04 UTC, Benjamin Thaut wrote:Are you sure? There are still 5 open ICE-bugs with -inline https://d.puremagic.com/issues/buglist.cgi?query_format=advanced&short_desc=-inline%20ICE&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&short_desc_type=allwordssubstr&component=DMD&product=DProbably not all of them but at least on of "-inline" ICE's I got running vibe.d unittests on 2.063.2 faded away after switching to 2.064 branch
Nov 06 2013
I submitted the -inline bug. The other one with TaskPool.map was a known one, as was one with dub and dmd. I'll look at dub with ldc/gdc and at their bug tracking. On Tuesday, 5 November 2013 at 19:57:07 UTC, Walter Bright wrote:On 11/5/2013 5:05 AM, Atila Neves wrote:- I ran into a dmd bug when I tried to use TaskPool.map with a delegate so I had to give up trying that possible optimisation. - I ran into another dmd bug (it crashed) at one point if -inline was used.It's very important to file these issues in bugzilla.- dub build with LDC and GDC failed miserably. I think it was because of vibe.d.These too in the dub system.
Nov 06 2013
this has been a great thread and I've found a lot of the replies very insightful. I've been programming in Go at work for about a year or so now, so I have some opinions on Go that I believe are reasonably informed, while I am still a D novice but hope to continue learning. First, let me say that it is obvious that, by design, D is a more powerful language than Go. Go's simplicity will either be an advantage or a deal-breaker based on who you ask. On my vps instance last night I tried to create an initial D programming environment, with the following tools: - dmd - dub - vibe.d - ldc (not strictly necessary but I've heard so many good things about it) First I tried installing dmd from source, which was fine but then I would get strange errors about referring to a file "object.d" when trying to build dub. Some poking around on the web resulted in the advice of installing the pre-built dmd binary that is in the release distribution. Now I was able to build dub, although it was strange to see two completely different build mechanisms for dmd and dub - dmd using a makefile and dub using a sh script wrapper. vibe.d was easier to install once dub worked. Over an hour just to get basic tools installed, although I feel HTTP serving is so common that it should be one of the accepted "batteries included" by default. If this were Go, I would have installed the default build for my platform and had an http server in my standard sdk and everything else available by "go get", which has never failed to work flawlessly for me in a year of dealing with code from the web. This is one reason why there are already so many libraries for Go - it is trivial to expose your code to other developers via the supported toolchain. This might not be a fair assessment given my shallow experience with D, but it seems much less polished relative to Go for setting up a development environment and working with code from the web. Go's tools can be criticized as precluding operating system package managers, if people feel that criticism is valid, maybe a solution is something like the Haskell Platform, which was a reasonable response to the same criticism with haskell in years back - that setting up a development environment with basic consistent libraries was very painful. Haskell Platform does not seek to preclude operating system package managers. Anyway, I hope this didn't seem too harsh. I still am playing with D and hopefully at some point in the future, package managers will address some of these needs. brad
Nov 28 2013
On Friday, 29 November 2013 at 05:14:14 UTC, brad clawsie wrote:this has been a great thread and I've found a lot of the replies very insightful. I've been programming in Go at work for about a year or so now, so I have some opinions on Go that I believe are reasonably informed, while I am still a D novice but hope to continue learning. First, let me say that it is obvious that, by design, D is a more powerful language than Go. Go's simplicity will either be an advantage or a deal-breaker based on who you ask. On my vps instance last night I tried to create an initial D programming environment, with the following tools: - dmd - dub - vibe.d - ldc (not strictly necessary but I've heard so many good things about it) First I tried installing dmd from source, which was fine but then I would get strange errors about referring to a file "object.d" when trying to build dub. Some poking around on the web resulted in the advice of installing the pre-built dmd binary that is in the release distribution. Now I was able to build dub, although it was strange to see two completely different build mechanisms for dmd and dub - dmd using a makefile and dub using a sh script wrapper. vibe.d was easier to install once dub worked. Over an hour just to get basic tools installed, although I feel HTTP serving is so common that it should be one of the accepted "batteries included" by default.So when you say you would install Go using the default build, did you mean as a binary, or do you mean some sort of default build configuration (from source) for your platform? If as binary then this comparison is a bit unfair here. For me (OpenSuse) all I need to do is: sudo zypper in dmd I've used the pre-built binaries on various Windows & Linux OSs with no troubles. If you want to build from source you might want to have a look at DVM: https://bitbucket.org/doob/dvm/wiki/Home (I don't have any experience with it personally, so I can't say how trouble free your experience would be).If this were Go, I would have installed the default build for my platform and had an http server in my standard sdk and everything else available by "go get", which has never failed to work flawlessly for me in a year of dealing with code from the web. This is one reason why there are already so many libraries for Go - it is trivial to expose your code to other developers via the supported toolchain. This might not be a fair assessment given my shallow experience with D, but it seems much less polished relative to Go for setting up a development environment and working with code from the web.Well D is a volunteer effort while Go is being backed by the worlds biggest web company! That sort of accounts for that I suppose. There has been recognition in the community that this needs to improve, but progress is only so fast with the limited resources.Go's tools can be criticized as precluding operating system package managers, if people feel that criticism is valid, maybe a solution is something like the Haskell Platform, which was a reasonable response to the same criticism with haskell in years back - that setting up a development environment with basic consistent libraries was very painful. Haskell Platform does not seek to preclude operating system package managers. Anyway, I hope this didn't seem too harsh. I still am playing with D and hopefully at some point in the future, package managers will address some of these needs. bradHope you enjoy your experience with D.
Nov 28 2013
On 11/28/13 9:49 PM, Craig Dillabaugh wrote:On Friday, 29 November 2013 at 05:14:14 UTC, brad clawsie wrote:Thanks Brad for the compare & contrast. Craig, I think funding is part of the story but not all - our community could get better at being perfectionist about the out-of-the box experience. Go is underpowered but its good execution is undeniably attractive: the first experience, the implementation works as advertised, and the networking libraries show their authors' expertise. We stand to learn from that. AndreiThis might not be a fair assessment given my shallow experience with D, but it seems much less polished relative to Go for setting up a development environment and working with code from the web.Well D is a volunteer effort while Go is being backed by the worlds biggest web company! That sort of accounts for that I suppose. There has been recognition in the community that this needs to improve, but progress is only so fast with the limited resources.
Nov 29 2013
On Friday, 29 November 2013 at 05:14:14 UTC, brad clawsie wrote:First I tried installing dmd from source, which was fine but then I would get strange errors about referring to a file "object.d" when trying to build dub. Some poking around on the web resulted in the advice of installing the pre-built dmd binary that is in the release distribution.I really have to agree. I recently had to set up an environment for contributing to phobos but the whole experience was a bit ... tedious. I ended up just using dmd.2.064.2.zip and putting the git repos in the src folder and making a bunch of scripts to move the built binaries into their correct positions. Being in the unique position of programming on Windows, Mac, and Linux, I've had to rewrite the coping script differently for each one. Windows is the worst for that sort of thing, but that's to be expected. The whole build process is a lot more involved than it really should be. Ideally you should be able to clone dmd, phobos, and druntime and just have everything compile and be put into a relative path together and just "work". Maybe alert you if you don't have phobos and druntime to build. Ultimately, you really "have to" download the binary version if you want it to work transparently, but it would be nice if it were easy enough to build from source that a printed 1 page guide would get you 100% running.I feel HTTP serving is so common that it should be one of the accepted "batteries included" by default.That I'm not sure I'd agree with. Maybe getting stuff via HTTP (we have curl at a.t.m.) but serving HTTP files really needs something more substantial than I'd feel comfortable being in the standard library. Something too simple would likely not be used in favor of something like vibe.d while something the size of vibe.d probably is a bit too expansive to really be considered for part in the standard library. Not to mention the fact that vibe.d is in reasonably rapid development. The speed of vibe.d releases outpaces DMD releases and I think that's a positive thing overall. Plus I feel like such an approach might make "simpler" things suffer (or, at least, make them feel like they suffer). Every time I use python I think "it's so nice that I can write an advanced http server with ssl encryption serving up a calculated meaning of life and the last digit of pi in one line, but I have to write an iterator to iterate over elements pairwise, which I'd really think should be in the standard library somewhere." (A "recipe" for it is in itertools which, strangely, suggests that they know how often it might be needed but failed to add it as an actual part of the standard library, but I digress...)
Nov 28 2013
On Friday, 29 November 2013 at 05:51:48 UTC, Chris Cain wrote:The whole build process is a lot more involved than it really should be. Ideally you should be able to clone dmd, phobos, and druntime and just have everything compile and be put into a relative path together and just "work". Maybe alert you if you don't have phobos and druntime to build. Ultimately, you really "have to" download the binary version if you want it to work transparently, but it would be nice if it were easy enough to build from source that a printed 1 page guide would get you 100% running.Huh? git clone https://github.com/D-Programming-Language/dmd.git git clone https://github.com/D-Programming-Language/druntime.git git clone https://github.com/D-Programming-Language/phobos.git cd ./dmd/src make -f posix.mak MODEL=64 RELEASE=1 cd ../../druntime make -f posix.mak MODEL=64 DMD=../dmd/src/dmd RELEASE=1 cd ../phobos make -f posix.mak MODEL=64 DMD=../dmd/src/dmd RELEASE=1 After that just make symlink to dmd binary and add Phobos/druntime paths to dmd.conf and you are ready to go.
Nov 29 2013
On 2013-11-29 16:15, Dicebot wrote:After that just make symlink to dmd binary and add Phobos/druntime paths to dmd.conf and you are ready to go.dmd.conf.default is only for Linux. There's also no sc.ini for Windows. -- /Jacob Carlborg
Nov 29 2013
On Friday, 29 November 2013 at 15:34:21 UTC, Jacob Carlborg wrote:On 2013-11-29 16:15, Dicebot wrote:Pardon my ignorance, I have never used D on Windows. Well, I guess at least building part should be pretty much the same (afair make binary for Windows is in distribution)After that just make symlink to dmd binary and add Phobos/druntime paths to dmd.conf and you are ready to go.dmd.conf.default is only for Linux. There's also no sc.ini for Windows.
Nov 29 2013
This reply is not intended as a specific reply to Brad, so no pun inside, really, but... I always wonder for how much attention there's out there regarding the setting up of the development environment: from my experience, I very very like the D simplicity, just grab a zip, and inside you have all the basic for every supported os. The _only_ missing thing in the zip is dub (guys, that MUST be in the official distribution). It's so easy that when I hear about installer, packager, etc, etc I scratch my head... O_o /Paolo On Friday, 29 November 2013 at 05:14:14 UTC, brad clawsie wrote: <snip>This might not be a fair assessment given my shallow experience with D, but it seems much less polished relative to Go for setting up a development environment and working with code from the web.<snip>brad
Nov 28 2013
On 2013-11-29 06:14, brad clawsie wrote:this has been a great thread and I've found a lot of the replies very insightful. I've been programming in Go at work for about a year or so now, so I have some opinions on Go that I believe are reasonably informed, while I am still a D novice but hope to continue learning. First, let me say that it is obvious that, by design, D is a more powerful language than Go. Go's simplicity will either be an advantage or a deal-breaker based on who you ask. On my vps instance last night I tried to create an initial D programming environment, with the following tools: - dmd - dub - vibe.d - ldc (not strictly necessary but I've heard so many good things about it) First I tried installing dmd from source, which was fine but then I would get strange errors about referring to a file "object.d" when trying to build dub. Some poking around on the web resulted in the advice of installing the pre-built dmd binary that is in the release distribution. Now I was able to build dub, although it was strange to see two completely different build mechanisms for dmd and dub - dmd using a makefile and dub using a sh script wrapper. vibe.d was easier to install once dub worked. Over an hour just to get basic tools installed, although I feel HTTP serving is so common that it should be one of the accepted "batteries included" by default. If this were Go, I would have installed the default build for my platform and had an http server in my standard sdk and everything else available by "go get", which has never failed to work flawlessly for me in a year of dealing with code from the web. This is one reason why there are already so many libraries for Go - it is trivial to expose your code to other developers via the supported toolchain.Why did you install dmd from source and not the same way as Go? It's a bit unfair comparison. Dub is a package manager for D, with many libraries available. -- /Jacob Carlborg
Nov 29 2013
On 29/11/13 14:53, Jacob Carlborg wrote:Why did you install dmd from source and not the same way as Go? It's a bit unfair comparison. Dub is a package manager for D, with many libraries available.There is absolutely no point trying to complain about "unfair comparison" here. The real question you have to ask is why there wasn't an obvious equivalent to Go's "install the default build for my platform". You can say, "Hey, D does have that equivalent, the .zip installer, or the .deb or .rpm files ...!" but that's not the point. The point is why OP considered that the natural way to do things was to install from source. The obvious solution to this is that the homepage should have a Big Friendly Button shouting "Get started with D!" that should take you to a page which auto-detects your system and makes available an appropriate installer.
Dec 03 2013
On Tuesday, 3 December 2013 at 15:07:36 UTC, Joseph Rushton Wakeling wrote:On 29/11/13 14:53, Jacob Carlborg wrote:The obvious solution to this is that the homepage should have a Big Friendly Button shouting "Get started with D!" that should take you to a page which auto-detects your system and makes available an appropriate installer.At least let it be a *proeminent* link towards the "Downloads & Tools" page, which is so quietly hidden in the left menu.
Dec 03 2013
On 12/3/13 7:56 AM, eles wrote:On Tuesday, 3 December 2013 at 15:07:36 UTC, Joseph Rushton Wakeling wrote:Pull request please. Also does everybody like the graphics at the top of http://dconf.org/2014/index.html? AndreiOn 29/11/13 14:53, Jacob Carlborg wrote:The obvious solution to this is that the homepage should have a Big Friendly Button shouting "Get started with D!" that should take you to a page which auto-detects your system and makes available an appropriate installer.At least let it be a *proeminent* link towards the "Downloads & Tools" page, which is so quietly hidden in the left menu.
Dec 03 2013
On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:On 12/3/13 7:56 AM, eles wrote:I do, nice and clean. If I had any criticism it would be that the lettering on "Menlo Park" etc. is just a tiny bit too heavy. If the letters could be made more distinct, that would be nice. However, I don't think it is a show-stopper. Of course, now the next person to respond is going to say how much they like that lettering. CraigOn Tuesday, 3 December 2013 at 15:07:36 UTC, Joseph Rushton Wakeling wrote:Pull request please. Also does everybody like the graphics at the top of http://dconf.org/2014/index.html? AndreiOn 29/11/13 14:53, Jacob Carlborg wrote:The obvious solution to this is that the homepage should have a Big Friendly Button shouting "Get started with D!" that should take you to a page which auto-detects your system and makes available an appropriate installer.At least let it be a *proeminent* link towards the "Downloads & Tools" page, which is so quietly hidden in the left menu.
Dec 03 2013
On 12/3/13 4:57 PM, Craig Dillabaugh wrote:On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:Thanks. I was asking mainly hoping that someone would say it's horrible and submit a fix :o). I adapted that from last year's logo with a free online image editor over my phone's 4G connection on a bus. True story. AndreiOn 12/3/13 7:56 AM, eles wrote:I do, nice and clean. If I had any criticism it would be that the lettering on "Menlo Park" etc. is just a tiny bit too heavy. If the letters could be made more distinct, that would be nice. However, I don't think it is a show-stopper. Of course, now the next person to respond is going to say how much they like that lettering. CraigOn Tuesday, 3 December 2013 at 15:07:36 UTC, Joseph Rushton Wakeling wrote:Pull request please. Also does everybody like the graphics at the top of http://dconf.org/2014/index.html? AndreiOn 29/11/13 14:53, Jacob Carlborg wrote:The obvious solution to this is that the homepage should have a Big Friendly Button shouting "Get started with D!" that should take you to a page which auto-detects your system and makes available an appropriate installer.At least let it be a *proeminent* link towards the "Downloads & Tools" page, which is so quietly hidden in the left menu.
Dec 03 2013
On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:Pull request please. Also does everybody like the graphics at the top of http://dconf.org/2014/index.html? AndreiThe space between the 0, 1 and 4 in 2014 is making me cringe.
Dec 03 2013
On Wed, Dec 4, 2013 at 6:13 AM, Meta <jared771 gmail.com> wrote:On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:Compulsory XKCD link: http://xkcd.com/1015/Pull request please. Also does everybody like the graphics at the top of http://dconf.org/2014/index.html? AndreiThe space between the 0, 1 and 4 in 2014 is making me cringe.
Dec 03 2013
On 2013-12-03 21:53, Andrei Alexandrescu wrote:Pull request please. Also does everybody like the graphics at the top of http://dconf.org/2014/index.html?Honestly, no. It's very, yellow. Although I'm no designer so I won't try to create an alternative. -- /Jacob Carlborg
Dec 03 2013
On 03/12/13 21:53, Andrei Alexandrescu wrote:Pull request please.I've no objection to that, but in this case I think I'd rather donate towards hiring a really good designer to modernize the website UI [*]. If we're not kickstarting the conference this year, how about a donation drive for the website + forums? [* Secondary worry: if we're going to have a big "Get Started With D!" notice on the front page, all those installers had better be well tested and guaranteed to Just Work.] [* Tertiary worry: I'm not convinced the website will benefit from one or two of us contributing what we think is a clearer "get started" message. User testing is really the only way to ensure that people get from the website what we want them to get.]
Dec 04 2013
On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:On 12/3/13 7:56 AM, eles wrote:The yellow doesn't "stand" well on the dark gray background. It causes the eyes to focus and defocus. Plain white or a very light yellow would be better. Good idea to have a curvy font based on the letter "D". Only the "4" in 2014 seems to be a bit of an outlier, maybe it would help to give it some curves at the top (and on the left). It kind of breaks the overall curvy feeling. Maybe move the logo+text a bit more to the right and give the text a bit more padding-left to give it more room to "breathe". The content could do with a bit more line spacing in the bullet-point section. If I have time and there is demand I could attempt a design template for 2015. At the moment I'm too busy to come up with anything for 2014.On Tuesday, 3 December 2013 at 15:07:36 UTC, Joseph Rushton Wakeling wrote:Pull request please. Also does everybody like the graphics at the top of http://dconf.org/2014/index.html? AndreiOn 29/11/13 14:53, Jacob Carlborg wrote:The obvious solution to this is that the homepage should have a Big Friendly Button shouting "Get started with D!" that should take you to a page which auto-detects your system and makes available an appropriate installer.At least let it be a *proeminent* link towards the "Downloads & Tools" page, which is so quietly hidden in the left menu.
Dec 04 2013
On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:Also does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 04 2013
On 12/4/13 10:57 PM, Martin Nowak wrote:On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:I agree!! AndreiAlso does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 05 2013
On Thursday, December 05, 2013 06:44:41 Andrei Alexandrescu wrote:On 12/4/13 10:57 PM, Martin Nowak wrote:As do I. The font is not particularly pretty, and the yellow is way to harsh. But unfortunately, I doubt that I could do much better. And it's pretty amazing that you managed to do that on your phone. Imagine how someone would have looked at you had you told them ten years ago that in the future, you'd be doing something like that on your phone... :) - Jonathan M DavisOn Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:I agree!!Also does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 06 2013
On Thursday, 5 December 2013 at 14:44:41 UTC, Andrei Alexandrescu wrote:On 12/4/13 10:57 PM, Martin Nowak wrote:I'm not a designer, but I think whatever alternative is better. My try: http://imgur.com/a/hCIPm Font: Sansus WebissimoOn Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:I agree!! AndreiAlso does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 06 2013
On Friday, 6 December 2013 at 11:45:36 UTC, Tourist wrote:On Thursday, 5 December 2013 at 14:44:41 UTC, Andrei Alexandrescu wrote:Oops, 2014 of course :) http://imgur.com/a/EkIPwOn 12/4/13 10:57 PM, Martin Nowak wrote:I'm not a designer, but I think whatever alternative is better. My try: http://imgur.com/a/hCIPm Font: Sansus WebissimoOn Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:I agree!! AndreiAlso does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 06 2013
On Friday, 6 December 2013 at 12:21:12 UTC, Tourist wrote:On Friday, 6 December 2013 at 11:45:36 UTC, Tourist wrote:On Thursday, 5 December 2013 at 14:44:41 UTC, Andrei Alexandrescu wrote:On 12/4/13 10:57 PM, Martin Nowak wrote:On Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:Too bad. I really loved the way that you rounded the 4 until it became a 3. People find 4 to be not as smooth as the D belly, so maybe they will take a 3 instead :)My try: http://imgur.com/a/hCIPm Font: Sansus WebissimoOops, 2014 of course :)
Dec 06 2013
On Friday, 6 December 2013 at 11:45:36 UTC, Tourist wrote:On Thursday, 5 December 2013 at 14:44:41 UTC, Andrei Alexandrescu wrote:Just add some letter spacing and bin that effin yellow. It will work wonders. The font is not really the problem, cos it makes sense to base it on the belly of "D". But add letter-spacing and make the font slimmer. [ other suggestion] No drop shadows, please. In this context it don't make no sense to have drop shadows. Unless it's on a white or not grayish background.On 12/4/13 10:57 PM, Martin Nowak wrote:I'm not a designer, but I think whatever alternative is better. My try: http://imgur.com/a/hCIPm Font: Sansus WebissimoOn Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:I agree!! AndreiAlso does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 06 2013
On 12/6/13 3:45 AM, Tourist wrote:On Thursday, 5 December 2013 at 14:44:41 UTC, Andrei Alexandrescu wrote:s/2013/2014/ AndreiOn 12/4/13 10:57 PM, Martin Nowak wrote:I'm not a designer, but I think whatever alternative is better. My try: http://imgur.com/a/hCIPm Font: Sansus WebissimoOn Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:I agree!! AndreiAlso does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 06 2013
On Friday, 6 December 2013 at 20:35:10 UTC, Andrei Alexandrescu wrote:On 12/6/13 3:45 AM, Tourist wrote:lol, I saw you've pulled the 2013 one. http://forum.dlang.org/post/wtsohypsvefsabegidmy forum.dlang.orgOn Thursday, 5 December 2013 at 14:44:41 UTC, Andrei Alexandrescu wrote:s/2013/2014/ AndreiOn 12/4/13 10:57 PM, Martin Nowak wrote:I'm not a designer, but I think whatever alternative is better. My try: http://imgur.com/a/hCIPm Font: Sansus WebissimoOn Tuesday, 3 December 2013 at 20:53:28 UTC, Andrei Alexandrescu wrote:I agree!! AndreiAlso does everybody like the graphics at the top of http://dconf.org/2014/index.html?Frankly, it's awful.
Dec 06 2013
On 2013-12-03 16:07, Joseph Rushton Wakeling wrote:There is absolutely no point trying to complain about "unfair comparison" here. The real question you have to ask is why there wasn't an obvious equivalent to Go's "install the default build for my platform". You can say, "Hey, D does have that equivalent, the .zip installer, or the .deb or .rpm files ...!" but that's not the point. The point is why OP considered that the natural way to do things was to install from source.I thought that was just what I asked. Sure I could have skipped the "unfair comparison". -- /Jacob Carlborg
Dec 03 2013
On 29/11/13 06:14, brad clawsie wrote:First I tried installing dmd from source, which was fine but then I would get strange errors about referring to a file "object.d" when trying to build dub.Had you created a dmd.conf file containing the right locations for runtime/Phobos and placed in the same directory as the dmd binary?
Dec 03 2013