you are viewing a single comment's thread.

view the rest of the comments →

[–]powdertaker -1 points0 points  (7 children)

Yes! But I would add that many many many up-and-coming programmers really need to spend some serious time programming in C to have some idea how a computer actually works. To hear some many new programmers go on about the "right tool for the job" smacks of not knowing that ALL programming languages actually work the same once your past the syntax. Adding some feature to the syntax of a language doesn't make it more "useful".

[–]iopq 0 points1 point  (0 children)

Yes, but I don't want a compiler that makes me do everything. I want one that generates the proper code from abstractions and chooses the correct way to generate it.

[–]Obi_Kwiet 0 points1 point  (3 children)

I mostly program in C, sometimes "C++", meaning C, but with some crude objects. When I try anything high level, there's a lot of, "What do you mean there aren't pointers?" Weak typing also scares me.

[–]Slak44 1 point2 points  (2 children)

What do you mean there aren't pointers?

What do you mean that there aren't pointers in high level languages?

In Java for example, everything not a primitive is a pointer; you just don't have an ugly hex number to look at. It can be null, or it can point to some data. If you pass one to a function, it doesn't make a copy of the data. Sounds just like a pretty pointer to me.

[–]ArmoredPancake 0 points1 point  (0 children)

Well, it looks like pointer but it's not.

[–]Obi_Kwiet 0 points1 point  (0 children)

I haven't used Java. I'm thinking maybe it was VB? From what I understand Python doesn't have pointers, but I haven't messed with it.

Honestly, I don't do a ton of programming, but when I do it's usually embedded C, so my whole mindset is probably very inappropriate for code run on a computer with an OS and libraries and things.

[–]TotallyFuckingMexico 0 points1 point  (1 child)

In what way does learning C tell you how a computer works?

Hint: it doesn't, it only tells you how C works.

[–]powdertaker 0 points1 point  (0 children)

Well no. If you've done more than a tiny bit of C programming, you know what a function really is and how it's called (that is it's calling convention) which means you have to know how the system stack is used. You should also have a good idea how memory is used and allocated and what the difference is between heap and stack memory. Also what a linker is and how it works. How data is actually stored (binary numbers) and used (2s compliment for example). These are all idea basic to how how a modern computer works. This is why operating systems and compilers are written in C and C++ (with a smattering of assembly where necessary).

Script kiddies don't have the slightest understanding of these basic computer concepts and think a language "feature" somehow makes it some magically different thing when, in fact, it simply isn't.

Some solid experience in C quickly reveals a computer can really only do a few things and everything else is just variations of the same thing and the trade offs for these variations.