3 ms·
Absolutely, yes. + From the point of view of Python or Java (say), it's close enough to assembly language to let you understand how things might work; + If yo
by RiderOfGiraffes 16y ago
Absolutely, yes.
+ From the point of view of Python or Java (say), it's close enough to assembly language to let you understand how things might work;
+ If you need speed or control over hardware, sometimes it's your best route to extend whatever you're working in;
+ In many jobs you'll be the only one who has the knowledge to do unusual things, hence you'll be more valuable;
+ It gives you another point of view when designing systems;
+ You say you'll need it for college - learn it now;
+ A spread of languages is critical if you want to master programming.
You can carve out a perfectly good programming career without knowing C, but it's always of benefit and value to get a wide range of skills. Some recommend:
+ Pure OOP: perhaps smalltalk or Self
+ Pure Functional: perhaps Haskell (non-strict) or ML (strict)
+ Pure Imperative: perhaps C
+ Pure Logic: perhaps Prolog
Other hybrid languages are useful and perhaps more productive, but it's the ideas that really matter while you're still learning.
- macrael 16y agoI'd just add that c teaches you about pointers and how objects are stored in memory which is useful in whatever language you end up using.
- contextfree 16y agoGood post. Not sure C qualifies as "pure imperative" - it has expressions and functions after all. I'd think a true pure imperative language would have to be either assembly without macros or something like Forth (where IIRC each "word" is a self-contained command that performs an action on the stack etc.)
- xenophanes 16y agoI'm not sure about aiming for "pure" languages. Lisp is functional enough that one can learn pure functional programming using it, if he tries. And Ruby is OO enough that one isn't missing much, isn't it? Nothing wrong with the pure languages as options, just I think impure languages can fit the categories too.
- adbge 16y agoI would recommend Ruby, too. Even though I don't write large programs or webapps in Ruby, I use it to write the occasional script to glue different things together. I think that there's probably more (practical) benefit to be had with Ruby than Smalltalk or Self.
- gtani 16y ago+1 learn different paradigms. Besides reading language tutorials, read some PLT (prog lang theory on Lambda the ultimate, and these survey type things. (And you'l frequently see ruby, python, erlang folks say "We have to drop down in C to get plausible performance" or "this algo was already thoroughly tested in C or java". You kinda have to know C and java to get s##t done. http://mvanier.livejournal.com/998.html http://mvanier.livejournal.com/998.html http://matt.might.net/articles/best-programming-languages/ http://matt.might.net/articles/best-programming-languages/ http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf http://www.info.ucl.ac.be/~pvr/paradigmsDIAGRAMeng101.pdf http://www.info.ucl.ac.be/~pvr/paradigmsDIAGRAMeng101.pdf http://www.slideshare.net/brweber2/functional-concepts-for-oop-developers-presentation http://www.slideshare.net/brweber2/functional-concepts-for-o... ----------------- Oh, SICP and books like PL pragmatics http://www.amazon.com/Programming-Language-Pragmatics-Michael-Scott/dp/1558604421 http://www.amazon.com/Programming-Language-Pragmatics-Michae... ---------------- and i love "Traps/pitfalls" from 1989!) http://www.amazon.com/C-Traps-Pitfalls-Andrew-Koenig/dp/0201179288 http://www.amazon.com/C-Traps-Pitfalls-Andrew-Koenig/dp/0201...