6 ms·
Here's his (brief) answer (from the same thread): John Carmack: > >An imperative API makes functional abstraction harder. What are the main selling points for
by deckiedan 11y ago
Here's his (brief) answer (from the same thread):
John Carmack:
> >An imperative API makes functional abstraction harder. What are the main selling points for Scheme/Racket now?
> I am a big believer in functional programming (and static types) for large projects, but there is an undeniable bit of awkwardness compared to just imperatively poking things for small projects. That is one of the wins for Scheme -- I can make it super-easy to get easy things working, but it isn't just a "scripting language" unsuitable for large scale development. I am going to have to sort out my Racket / Chibi module strategy sometime soon, though.
> As far as language choice goes, I don't claim to have broadly evaluated every possibility and chosen the optimal one.
> Java or C# would have been more familiar to a broader base of game industry developers, but I really didn't want to drag in all the bulk of a JVM / .NET system, and a class focused world view seems less suited for the smaller scripting tasks.
> Javascript would have been more familiar to a broader base of web industry developers, but I have basically no experience with javascript, and little desire to explore it (which is admittedly a fault of mine).
> S-expression reading and writing is a strong factor for network communication, and I like the fact that there are available options for Scheme to interpret / compile / compile-to-C. I can see valid use cases for all of them, and I'm not sure how important each will be.
> The bottom line is that I have been enjoying myself working with Racket / Scheme this year, and I have evidence that it has been objectively productive for me, so I'm going out on a bit of a limb and placing a bet on it.
> >Initial impression: 7 years after starting to program in Racket, it still surprises me how easy it is to do something
> >useful in just a few lines of code.
> A big goal here is to make the authored code very clear and simple. I may yet get to a single #lang vr <ip address> declaration that gets rid of the boilerplate at the top and bottom of the file and flips the right switches to make Racket closer to R7RS.
> There are sets of creative-types that are learning how to put things together in Unity to accomplish fairly simple media related tasks. I think I can make it easier for them with very domain specific helper libraries and a little bit of scheme.
- viach 11y ago> I am a big believer in functional programming > I have basically no experience with javascript > The bottom line is that I have been enjoying myself working with Racket So there is no logical reason behind, he just loves Racket, ok
- dang 11y agoProgrammer love is secretly (or not so secretly) the reason for all language choice. I say why hide it.
- superfunc 11y agoNot really. Domain often dictates. If AAA games could get away with using a garbage collected language, I'm sure they would.
- pjmlp 11y agoUnreal has GC support for C++. Unfortunately Unity broken GC is a side effect of them not wanting to improve the stone age runtime they are using. I guess many AAA could actually be done in languages with GC support, but game devs tend to only change tools when the OS/console vendors force them. All that is needed is having such a vendor pushing a language with the same effort as they are pushing for JavaScript JITs, lets say.
- dang 11y agoProgrammer love would determine who'd make that change vs. who defended C++ to the death. Domain is often dictated too—we're attracted to problems that fit our tools.
- andrewchambers 11y agoNot to worry, they will be forced for add javascript just to please the hordes of people who don't know any better.
- ourmandave 11y agoBefore that it had to be "VB like" scripting.
- monk_e_boy 11y agoHe is fairly smart and has quite good taste, so I'll trust him to choose a good language.