Fight me.
Fight me.
Very very hard. In fact, as a teenager I tired C++( I know it's not exactly the same, but lower level languages are difficult) and found it so hard I stopped trying to learn programing for years.
JavaScript, specifically Unity's implementation was my first programing language. Even today, it's my go-to language to get something done quick. Anything larger, like a video game for example, I'll use C#.
Even of C was amazing 30 years ago, we have better tools now. You can make 200k writing C#, Python or JavaScript. Why make life hard with a low level language !
Because I'm designing an operating system. None of those languages can do that.
Also, I'm a maintainer of 2 of the top 10 packages on npm. Javascript is not a language I usually jump to when I care about performance or (extreme) portability.
Lastly, C++ != C. They're similar and somewhat compatible, but entirely different at the same time.
I acknowledge this, but they're both very difficult if you're starting with that. To reframe my argument I'd say no new programmer should use a low-level language as it's so difficult you might just give up.
The vast majority of jobs will not require you to build an operating system. I think it's a matter of what your goals are. If you want to build a website or a game, use a high level language, get it done fast and move on of your life. If you want to find a job, you're going to have much better luck using higher level languages and you'll still make just as much as an embedded C engineer ( if not more).
For your specific use case,yes you need something like C.
Your statement regarding C and C++ for beginners isn't strong enough. No new programmer should program, period. That is, they should not be set in front of a computer to type out even a single line of code that is meant to be executed.
They should be taught to think algorithmically, to express their intent in clear and precise language without the aid of a computer to evaluate what they've written and verify it for them, instead relying on their own mind.
This doesn't need to last for long, perhaps just the first few weeks of instruction, but it should be present. The alternative is what I've seen throughout my career of people coding first and thinking later. They become dependent on the compiler, the type system, the test suite to do even the basic thinking for them. Those are useful tools (and essential once your programs start to take on any significant scale), but if they're what you reach for first, you're not thinking.
And new people to programming should spend more time thinking and less time typing. In a college or high school course, this means assignments that require actual coding should be every 1-2 weeks, at best, and the rest of the assignments should be written. Again, having them express their understanding of the program's algorithms and data structures in clear and precise language first, before they ever type anything up.
This assumes you're learning in an academic environment. I taught myself programming just because I wanted to make some video games. I've done very very well career wise. I will admit I do lack some fundamentals, but I can still get things done.
I'm absolutely unashamed to rely upon modern conveniences. Yes I need the strong type system C# provides for any bigger project. I practically need autocomplete, particularly with C# to get anything done.
If it's small I can hack it out in JavaScript. I still remember the three lines of code you need to stand up with NodeJS.
One of my friends needed a small app done last year, I was able to build it for him and flutter in about a month. In fact modern programming languages are so much easier, I reckon this friend if he put the time into it could have built his own application in a few months. The old guard of Computer Science tendsl to have a very strange gatekeeping to them.
Overall, I'd like programming to be less of a foreign thing to the general public. If you learn a little bit of python to reformat some old phone contacts you have, you're very much a programmer. Like not every single person with a driver's license can drive a big rig, not every programmer will be able to build their own operating system from scratch.
And I did say this was a contrarian view. Georgia Tech's CS 1301 (when I took it, numbers varied) was taught this way through Spring 2001 or 2002, and then they switched to Scheme (SICP) and then Python (not sure what, if any, textbook).
I do definitely see your point, I've had times where I'll write so much code and then later I'll realize it would have made much more sense to carefully plan out what I actually wanted to accomplish.
Then again for my personal projects I find it the most fun to dive in head first, and fix whatever issues I run into later.
Occasionally I'll take a hybrid approach, where I'll immediately jump in and try to hack together a really bad prototype. Figure out what worked and what didn't, and then rewrite the code from scratch later. I sincerely enjoy programming so this has been very fun for me. And there's nothing like turning a hobby into a career!
Some schools still teach C and C++ as intro languages. I would not recommend it for a self-learner but in an academic setting it works.
Idk, I like being closer to the metal I guess? It is comforting somehow. Not comforting like machine code ( which I love but hate to use ) but still, not having a clue what I am actually asking to have happen is very anxiety producing.
I like Dumb languages. Next.
Since you are writing OS (which Go is not designed for), what's your thought on Pascal or Ada?
[1]: https://groups.google.com/g/boring-crypto/c/48qa1kWignU/m/o8...