RacketCon 2022
con.racket-lang.org
con.racket-lang.org
In my observation, it was those with previous java/c++ experience that couldn't let that go who struggled the most. Total newbies were a blank slate and more likely to 'get it', assuming they have the abilities needed to succeed in a CS program.
I would also say Matthias is a legend and my instructors were nowhere near that level.
We had a bypass exam, which was more or less the final for the course. If you passed it, you got the credit. I don’t think a single person passed it while I was there.
https://mitpress.mit.edu/9780262561150/a-little-java-a-few-p...
It gets so much hate for not being a “traditional” Intro to CS course. And yet, learning about recursion so quickly and getting such a strong foundation with it is invaluable for figuring out new ways to solve problems. It’s one of the only courses that I personally think taught me something so fundamental that I still use all the time.
Gregor is also a gem of a human. I’m incredibly grateful I’ve been able to get to know and learn from him while at UBC.
I recall a while back John Carmack tweeted about writing some project in Racket & it’s been vaguely on my radar lately.
https://docs.racket-lang.org/guide/languages.html
https://docs.racket-lang.org/guide/more-hash-lang.html
Example of a language-in-racket: https://github.com/soegaard/minipascal/tree/master
There are like 20 of additional languages as part of the distribution. Some are variants, like "Typed Racket" that is like racket with static types. Other languages that are more/completely different and/or almost unused and keep for compatibility or as a demo of some strange feature. And also there are many user defined languages that can be downloaded as packages.
The batteries are included. I had to make a program that uses IMAP, SMTP and web scrapping. In another I used support for gzip and xml. In both cases, and all of that was installed by default. And also there are many user defined libraries that can be downloaded as packages.
Racket is more immutable than a normal Scheme. For example, lists ("cons") are immutable, and that allows the generation of faster code. Anyway, you can load a library to create mutable lists/cons if you need them.
There is more separation of the normal code from the code in macros. So normal code does not affect the code inside macros. Some people like that, and some people dislike that. It's better to reason about macro expansions, but to share a function between normal code and a macro you must define it in another file.
It's quite fast in the Scheme family https://ecraven.github.io/r7rs-benchmarks/ Still like 5x slower than C, but 5x faster than vanilla Python. https://benchmarksgame-team.pages.debian.net/benchmarksgame/... YMMV
2. Language is evolving in both a low level (Racket on Chez) and high level way (zuo make replacement)
3. Package manager built into the language
4 Gradually typed sister language
5. Compiled
6. Binaries for multiple Oses for easy download
7. Built in GUI library
8. Drracket for an all in one text editor and language solution.
Some schemes/lisps have some of these, but they are either bolted on after the fact, or not widely adopted in that community.