Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How difficult is it to turn a "Java School" programmer into a C or C++ programmer? [closed]

Tags:

java

c++

c

My company, a C++ house, is always looking to hire recent grads. However due to the Java Schools phenomenon, we typically end up interviewing strong Java programmers with maybe a minute smattering of C++. Often the C++ classes don't really prepare students for working in C++. Nevertheless, often these are bright kids, eager to learn and do their best.

Every interview, I struggle with this fundamental question:

How hard is it to turn a "Java School" programmer into a C or C++ programmer? Has your company had experience turning the stereotypical "Java Schools" programmer into a strong C++ programmer? Is it worth the effort?

One of the reasons I struggle with this is not just due to a C or C++ vs Java language difference, it's the fundamental skills that come with learning C or C++ that I think often get lost at the Java School. These include data structures, computational complexity, manual memory management, really everything Joel Spolsky says here.

Often, as far as I can tell, a student will have some of those fundamental skills (be able to answer a few questions), but I'll still have this large part of my mind that's extremely skeptical with how well someone can learn these skills without getting their hands dirty in some C or C++. Maybe I need to be disabused of this stereotype. Am I just being unfair?

Anyway whats your experience with turning the "Java School" programmer into a C or C++ programmer?

like image 371
Doug T. Avatar asked Oct 30 '08 17:10

Doug T.


People also ask

Is it easier to learn C after Java?

Hi Nazneen, In order to become a good programmer in JAVA you should start from the language C because it is the most basic language and in order to understand the concepts of JAVA first you should learn C than C++ and after that go for JAVA.

Is it hard to go from Java to C++?

Naturally, it would be easiest if the second course were also offered in Java, but learning to move from one language to another is a fact of life for today's software professionals. Fortunately, C++ has many features in common with Java, and it is easy for a Java programmer to gain a working knowledge of C++.

Which is easier to learn C C++ or Java?

Why Learn C++? C++ is used to develop games, desktop apps, operating systems, browsers, and so on because of its performance. After learning C++, it will be much easier to learn other programming languages like Java, Python, etc.


2 Answers

Well, if they don't understand data structures and algorithmic complexity, they aren't going to be much good at serious Java programming, so I don't see that the language is an issue here.

They won't understand pointers, but good C++ programming typically doesn't use pointers in complicated ways. (There are exceptions, but since I don't know what your company does I can't tell whether they'd apply.) After all, you probably don't want your developers writing their own linked lists rather than using std::list.

They won't understand manual memory management, but that's a lot easier in C++ than it used to be. In modern C++, doing your own memory management has become harder, due to the potential of exceptions, so you want to practice RAII with pretty much everything (using auto_ptr, boost::shared_ptr, whatever).

If I were running things, I'd hire them if they looked good. I'd be aware that there might be problems (C++ is a more demanding language than Java, after all), and have some sort of idea how to deal with them.

There's no reason to avoid hiring people out of college just because they don't have the exact skills you want. The smart ones will learn, and you probably don't want to hire the ones who aren't smart.

like image 61
David Thornley Avatar answered Sep 22 '22 18:09

David Thornley


Programmers program. Someone who actually knows how to program can learn any language. Sure, there's a learning curve, but a good coder can get up to speed relatively quickly. If you're expecting someone with advanced knowledge, you wouldn't be looking to hire fresh grads anyway, right? So there's going to be a learning curve either way.

like image 23
coder1 Avatar answered Sep 22 '22 18:09

coder1