In the end, it's still 40 hours a week and the pay is still good :)
Someone missed out on the early PC days ;-) An example of what I'm thinking: Standardized-ish PC hardware (CGA, EGA, VGA, et al) might be abstracted by the programming language's libraries, but devs often reached below the abstraction, manually twiddling registers in the hardware. There weren't really standardized "drivers" for a lot of the available hardware.
OpenGL was opened in 1992, but it was only toward the late 90s that any (consumer-level) GPUs actually implemented it.
My apologies if you're mostly talking about non-consumer hardware.
I ignored PCs altogether. They were useless toys back then.
We had SGIs, so who cared about PCs?
> devs often reached below the abstraction, manually twiddling registers in the hardware
And we're still doing it, nothing changed. Want performance and control - go low level. Want uniform APIs - use what your vendors are trying to feed you with.
> you're mostly talking about non-consumer hardware
An SGI station is still a kind of a "consumer" hardware.
Who's "we"? If you mean that they existed, then OK, I can't argue that. I've never known anyone that had one, but hundreds who had PC-level hardware.
>And we're still doing it, nothing changed. Want performance and control - go low level.
Low-level has changed significantly in meaning. Now maybe someone would try to go through the driver instead of the higher-level API, but no one's going to do direct register writes. Modern hardware isn't usable at that level.
> An SGI station is still a kind of a "consumer" hardware.
Not a mainstream one by most measures, which is what I was trying to get at.
We as an industry in general.
> Low-level has changed significantly in meaning
Not that much, actually, just shifted to the other domains.
> but no one's going to do direct register writes.
You'd be surprised. People even do bit-banging now (could you imagine bit-banging a VGA port directly in the past?).
> Modern hardware isn't usable at that level.
Is something like VC4 GPU modern enough? People do work with it on a very low level, thanks to the open specs. See this for example: https://github.com/mn416/QPULib
Actually, all the modern GPUs are getting simpler and more unifirm, so it's getting easier to hack them on a low level.
And JVM is not any better.
The mainframe days assumed that software was installed by the privileged admin and that users were the threat. It's now the other way round: most computers have only one user, but need to run all sorts of software that needs to be kept isolated from the system and each other.
Effective security isolation is a necessary layer. Browsers are one option to provide that, but there are others. They also provide ways to fetch, run, and interface with cross-platform, highly-efficient code from all over the world. That's both a blessing and a curse.
When I think about the volume of other people's software that we run while doing things online, I wonder how much of it is actually directly related to whatever I'm trying to do, and how much is incidental, unnecessary overhead.
Sort of interesting to think about this now, in the context of web apps and the recent Android instant apps.
Have not seen more easily searchable documentation than the DEC HELP system.
> Many programmers have never bought or own a book related to programming
And it's very sad.
> - they learned from all online sources.
Did they really learn anything? Without the books? Or they are simply trained to repeat few simple tricks over and over again?
> But it's so much more convenient.
I said needless layers. They're annoyance, not convenience.
> In the old days you had to learn all about your graphics card
We had OpenGL in the old days too. Pretty much straight from the beginning of the GPUs.
> your printer,
We had hardware PostScript back then. No drivers required.
> Now everything is abstracted and easy to use
There are piles of layers well above the device drivers now. With 90% of them being totally unnecessary.