Racket News – Issue 7
racket-news.com
racket-news.com
Also, if any of the RacketCon organizers are reading, can you please try to get better video this year? There's no way I can attend the conference but I do watch the videos. Last year the quality seemed like a noticeable step down.
But, thank you for doing what you do! Racket is one of those languages that I wish I had more reason to use on a day-to-day basis.
I have been using Common Lisp since 1982, and feel more comfortable with it, but 2 or 3 times a year I will write some small thing in Racket and enjoy it. The Racket ecosystem is fantastic.
In regards to expressiveness, Racket is definately the most powerful lisp on the market, maybe even of any language, lisp or not.
Great GUI library, the most powerful metaprogramming the world has ever seen, FP, static typing (still a little rough around the edges), libraries for xml/json/http and a ton of other stuff, nice OOP libraries, contracts, and a truly awesome IDE.
Is there any other language that is as flexible, powerful, and elegant?
The only thing missing from the equation is a high performance optimizing compiler and industrial GC. If Racket could get JVM-like performance and a GC that could manage terabytes of heap, it would be the ideal language for me.
I used to program Racket professionally in academia, and it works really well for desktop applications. You can whip up complex single user apps very very quickly, with generally acceptable performance. Great for research and data science applications.
I now use Scala at work on a computation heavy multi-user finance application and Racket would be unteniable for this use case. High-load servers need the best GC (or no GC) and there are very few languages that work well in this use case. Pretty much just JVM languages, C/C++, Rust, and maybe Go or OCaml.
If Racket could get competitive in these areas, it might open the door for commercial adoption. Though, on the otherhand, both Python and Ruby have worse implementations and worse GC and that doesn’t stop everyone from using them for servers.
This is a tangent I suppose, but it’s a mystery to me why Racket isn’t more popular compared to Ruby/Python. For data science and ML the network effects of Python are strong, but the networking libraries for Python aren’t any better than those for Racket. Maybe people just think parens are scary?
Anyways, Racket is seriously awesome and developed by some great people (professors). If you haven’t tried it, I would highly recommend it. Very easy to get started because of the great IDE.
PS: Also HN is written in Racket (essentially), so I guess you can wrangle for high-load servers.
Last I heard, HN is developed in Arc, which i think was implemented in Racket long ago. Racket has added a bunch more support for implementing languages since then, so, if you want to design a language today, you might also decide do it in Racket.
A lot of times I find that feature of CL more confusing than helpful: your system is no longer a derivative of your source.
That's a lot of hyperbole for a not so great IDE. It's even sluggish on my Mac - there are basic GUI functions, like resizing windows, which are poorly implemented (run something in a loop, then the UI stops responding properly). There is a huge amount of UI glitches.
For example start DrRacket, click on the green button in the window bar to enlarge the window. Instead of smoothly expanding, it jumps to full screen. When we again click into the green button, a strange animation happens with some window drawings in the upper left screen area... There is lots of that...
It's also from the past. The last time I want to see the amount of RAM something uses or how much GC activity there is, was in the end 80s. The UI also does not 'awesome'...
Some people like DrRacket for real development work.
I'm an Emacs person, but I use DrRacket when I want to use the Macro Stepper, or see how the arrows work in my syntax extension, or use the renaming feature, or put each process of a client/server system in a separate IDE that fits in one window.
I find I also fire up DrRacket when I want to very quickly make a running code example for someone, since it it somehow seems easier to iterate than Emacs sometimes.
I prefer Emacs for the bulk of code I write, though.
P.S., Thank goodness programming students are still being shown things like RAM usage (DrRacket can enforce limits) and that GC is happening. :)
I know that. But it's far from being generally 'awesome', when the look & feel is actually below average.
> P.S., Thank goodness programming students are still being shown things like RAM usage (DrRacket can enforce limits) and that GC is happening. :)
GC happens. Then students see it all the time and start to worry. No of the current IDEs I can remember still show GC activity in the GUI. I would also not know why I need a constant updating view of program memory size.
IMHO, at some point in a student's programming education, I'd definitely want them to be aware of program size and GC. But I couldn't say exactly when they need to start seeing it, and when it's OK if they don't see it. Of course, the professors are the ones with all the teaching experience, and one can always ask them on `racket-users`.
(`racket-users` is where most of the action in Racket is, and the community members, including the core developers, actively answer&discuss questions. The other venues are mostly outposts for discovering Racket.)
For the record, I've only used Emacs when programming Racket professionally, but from my experience playing around with things. the IDE is quite nice.
Seems like a dead evolutionary branch of computing, that was (probably?) better than what we have now.
But one gets most of that and some more from Allegro CL and LispWorks.
It just looks different inside. Genera is an object-oriented system. Whether objects run in different memory-spaces or in the same makes no difference, for whether it is an Application or not. Each App in Genera is called an 'Activity'. It has its own UI (which is not Zmacs-based), it has it's own processes, its own toplevel and its own objects.
Zmacs is just ONE of dozens of applications in stock Genera and it is not the IDE. The Genera IDE consists of many different applications working together and a shared object space.
I can do almost everything in Racket (except for things like OS kernel, and easy slick smartphone apps), and Racket also gives me better metalanguage features than anything else.
The main downsides I see are: you end up doing more things from scratch than you would in many other languages (which occasionally is an advantage), it's not as proven like something like Java (in a "nobody ever got fired for buying IBM" kind of way), and there are only a few non-academic jobs in the world right now.
I originally moved to Racket as a super-productive platform for R&D, and a lot of that could also apply to creative startups trying to get demos and beta rapidly. (For startups, consider using Racket for the sprint to significant funding, at which time you might be rewriting/pivoting regardless of what language you use, and at that time you can decide whether to stick with Racket.)
If you're already an experienced programmer, you can get started with Racket quickly, and soon be productive and see some boosts, though you'll need some experience with it before you'll get all the benefits (it's not just Python with parentheses), and you will probably have to do some things from scratch.
I’ll second that. I used to hang out in #racket on Freenode and the people there were genuinely nice folks.
I wonder how it fits with the ideas of FRAN (functional reactive animation)?