Live data from Hacker News

Racket: Lisp for Learning

lwn.net

131–140 of 154 posts

Re: Racket: Lisp for Learning

#131
post #61

Earlier quoted context omitted.

Naughty Dog, the company behind the Uncharted series and The Last of Us, uses Racket (or so I was told ~4-5 years ago)

The storytelling effectiveness of TLoU -- I was all misty-eyed at the end, and I realized I cared about the character I was protecting, not just playing a stealth shooter game -- is a credit to the entire holistic project. IIUC, they used an in-house narrative/scripting DSL that's written in Racket.

> they used an in-house narrative/scripting DSL that's written in Racket

Given Racket's language-design focus, that seems like an ideal use.

Re: Racket: Lisp for Learning

#132

Any good article recommendations that explain the reasoning to the switch to Chez Scheme as a platform for Racket?

Chez is AOT compiled down to the metal; it's not an interpreted VM or a JIT compiler. My initial reaction was "Oh good. This means Racket will run much faster!" But that's not really true. Some things are faster; some aren't. The real reason is that because Chez compiles to the metal, it makes maintainability easier because less C code is needed.

Re: Racket: Lisp for Learning

#133
post #125
post #121

Earlier quoted context omitted.

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 :)

As I said, I'm partial to lisp. I just suspect that no language is defensible with any real data.

Tons of preferences. But that will be dominated by the dislike most non self motivated learners will have. That is, most students are, I suppose, extrinsically motivated.

Now, tooling would be awesome. But for some reason, the tooling we expose students to is super expensive for personal use. Or requires a lot of investment in time. I'm thinking Mathematica and emacs.

Python is trying with notebooks. But has a lot of ground to catch up on. And seems to breed bad habits in the process.

Re: Racket: Lisp for Learning

#134
post #126

Earlier quoted context omitted.

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?

Thanks, I no longer have complaints.

Re: Racket: Lisp for Learning

#135
post #97

Any good article recommendations that explain the reasoning to the switch to Chez Scheme as a platform for Racket?

https://blog.racket-lang.org/2019/01/racket-on-chez-status.h... and the links at the top should provide the explanation. This paper: https://www.cs.utah.edu/plt/publications/icfp19-rddkmstz.pdf has more details. Basically, Chez is a now-open-source runtime that's very close to what Racket needs, while also being written mostly in Scheme instead of in C (as the original Racket runtime & compiler is). Building on Chez…

Perfect, thanks!

Re: Racket: Lisp for Learning

#137

Earlier quoted context omitted.

I consider stability, consistency, and simplicity to be very important features for writing production code. While it's true that you can do a lot of the same things you can do with ClojureScript in Js, the language and the ecosystem are vastly more quirky and volatile. I wrote regarding this in a bit more detail here [1]. As an example, my team has been using Reagent on the front-end for around 5 years now. We've ne…

JS tooling has come a long way, and I've had pretty much all of these benefits by using Create-React-App within the past year. I don't remember ever needing to make project-wide changes because of an upgrade. It's also possible to avoid JSX completely, thanks to a library that uses JavaScript's template strings feature: https://www.npmjs.com/package/htm

Js tooling might've come a long way, but it's still a huge and confusing mess. It's not even possible to prune libraries reliably when you're packaging the code. Meanwhile, ClojureScript compiler will automatically prune any unused code down to function level, and it provides predictable minifcation out of the box. You also don't have to deal with NPM which has a major vulnerability every few months.

Re: Racket: Lisp for Learning

#138
post #99

Earlier quoted context omitted.

Two quick points on the other side: * Industry is moving towards FP. Teaching Python or Java is teaching students a way of programming that will increasingly be out of date * In my day to day programming (Scala) I lean very heavily on the concepts in the design recipes. Understand them and you can create correct code very quickly. No data here. Just something to think about.

> Industry is moving towards FP. ... Citation required. My dad will be writing COBOL till the day he dies, and most of those lines of business logic in Java will bit rot before they get converted to Scala/Haskell/Something else. I thought you were going to make the more palatable argument that most modern languages refuse to stick to one paradigm. The fact that Java has lambdas now demonstrates the appeal of these ot…

You misunderstand my point.

OO was the dominant paradigm in the 1990s and 2000s, and legacy COBOL, C, etc. code still existed back then. Legacy code will continue to exist as the industry moves away from OO. New languages and frameworks are taking inspiration from FP: Typescript, React, Scala, Swift, and Rust are all examples. Even Java is moving in this direction.

In the same way the majority of OO programs were not written in Smalltalk but instead in C++ (C with OO bolted on) or Java, FP programs won't be written in Haskell, but in languages that bridge the old and the new.

The key idea of FP is static understanding of code. This drives everything else: "pure" functions, types, composition, etc. FP is not against effects and mutability. It's against uses of effects and mutability that make reasoning hard. Rust (affine types) shows you can have mutation will retaining reasoning about code.

Re: Racket: Lisp for Learning

#139
post #129
post #127

Earlier quoted context omitted.

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 re…

Given that you're involved with CSE, if you have ideas or results, why not investigate and publish them in a CSE venue, maybe a peer-reviewed conference paper, or whatever the scientific mechanism in your field is?

You say this is important to communicate, and it seems pretty central to your professional field, so I don't understand why you aren't using what I assumed were the mechanisms of that field.

As you said, HN overall probably doesn't understand your field, and, given that: do you think it would be good practice for HN to let its impression of a field be determined by a punchy domain name that bypasses the field's own review? (I assume your thoughts are much better than those of anti-vaxxers and climate change deniers who bypass the field.)

Separate from that, since you think someone has been rude, maybe approach them constructively about it? All of you are just people, who spend your days teaching students, and researching that.

Re: Racket: Lisp for Learning

#140

Earlier quoted context omitted.

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…

Novelty. That’s the explanation. People love novelty. Especially programmers who tend to get bored easily at their jobs.
Post reply on HN