Why am I writing this post? Not because I hope for something or believe in change. These are just words. I could write this at the end, but then you would be looking for answers for me while reading, and I don’t need them. They won’t change anything. So here it is. I don’t claim to be a software development guru or a C language expert. I’m just a simple developer.
-
Why are we looking for new technologies? Why do we want to be part of a community that is buzzing with new projects? Why do we think that this new programming language will definitely help us create something amazing and truly great and, of course, will make us rich and provide us with a comfortable old age?
-
Why are we offered so many courses in so many programming languages and frameworks? Why do we teach what is required for companies that make money from us?
-
Why are there a lot of conferences on banal simple things, such as *** framework or ### technology (so as not to offend anyone), and there, with a smart look, newly minted gurus tell us how important it is to be able to transfer the value to the client and how to use certain templates?
-
Why do computers become more and more powerful, but programs continue to lag?
-
Why, when applying for a job, do we look for a vacancy based on knowledge of a programming language, but find it only based on knowledge of certain frameworks? Is it really difficult for a professional programmer to learn a framework in a week?
-
Why do we go into software development with the enthusiasm to create something great, but end up in a situation where we are developing some other catalog or some other digital yo-yo to make money?
Reason: because we want our passion for programming, our interest, to also bring us income.
Result: we do not earn this money for ourselves, but for companies whose main goal is to quickly receive income from the software they sell.
I look at how programming has changed over the course of 25 years, what they teach at universities, and where they start. And I came to the conclusion that on a large scale, it was all for the benefit of giant companies or the government.
We must protect the “intimate” knowledge of the foundations and water the roots ourselves. Because they don’t realize, they don’t see that if the roots are not watered, the branches on which they sit will dry out. Therefore, who, if not us?!
Honestly, I would advocate the exact opposite.
Yes, programs became bloated and fragile, but the solution cannot be to return to the stone age, but be professionals for once.
Our entire industry is shit at actually engineering. There’s leaky abstractions everywhere, and that’s exactly why everything is so complicated and brittle. There’s no platform to build upon, only a scaffolding made of twigs, duct tape and three bananas for some reason. Every minor change in some minor library percolates through the entire stack.
You’re a simple developer, so am I. And we both probably wrote hundreds of apps that essentially do the same crud crap again and again and again. The same basic functionality gets implemented thousands of times, because we can’t get our shit together to build actually reusable components. Instead we rewrite the 12th iteration of “make stuff move in browser” and “make Java do business”.
We’re not engineers, we’re children with hot glue guns.
Yes, new and new tech approaches and languages created, and baggage is being rewriten again and again. Business needs fast development for reaching fast money. And they dictates approaches and frameworks to use.
Yeah, but that’s the thing: it’s not fast. And that’s actually even more baffling.
All those rewrites cost money. All the shoddy software somewhere in the background of every corporation was written using these shitty libraries, frameworks, APIs. And that means cost.
I’m explicitly not talking about the newest crap Amazon or Google push, they operate under different principles, I’m talking about the data plumbing stuff. The eight billion Spring Boot apps, the PHP sites, the Python pipelines.
Writing and deploying a simple CRUD app, that just takes data from a request and saves it into a DB should be done in a few minutes. The actual “payload” is just input schema, DB schema, transformation rules, maybe auth. That’s it. However, if you want to do that in Spring Boot and K8s, it takes often hours or days to get everything right. Not because Spring Boot is hard, but because you forget a network policy in Helm or the dateformat between JSON/Java/DB is different or that library is outdated or there’s CVE somewhere or you have to look up that shitty mappedBy thingy from Hibernate again (that’s maybe just my problem, I can’t remember that crap) etc. etc. etc.
The basic problem behind is, that we have to take care of so much. Network, business logic, framework detail. You have hardly any layer or platform that is really solid.
That’s the reason why I like C#, ASP.Net Core and EF Core so much. A simple CRUD app can be written in under 10 minutes and easily deployed in any form from a self-contained binary to a docker container to whatever eldritch horror lurks behind Azure or k8s. Personally, I run docker swarm mode for my stuff because it makes automated deployment super easy, kind of like a leaner k8s but if I wanted, I could just drop a binary on any windows, linux or macOS machine without needing to install any major dependency apart from my database.
Edit: of course, ASP.Net Core has its downsides too. Especially when it comes to auth stuff. I wish I could have something as simple as devise + cancancan in old versions of Rails.
You’ll take my kotlin from my cold dead hands
It’s time to return to the roots, to the
C programming languageCPU specific Assembly languageFix’d
Joke aside, the answer to most of your questions is “because people with money said so”. As to why programs lag despite computers being more powerful, because shitty programmers and a general “BLA is cheap” mentality, where BLA is processing cycles, RAM, storage, network speed, etc. Funnily enough, the “program using everything the hardware offers” is an old complaint, as even Unix was considered a cancer during the 1980s, mostly by people whose computers did nothing but run very specific LISP code.
C is not without its flaws, just like every other language. Teaching it over whatever the market desires may not necessarily make better programmers, nor better programs for that matter.
I look at how programming has changed (…) it was all for the benefit of giant companies or the government.
Giant companies first, govt second and as a side effect, as govts tend to be veeery slow in adopting certain computer related stuff. I suspect the main exception would be intelligence/espionage agencies, but they also much prefer others doing shit programming, makes their job easier.
A huge percentage of the security vulnerabilities in C and C++ programs are due to memory bugs etc that comes from rushed or careless programming. Why not write in memory-safe systems languages like Rust that can completely avoid these entire classes of bugs?
Mostly agree with the premise of this post, but you don’t necessarily need to use a language that causes segfaults if you look at it wrong (It Is Undefined Behavior™) to “go back to your roots” (though from what I’ve seen you’ve been enjoying C a lot OP, so that’s good too), any language works when you don’t have The Business breathing down your neck.
Write a little VM in Rust, or C#. Hell, try doing a SPA in pure JS without npm (or any other package manager) or any frameworks or even libraries, only native custom components, it’s surprisingly fun.