You first have to ask yourself whether there's something about Racket
that's a linguistic win for you -- say, you really benefit from the
first-rate support for domain specific languages, or from having a very
powerful Lisp family extension language, or you're doing nontrivial
symbolic computation.
(My favorite example of this is from a public statement from ITA
Software, who, paraphrased and IIRC, used the power of a Lisp to build a
new node in the existing mainframe airline reservation system network,
and they believed the only way it was possible was with a Lisp.)
That win from Racket has to be big enough you're willing to put in more
effort on other aspects -- to figure out how to get Racket to do things
for which you could easily find an off-the-shelf solution in some other
language/platform.
If there's not that linguistic win, then you're better off using a more
popular platform.
If there might be that win, rest of this email is more details...
Here's an example of the work: As a consultant, when I had to add a
mobile app to one large and complex server-centric system that's
implemented in Racket (and which had, speaking vaguely, a meta-model
layer)... what I ended up doing was have the server generate the
JS/HTML/CSS/etc. for an HTML5 app, from the current state of the
meta-model. In this case, I did it as HTML5 Offline stuff, including
app updating, although I kept PhoneGap/Cordova as a backup plan. Racket
made this possible, because doing the generation was nontrivial, plus
SXML is great for complicated HTML generation. It was painful, partly
because of the necessarily complicated nature of the system (no fault of
Racket; you'd have this in any language, and it would probably be even
harder there), and partly because Web apps are fundamentally an
architectural mess right now (not Racket's fault, but bypassing Web
technology and writing direct in Racket, with a nice UI toolkit,
would've been much better).
To go back to your Desktop/Mobile/Server bullets, briefly and off-the-cuff:
* Desktop: Take a look at DrRacket on Windows/Mac/Linux, for a
cross-platform desktop GUI app, from one source. You can get a little
more appearance polish and contemporary behavior, with work. The
standard widgets are basic, plus a decent text editor one. Not
everything you see in DrRacket is easily reusable functionality. When
the standard widgets don't do what you need, there is a canvas, and some
3D support, so you can do *most* things, with some work.
* Mobile: This might see an improvement, in the future. Matthew Flatt
is doing hard reworking of the guts of Racket right now, and it's
conceivable that sometime after, Racket could have a viable backend for
targeting JS or Web Assembly. For now, on Android, it's possible that
Jay MacCarthy's recent work using Android NDK(?) might do what you need,
although I think it's been focused on a particular user's needs. I'd
avoid the other education-oriented stuff. Other than that, I think
you're probably using any JS/HTML/CSS stack stuff talking to Racket Web
services, and possibly having Racket help generate the JS/HTML/CSS.
* Server: This is most of what I've been doing as a consultant for many
years. There is a lot of rolling your own, but you can get it to do
what you need. For example, when a large system in Racket wanted to
move to AWS, and do some unusual things, I had to implement the S3
integration from scratch, and do some things to help move server and SQL
to EC2, but it was doable, and I could also do the unusual things. That
AWS setup ended up being the first ever to get a particular fancy
certification (I can't take credit for that). In that example, the
customer couldn't just install a new platform version or add-on that
suddenly makes everything they needed to do work on this newfangled
cloud thing, but, at the same time, they weren't captive to some
off-the-shelf platform, and had the ability to do what they needed to
do, and on their timetable.
Another thing to be aware of is that, right now, I don't think anyone is
currently advancing Racket for industry work. So, for the foreseeable
future, you'll probably be rolling your own a lot, which can be good and
bad.
Of course, as a technical consultant who prefers to work in Racket, I'm
interested in a lot more industry uses of Racket happening, since that
means some would likely pay me for advising, doing some of the
architecture and/or trickier development work, and helping to fix
problems that crop up elsewhere. One thing I don't do is sales of the
platform. :)
--
You received this message because you are subscribed to the Google Groups "Racket
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.