Live data from Hacker News

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

quora.com

181–190 of 226 posts

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

#181
post #94
post #80

Earlier quoted context omitted.

Dependent typing can do that sort of thing. In fact, here's a stackoverflow answer that uses even numbers as an example of a dependent type: https://stackoverflow.com/questions/9338709/what-is-dependen...

Right. And I look forward to advances in them. I can count how many times this would have actually helped my program, though...

Edit: It seems I confused dependant and algebraic types.

Wouldn't you love the compiler giving an error when you write something that could result in illegal state? (Business rule violations for example) This is where such types shine. https://fsharpforfunandprofit.com/posts/designing-with-types...

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

#182

Earlier quoted context omitted.

> Stack Overflow Its blessing and a curse. I think software would be better if coders read mans and other documentation more often (and standards like RFC where it is applicable). > git - Revision control that is low enough overhead that you need to have a reason not to use it. RCS - 1982 CVS - 1990 They are limited compare to git, but they perform the main function - track changes in text files allowing to see previ…

The point was that these were either dismissed or weren't considered by Kay when describing breakthroughs in computer programming. They aren't breakthroughs in computer programming languages, but IMO are breakthroughs in computer programming. > RCS - 1982 CVS - 1990 I don't accept CVS as a breakthrough in the same way as git has been. Back in 2000 - 10 years after CVS - using source control wasn't a given. We had art…

> We had articles like "The Joel Test"[1] encouraging teams to use source control.

IMHO source control used more widely nowadays not thanks to git per se, but thanks to availability of free VCS hosting platforms like github.com

Subversion IMHO is more beginner friendly than git, but we AFAIR didn't have good subversion platforms (with cheap of free private repos). Sourceforge added SVN in 2006 (which is late), but sourceforge GUI is an abomination and there are reasons not to trust it: https://en.wikipedia.org/wiki/SourceForge#Controversies

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

#183
post #136

Earlier quoted context omitted.

You propably would want to reuse referenced definitions like domain and IP which are not email specific. But yes all of our JS could be much shorter if we used APL but most of us like readability :P I kind of not get why TLD should be validated. Does it matter anymore than if sub domain is not registered of if IP is not reachable. I think valid as potentially deliverable and actually deliverable should be distincted…

The TLD part matters as some part of the email format is defined through the format of a valid host name. "something.com" is a valid host name, but "something.something" isn't currently a valid host name. So an email address "something@something.something" isn't a valid email address (currently). But at the end of the day this is all moot, imho. The "only" sane test to check the validity of an email address when some…

The point I was making is that whether or not you can successfully deliver email is not a sensible test of the validity of an email address, looking at the address purely as data. As I pointed out, my email archive contains many email addresses that are no longer ‘valid’ by your definition, but they are still valid as data.

By your definition email address validity changes literally on a moment to moment basis. Addresses are becoming invalid constantly and new ones are becoming valid constantly. It’s not a useful definition of validity, and not even something you can test meaningfully.

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

#184
post #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 id…

That's not quite it. Let me explain... The first computer language I used was BASIC. It was excellent for what it was, but clearly it had a limit on how much you could do with it, on account of it missing amenities like named functions, variable scopes, etc. A 'function' was simply a line further down the program that you branched to using GOSUB. And there was only one scope, which was fine since the space available for actually writing programs was a microscopic 23KB anyway. It had for-loops, but GOTO was still very much present as a tool to control program flow.

Moving on from there, I learned Pascal, which was clearly a major step up in terms of what you could achieve. Using the primitives available in Pascal (structured programming, named functions, scopes, etc.), it is possible to write larger programs than you can in BASIC: the higher level of abstraction makes it easier to reason about larger programs.

From there C++ was another step up: the ability to define objects and encapsulate a great deal of implementation detail is another weapon in your toolbox to combat chaos, thus allowing you to write ever more complex programs without losing control over what they are doing.

And then... there was nothing. There appears to be no step beyond object-orientation that lets you create even larger programs with even less effort. There may be languages that are syntactically easier than C++ (although after using it for a quarter century it no longer bothers me), but they just hide minor implementation details, at the cost of lower performance. That's not greater abstraction, it's just greater convenience.

What we were all hoping for was that next step: languages that provided an even higher level of abstraction, allowing you to create even larger programs without losing the ability to reasoned about them. This was what 5GL promised, but which we didn't get because nobody could figure out what they would look like. Apparently we have reached a maximum level of abstraction that we can express with source.

So the progression of computer languages looks somewhat like this: 1GL (plain assembly), 2GL (unstructured languages like BASIC), 3GL (structured languages like Pascal), 4GL (object-oriented languages), 5GL (not, as of yet, invented). Each level represents a clear step up in terms of abstraction, and after four steps we seem to have run out of steam, and are now mostly busy reinventing things we already had with slightly different syntax. To me, at least, that's a disappointment.

My disappointment with available APIs is perhaps simply because I program a lot in C++, which inevitably means having to deal with an anemic standard library (there's not even a standardized socket interface in there), and a wild array of C-libraries. Some of these are very good, with an elegant interface design and excellent documentation, but many are just painfully bad, with virtually no documentation, and apparently every effort made to confuse the hell of out their potential users. Really, some of this could be so, so much better...

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

#186
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…

> Stack Overflow Its blessing and a curse. I think software would be better if coders read mans and other documentation more often (and standards like RFC where it is applicable). > git - Revision control that is low enough overhead that you need to have a reason not to use it. RCS - 1982 CVS - 1990 They are limited compare to git, but they perform the main function - track changes in text files allowing to see previ…

> I think software would be better if coders read mans and other documentation more often (and standards like RFC where it is applicable).

MAYBE the quality on average would increase, but less software would definitely be created.

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

#187
I think that programming is the most confused discipline there is. I've mentioned this in previous posts. In any other field there is usually an established body of knowledge, either in science of professions like accountancy.

In programming we're still arguing about whether the debits should go on the left and credits on the right, or vice versa. By that I mean, facetiously, we're still arguing about what programming language to use.

Most new sciences - e.g. electronics - gather a mature body of knowledge relatively quickly. We know exactly how transistors work and how to use them, for example. Nobody argues about how to calculate the current flowing through a wire.

This, to some extent, happened in programming, especially early, but the matter still seems far from settled.

Some poster on here once noted that there are no new paradigms in programming. Their argument is that not functional, OO, or other invention, as good as they are, constitute a paradigm shift. A paradigm shift is so fundamental that it uproots our whole conceptions about how the universe works; like the shift away from using epicycles to describe the motion of planets to using a theory of gravitation.

I've been tinkering around with microcontrollers lately, and it has given me a perspective that I suspect many don't have. I like C++, and I think it's suitable for high-level programming, due to things like deterministic garbage collection and niceties like strings and vectors.

But I've come to the conclusion that C++ is marginal, at best, on microcontrollers. Things tend to be far more static, so these niceties do not bulk large. But C++ also needs extra fiddle if you start from scratch. Things like exceptions need effort to implement.

C is low-level. You get to build things block by block. If your microcontroller supports some nifty hardware acceleration feature, then you can use that.

And that's the thing. A high-level language is an abstraction. It can't decide what should happen at a very low level. So you have a convenience, but you also take a hit.

So perhaps looking for a better language is a chimera, because how you do something is dependent on what it is you're trying to do. It also means that C is never likely to go away as a language, and that C++ was a clever idea in that it built on C.

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

#188

I don't think languages will really "progress" much, in the way that art doesn't progress. That's not to say it wont evolve to suite it's environment.

Large parts of computer science are about languages. There is a lot of progress. (Research needs to be novel usually). Only that that progress arrives at mainstream usually 20+ years later, in very small batches. So it's not very visible when looking only on the practically relevant things.

Very much this. The idea for the borrow checker is from the 80s IIRC. Slowly approaching mainstream with Rust.

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

#189

Earlier quoted context omitted.

I would question that primes are not mathematical entities. Same for other sets like "not-primes", or the odd numbers. Sets can be nicely approximated with types. (Some people say even that types correspond directly to sets).

OT: It's funny how primes are given this property of 'primeness' and not-primes are those that don't have the property, when it's actually the opposite. The not-primes have the property of being composite (a product) and the primes are the negative space of numbers excluding composite numbers.

I was more pointing in the direction of "sets" in general.

Sets as such are mathematical entities. (Isn't there even a category of sets where sets are objects)?

But apparently not everybody agree as this got down votes; or someone don't see the parallels between sets and types? Strange.

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

#190

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.

30-40 years after being invented.
Post reply on HN