Racket
racket-lang.orgWe really need to give kudos to these guys. They have been persistent for years in developing a high quality Scheme, and then taking it to the next level. PLT Scheme is practical in its library design, flexible in its reader, meticulous in its documentation and fast as an execution engine.
Making a language fast and well-documented is a thankless task. It's nothing short of a herculean accomplishment for these guys to come out of left field with such a fantastic offering.
so so so true. Whats doubly impressive is that many of the core active members are full time academics who are able to frame their research so that they can both spend their time improving their PLT/Racket, and framing their work as also being genuinely top notch research!
Totally agree with both. They've taken great initiative and the criticisms that come with it. On top of all this, they create Moby which compiles to Javascript. If this were a concert, I'd give them a standing ovation.
Now that is great rebranding.
All it needs now is 'try Racket in your browser' and a video of some dude making a blog in 15 minutes using Racket. Then it will be the new hotness.
Yeah that is great rebranding.
All it needs now is 'try Racket in your browser' and a video of some dude making a blog in 15 minutes using Racket. Then it will be the new hotness.
You're using it now. Arc was built on top of PLT and news.arc ships with it. So,you are using the killer app / example that you are looking for right now.
:)
EDIT: Clarification
Not quite a video, and I think it will take a bit longer than 15 minutes, but here's their tutorial on making a blog.
Almost, you need a twitter client these days, blogs are passe.
What good is a language if you can't make yet another twitter client in 15 minutes.
I love seeing framework or language homepages with good copy and design like this one. The best ones make you want to stop what you're doing in your favorite language and go code something with the new hotness right now.
Unfortunately, it doesn't explain to the newcomer why this language is worth learning. I was expecting some kind of feature comparison or "Why another language?" article.
(That's a first impression. Then I read the comments here, and discovered it's based on PLT Scheme, which at least tell s me a little about what to expect.)
It's not just based on PLT Scheme, it is PLT Scheme, rebranded.
I just have to say I hat that new brand. Yuck!
It'll be interesting to see where they go with this; there seems to be a conscious effort to downplay the words "Scheme" and "Lisp" on the landing pages. I'm more of a Common Lisper myself (at least for my personal development), but I've been impressed with the PLT Scheme environment and languages. And anything that increases the use of the lisp family of languages is, imo, a good thing.
Others will obviously disagree with that sentiment. :)
For reference:
Yesterday: http://news.ycombinator.com/item?id=1408292
Some months ago: http://news.ycombinator.com/item?id=1221374
"Racket's interactive mode encourages experimentation, and quick scripts easily compose into larger systems. Small scripts and large systems both benefit from native-code JIT compilation. When a system gets too big to keep in your head, you can add static types."
Impressive.
Weird that it doesn't mention that it's the language formerly known as PLT Scheme.
Not really a "language" but an implementation of the Scheme programming language.
IIRC, the whole point of renaming it Racket is to show that PLT Scheme is "more than just scheme".
I realize that, but it would be false to call it a "language"; it's more appropriate to call it an "environment".
Or rather, to show that it's not just R6RS Scheme.
My impression is that it goes way far and beyond the scheme standard with all its additional features.
As if we are not already busy learning clojure?
You're learning clojure and don't know scheme?
I actually did this.
Frigging worthless university programming courses didn't bother teaching scheme.
Learning scheme's libraries on my own along with the lisp paradigm proved too daunting before (or maybe I just never found the right toy project to stick with, not really sure). Having java libraries there to back me up (I was doing stuff with hadoop too, so that made sense) gave me the little leg up I needed to get over the hump.
write factorial in scheme, then in clojure. And you might see an very interesting difference. Hint: the jvm does not have tail call optimization.
As if somebody would pick Scheme over Clojure for tail call optimization alone.
Clojure has a lot of handy stuff and the fact that's built on top of the JVM (with its limitations, indeed) is a major plus.
What I don't like about Racket (former PLT Scheme) is that it's a closed environment. You can't use common Scheme libraries (for instance: SLIB), debugging facilities are hidden into Racket's editor therefore you can't access them from Emacs or other tools, etc.
There are some tools available for command line debugging: http://docs.racket-lang.org/errortrace/index.html?q=debuggin... http://docs.racket-lang.org/unstable/debug.html?q=debugging
SLIB has worked in the past. If there are specific parts of SLIB you need, try asking the mailing list for help.
Any comments on how instructive HTDP is with Racket for introducing a non-programmer to coding?
I did that years ago and found it to be very useful.
Is there anything like Practical Common Lisp for PLT Scheme?
Not a standalone book, but there's a guide for doing practical things: http://docs.racket-lang.org/more/
Its cool, but I wonder just how many high-level web oriented languages we really need...
Homo sapiens is pretty cool too, but I wonder how many walking talking apes we really need... Random mutation + diversity + natural selection isnt yielding working, practical results only for biological organisms.
You sound like we should simply take the first best anything we run into and than stick with it unconditionally for the sole purpose of not having to spend time looking over the wall.
Do you at least remember the day back then when you lost your adventuresomeness?
Do you at least remember the day back then when you lost your adventuresomeness?
You could have easily made the point without being snarky and insulting.
Human evolution is more like looking at revisions of a single programming language. The basic elements remained consistent, but changed subtly over millions of years in an iterative fashion... if you pick life as a whole though I agree with your analogy, but this is very much a small cautious, iterative improvement and it offers me nothing I can't already get.
I enjoy the rational argument you give here, but I think you went too far by attacking my personality and misconstruing my words. The opposite of many is few, not one, and that was the impetus for my comment - right now "we" all seem to be focused on developing a tiny little area of programming instead of the whole and the effects are obvious if you have to work with it - towering technology stacks of crumbly code that are unstable through bad design and a lack of low-level mentality at the high-level - so bad they give Apple a pretty solid excuse to ban Flash on iPhone.
As for my "adventuresomeness" I'm comfortable with all the major paradigms and languages and work at every level, from encoded instruction bytes up to things like SQL/XSLT with C/Haskell/Fortran/Java/Ruby/Python/whatever inbetween and a wide variety of platforms (phones/games consoles/PDAs/calculators/PCs). I learned three languages in the last month - only two of which were through necessity at work and I am happy to make radical comments which express my opinions and not turn away from them when they clash with flavour of the month/year/decade... and thats just programming. I dunno what you call adventuresome but from your comment, I'd imagine its probably a lot less adventurous than me... but then I might be misconstruing words and attacking your personality then. :P
I don't think I would call scheme "web-oriented".
It may not be common to refer to it as such, but the PLT Scheme guys see the web as the killer app for Scheme's continuations:
http://www.cs.brown.edu/~sk/Publications/Papers/Published/kh...
http://en.wikipedia.org/wiki/Continuation#Continuations_in_W...
So maybe the new name comes from the fact that you serve with it.
I don't think I would refer to a language that has its roots in the first high-level programming languages ever devised as "web-oriented." You may want to look up the words "Lisp" and "Scheme" in Wikipedia.
Is "web-oriented" the new, more polite "not as fast as Fortran"?
Languages aside, I don't think the world needs another VM. Can't people just target an existing one? Please?
Your comment seems to imply that there is already a rich ecosystem of VMs in use, but there aren't really. Basically, there's the Java VM, which is bad for functional languages, and there's Mono, which is not really ideal for Scheme either, nor very popular except that it allows compatibility with .NET.
At any rate, I'm pretty sure PLT Scheme predates both Java and the CLI, so you'd be better off slagging Microsoft for their duplication.
LLVM is not really a virtual machine, at least not in the same sense as the ones we're talking about.
First, the Racket VM has been under development since 1995, so it's not "another VM".
Second, the Racket VM supports lots of things that other VMs don't: the Racket module system [1], kill-safe synchronization [2], custodians and eventspaces [3], first-class continuations, and many other things besides.
[1] Composable and Compilable Modules, Flatt 2002
[2] Kill-Safe Synchronization Abstractions, Flatt + Findler 2004
[3] Programming Languages as Operating Systems, Flatt et al, 1999
If the FFI is good, why do you care?
The PLT VM is very very good, and their FFI is very flexible. If you want a lispy dialect on the Java VM, you have one. But otherwise, why does it matter?