Live data from Hacker News

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

quora.com

1–10 of 226 posts

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

#2
This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different.

I realize there’s a cottage industry of folks creating new languages all the time. But when you read the docs they all bucket into a few categories, and the differences are syntax, tooling and how system services are accessed.

All that being said, these three categories do matter. Programming using tools like autocompletion, syntax highlighting and the like does speed productivity.

But, like human language, at some point the “right” set of primitives are discovered. From that point on changes become more about culture and fads than concepts.

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

#3
Nice read. Personally, I am not as unhappy with the state of tooling. With LSP, many programming languages are getting better VSCode, Emacs, Vi, etc. support. XCode is actually nice to use, on a fast M1 Mac. I think wide adoption of deep learning is the biggest breakthrough in recent years.

EDIT: I have used Lisp heavily for 40 years, and I have done a few Smalltalk projects.

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

#4
post #2

This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different. I realize there’s a cottage industry of folks creating new languages all the time. But when you read the docs they all bucket into a few categories, and the differences are syntax, tooling and how system services are accessed. All that being said, these th…

Try learning J in a day. It...won't go well -- but in a good way. :-) As you say, for many languages the paradigm is some variation of C, and the concepts are largely interchangeable. Then you approach something like J, where (trivial example)

+/%#

returns the average of a list by composing three functions: + sums; % divides; # counts; with a modifier / that distributes + throughout the list; and you begin to realize you're not in Kansas anymore.

https://en.wikipedia.org/wiki/J_(programming_language)

I don't think the "right" set of primitives is as obvious as you say. Obviously branching and loops are foundational to many languages, but even those are optional given the right design, and they can be implemented in very different ways.

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

#5
post #2

This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different. I realize there’s a cottage industry of folks creating new languages all the time. But when you read the docs they all bucket into a few categories, and the differences are syntax, tooling and how system services are accessed. All that being said, these th…

But you don't know common compiler/interpreter pitfalls, tooling, frameworks... so in the end you still need a long time to get familiar with it for productive work.

Sure, you know the vocabulary, but it will still take time to learn the rest.

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

#6
post #4
post #2

This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different. I realize there’s a cottage industry of folks creating new languages all the time. But when you read the docs they all bucket into a few categories, and the differences are syntax, tooling and how system services are accessed. All that being said, these th…

Try learning J in a day. It...won't go well -- but in a good way. :-) As you say, for many languages the paradigm is some variation of C, and the concepts are largely interchangeable. Then you approach something like J, where (trivial example) +/%# returns the average of a list by composing three functions: + sums; % divides; # counts; with a modifier / that distributes + throughout the list; and you begin to realize…

ÅF - Fibonacci in 05AB1E that are less than the current number on the stack - Good tip for when you get THAT code interview and can pick the language. Just need to know the code for Å if you are not from Denmark.

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

#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 engineering is building a balsa bridge for a weight competition can also write and release an app for Android or iOS that will be seen by millions. Even if it's not a success, it's still just as real a program as MS Office.

That level of access guarantees amateur-level code, and the rigor Kay is suggesting would kill the software industry as we know it.

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

#8
post #4
post #2

This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different. I realize there’s a cottage industry of folks creating new languages all the time. But when you read the docs they all bucket into a few categories, and the differences are syntax, tooling and how system services are accessed. All that being said, these th…

Try learning J in a day. It...won't go well -- but in a good way. :-) As you say, for many languages the paradigm is some variation of C, and the concepts are largely interchangeable. Then you approach something like J, where (trivial example) +/%# returns the average of a list by composing three functions: + sums; % divides; # counts; with a modifier / that distributes + throughout the list; and you begin to realize…

That's just a syntax over map() and reduce(). There are no new / different primitives in J, just a new syntax that emphasizes the use of arrays.

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

#9
post #4
post #2

This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different. I realize there’s a cottage industry of folks creating new languages all the time. But when you read the docs they all bucket into a few categories, and the differences are syntax, tooling and how system services are accessed. All that being said, these th…

Try learning J in a day. It...won't go well -- but in a good way. :-) As you say, for many languages the paradigm is some variation of C, and the concepts are largely interchangeable. Then you approach something like J, where (trivial example) +/%# returns the average of a list by composing three functions: + sums; % divides; # counts; with a modifier / that distributes + throughout the list; and you begin to realize…

J is essentially APL. I think the point is that J is functionally equivalent with many other languages, only differing in syntax but not in paradigm.

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

#10
post #4
post #2

This is at least part of the reason that reasonably strong engineers can learn a new programming language in under a day. The paradigms just aren’t that different. I realize there’s a cottage industry of folks creating new languages all the time. But when you read the docs they all bucket into a few categories, and the differences are syntax, tooling and how system services are accessed. All that being said, these th…

Try learning J in a day. It...won't go well -- but in a good way. :-) As you say, for many languages the paradigm is some variation of C, and the concepts are largely interchangeable. Then you approach something like J, where (trivial example) +/%# returns the average of a list by composing three functions: + sums; % divides; # counts; with a modifier / that distributes + throughout the list; and you begin to realize…

But even this is an example of finding 'a' (not 'the') right set of primitives as APL is from 1966.
Post reply on HN