5 ms·
Absolutely not. SICP is a fun way for a mathematically-strong person to learn a huge swath of computer science through experimentation and thinking about the r
by fn-mote 5y ago
Absolutely not.
SICP is a fun way for a mathematically-strong person to learn a huge swath of computer science through experimentation and thinking about the results.
You have to not just _do_ the exercises but _understand the results_. It's not an easy on ramp.
You would be better off working through the Racket Guide [1] or one of the tutorials on their web site.
[1] https://docs.racket-lang.org/guide/index.html https://docs.racket-lang.org/guide/index.html
- jp0d 5y agoThank you kind stranger. I actually chose to learn a bit of StandardML to understand functional programming, but every now and then when I see a post like this I get tempted to try Racket as well. I've got a copy of SICP on my desk and I've barely read 30 pages. Someday, I will.
- bmitc 5y agoTry out the Programming Languages Coursera by Dan Grossman. It starts with SML and then moves on to Racket.
- jp0d 5y agoI did a few lessons on Standard ML from it on Coursera. It's brilliant. Thank you.
- stewbrew 5y agoWhy would you want to learn racket after having learned sml? racket is great, no question about that, but it is mostly an educational tool and a "first language". I personally would rather choose a language with a broader real world user base. if you're interested mainly in functional programming, haskell would be a reasonable choice after sml. if not, there are plenty of other possibly more rewarding choices (on the long term).
- jp0d 5y agoActually, you're correct. The only reason I can think of is curiosity. Beyond that it has very little importance, to me personally. That's why I may never do it. But it definitely looks fun. I don't know about Haskell but I'm more interested in F#. Some of my colleagues have worked on Haskell in the academia.
- scns 5y agoF# is a good choice IMO. There is a great book by Scott Wlaschin named Domain Driven Design made functional. Two birds one stone.
- tonyg 5y agoIt's far more flexible than SML. I'd pick Racket over SML for production use any day of the week. (And I have indeed shipped code in both SML and Racket.)
- eru 5y agoRacket is a great language to learn, it's fun. Knowing a language of the ML family already doesn't diminish one's enjoyment of a Lisp. You can still learn those other languages, too. Learning enough about Racket to have some fun doesn't take that long.
- skrishnamurthi 5y agoRacket's student languages are "mostly an educational tool" and designed to be a "first language". Racket, the whole language, is a large, batteries-included, industrial-strength system. It is not less or more powerful than SML, it's different, including offering various strengths that SML does not.
- abc_lisper 5y agoI counter this. I had a couple of years of experience and a Masters degree in CS when I first picked up SICP. Then I understood computation . I wish I could go back in years and learn from SICP first. I would could save myself from a lot of dead end perspectives and frustration. SICP is a peerless jewel imo
- joeberon 5y ago
- skrishnamurthi 5y agoBut the question was not "what is the best way to learn computation", it was for the best way to learn Racket.
- deleted 5y ago[deleted]
- abc_lisper 5y agoYep. My bad.
- eru 5y agoI liked SICP when I read it as a teenager, but these days it's far from the best book even for a 'mathematically-strong person to learn a huge swath of computer science through experimentation and thinking about the results.' The book hasn't aged all that well. But maybe that's just me. See https://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf https://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.... for a more reasoned opinion.
- hajile 5y agoI don't know that arguing for beginner students to learn what is basically the early version of Haskell as their intro to computing is a compelling alternative. The basics of computing are hard enough to learn when you aren't focused on type theory, lazy vs eager evaluation, etc at the same time.
- eru 5y ago> I don't know that arguing for beginner students to learn what is basically the early version of Haskell as their intro to computing is a compelling alternative. See when that text was published. The author would probably argue for a slightly more modern language these days.