I think the biggest programming productivity boosts since 1984 haven't been about programming languages, but about tools. Specifically, distributed version control and dependency management tools. Being able to collaborate with developers anywhere in the world, and being able to pull in any library with a single declarative line in a configuration file, increases productivity more than any improvement to a programmin…
>Specifically, distributed version control and dependency management tools. Indeed, without these tools dependency hell wouldn't be possible! /s
What was the last breakthrough in computer programming? (2019)
101–110 of 226 posts
Re: What was the last breakthrough in computer programming? (2019)
#102There 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…
Re: What was the last breakthrough in computer programming? (2019)
#103I'd say being able to program GPUs as general purpose compute devices & general SIMD vectorization in high level language is pretty significant. it has opened up many applications like machine learning previously unavailable. IMO some C++20 features like coroutines rank pretty high in introducing new ways of programming.
I have an algorithm that I used to run on a SIMD machine. It's a single, simple algorithm that I want to run on lots of different inputs. How can I run this on a GPU? From what I read about GPUs it should be possible, but nothing I've read has made any sense about how to do it.
Can you point me in a suitable direction?
My contact details are in my profile if you'd like to email to ask for more information.
Thanks.
Re: What was the last breakthrough in computer programming? (2019)
#104I 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…
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 previous versions, a diff for each change, commit messages. CVS compare to tarballs for each release (or worse to a mess of files .bak, .bak2 e. t. c.) is a breakthrough. Subversion, Mercurial, git is IMHO just evolution of earlier VCS.
> Package managers - By making it easy to include other peoples code we lower the bar to doing so.
CPAN - 1993 FreeBSD pkg_add - 1993
> Open-source software as a commodity
Here I fully agree. Opensource started to get some traction 20ish years ago (probably thanks to more widely available Internet and support from corporations like IBM), but its use is still growing.
When I look back it seems to me that 1990s were very fruitful and the next 20 years progress in software was somewhat slower, but progress in hardware enabled previously impossible stuff without revolutionary changes in software.
Re: What was the last breakthrough in computer programming? (2019)
#105I 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…
YouTube. My son learns a lot of his programming from searching YouTube and watching videos. Doesn't seem like it would be high density, but I'm amazed that there are really good videos/tutorials on pretty obscure topics. And since all YouTube videos have dates, it's actually easier to find current tutorials.
Re: What was the last breakthrough in computer programming? (2019)
#106Earlier quoted context omitted.
Checkout Clojure spec for a very expressive way of defining data requirements. It allows you to use arbitrary functions to describe data requirements. That way you are not limited by static, compile-time only descriptions of data flowing through your program.
I used Clojure on a project while spec was still alpha/beta or something, so I never used it. It does sound interesting, but I'm skeptical. Even the way you described it- I'm still just writing a function to validate my data, aren't I? Is that truly any different than just calling `validateFoo()` at the top of my functions in any other language?
Re: What was the last breakthrough in computer programming? (2019)
#107Earlier 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...
Re: What was the last breakthrough in computer programming? (2019)
#108Earlier 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…
I know what you’re trying to get at, but that’s just a category error. It’s a misuse of the term valid in this context. For example my mail archive contains many emails from valid addresses for which there happens to be no currently active mail box end point. They’re still valid data though. The fact that people sometimes use th s term valid to mean something completely different is just an unfortunate linguistic accident, but its a mistake to think it’s meaningful.
Re: What was the last breakthrough in computer programming? (2019)
#109There 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…
Scala to the rescue:
https://github.com/fthomas/refined
And a new one:
https://github.com/Iltotore/iron/
The latter will be zero overhead once a compiler ticket is closed.
Both solutions will yield compile time checks where possible, and fall back to runtime checks when the data isn't statically known.
Re: What was the last breakthrough in computer programming? (2019)
#110There 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…
subtracting one from zero and getting max_uint can be its own brand of fucking horribly awful.
having the language itself throw in that circumstance can also be exactly what you don't want.