Live data from Hacker News

What was the last breakthrough in computer programming? (2019)

quora.com

81–90 of 226 posts

Re: What was the last breakthrough in computer programming? (2019)

#81

Isn't Rust's compile time memory and concurrency safety a decent breakthrough?

I'm not sure that was a breakthrough made by Rust, but I think people agree that Rust was the first language that provided those things that people actually have wanted to use outside academia and narrow industry groups.

Re: What was the last breakthrough in computer programming? (2019)

#82
post #25

There isn't so much in languages features themselves, but in their implementations. GC can be largely pauseless for many practical purposes and a GC language can be within 2x-3x the performance of C-like languages. Also the amount/cost of memory has improved so that we can use immutable datastructures and functional style in many contexts, which definitely feels like a 'level-up'. Concurrency has been getting easier…

It's nice to read a positive comment like yours occasionally, because the vast majority of the time, I'm just disappointed in how bad our programming tools (including languages) are. It's become a meme in my office that I'm the guy constantly bitching about how stupid our languages are. This week I was back on my soap box about the fact that almost zero mainstream (statically typed) programming languages can even let…

> almost zero mainstream (statically typed) programming languages can even let you write down that you want a non-empty string.

Today D will fulfill your dreams!

    struct MyString {
        private string s = "error";
        alias s this;

        this(string s) {
            assert(s.length);
            this.s = s;
        }
    }


    void main() {
        MyString ms = "hello";
        test(ms);
        MyString mserror = ""; // runtime assert fail
    }

    void test(string s) { }

Re: What was the last breakthrough in computer programming? (2019)

#83

Since I left university (eighties) I have only been positively impressed by two languages. One was the Wolfram language. I haven't used it; I'm just going on the demo here, but the idea of having not just a powerful language, but also a massive database with useful information to draw from, seems to elevate it above the usual sad collection of new ways to spell variable declarations and loops. The other is Inform. I…

It sounds like you and Alan Kay are both expecting novel problems to be solved by new programming languages. That is an extremely inefficient way to do it: you need to come up with new compilers, documentation, standard libraries, communities, etc. Instead, programming languages have become general enough that most new problems are being solved within existing languages, instead of by inventing new ones.

I have no idea what a "hyper-advanced fifth-generation programming language" is even supposed to look like.

> I'm occasionally wondering if the whole field might not improve mightily if we stopped focusing so much on languages, and instead focused on providing powerful, easy to use, elegant, well-documented APIs for common (and less common) problems.

But a programming language is nothing but a well-documented API! How would your suggested solution even differ from a programming language?

Re: What was the last breakthrough in computer programming? (2019)

#84
Early programming language advancements were about abstracting away the basic repetitive stuff (function call stack manipulation) and the hardware details (register selection, memory addresses). They did it in a way that was minimally "leaky"; debugging a C program you may be aware of the call stack and registers, but most of the time you'll be just fine working at the abstraction level of function parameters and local variables.

Since then we've added tons more boilerplate and hardware to the standard application deployment, it runs over multiple servers and clients using various network protocols, interacts with databases and file systems, etc. But modern solutions to these are mostly code generation and other leaky layers, it's likely you can't debug a typical problem without reading or stepping through generated code or libraries.

What I'd like to see in a new programming language is some abstraction of an application that has persistent data and is distributed, with the details being more or less compiler flags. And comes with debugging tools that allow the programmer to stay at that level of abstraction. But most new language announcements come down to some new form of syntactic sugar or data typing.

Re: What was the last breakthrough in computer programming? (2019)

#85
post #67
post #25

Earlier quoted context omitted.

It's nice to read a positive comment like yours occasionally, because the vast majority of the time, I'm just disappointed in how bad our programming tools (including languages) are. It's become a meme in my office that I'm the guy constantly bitching about how stupid our languages are. This week I was back on my soap box about the fact that almost zero mainstream (statically typed) programming languages can even let…

I'm not so sure that I sympathize with your example. Why not a type for even numbers? Odd, prime, not-prime, etc? You really are asking for a type that is "valid data." Commendable, but not a static property of data. As a fun example, what is a valid email address? Once established as valid, how long will it stay that way? If invalid, how long until it can become valid? Do I think better typing can be a boon? Absolut…

Validating an email is different from validating a primitive.

You can validate a primitive like an int based on it's own state alone.

Re: What was the last breakthrough in computer programming? (2019)

#86
post #7

I think Kay's complaint about engineering rigor ignores the explosive growth of programming. Sure, bridge-builders have rigor; there's also probably about the same number of them today as there were 50 years ago. The number of programmers has grown by at least two, maybe three orders of magnitude over the last half century. And more importantly, almost anyone can do it. A kid whose closest approach to structural engi…

Note that Kay actually complained about lack of “real engineering vigor” which maybe was a typo or maybe not.

Re: What was the last breakthrough in computer programming? (2019)

#87
post #67
post #25

Earlier quoted context omitted.

It's nice to read a positive comment like yours occasionally, because the vast majority of the time, I'm just disappointed in how bad our programming tools (including languages) are. It's become a meme in my office that I'm the guy constantly bitching about how stupid our languages are. This week I was back on my soap box about the fact that almost zero mainstream (statically typed) programming languages can even let…

I'm not so sure that I sympathize with your example. Why not a type for even numbers? Odd, prime, not-prime, etc? You really are asking for a type that is "valid data." Commendable, but not a static property of data. As a fun example, what is a valid email address? Once established as valid, how long will it stay that way? If invalid, how long until it can become valid? Do I think better typing can be a boon? Absolut…

> Why not a type for even numbers? Odd, prime, not-prime, etc?

Why not indeed? See my other comment https://news.ycombinator.com/item?id=28214776 about how to create such types.

Re: What was the last breakthrough in computer programming? (2019)

#88
post #42

I feel like Kay has taken a rather too narrow view of what counts as programming. IMO here are the breakthroughs in the last 20 (ish) years: 1. Stack Overflow - search for your problem, copy and paste the answer. 2. git - Revision control that is low enough overhead that you need to have a reason not to use it. 3. Open-source software as a commodity - Unless you've got very specific requirements there's probably a sy…

Code reuse was the holy grail of the 90's. People expected classes to be the unit of code reuse, then enterprise services, then after a dozen years of disillusionment we finally got the recipe right.

Re: What was the last breakthrough in computer programming? (2019)

#89
post #25

There isn't so much in languages features themselves, but in their implementations. GC can be largely pauseless for many practical purposes and a GC language can be within 2x-3x the performance of C-like languages. Also the amount/cost of memory has improved so that we can use immutable datastructures and functional style in many contexts, which definitely feels like a 'level-up'. Concurrency has been getting easier…

It's nice to read a positive comment like yours occasionally, because the vast majority of the time, I'm just disappointed in how bad our programming tools (including languages) are. It's become a meme in my office that I'm the guy constantly bitching about how stupid our languages are. This week I was back on my soap box about the fact that almost zero mainstream (statically typed) programming languages can even let…

> the vast majority of the time, I'm just disappointed in how bad our programming tools (including languages) are

If you are disappointed in programming tools, you didn't see hardware design tools yet.

Re: What was the last breakthrough in computer programming? (2019)

#90
post #25

Earlier quoted context omitted.

It's nice to read a positive comment like yours occasionally, because the vast majority of the time, I'm just disappointed in how bad our programming tools (including languages) are. It's become a meme in my office that I'm the guy constantly bitching about how stupid our languages are. This week I was back on my soap box about the fact that almost zero mainstream (statically typed) programming languages can even let…

> almost zero mainstream (statically typed) programming languages can even let you write down that you want a non-empty string. Today D will fulfill your dreams! struct MyString { private string s = "error"; alias s this; this(string s) { assert(s.length); this.s = s; } } void main() { MyString ms = "hello"; test(ms); MyString mserror = ""; // runtime assert fail } void test(string s) { }

Would it be possible to have a static assert? In that case I would expect it to fail at compile time, not run time.
Post reply on HN