D to Javascript converter (a hacked up dmd)
Nick Sabalausky
a at a.a
Fri Mar 2 13:11:49 PST 2012
"Adam D. Ruppe" <destructionator at gmail.com> wrote in message
news:wplwmjdlvvqcokxykskm at forum.dlang.org...
> Here's one of the nicer things to do:
>
> http://arsdnet.net/dtojs/game.d
> http://arsdnet.net/dtojs/game.html
>
> we can do little browser games in D.
>
> If you look at game.js:
> http://arsdnet.net/dtojs/game.js
>
> you can see it is similar in size to the original
> D file (this is after running tools/gcfunctions and
> tools/mangledown on it; before them, it was 21 KB).
>
> I just quickly whipped this together, so it isn't
> much of a game - you just move your thing around.
> Use keys a,d, and w to control it.
>
>
> Not much to it, and writing this in Javascript would
> have been easy enough, but even for this trivial thing,
> a few D nicieties came through:
>
> 1) I typo'd one of the method names. D caught it instantly.
>
> 2) The degrees thing is supposed to be a user defined literal..
> but it didn't actually work like that (it outputted functions
> that returned the literals!) I consider this a bug in the converter.
>
> 3) The click event handler is a little more succicent than the
> same in Javascript would be.
>
> 4) The switch. Two nice features of D here that JS lacks:
>
> a) "case 'A':" comes out as "case 65:". The key code is a
> number, which is not equal to 'A' in Javascript!
>
> A lot of sites have tables for this, but it is just ascii,
> so 'A' works well. In D.
>
> b) the comma on case is a bit shorter than the same in JS.
> D is better at this short, dynamic stuff than JS itself
> if you ask me - just look at the beauty of my server side
> dom.d compared to JS.
>
>
>
>
> But, it also shows that D->JS isn't a magic bullet.
>
>
> 1) This won't work on IE8, since it doesn't have the canvas thing
> nor addEventListener. (The latter could be emulated in a library,
> though, with exactly the same syntax too.)
>
> 2) It runs smoothly on IE9, but sucks my butt on Firefox 9 on the
> same computer (my little laptop).
>
> It is still javascript when it runs, so speed boosts are limited
> by that; if the browser is slow, using D won't help much.
>
> 3) Obviously, it won't magically turn on people's javascript either.
> But, same language client+server means it is that much less
> work to make nice fallbacks (e.g. proper validation).
>
> BTW speaking of validation, I'm pondering if scope(failure)
> could make elegant code for that...
>
>
>
> But, hey, I'm calling it a win. The suckage of browsers
> is a reality regardless of the language.
>
Yea, that's pretty cool. The *one* nice thing about modern JS is that is can
kill off Flash. Of course, it's still not a partucularly good approach, but
at least it's an improvement over Flash.
Your demo there reminds me of an awesome demoscene website around ten years
ago...umm "matt"-something-or-other. Shit, I can't remember, but it was like
a demoscene entry, but with the browser as the platform. Included one or two
DHTML games, and this was years before anyone had even heard of "canvas" or
"HTML5". Unfortunately, I don't think it's around anymore :(
More information about the Digitalmars-d-announce
mailing list