![]() |
|
![]() |
|
|
Thread Tools | Display Modes |
|
|
#1 |
|
Sexy Programmer
|
Learn C ?
I read a lot online and many sites recommend knowing C will help your programming knowledge as well as your techniques on how to program no matter what the language is. I had my eye on C for a few months while learning Java. Of course I am sticking with Java full-time as in main language that I am studying for now but I also want to look into C while learning Java.
I know Java pretty well. Not too novice yet not too experienced neither. Though, to me, C has been the ideal programming language. I mean it's been around for over 3 decades, that tell someone something right? Please share your thoughts with me. Should I look into C while learning Java?
__________________
I would love to change the world, but they won't give me the source code! |
|
|
|
|
|
#2 | |
|
Programming Guru
![]() Join Date: Jun 2005
Location: elemental plane
Posts: 1,429
Rep Power: 5
![]() |
In my opinion it's a lot more important to understand programming paradigms than to learn a new programming language.
I would suggest you look into something really different like Haskell/Scheme, Lisp, or Prolog. If you would like to learn other paradigms, then here's a list. If you still want to look into something like C, I'd suggest C++ rather than C. C++ is multi-paradigm language (generic-programming, object-oriented, procedural), where C is just procedural. Plus it's almost a superset of C, and resembles Java (duh) so you can come to a lot of new insights concerning Java too. By the way: Quote:
__________________
"Employ your time in improving yourself by other men's writings, so that you shall gain easily what others have labored hard for." -- Socrates |
|
|
|
|
|
|
#3 |
|
Professional Programmer
Join Date: Mar 2005
Location: Student of University of Mumbai, Maharashtra State, India
Posts: 344
Rep Power: 4
![]() |
I, at times, feel odd when few say, learning C helped to program in just any other language (eve, I used to say this). But may b ppl say this because, its the simplicity and legendary attribute, that C has probably.
When one begins to learn a different approach to programming like from structured to object oriented, (C to C++), they are programming things differently, the program works differently, than it would work in the former. I believe, C would teach a syntax format the is somewhat a basis for other languages. I believe, while learning, Java, you could refer to the javadocs, because there's a lot to learn from it!
__________________
Visit: http://www.somaiya.edu |
|
|
|
|
|
#4 |
|
Resident Grouch
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jun 2005
Posts: 6,453
Rep Power: 10
![]() |
You would only want to move to C if you're interested in shucking some layers of abstraction. That's a worthy goal if you are interested in learning more about the realities of today's architecture and how your machine really works.
It would give you the ability to peer into OS code, for instance, presuming you could lay your hands on the source. You would then have more understanding about the capabilities of your machine and how, under the hood, the various flavors are more similar than different (it's the user interfaces that are being interpreted by the users as The Machine, by and large). The next step, beyond that, would be machine language, as represented by assembler mnemonics. If those aren't your goals, your investment in learning is probably better directed elsewhere. Obviously, it makes a useful addition to your resume, under any conditions. The only question is "how valuable an addition?", and that varies with the market and where you place yourself in it.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code. Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers |
|
|
|
|
|
#5 | ||
|
Sexy Programmer
|
I chose C because Java takes about of concepts from C and C++. And C++ takes a lot from C. I really didn't mean "C will make me a better programmer". I just implied that it will teach me good techniques and style in Java because a lot of it came from C.
Quote:
Quote:
EDIT: Will learning a procedural language like C effect my learning of a OOP language. Also, I read that it's possible to use OOP in C but it's not easy and because it's not easy that don't mention that.
__________________
I would love to change the world, but they won't give me the source code! |
||
|
|
|
|
|
#6 |
|
Resident Grouch
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jun 2005
Posts: 6,453
Rep Power: 10
![]() |
Of course it's possible to use object-oriented design in C. OOD was not invented by software gurus. Oog used it when he chiseled out the first wheel. Some things should be objects and some should not. Your lawnmower is an object, comprising other objects. How hard is that to get? It's only hard if you listen to self-anointed high priests. Your lawn is NOT an object (and shouldn't be). It doesn't have its own lawnmower object and mow () method. You get those elsewhere, bring them to the lawn, and cut your grass procedurally. Learning to mow your lawn will not tank your ability to design a carburetor object, if such are your leanings.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code. Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers |
|
|
|
|
|
#7 |
|
Hobbyist Programmer
Join Date: May 2006
Location: West Jordan, Utah, United States
Posts: 176
Rep Power: 3
![]() |
I can't imagine knowing C hurting you. If you want to apply it to Java, it might end up being more like a history lesson than a programming lesson. Like other people said, I think it's mainly just removing layers of abstraction.
|
|
|
|
|
|
#8 | |
|
Programming Guru
![]() Join Date: Jun 2005
Location: elemental plane
Posts: 1,429
Rep Power: 5
![]() |
Quote:
I think a lot of others can teach one more than C, especially when one already knows Java.
__________________
"Employ your time in improving yourself by other men's writings, so that you shall gain easily what others have labored hard for." -- Socrates |
|
|
|
|
|
|
#9 |
|
I eat cake for breakfast.
![]() ![]() ![]() ![]() Join Date: Jul 2004
Location: In my box.
Posts: 4,434
Rep Power: 9
![]() |
If you already know Java, why learn another, such as C++ or C#, that's effectively the same thing? Why not learn something a little different? C, Assembly, Perl, PHP, Python, LISP, Prolog... the list goes on.
![]() |
|
|
|
|
|
#10 |
|
Resident Grouch
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jun 2005
Posts: 6,453
Rep Power: 10
![]() |
Again, see post 4. You can move up (more abstraction), down (less), or sideways. Up and down have benefits, though differing benefits. There isn't a lot of point in going down to C unless you plan to continue the trip. Dealing with non-atomic arrays, dynamic memory allocation, stuff like that, isn't going to gain you a hell of a lot beyond preparing you for additional forays into the elemental aspects of the Von Neumann architure, the hardware implementations thereof, and the sort of software production that makes you grunt and mumble.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code. Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers |
|
|
|
![]() |
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|