Live data from Hacker News

Why study programming languages (2022)

people.csail.mit.edu

91–100 of 118 posts

Re: Why study programming languages (2022)

#91
post #81

Earlier quoted context omitted.

No, that paper doesn't describe the garbage collector. I do think it is true that before it was published Slug Russell had implemented the GC, but I think it's correct that we don't have listings from that early. Edit: yes, yes it does describe the garbage collector.

The concept of automatic memory management dates back to the 1950s. However, John McCarthy, the creator of Lisp, introduced the first widely recognized garbage collection mechanism around 1959/1960.

If so, he didn't write about it in that paper, and I don't think he introduced it at all; I think Slug Russell did.

Correction: as Rochus pointed out, he certainly did write about it in that paper, giving a complete description.

Re: Why study programming languages (2022)

#92

There absolutely lies value in studying programming language, but maybe not when reinventing ideas of the past. > I encourage everyone to create the most absurd, implausible, and impractical languages. Chasing the measurable is often useful, expressing the expressible is insightful, but never forget the true goal of language design: to explore and create what isn’t. Sorry, but this sounds more like an artsclass to me…

> this sounds more like an artsclass to me.

Indeed, it is, and that's the point! Being interfaces to computers for humans, programming languages sit at the intersection of computer science and humanities. Lots of people like to treat programming languages like they're math class, but that's only half the picture. The other half is usability, ergonomics, learnability, and especially community. Not to mention the form of the language is all about aesthetics. How many times has someone on Hacker News called a language "beautiful" or "ugly" referring to the way it looks? When people praise Python they talk about how easy it is to read and how pleasant it is to look at compared to C++. Or look at what people say about Elm error messages versus C++ template errors. Actually a lot of what's wrong with C++ could have been averted if the designers had paid more attention in art class.

> But these days we would need greater insights into higher-level language semantics and inherent tradeoffs to guide language-design and language evolution.

Here's a talk that argues there's much more fertile languages ground for ideas outside of the "programming languages are math" area, which has been thoroughly strip-mined for decades:

https://medium.com/bits-and-behavior/my-splash-2016-keynote-...

This author takes the perspective that programming languages are much greater than the sum of the syntax + semantics + toolchain + libraries, and treating them as such is limiting their potential.

Re: Why study programming languages (2022)

#93
post #56

> Why do we design new programming languages? The main answer is that we have only a limited ability to modernize existing programming languages. For example, most languages are not null safe, because most languages are old and we can't make them null safe without breaking backward compatibility with most existing code. And we can't break backward compatibility for practical reasons. So Java will never be null safe,…

It's not just 30 years old. It's 30 years of people building libraries of useful code. If you "modernize" it so that much of that 30 years of work is thrown away, that's really expensive - maybe more expensive than continuing to build on a less-than-perfect foundation. But that turns into the trap of short-term thinking - eventually you reach the point where you would have been better off throwing it away and startin…

Python is one language that famously broke backwards compatibility with the 2.x/3.x split.

Re: Why study programming languages (2022)

#94
post #59
post #51

Earlier quoted context omitted.

Cyclone was indeed a very interesting language. It's always surprising what ultimately prevails.

I guess it is always a matter of being there at the right time, or having the luck to spot the right audience.

At the right time (or just before the right time). Spotting the right audience (or stumbling onto what a significant audience needs).

And, I think, being better for what that audience is trying to do than existing tools. (But maybe that was implied in your statement.) This also implies adequate tooling and libraries.

And publicity, to reach that audience (though viral is better than corporate).

Re: Why study programming languages (2022)

#95
post #79
post #72

Earlier quoted context omitted.

I didn't claim that usability features were "important to the successes of languages designed like Ada". But Ada at least explicitly considered human factors in their design (even if mostly based on expert judgment and established principles, not practical studies), which also seems very appropriate given the criticality of most applications written in Ada. But as my ergonomics professor at ETH Zurich, Helmut Krüger…

> I didn't claim that usability features were "important to the successes of languages designed like Ada". This kind of seems like it's focusing too much on my exact word choice and less the actual intent of my question behind it. The question I have is why following established principles should matter; I don't think it should be particularly surprising that someone might assume that making a language more usable fo…

> The question I have is why following established principles should matter

Apparently I still don't understand your question, sorry. For what I understand, following established principles is part of the engineering profession; it has proven to be the right thing to do over decades, and it is part of engineering education.

> I would have expected that the ergonomics of a language and measurement of the "level of suffering" would be with respect to the programmer, not the one experiencing the use of the software that's developed as a result.

Usually not the "level of suffering" is measured in human factors engineering, but the time needed and degree of fulfillment of typical tasks a typical representative of a test group is suppost to perform. You can do that with different designs and can then conclude which one meets the performance requirements best. Human factors typically enter a specification as performance requirements (what functions shall the system implement and how well). Given a programming language, you could measure how long a typical programmer requires to complete a specific task and how many errors the implementation has in the first version.

Re: Why study programming languages (2022)

#96
post #81
post #74

Earlier quoted context omitted.

I think, the first mark‑and‑sweep collector was published in McCarthy's 1960 Communications of the ACM paper "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I". It's resonable to assume, that they already had it when Steve Russell implemented the first Lisp evaluator, but we don't know exactly when it was added.

No, that paper doesn't describe the garbage collector. I do think it is true that before it was published Slug Russell had implemented the GC, but I think it's correct that we don't have listings from that early. Edit: yes, yes it does describe the garbage collector.

Isn't the "Free-Storage List" in section 4c, starting on page 26, a mark & sweep collector? They didn't use the term then, but I think it describes one. I'm not aware of any earlier publication.

Re: Why study programming languages (2022)

#97
post #27

Programming languages are obsolete in the LLM era. What current generation AI has revealed is that English is actually the ultimate representation of computer programs and systems, which is both sufficiently terse and precise to economically describe the operation of arbitrarily complex programs. There is no reason to study programming languages in 2025, other than as a historical curiosity - the same way one may stu…

I think it's the exact opposite -- LLMs have revealed the precise utility of programming languages. For decades the "English as programming language" has been the holy grail of language designers. From COBOL to SQL to AppleScript, it was the hope that one day we'll be able to program a computer just as easily as we can instruct a person.

Well LLMs finally offer that, and what they are proving is what programmers have known for decades -- natural language is a terrible way to specify a program to a computer. So what is happening in the LLM world is they are reinventing programming languages and software engineering. They're just calling it "prompt engineering" and "context engineering".

What this tell us is that natural languages are not only not sufficient for the task of programming, to make them sufficient you need to bring back all the properties you lost by ditching the programming language. Things like reliability, reproducibility, determinism, unambiguity are thrown away when you use an LLM, and context engineering / prompt engineering are ways of trying to get that back. They won't work well. What you really want is a programming language.

Re: Why study programming languages (2022)

#98
post #96
post #81

Earlier quoted context omitted.

No, that paper doesn't describe the garbage collector. I do think it is true that before it was published Slug Russell had implemented the GC, but I think it's correct that we don't have listings from that early. Edit: yes, yes it does describe the garbage collector.

Isn't the "Free-Storage List" in section 4c, starting on page 26, a mark & sweep collector? They didn't use the term then, but I think it describes one. I'm not aware of any earlier publication.

The paper only has 12 pages, but there is a section 4c with that title starting on page 192 of https://dl.acm.org/doi/pdf/10.1145/367177.367199, and you are correct that it describes a mark-and-sweep collector. I was mistaken, and I appreciate the correction.

Re: Why study programming languages (2022)

#99

I still like Olin Shiver's take on this: https://www.ccs.neu.edu/home/shivers/papers/why-teach-pl.pdf

I always recommend people to learn at least one of the following: scripting language, compiled language, bytecode compiled language (C# or Java are industry giants), and at least one front-end web language either TS or JS. If they're still hungry I explain Erlang / Elixir / Gleam and tell them to try that out.

Re: Why study programming languages (2022)

#100
post #98
post #96

Earlier quoted context omitted.

Isn't the "Free-Storage List" in section 4c, starting on page 26, a mark & sweep collector? They didn't use the term then, but I think it describes one. I'm not aware of any earlier publication.

The paper only has 12 pages, but there is a section 4c with that title starting on page 192 of https://dl.acm.org/doi/pdf/10.1145/367177.367199 , and you are correct that it describes a mark-and-sweep collector. I was mistaken, and I appreciate the correction.

Ok, I see. Just downloaded the first hit from Google, which has 34 pages and is nicely printed: https://www-formal.stanford.edu/jmc/recursive.pdf.
Post reply on HN