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.

Reply via email to