5 ms·
> Once a language gets beyond a certain complexity — say LaTeX, Common Lisp, C++, PL/1, modern Java — the experience of programming in it is more like carving o
by threatofrain 7y ago
> Once a language gets beyond a certain complexity — say LaTeX, Common Lisp, C++, PL/1, modern Java — the experience of programming in it is more like carving out a subset of features for one’s personal use out of what seems like an infinite sea of features, most of which we become resigned to never learning.
This is how I felt about Racket, and I felt I had to do an opinionated pruning before I could use it for teaching, but the problem is that the docs don’t have such a boundary for learners so you feel tempted to rewrite the docs.
- gmfawcett 7y agoLast I checked, Racket literally has sublanguages defined for teaching and learning: "Beginning Student", "Beginning Student with List Abbreviations", etc. https://docs.racket-lang.org/htdp-langs/index.html https://docs.racket-lang.org/htdp-langs/index.html
- deleted 7y ago[deleted]
- sigzero 7y agoIndeed. You can even MAKE your own language with Racket to suite teaching needs.
- pgtan 7y agoOr you can rediscover LOGO, which is LISP to the bones: ? show (map [[x y] [output se :x sum :y #]] [a b c] [10 20 30]) [[a 11] [b 22] [c 33]]
- deleted 7y ago[deleted]
- threatofrain 7y agoI wouldn't call those sub-languages, I think they're rightly different languages (of eerie similarity) born from specific pedagogical or academic vision. So the upkeep in dealing with the mismatch between proper Racket and these student languages wasn't something I was interested in. Students should be able to consult general Racket resources.
- neilv 7y agoExactly, I think that the Racket teaching languages were started to support teaching young/new students (and not necessarily people who are or will be CS majors) a particular way of approaching program design problems. Racket itself arose from building a cross-platform toolset to support building those programming tools. It also became a toolset and testbed for PL research. I appreciate what you're saying about Racket having a big library. I was recently talking about how to to teach Racket to experienced programmers. I'd put them down in front of a full `#lang racket/base`, but start with teaching them only a specific subset of R7RS, and incrementally introduce a few more concepts and exercises to try for a day or more (things you can practice while writing your own real code, even if it briefly seems harder than something we told you that you could use before). If instead I just dumped the full Guide and Reference on experienced people, they'd become productive pretty quickly, albeit colored heavily by what they previously knew, and they might have a much longer path to becoming strong in some unfamiliar fundamentals. BTW, another educational thing that Rackets `#lang` does is support students working through SICP use DrRacket. It emulates the particular older Scheme variant used in SICP, gives an IDE maybe a bit easier for new students, and runs on the student's own modern computer.
- darkpuma 7y agoThe racket docs having such great cross-referencing with hyperlinks is probably a decent part of why it's been relatively so popular. Cross-referenced documentation invites deeper investigation and learning.