As a former developer, I find the countering-safety-logic a drain

Yep, my greatest frustration was not my own code or bugs, but interfacing with someone else's bug-ridden code. And more often than not it wasn't a simple, "Hey Joe, this ain't working according to the specs, mind fixing it for me today?" Nope, that rarely was an option, sad to say. Instead I had to resort to "fixing" the broken libraries using my own code that called those libraries, which ended up making my code way uglier than I ever wanted (though it did result in some comical comments). Worse, if Joe did one day get around to fixing his code, then my code needs to be updated to remove my own "fixes". Of course Joe didn't tell me he fixed his code, so I learn about it when my code breaks because it was written to anticipate his code being broken..

I much prefer writing smaller "I'm in control of everything except the OS" software, which is one of the reasons I got out of the business and only program as a hobby these days.

Are you called Joe then?
 
I much prefer writing smaller "I'm in control of everything except the OS" software, which is one of the reasons I got out of the business and only program as a hobby these days.

I designed and wrote computer storage firmware (OS, application software, and hardware drivers together) for a few decades. In C and assembly. It took quite a few years for our little corner of the world to get contaminated by the college kids who could only write code in C++ or interpretive languages, and couldn't design their way out of a paper bag.

Back then, a small group of 4-6 people could design a deterministic real-time system that was modular, extensible, and consisted of a few hundred thousand to a few million lines of code. Today, it seems to take 30-40 people to do the same thing except that the crap they throw together (Agile anyone?) barely works, if at all, and is fragile in the extreme. You couldn't pay me enough to work with these so-called 'designers' today.
 
I designed and wrote computer storage firmware (OS, application software, and hardware drivers together) for a few decades. In C and assembly. It took quite a few years for our little corner of the world to get contaminated by the college kids who could only write code in C++ or interpretive languages, and couldn't design their way out of a paper bag.

Back then, a small group of 4-6 people could design a deterministic real-time system that was modular, extensible, and consisted of a few hundred thousand to a few million lines of code. Today, it seems to take 30-40 people to do the same thing except that the crap they throw together (Agile anyone?) barely works, if at all, and is fragile in the extreme. You couldn't pay me enough to work with these so-called 'designers' today.
Ok boomer
 
I designed and wrote computer storage firmware (OS, application software, and hardware drivers together) for a few decades. In C and assembly. It took quite a few years for our little corner of the world to get contaminated by the college kids who could only write code in C++ or interpretive languages, and couldn't design their way out of a paper bag.
FWIW, Python is my favorite programming language :p

But I also do a lot in C and assembler for my low-level programming (like microcontrollers). I prototype in C, look at the assembler the compiler generates, and if it's a bit messy for my liking, I'll go in and rewrite it in my own "clean" assembly if I have time and am in the mood to be fussy.

I do believe that being able to think "low level, to the metal" makes for a better high-level programmer. When I write C, my brain is thinking about how it will convert to assembler, for example. When I write Python, I'm aware of what tends to cause bottlenecks vs what is efficient. That said, I usually prefer readability over gaining a few CPU cycles, so I don't unroll loops or perform other "messy" tricks unless I'm desperate to gain a cycle or two. The best of both worlds is simple, readable code. This is one reason I like object-oriented programming, but I've seen people get too "clever" with it and force everything to be object-oriented when a simple function can do, which to me defeats the purpose (and performance).

I also think many people are too dependent on libraries and can't do the work themselves. On one project I was using a typical regex and it just felt slow. So I went ahead and wrote my own parsing algorithm specific for the job I needed to accomplish, and my algorithm was literally HUNDREDS of times faster! Don't get me wrong, I'm not saying I'm smarter than the regex guys, but rather that often it's better to use a very specific wrench for a specific bolt rather than try to use a Swiss army knife to do everything. I don't think many modern programmers think this way - they'll just use (in my example) regex for everything, because that's what they've been taught, and that's why performance suffers in modern software despite the fact that we are programming computers thousands of times faster than what I cut my teeth on.
 
FWIW, Python is my favorite programming language :p

But I also do a lot in C and assembler for my low-level programming (like microcontrollers). I prototype in C, look at the assembler the compiler generates, and if it's a bit messy for my liking, I'll go in and rewrite it in my own "clean" assembly if I have time and am in the mood to be fussy.

I do believe that being able to think "low level, to the metal" makes for a better high-level programmer. When I write C, my brain is thinking about how it will convert to assembler, for example. When I write Python, I'm aware of what tends to cause bottlenecks vs what is efficient. That said, I usually prefer readability over gaining a few CPU cycles, so I don't unroll loops or perform other "messy" tricks unless I'm desperate to gain a cycle or two. The best of both worlds is simple, readable code. This is one reason I like object-oriented programming, but I've seen people get too "clever" with it and force everything to be object-oriented when a simple function can do, which to me defeats the purpose (and performance).

I also think many people are too dependent on libraries and can't do the work themselves. On one project I was using a typical regex and it just felt slow. So I went ahead and wrote my own parsing algorithm specific for the job I needed to accomplish, and my algorithm was literally HUNDREDS of times faster! Don't get me wrong, I'm not saying I'm smarter than the regex guys, but rather that often it's better to use a very specific wrench for a specific bolt rather than try to use a Swiss army knife to do everything. I don't think many modern programmers think this way - they'll just use (in my example) regex for everything, because that's what they've been taught, and that's why performance suffers in modern software despite the fact that we are programming computers thousands of times faster than what I cut my teeth on.
I love C/C++ and also like Python, one thing I use Python a lot these days is portability it can compile on almost anything these days (even my phone). Sometimes you need assembler especially if your writing boot loaders etc but for some things it can be overkill :).
 
Back
Top Bottom