5 ms·
The only thing that has stopped me from using racket more are the performance issues. Hopefully Racket-CS will make racket competitive performance-wise with CL.
by mruts 7y ago
The only thing that has stopped me from using racket more are the performance issues. Hopefully Racket-CS will make racket competitive performance-wise with CL.
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.
- jambutters 7y agoalways wondered so too. Racket also seems to beat python in many benchmarks: https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/racket-python3.html https://benchmarksgame-team.pages.debian.net/benchmarksgame/... , but yeah, i guess people just hate parens and prefix notation.
- neilv 7y agoFor Web serving, I could work around those GC hits right now, but it would take some work. (I previously did a lot of optimizing request latency on Racket-based Web servers using `scgi` fronted by Apache for historical reasons, and have some ideas about where to go next.)
- neilv 7y agoI wouldn't call any Lisp dialect the single best. As a Racket and Scheme fan, I'd like to acknowledge that CL, for example, has a lot of neat things, including some kinds of dynamic power that Racket doesn't have, at least not nearly as easily. Also, CL's CLOS is impressive, and Racket's main object system is a very different kind. Clojure also has some novel merits. 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.
- mruts 7y agoThe one thing that’s nice about CL is the system images. Racket doesn’t have a similar concept: you can’t REPL into running systems and update the image on the fly (as far as I know). Nor can you save the corrent state of the program to disk for restarts. A lot of times I find that feature of CL more confusing than helpful: your system is no longer a derivative of your source.
- lispm 7y ago> a truly awesome IDE. 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'...
- neilv 7y agoDrRacket is a pedagogic IDE, originally intended to be simple for new students and non-majors. 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. :)
- deleted 7y ago[deleted]
- lispm 7y ago> DrRacket is a pedagogic IDE, originally intended to be simple for new students and non-majors. 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.