Live data from Hacker News

Racket: Lisp for Learning

lwn.net

121–130 of 154 posts

Re: Racket: Lisp for Learning

#121
post #116
post #67

Earlier quoted context omitted.

The opening does leave a sour taste. You ack that there is little research, and then claim a pragmatic position. Your data section is compelling. Though, it reads close to the same arguments for why kids shouldn't learn calculus in grade school. So the questions I would have to counter this would be: * How stable has racket been compared to the alternatives? Specifically, how many texts in Java and python taught meth…

> How stable has racket been compared to the alternatives? Why does the stability of Racket matter? Isn't the real question more about how easy it is to reuse, readopt, reshare, find, etc. materials? I'll point out that the CSEngageEdu site doesn't have a Racket section. If you want me to find 100 programming problems in Python, I can do so immediately (because I published more than that, and I know others who have p…

The stability cuts to your pragmatic argument. Specifically, I keep getting student hires on my team that think the Java or the Python they used for school will cut it in the office. In large, it won't. JavaScript, similarly, has more online resources, but similarly, most are not helpful for modern use.

Depending when you made this argument, stack overflow was a great resource. But many answers for the languages you pick as pragmatic are not good answers for modern use. And it seems to be getting worse.

For the other, you are taking my evidence the other way, oddly. I would expect language to matter very little. Such that, pragmatically, it makes no difference.

That is, I'm not trying to prove people do better because of racket. I'm guessing to prove they do no different because of python. Indeed, I enjoy lisp. But I doubt it is truly easier than most other options. Just so I doubt it is truly harder than most other options.

Re: Racket: Lisp for Learning

#122

Earlier quoted context omitted.

The UI of an S-Expeession and a compiler transformation parse time transformation is just out of any comparison. Most of projects wouldn’t even consider writing a loader for a compiler or using a syntax parser. Yet to add which method is more prone to errors.

True but there's also things like Sweet.js, and non-s-expression languages have been able to get macros too, such as Elixir. I'm firmly convinced that s-expressions are almost pure novelty with no legitimate benefit.

I've been programming in Elixir for a few months now, and I like it a lot, but I found your comment amusing because a lot of Elixir's 'macro expressivity' seems to be due to Erlang using a data structure for its own parsing that can be readily manipulated as 'first class citizen' in itself. That's basically what s-expressions do. Apart from a small number of things that most people otherwise encounter in 'infix' notation, e.g. arithmetic, s-expressions seem to be a radically, and brilliantly, simple form of writing programs in a way that makes meta-programming as simple as possible.

(And, of course, meta-programming is powerful, thus 'dangerous', but there's a lot of things that are only really feasible with it.)

Re: Racket: Lisp for Learning

#123
post #112
post #90

Earlier quoted context omitted.

I would argue that some research is better than none, and that some intentionality in the design of a curriculum is better than an ad hoc curriculum. The design recipes give you an excellent foundation for transitioning to a statically-typed programming language with algebraic datatypes. If students are just going to learn Java or Python immediately afterwards, I think it's a waste.

> Some research is better than none. Yes, so we should look at the relatively more massive amount of research done for languages like Java, Python, etc. SIGCSE and ICER and ITiCSE are full of them. We've learned a lot - learning is hard :) > Intentionality in the design of a curriculum is better than an ad hoc curriculum. I strongly agree. I wish I could impart to you how involved I am in Instructional Design with my…

You wrote on ihateracket.com:

> Which language should be used in a CS1? There isn’t very much research to suggest conclusively what makes the biggest difference in a classroom, and it doesn’t seem like the language debate will ever end.

But now you're saying there's a massive amount of research for Java and Python — so I think we must be talking about two different things.

> I'm not clear that that's more than a theory.

It is less than a theory — it's my opinion based on my experience going through the edX How to Code series (closely based on HtDP and the design recipes). For example, sum types are taught as "Enumerations" [0], and the design recipe for enumerations looks suspiciously like "pattern matching in a language without pattern matching", as if to prime the student for a language that supports this more conveniently.

Yet, if the student learns Java immediately after HtDP, they will have no use for this knowledge (and probably forget it), as it seems you need some convoluted boilerplate like the visitor pattern to emulate a sum type [1].

> Even if it's true, is that necessarily the major goal in CS1? Perhaps, but you'll have to convince a few of my colleagues of that.

Given that the follow-up material to HtDP was called "How to Design Classes" and used Java [2], no I don't think this is a goal of (PbD's) CS1. I'm saying I think it should be to make the curriculum cohesive, and that HtDP is a wasted investment of the student's patience without related follow-up material. I really loved HtDP so I wish I could find such material.

[0]: https://htdp.org/2019-02-24/part_one.html#%28part._sec~3aenu...

[1]: https://stackoverflow.com/questions/48143268/java-tagged-uni...

[2]: https://programbydesign.org/materials (You can see it mentioned but it doesn't seem to exist anymore when you follow the links)

Re: Racket: Lisp for Learning

#124
post #51

Earlier quoted context omitted.

And before any says it, yes, I do love the idea of students EVENTUALLY learning a Lisp/Racket kind of language before they graduate. I would even be happy with an entire course dedicated to it. But I don't want that to be the CS1. I've just seen it go so wrong for so long now.

I had a beautiful beginning with a lisp like programming language when I was 8 or something. Every other languages have been disappointments until I found Clojure a few years ago. I hope you will get it some day.

And I hope you will learn some empathy some day and understand the perspective of others. We all have some growing to do, it seems.

Re: Racket: Lisp for Learning

#125
post #121
post #116

Earlier quoted context omitted.

> How stable has racket been compared to the alternatives? Why does the stability of Racket matter? Isn't the real question more about how easy it is to reuse, readopt, reshare, find, etc. materials? I'll point out that the CSEngageEdu site doesn't have a Racket section. If you want me to find 100 programming problems in Python, I can do so immediately (because I published more than that, and I know others who have p…

The stability cuts to your pragmatic argument. Specifically, I keep getting student hires on my team that think the Java or the Python they used for school will cut it in the office. In large, it won't. JavaScript, similarly, has more online resources, but similarly, most are not helpful for modern use. Depending when you made this argument, stack overflow was a great resource. But many answers for the languages you…

I would certainly accept a wide range of other languages. I picked Python because I think I and many of my colleagues can teach a good CS1 in Python. I'm open to a lot of other options.

But not Haskell. Please don't say Haskell :)

Re: Racket: Lisp for Learning

#126
post #102

Earlier quoted context omitted.

I used a default theme from Github, and then did my best to make it a little more mobile-friendly. However, I wanted to focus on the content and, you know, my actual job, instead of spending hours fixing CSS. Perhaps consider taking that energy and make a pull request with specific improvements to the layout?

Could you use a different theme? Even on my laptop the top bar thing that follows you obstructs like 10% of the page for me. Granted it's because I'm usually zoomed in for the sake of my eyes but I think it's worth fixing.

I went in and killed the relevant CSS - hopefully that makes it a little easier to read?

Re: Racket: Lisp for Learning

#127
post #107

Earlier quoted context omitted.

I see your point, but I don't know that I feel you've done a good enough job defending it. (I say this as very much not an expert, but as someone who is merely very interested in the intersection of CS and education.) Racket was primarily designed for teaching and has been somewhat successful in that regard. I don't know of an empirical study, but if you attend a RacketCon or go to a Racket Summer School you will mee…

First, let me say I appreciate your lengthy response and your relative neutrality on this. Sometimes, when encountering folks who disagree with my opinions on this, things get a little heated. Case in point - I am very aware of what the person you mentioned says, which is difficult because I have blocked him on social media after our interactions. I originally had a paragraph about how I believe the PL/Racket communi…

I can totally believe that someone in academia said something that sounded rude (and on a daily basis, for some people), and that's unfortunate. At the same time, registering and publicizing a "hate" domain name about someone's work could also come across as rude. Is there a scholarly CSE venue where you can share your experience reports, and make your arguments? It doesn't seem like HN has much foundation for evaluating or doing anything with the information.

Re: Racket: Lisp for Learning

#128
post #87

Earlier quoted context omitted.

"I can't think of a single feature of ClojureScript that's inherently better than JavaScript" Persistent data structures, multi arity functions, multi methods, transducers, data oriented design, spec, repl driven, better live reloading, meta data, protocols, core async go channels, atoms, Datoms There are breakthroughs in Clojure/Script that literally do not exist in any other language, let alone JS Datomic, Fulcro,…

Persistent data structures: Useful but you can get that in JS too, and if you can get your whole team to agree on it, you can avoid mutable data structures. I've been able to do that 100% for years now. Multi arity functions: That's actually a minus, not a plus. The vast majority of the usages of this are solved with options params with default values in a much clearer way. Multi methods: In 5 years of using Clojure…

You're rehashing a couple of the most tired arguments Lispers always hear:

1. Parentheses are inconvenient.

2. Everything you can do in Lisp you can do in $other_turing_complete_language.

What you're missing in (1) is that as much as you wish you were stating an objective truth of the universe, you're really just stating your own subjective impression. If parentheses were objectively, universally inconvenient, nobody would ever program in Lisp. And yet many do. So what's the explanation for that?

What you're missing in (2) is that although (2) is certainly true, it's irrelevant. If (2) were relevant, nobody would ever prefer any Turing-equivalent language over another. And yet objectively, people certainly do. So what's the explanation for that?

The other thing you're missing in (2) is Greenspun's tenth rule, but I'll let you look that up.

Re: Racket: Lisp for Learning

#129
post #127
post #107

Earlier quoted context omitted.

First, let me say I appreciate your lengthy response and your relative neutrality on this. Sometimes, when encountering folks who disagree with my opinions on this, things get a little heated. Case in point - I am very aware of what the person you mentioned says, which is difficult because I have blocked him on social media after our interactions. I originally had a paragraph about how I believe the PL/Racket communi…

I can totally believe that someone in academia said something that sounded rude (and on a daily basis, for some people), and that's unfortunate. At the same time, registering and publicizing a "hate" domain name about someone's work could also come across as rude. Is there a scholarly CSE venue where you can share your experience reports, and make your arguments? It doesn't seem like HN has much foundation for evalua…

There are many scholarly CSE venues. Ironically, this subgroup mostly avoids almost all of them except ICER, because they feel persecuted. Since I'm relatively new, I'm not clear if the persecution caused their rudeness or vice versa - although I have been told by several people that that's why most people avoid them. I'm actually a little amused thinking about them being offended by my "hate" domain - I'm clearly recalling an experience on CS Ed Twitter, watching that group tear down an author's work publicly because they disagreed with it. I would say they were a pretty offhandedly brutal, even when the author showed up. Since they clearly respond better to this kind of honesty, it seems like I shouldn't be saying things halfway.

Anyway, this kind of experience report would be totally unsuitable for ICER, which is the venue focused on true CS Ed research. This might have a life at SIGCSE, but why go and preach to the choir? And honestly, I don't think it really does merit the level of research publication. This is just a blog post level argument.

I did outline why this site exists. And I do think that this is worth sharing on here, if only because this site drives me nuts sometimes with all its arm chair CS Ed researchers. If I only persuaded a few folks to stop citing HtDP as god's own truth, and to approach that community more critically - I would say that is helpful. Hacker News folks need to understand that education is a heck of a lot more complicated than they probably think it is, and their experiences probably aren't generalized.

I also think that the Racket education community is dying out. For good or bad, I don't think I really have to start publishing research to try and speed it up. But I think that having these reasons and arguments recorded, and written publicly, is a good thing. I am trying to keep in mind, as I write, that some day someone may write some blog posts for "ihateblockpy.com" or "ihatecorgis.com" (my research projects). Perhaps I'll be eating my own words!

Re: Racket: Lisp for Learning

#130
post #53

Earlier quoted context omitted.

I evaluated Paredit while it was being developed. I thought it was a massive boon to working with Lisp. Then, one day, I turned it off. I'm not sure why. I think it's because I didn't want to get too attached to it. I reasoned that Paredit wouldn't always be in the places I was working with Lisp, so I had better remain flexible enough to not need it. And between the editor's paren matching and the way I format my Lis…

The modifier key positions are different on an Apple keyboard vs a PC keyboard, so my muscle memory is completely broken when using Windows since I got used to them on Mac.

You can remap keys (xmodmap for GNU/Linux, autohotkeys for Windows).
Post reply on HN