Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
Dustin Knudsen
1,616 PointsConflicted
I am running a $20 subscription with Treehouse and I'm currently learning CSS.
At the same time, I'm extremely interested in the C language. It strikes me as a bit archaic or "old school" but I want to learn it for personal reasons.
I feel like I need to choose one or the other. Maybe put my Treehouse subscription on hold and focus entirely on C? I mean, if I got really, really good at C I know there are positions that could use someone with that knowledge, but is it practical? Should I try and learn C language and do Treehouse at the same time? Part of me wonders if, having a passion for learning the C language, that will actually propel my coding abilities further since I have a clear goal as far as what I want to DO with it, whereas with Treehouse, I could learn all sorts of awesome, marketable skills that I don't feel are quite relevant for me just yet.
I am not going to lie, my attention span is not the sharpest, hence my reasons for asking strangers for advice on how to manage my time :D
3 Answers
Jennifer Nordell
Treehouse TeacherThe C language is not easy. I studied ANSI C at a university eons ago and advanced data structures are ... monstrous. Keep in mind that C is a procedural language whereas most languages in use today (as far as I know) are object oriented.
The high-level languages here manipulate data types in ways that were doable in C but extremely tedious and difficult to debug. However, having knowledge of C later will help you understand how memory is allocated, why garbage collection is the neatest thing since sliced bread, and more details of how this all works than you'll ever want to know.
Coming from a procedural background and moving into object-oriented feels a bit abstract to the point of being freaky (at least in my opinion). My suggestion is to keep learning here for a bit and at least get used to debugging code, figuring out what's wrong, and general logic problems. My inclination is to say that it's probably easier to go to procedural from object-oriented than vice versa. Again, this is just my opinion based on my own personal experience.
Cliff Tam
2,948 PointsThe only systems I see that are still running C are old systems. I am sure some company have those systems that need someone with C programming skills to maintain and update. The challenge i see though is learning C. As Jennifer mentioned, C is super old school and very basic. Unlike VB or other language, you can manipulate the basic down to the memory level.
The good bit about Treehouse is that you can also pause and un-pause. So I don't think it will cost you anything (other than time) to take some time to explore C before you come back to it.
Not sure about your background and other programming skill-sets but it is good if C can compliment your other skills. If not, it is harder to market. Not impossible, just a bit harder.
A X
12,842 PointsI disagree that C isn't used much anymore: All major OS's are written in C: Mac (Mac might be written in Objective C but it's still C), Windows, and Linux. Some hand-coded bits of the OS are written in assembly language, which is even more "basic" than C in terms of it's the closest we can code to machine language (except coding in machine language itself). :-)
C is a foundational language that most other languages are built from (which makes it harder because you need to manage your own resource allocation like memory management...aka no "garbage collection"). Microcontrollers (like the popular Arduino and Raspberry Pi) and lots and lots of other embedded CPU's (like a car has embeddded CPU's...especially a hybrid like the Prius). As Jennifer mentioned, C is more difficult though because it requires you to think outside the box to create more complicated commands (since the language itself is very limited in keywords...it has functions, variables, and conditions...and that's basically it). C is also a very "unforgiving" language because of the different things that you don't need to think about in higher level languages that all of a sudden are not automatically done for you in C. C can also be a very hackable language if you don't know what you're doing. The higher level languages will protect you automatically from the basic hacks (without you knowing it's doing that).
Ultimately C (& C++) involve directly the concepts that other languages only use indirectly (and the compiler for those languages are most likely written in C). As a note, C++ is bloated in comparison to C, and the C++ has more complicated compilers.