Any good reasons to learn c/c++?

Hello everyone.

I was wondering if there is any good reason to learn c or c++ once you know java pretty well. Are there any benefits at all or is it a waste of time?

It will be extremely beneficial to learn C (not necessarily C++), because you’ll begin to understand how the JVM is written and why it works the way it does. You get to learn in much greater depth about how the whole end-to-end process of making the machine do things works - memory bandwidth, cache pollution, etc.

There are places where C and C++ still rule and it’s always good to know you can get down and dirty with it if you have to.

Cas :slight_smile:

You will definitly grow to appreciate Java more if you do learn C and fight with pointers for a while.

Learning ‘the assembler of your choice’ teaches you alot about how the machine actually operates, more so than C.

It’s not a waste of time if you enjoy it :wink: .

the more programming languages you know, the more likely you’ll get a job in programming :wink:

You will only fight with pointers if you have a bad design.
I’ve never had to fight with pointers, in fact pointers made it easier for me to get things done.

Pointers are only a problem in a bad design.

Anyway, my computer graphics class uses C to work with OGL. There are reasons as to why they do this. I don’t know what they are though but I believe it has something to do with C still being important.

Thanks everyone!

It looks like C might actually be helpful. I could even use eclipse for development with some plugins, which is a big plus. Theres also plenty of code written in C which is a good reason to learn it. Is there a place I can learn all about the language syntax and standard library? what about “The C Programming Language” don’t they call this K&R? Thanks again for the help! I hope that’s not too many questions…

Usually it’s a complete waste of time.
Except in case your boss absolutely needs you to use it.

The usual way of many long time programmers has been: assembler, C (1), C++ (2), then a real OO high-level language like Java or nowadays the Java clone C# (from the Delphi guy) + NET. Some of course started with Cobol and will end with it. :slight_smile:
Usually it’s not neccessary to go the way backwards however.

In case you want to spend your limited time on applications and games, not low-level tools/drivers/etc, there’s no need to learn assembler or its C wrappers.

(1) which is a macro assembler.
(2) which is an object orientated macro assember.
Because most C fans started to use C++ one day, they continued to write C programs in C++.

Don’t you say. It’s actually unimportant to learn C++ to understant how compilers work. The real important thing, to learn how CPU works, is hard to do from C, it’s MUCH more direct and easy from assembly. Some programmers were able to get a clue from drawing of CPU, the others from some nasty tests and hard 20 hours of programming.

Of course there are numerous articles, and arstechnica.com.

Optimalization of cache by C++ programmer could be called an reordering and additing few compile switches by an optimist. (Remember a fire of an optimist from Terry Pratchet book? Two wood pieces and a disapearing smoke.)

BTW a some test C++ knowledge. You have on your computer a few compiled .obj files (COFF), you know names of methods that needs to be exported in a library, you know name of library. You have cl.exe, and link.exe. You can’t receive any other manual, programs, or anything. Your CEO was pissed locked the door, computer isn’t connected to any network for security reasons, and you need to create a windoze dll file until he returns.
And of course you can’t recompile source files.

If you REALLY know C, you should find a solution, otherwise you are slave of an IDE.

And when I talked about assembly…


.686
.flat, stdcall
OPTION casemap:none

include masm/includes/windows.inc
include masm/includes/user32.inc
includelib masm/includes/user32.lib


.data

message1 db "This is message of a really simple ASM program",0
message2 db "name of window",0
message3 db "This program would terminate, if you will see an error window don t be lazy and append call to ExitProcess,0 to the end of the program",0

.code

fromthisline:

invoke MessageBoxA 0, addr message1, addr message2, 0

invoke MessageBoxA 0, addr message3, addr message2, 0
mov eax, 0

end fromthisline

It might work, I didn’t tested it. It would give a feeling of a “low” level language.

you will love Java twice as much, especially the javadocs!

Sure, ANSI C is well documented, but APIs things like GTK – yuk! The Javadocs are wonderful – and they have the lovely “@since” and “@deprecated” tags!

Will.

Too bad that people still make documentation like if they were programming in C. Just document 50% of it and let people guess the rest. Sometimes i even see apis with generated javadoc dcumentation almost made of empty tags.