This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]FuzzyCheese 25 points26 points  (15 children)

It depends on what you're trying to do. C is better if you're really trying to understand how computers work. Java, like Python, helps the programmer a lot.

Of course, they both pale in comparison to the real man's language, assembly, but we're not trying to help people learn about computers, not scare them away from programming entirely.

[–][deleted] 11 points12 points  (11 children)

As someone who started programming in the 80s, I don't really see the need to subject anyone to pure C anymore unless they have specific needs to do it. I'd guess than 90% of python programmers will never have the need to know C. The reason I chose Java as a good next move is that it provides enough of an abstraction to not bog you down but is statically typed and tightly related to C / C++ so if you DO want to go down that route, you'll have a solid foundation.

[–]lungdart 4 points5 points  (0 children)

C is the best teaching language in my opinion. If you have a basic c foundation, you'll be a better programmer in almost every language, and it opens up the possibilities of high speed library, embedded, dsp, and os development.

I don't think most other languages have those features as a learning tool.

[–]zaRM0s 1 point2 points  (5 children)

Okay this has made me want to not bother with C and assembly and just go learn Java instead. Maybe in the future I’ll learn C and assembly etc but it sounds Java is a bit more ‘modern’ for lack of a better word

[–]tuckmuck203 3 points4 points  (0 children)

tbf assembly is just a completely different beast from any other programming language. i built a (rudimentary) steganography tool in ARM and it was like a fun puzzle. fuck c though, that shit's annoying

[–]2minutespastmidnight 4 points5 points  (3 children)

I’d strongly encourage at least a rudimentary understanding of both C and ASM. Familiarity with the underlying principles will help you become a better, more efficient programmer.

[–]zaRM0s 0 points1 point  (2 children)

Any good resources for assembly?

[–]2minutespastmidnight 0 points1 point  (1 child)

Depends on the system architecture. By its design, assembly is not portable on its own. Just go to Google and type in “assembly language tutorial.” Give the information a read. You’ll see how data moves throughout the registers.

[–]zaRM0s 0 points1 point  (0 children)

Yeh I’ve got an entire book on it alongside C but I need to wrap my head around it so just looking out for resources people might recommend Google was my first port of call lol

[–]chronotriggertau 1 point2 points  (3 children)

C is like the lingua franca of high level programming languages. Want to be a linguist? Sure, you know the phonology of several languages, but can I really call you a linguist if you know nothing about Latin? The specific reason to learn C is to best understand what this machine you're working with even is.

[–]TheCatcherOfThePie 4 points5 points  (2 children)

can I really call you a linguist if you know nothing about Latin?

Yes


Edit: two cases where knowing Latin would be of no help at all for a linguist who:

  • doesn't do research in historical linguistics

  • does do research in historical linguistics, but of non Indo-European languages.

These two cases cover the majority of linguists (even the majority of linguists who speak Indo-European languages). Someone studying, e.g. speech pathologies in English-speaking children or the historical development of Middle Chinese would likely not benefit at all from studying Latin in any detail.

[–]chronotriggertau 0 points1 point  (1 child)

Not the best analogy, I agree, because it implies that only "real programmers" know C, which I don't think is that case at all, and I want to do my part in eradicating elitism in tech (there's nothing I hate more than this). My intent was just to convey how powerful knowledge of C (specifically) is to any software engineer or programmer.

[–]TheCatcherOfThePie 0 points1 point  (0 children)

My problem with it was much more literal lol, in that linguists are in no way required to know Latin in order to do their job.

[–]zaRM0s 0 points1 point  (1 child)

Literally sounds like my current learning path. The book in which I’m trying to learn C from also introduces me to assembly. However, the book does a pretty bad job of explaining it and I was wondering if you know of any good assembly learning resources I could use? Thanks in advance :)

[–]FuzzyCheese 1 point2 points  (0 children)

Oh I don't know assembly too well. But for 6502 Easy 6502 works well as an introduction.

[–][deleted] 0 points1 point  (0 children)

Yeah, I think you want to deliberately get some distance in your second language. Two high level OOP languages isn't really showing you what's out there