Programming Language Education

Playing a song on a piano or a guitar is also easy if you practice enough. This goes for any possible craft. Without practice, you suck, with it, you get good.

Of course, C’s basic control structures and concepts, do not differ too much from any other imperative language, making it as good as any other to learn them, but the language core’s lack of high level data structures, often makes simple real-world tasks much harder to implement than they need to be.

In medium-sized projects, the algorithmic nightmare macros tend to appear everywhere: They are in essence what BASIC’s sneered upon GOTO statements are.

In larger projects, good combat skills are required when dealing with linker errors.

The positive thing that can be said about C/C++ is, that due to their heavy usage in critical applications, their compilers are probably the most optimized ones available.

From a didactic perspective, I wouldn’t consider it the best introductory language, but of course, you can do it, as you can learn to play the violin before piano or guitar when you want to learn how to make music.

Closing, here is a humorous text I already posted twice or so in this forum about Real Programmers vs Quiche Eaters (Pascal programmers):

https://www.pbm.com/~lindahl/real.programmers.html

3 Likes

Wait, C wasn’t correct? How can the masses be wrong?

Oh, I actually remember, that at least in Russia (this pic is from India, though), people on Who Want’s To Be A Millionaire intentionally troll the candidate, because they do not want to grant someone too much luck in their life. They are envious like this.

My source: actual Russians (and people from USSR) I have met in person.

I’m not sure about that. There are plenty of alternatives. One of the most famous ones and most valid ones is the language Julia, which I mentioned already on this forum.
To me, Python is more of a buzzword than anything else. It has a cult. Its leaders have sometimes very stupid and weird philosophies, that of course they don’t want to change, because Python is king. Right? Well, as I pointed out many times already, not it’s not. And Julia is not some weird-ass language pulled out of nothing just to have an argument. Julia is an actual and famous alternative to Python.

That’s why I’m sure, people buzzing around with the word “Python” in job positions, would accept Julia, if they would get why Python is not the best thing evaaaaa… Well, except they are part of the cult. Then, it’s like with Apple fans, who buy and believe in everything Apple has ever made. Apple/Python could literally hit on the community’s head, and they would still call it genius.

I got used to working with YAML a couple of years ago, because of Kubernetes. It’s kind of ironic, that the whole point of using YAML is that it’s mostly human readable and less machine readable, than, for example, JSON, even though, when, for example, creating Helm Charts for Kubernetes, you template the crap out of the YAML files. So, you immediately lose all that “human readable” argument by templating YAML. Might as well use JSON and make it more readable. (Internally, JSON is used anyway. YAML is just used by whoever writes the definitions.)

Long story short, I liked XML for a long time, then JSON became popular and I was at first sceptical and reluctant about using it.
However, years later, I got used to JSON and mostly prefer JSON, now.
It’s very simple to use, once you understand the whole “quote everything” principle and it’s fairly easy to read, considering it’s so machine-friendly.

1 Like

I wish I could remember which video on YouTube it was, that explained the whole history of how we went from Assembly, ALGOL and GOTO statements, over COBOL, Pascal and C-like procedural languages (I hope I don’t mix up the names), over Smalltalk, Java, C++ and other OOP languages, to finally arrive in the world of Functional Programming. I think Uncle Bob has done this talk.

Functional Programming rocks!

(Disclaimer: I’m still a pleb programming with Kotlin in a functional style. Still – Functional Programming rocks! :laughing:)

1 Like

I’ll put in $.02 even though compared to all y’all I am naive. All I know is some bash and PHP and Javascript and a bit of Python and… Java, I learned it 15 years ago, got a certification even, and never used it for anything so not sure if it counts… and Perl is where I started in the 1990s, writing CGI scripts.

Just wanna say: one sure thing about technology is something new comes along that surpasses and eventually replaces the thing immediately preceding, because those who develop the new have the immense benefit of seeing all that is wrong with the old. From what I hear, the venerable C has its problems, plenty of them, and a lot of people are excited about newer things like Rust and Go because they (arguably) address those problems.

When I started coding, the predominant version control tool was CVS – Concurrent Versions System. Maybe I wasn’t macho enough, but I thought it was a nightmare. Then came SVN – Subversion. You get the clever little conceptual pun there, subverting CVS. IMHO it also sucked severely. There were/are competitors but it looks as though git is supreme. I use it and don’t complain about the fact that its most advanced features are beyond me, at least for now.

I would say that programmers who have strong opinions also need to have resilient egos, if not open minds. The things you love may someday be maligned and consigned to oblivion in favor of something new. And then you are gonna have to learn it – unless you specialize in the archaic stuff that some organizations still rely on. Some day even that work will surely dry up.

2 Likes

Precisely.

One of the main reasons C is still so popular is because of old elitist pricks, who programmed in C for 3 decades and do not want to change to a better language, because they do not want to “lose” the advanced knowledge they gathered over decades and they want to remain the best in that language. It’s also very hard for them to comprehend, that each language usually has an expiration date attached to it, as you described.

Therefore, I am fully aware, that the thing I’m a fan of right now, like e.g. Nim, will most likely be superseded in the future.
Ironically, I am fairly certain that this language will be replaced by something different or at least some kind of Nim 2 or whatever, because it is strongly connected to C and C has no future in our world. It would be insane to keep using C for another decade or two, when we have already a stable Rust at hand, which is just better than C, without question.

So, I am already excited and looking forward to the “next big thing”, which also includes operatings systems, etc.
To be honest, not even Linux aged that well. Especially the Linux developers and hardcore fans are just way too nostalgic and way too much stuck in the past. Some things in Linux seem like they have infinite backward compatability and the only argument for this is only “we do not want to break scripts from 2 decades ago that still run in a production environment”.
I got a different view on that:
If you are running the same script since 2 decades in your company’s production, you are doing something wrong, and perhaps the API the script uses, which could be simple shell commands, should probably intentionally break to make your script not work, so you finally make a better script, that is up to date.

Due to a HUGH-MONGOUS amount of reasons, I find it very important to limit backward compatability. Sure, not every patch should be a breaking one, but supporting API elements from 2 decades ago, is not only insane, but is implicitly harmful, because it actively encourages bad practices and poor maintenance.

2 Likes

As far as I know, even on modern x86 chips, about 1/3 of the layout are for backwards compatibility as far back as to the 8-Bit 8088 processor.

Seems like your position is not really shared by the Boomer generation.

Despite being on your side, when it comes to the need for breaking with the past, I don’t share your optimism to see C/C++ dying out in the next 10 or 20 years, nor will we see a complete overhaul of the Linux kernel in favour of a slimmer micro kernel approach as long as Linus Torvalds and his old-time buddies hold the final say in everything related to kernel development.

2 Likes

I always doubt what I think or say – do not add to destroying my dreams!! :sob: :laughing:

Yes, that isn’t coming. The issue with such a huge project is that it becomes like a skyscraper. What do you do with a skyscraper that is 30 years old, when it’s built with too old technology on too old foundations?
No, you don’t renovate it. You just demolish it and build a new one, because nothing else would make economically sense, if you really want to fully re-new it. (An exception are of course historical buildings.)

Same goes for the Linux Kernel. It’s a monster and it’s growing, every single day, every single hour.

If we want a true and absolutely fundamental change/improvement, we need something new.

@Akito
The problem is that the schools and Higher Education Institutes expect us to write code on paper :page_with_curl: using pen/pencil during exams .

2nd . Schools in India are still teaching outdated things in Computer Science like Turbo C / C++ which have no relevance in today’s time.

@Aman_Bhatnagar

Actually, in Computer Science, the programming language doesn’t matter, concepts do.

Doing exams with pen and paper is somewhat outdated and not very efficient, but if not all students can be provided with the necessary hardware for economic reasons, it is fair to do so. It doesn’t really matter.

The more important question is: Are classical exams the proper way to assess a student’s abilities?

1 Like

Yes IK ,
I was talking abt IDE “Turbo C /C++”

1 Like

@Mina
I already mentioned that the things we learn today in High Schools in India ,
By the time we reach for a job it becomes pretty outdated
I was talking about outdated stuff which schools teach us .

Only the thing we can learn is by doing practicals not just mugging up jargons or theory .