5 ms·
The author seems to think that Clojure has some conceptional complexity to it that is easier to overcome by doing a intermediate step with Racket. But in which
by mduerksen 16y ago
The author seems to think that Clojure has some conceptional complexity to it that is easier to overcome by doing a intermediate step with Racket. But in which way is Racket or any other Lisp an intermediate step?
I had no Lisp experience whatsoever before I started with Clojure, and the only real difficulties I experienced were (in descending order):
a) translating my imperative-style thinking into functional style - this would happen to me in Racket as well.
b) macros - but you don't need to grasp macros as a beginner, that's a topic by itself anymay.
(and NO, the bracket syntax was no problem at all)
YMMV if you have an other background.
It is true: The more programming languages you already know, the easier it will be to learn a new one (iff it doesn't conceptionally diverge too much). But if you don't have that background, why not learn the desired language right away?
- RiderOfGiraffes 16y agoMy experience is very limited. I've not yet worked through all of Chapter 3 of SICP, and I've not had the opportunity to hack any real code in any lisp dialect since I implemented LispKit one weeked in 1989. However ... I think there is merit in the simplicity, clarity and purity of Scheme in helping put someone "in the right place" for grokking the real value and real power of Clojure. On the very few occasions I've written in Clojure I've known I've not been really "getting it" and that there's more, but I've felt (pause) overwhelmed is one word ... by the completeness of Clojure. It's a proper language for proper work. I think I've gained a lot from going back to Scheme's purity and elegance. It's a bit like "lies to children." We know that Newtonian mechanics is wrong, but we still teach that first because it's easier to grasp, easier to do the sums, and more directly in line with our own experience. But if taught properly (and that's another story altogether) it lays the foundation for being able to do the sums and do the work "properly" in Relativity. I think Scheme can help to create the functional mindset in an elegant way, before having to worry about real world nastiness. YMWV, because everyone is different and comes with different skills, deficiencies and baggage.
- mduerksen 16y agoI definitely disagree that Clojure introduces "real world nastiness" which would prevent a beginner from learning it "the clean way". Clojures data structures are very elegant and easy to grasp (e.g. you don't have to think about pointers or define equal operators, it's all there already). And you can define functions just as clean an "pure" as in Scheme. I do agree that Clojure is very comprehensive, and can be overwhelming for a beginner. But you could buy a book, which will use only a subset of Clojure at the beginning. And when you get to the point where you can use the basic data structures and map, filter, reduce them, this will get you very far.
- phren0logy 16y agoTo me, the "real world nastiness" is the Java cruft surrounding it. You don't have to deal with it except to get a nice programming environment running. At this point the options are much more complicated and uglier than DrScheme.
- mduerksen 16y agoThat's not what the author seems to mean though: Clojure's exceedingly cool, but to understand it you need to speak lisp But I agree, an uncomplicated und "Java-free" IDE would be a great gain for a low-threshold start with Clojure. Clojurebox is a beginning, but it in turn burdens a starter with Emacs.
- deleted 16y ago[deleted]
- neutronicus 16y ago* It's a bit like "lies to children." We know that Newtonian mechanics is wrong, but we still teach that first because it's easier to grasp, easier to do the sums, and more directly in line with our own experience. But if taught properly (and that's another story altogether) it lays the foundation for being able to do the sums and do the work "properly" in Relativity. * This is not the whole story. We also still teach Newtonian mechanics because Newtonian mechanics is not only good enough for a wide range of real word applications, but the only feasible calculational strategy. Mechanical and aerospace engineers use Newtonian mechanics (and derived disciplines such as Newtonian continuum mechanics and fluid mechanics) to great profit.
- briancooley 16y agoHe's recommending to read/watch SICP and do the examples, which are in Scheme. I think it's good advice to have a Scheme REPL to follow along so that you don't have to worry about the additional overhead of translating to Clojure.
- mduerksen 16y agoThis would actually be an interesting way to learn Clojure: Follow SICP, do the examples in Scheme/Racket and immediately after that the same example in Clojure (the differences should not be abysmal). At some point though, as Scheme and Clojure diverge, this method would start to become less useful. But at that point, I would argue, you already know enough to take off in Clojure.
- RyanMcGreal 16y ago> The author seems to think that Clojure has some conceptional complexity to it that is easier to overcome by doing a intermediate step with Racket. The sense I got is that the author believes SICP is such an excellent teaching manual that it's easier to learn Clojure-via-Scheme using SICP than it is to learn Clojure via itself using any other resource.