Live data from Hacker News

We’re approaching the limits of computer power – we need new programmers

theguardian.com

201–210 of 265 posts

Re: We’re approaching the limits of computer power – we need new programmers

#201

Earlier quoted context omitted.

do you ever compile code? at work I have a machine with an i7-7700 (4C/8T), 32GB of RAM, and an SSD. it still takes about 45 minutes to do a full build of the project I work on, which can easily be triggered by modifying any of the important header files. if I had to do my job on your laptop from 2009, I'd never get anything done.

That is the choice of software tool. You are literally grinding through gigabytes of data. If your tool didn't require so much data processing it would be faster. This may or not be possible to improve by you. Often there are workarounds. Case in point: a matrix library I used to use needed to a full row/column pass each time. We put a layer in between it and our code. Reduced lookups required by 30%. We were process…

I understand your point, I think. c++ has an inefficient build system, and over time projects can end up with very suboptimal build systems. it's definitely worth spending time to pick the low-hanging fruit like in your example, or if possible, to choose a language that builds faster.

still, even twenty minutes is a long time to wait and see if your latest change actually works. in the foreseeable future, there will be complex projects that take a long time to build. you will eventually have to touch things that everything else depends on and recompile most of the code. people that work on these projects can always benefit from faster desktop-class hardware.

Re: We’re approaching the limits of computer power – we need new programmers

#202

Earlier quoted context omitted.

There are plenty of people with real skills in C working in embedded. It might even be easier to find C than C++ developers.

I challenge you to find a C “boot camp.” In fact doesn’t this point to a gap in the marketplace? Where are my “IOT ALL THE THINGS / 5G / Edge” bootcamps? Where are the “leetcode” challenges that talk about proper sampling rates for an 8-bit A/D converter, or implementing a closed loop PID in a 16-bit architecture? I suspect that that’s what the Grandparent comment is commenting on — there’s so much talking about the…

> I challenge you to find a C “boot camp.”

C isn't a language that lends itself to bootcamp-stye learning.

With Javascript, you can get something on-screen in a few minutes, and even if you make mistakes, you will normally see something. It's a more forgiving environment.

With C, a small error prevents compilation at all, and it's going to be a relatively long time before you're ready to progress past the "printing text to the console" stage.

C is flatly harder to learn, and unless you're the kind of person who likes mental challenge, it's less rewarding than Javascript. It isn't the kind of thing you tackle because you need hirable job skills by the end of the month.

There are still some excellent C tutorials out there (for example, I think Handmade Hero's[0] intro to C is good, and Handmade Hero itself gets you to the "shiny colors on the screen" stage very quickly), but HH has a different mentality than a bootcamp. HH is about learning, exploring, breaking things, and figuring them out on the fly. A bootcamp is about gathering the minimum knowledge necessary to be productive as quickly as possible.

[0]: https://www.youtube.com/watch?v=F3ntGDm6hOs

Re: We’re approaching the limits of computer power – we need new programmers

#203

Earlier quoted context omitted.

Electron anecdote : I joked with a coworker that they had left their "out of office" status icon on slack in order to work in peace. Turns out that it was already removed but slack was still displaying it. ⌘ + R (refresh page shortcut) solved it.. Electron might help devs getting something out quickly but all these layers have a cost

Client and server side state sync is a hard problem regardless of whether your app is native. A native app wouldn't automatically handle this.

Some IRC clients would change the nick of the user if the user toggles that they are AFK.

Re: We’re approaching the limits of computer power – we need new programmers

#204

I just don't buy this. I cut my teeth as a HPC programmer working with C and writing no-lock algorithms. There will always be a need for that, but realistically the vast majority of software being developed is simply not performance-critical. It's designed to work at human speed. Advances in language, compiler, and runtime implementations will continue to keep up with any growth in the need for performant application…

> It's designed to work at human speed. It would be great if most applications worked at human speed. Instead we have web applications taking 5 seconds to load what is basically 3 records from a small database.

Depends what you mean by human speed. What's faster, a lower tech "human" operation like looking up a word in a physical dictionary (assuming one's handy), or looking it up on dictionary.com, assuming dictionary.com takes 5s to load?

Re: We’re approaching the limits of computer power – we need new programmers

#205
post #122

Functional programming is something to watch and learn. It can help take advantage of multi-core single machines and distributed computing alike because it is thread safe due to using immutable variables and the mathematics behind pure functions. Compared to OOP, no locking, concurrency, or race conditions to worry about if used correctly.

Functional program helps immensely, but I don't think you are describing it quite right. You cannot to distributed systems without concurrency. Even if you don't have low level synchronization failures, you still need to watch out for determinism. Fortunately we have the math for that (usually order theory). I make this point as someone whose job is Haskell. Too many people expect awesome magic sauce and basically wr…

Meant that it enables concurrency and parallelism without having to worry so much about the mechanics of it, which helps take advantage of multiple cores as described in the article. Immutable data structures and pure functions avoid data corruption when two or more threads are working on the same data. OOP requires a lot of code to get the same result, true?

I'm new to FP myself and it seems like if done wisely it simplifies multi thread, parallel processing quite a bit.

Re: We’re approaching the limits of computer power – we need new programmers

#206
post #12

This is a topic that really interests me, but I couldn't read the article -- either a paywall, ad-wall, or some other reader-hostile blocker incongruent with the foundation of the Internet prevents usability. Ah well. I'll join the conversation regardless. For all the programmers out there -- _how do we do this?_. I came into programming through Matlab and Python in Economics and Data Science. I don't have formal tra…

The path forward is to be economical with hardware resources. I always try to imagine a physical character performing a task that i'm trying to code. How far does imaginary character needs to travel, how many trips do they need to make. Is everything they do is absolutely necessary. If they delegate work, is their sub-contractor efficient?

There isn't a single place to learn how to be efficient, it is better to start being extremely curious of how things actually work. Scary number of people I've met do not even attempt to learn how a library functions they use actually work.

Re: We’re approaching the limits of computer power – we need new programmers

#207

I just don't buy this. I cut my teeth as a HPC programmer working with C and writing no-lock algorithms. There will always be a need for that, but realistically the vast majority of software being developed is simply not performance-critical. It's designed to work at human speed. Advances in language, compiler, and runtime implementations will continue to keep up with any growth in the need for performant application…

the vast majority of software being developed is simply not performance-critical. It's designed to work at human speed

But what does that even mean? A 3Ghz quad-core can do 12 billion things per second yet I still regularly experience lags keeping up with typing or mouse movements, scrolling webpages, redrawing windows... the actual interactive experience has gotten much worse since the 90s.

Re: We’re approaching the limits of computer power – we need new programmers

#208

Earlier quoted context omitted.

> It's designed to work at human speed. It would be great if most applications worked at human speed. Instead we have web applications taking 5 seconds to load what is basically 3 records from a small database.

...or "instant"(!) messaging applications taking gigabytes of memory and a full CPU core, and yet still can barely keep up with how fast a human can type. I've often complained out loud with coworkers, while waiting for some horrible webapp to do its thing: "This computer can execute over a billion instructions every second. How many instructions does it take to render some formatted text!?!?" Related: https://news.y…

For the likes of it, 15e9.

While throughput is reasonably easy to optimize for, for latency you will havSoftware latency is a hard to optimize target. Throughput is much easiere to fight against each abstraction layer on your code. And that includes layers bolted on your OS and hardware.

Re: We’re approaching the limits of computer power – we need new programmers

#209

One of the best 2h practical course that I had was just write the fastest square matrix multiplication. You could use any language, any algorithm, just no libraries. The target was a 32 core CPU server (this was ~10 years ago). At 5000x5000 all the Java and Python attempts were running out of memory. In C, We tried some openmp, some optimized algorithm, but in the end the best trick was to flip one of the matrix so t…

Leaving aside the optimisations, I assume you are doing N^3 multiplication, whereas Strassen algorithm with complexity N^2.81 or even Coppersmith–Winograd algorithm with complexity N^2.37 with larger constant is better with 5000x5000 square matrix.

Re: We’re approaching the limits of computer power – we need new programmers

#210

Earlier quoted context omitted.

No, amdahl's law is (roughly speaking) a limit to how parallel an algorithm can be. Applications (in the sense of web apps) generally have the potential to scale via Gustafson's law, but we are (IMO) largely held back by framework and old ways of programming. https://en.wikipedia.org/wiki/Gustafson's_law

So long as an application needs to share state between worker processes, (database, redis cluster, etc) then Amdahl’s law still applies. There’s very few modern applications that can truly scale linearly.

Share consistent state. Eventually consistent models (most web apps) are often generally okay.
Post reply on HN