25 votes

Comment est-il difficile de transformer un "Java École" programmeur en C ou C++ programmateur?

Ma société, C++ de la maison, est toujours à la recherche pour l'embauche de nouveaux diplômés. Cependant, en raison de la Java des Écoles phénomène, nous avons généralement en fin d'entrevue fort programmeurs Java avec peut-être une minute poignée de C++. Souvent les classes C++ n'est pas vraiment préparer les étudiants pour le travail en C++. Néanmoins, ce sont souvent des enfants lumineux, désireux d'apprendre et de faire de leur mieux.

À chaque interview, j'ai du mal avec cette question fondamentale:

Comment est-il dur à son tour un "Java École" programmeur en C ou C++ programmateur? Votre entreprise a eu l'expérience de tournage avec le stéréotype de la "Java des Écoles" programmeur dans une forte programmeur C++? Est-il encore la peine?

L'une des raisons pour lesquelles je lutte avec ce n'est pas seulement en raison d'un C ou C++ vs Java différence de langue, c'est l'acquisition des compétences fondamentales qui viennent avec l'apprentissage de C ou de C++ que je pense souvent se perdre à la Java à l'École. Ces inclure des structures de données, la complexité des calculs, manuel de gestion de la mémoire, vraiment tout, Joel Spolsky dit ici.

Souvent, aussi loin que je peux dire, un étudiant aura certaines de ces compétences (être capable de répondre à quelques questions), mais je vais quand même une grande partie de mon esprit qui est extrêmement sceptique quant à la façon dont quelqu'un peut apprendre ces compétences sans se salir les mains en C ou C++. Peut-être que j'ai besoin d'être désabusé de ce stéréotype. Suis-je tout simplement injuste?

De toute façon ce qui est de votre expérience avec le tournant de la "Java École" programmeur en C ou C++ programmateur?

40voto

David Thornley Points 39051

Eh bien, si ils ne comprennent pas les structures de données et algorithmique complexité, ils ne vont pas être bien sérieux de la programmation Java, donc je ne vois pas que la langue est un problème ici.

Ils ne comprennent pas les pointeurs, mais bon en programmation C++ n'a généralement pas utiliser des pointeurs de façon compliquée. (Il ya des exceptions, mais je ne sais pas ce que fait votre entreprise, je peux pas dire s'ils avaient de s'appliquer). Après tout, vous ne voulez probablement pas à vos développeurs à écrire leurs propres listes liées plutôt que d'utiliser std::list.

Ils ne comprendront pas, manuel de gestion de la mémoire, mais c'est beaucoup plus facile en C++ qu'elle ne l'habitude d'être. En C++ moderne, de faire votre propre gestion de la mémoire est devenue plus difficile, en raison de la possibilité d'exceptions, de sorte que vous voulez pratiquer le RAII avec à peu près tout (à l'aide de auto_ptr, boost::shared_ptr, peu importe).

Si je devais choses en cours d'exécution, je louerais eux si ils ont cherché la bonne. Je serais conscient qu'il pourrait y avoir des problèmes (C++ est un plus exigeant langage que Java, après tout), et disposer d'une certaine idée de la façon de traiter avec eux.

Il n'y a aucune raison de ne pas embaucher des gens sortis de l'école simplement parce qu'ils n'ont pas les qualifications exactes que vous voulez. Les plus intelligents apprendrez, et vous ne voulez probablement pas à embaucher ceux qui ne sont pas intelligents.

18voto

Onorio Catenacci Points 6130

En parlant purement du point de vue d'un programmeur C++, je pense qu'un développeur Java souhaitant apprendre le C++ serait face à une pente assez raide de la courbe d'apprentissage. Oui, à un certain niveau de développement de code est similaire dans toutes les langues. J'ai été une fois appelé à écrire de code dans microsoft Excel macro langue (pré-VBA). J'ai réussi mais c'était comme essayer d'écrire de la Guerre et de la Paix avec une cinquième année, le vocabulaire.

Il y a d'autres problèmes avec le C++ (pointeurs, gestion de la mémoire, la surcharge d'opérateur) qui ne sont pas seulement présentes dans Java pour autant que je sais et ils ne sont pas de petits problèmes. Surtout si vous êtes à la recherche de quelqu'un pour aider avec l'héritage de code C++ ceux-ci pourraient présenter de grands obstacles. Et je pense que je commencerais toute nouvelle embauche, avec au moins certains des travaux de maintenance, d'abord.

17voto

Dana Points 1911

Les programmeurs programme. Quelqu'un qui sait vraiment comment le programme peut apprendre n'importe quelle langue. Bien sûr, il ya une courbe d'apprentissage, mais un bon programmeur peut obtenir jusqu'à la vitesse relativement rapide. Si vous attendez quelqu'un ayant des connaissances avancées, vous ne voudriez pas être à la recherche d'embaucher des frais diplômés de toute façon, non? Donc, il va y avoir une courbe d'apprentissage à l'autre.

16voto

J'ai programmé dans de nombreuses langues et à trouver le C++ est très difficile de comprendre et d'être productifs dans, par rapport à d'autres langues que j'ai utilisé comme Java, C, Python, Fortan, Javascript, ASP et Perl. Je dirais presque qu'il est dans une catégorie à part. Je ne crois PAS que la compétence dans l'une des langues que je viens de citer (notamment Java) est un excellent prédicteur de la façon dont bon un programmeur C++ d'une personne pourrait être. Je pense que C++ presque nécessite un autre type de pensée, et certainement la capacité à tenir une énorme quantité d'informations dans la tête lors de l'encodage, contre, en se concentrant principalement sur les exigences de l'entreprise.

J'ai essayé de devenir compétent en C++ depuis des années, en dépit de ne jamais avoir à l'utiliser au travail (c'est à dire étudier à mon rythme). Il est très difficile d'aller et après tout ce temps, je ne suis pas sûr que je serais réussie et productive en tant que programmeur C++. Je pense que je suis raisonnablement compétentes, dans les autres langues.

Donc, basé sur mes petites et clairement échantillon biaisé d'une seule personne (moi!) Je suggère de penchant vers les développeurs qui ont démontré une importante quantité de passé C++ de l'expérience, si c'est ce qu'ils vont faire au travail, au jour le jour. Vous aurez besoin de passer plus de temps à trouver des candidats, mais vous aurez une meilleure chance de succès à long terme, je pense.

10voto

Nosredna Points 33670

Ma règle d'or est que je préfère avoir un C/C++ programmeur d'écrire Java qu'un programmeur Java pour écrire des C/C++. Je ne peux pas dire lequel des programmeurs Java peut gérer traitant de la gestion de la mémoire et des pointeurs jusqu'à ce qu'ils l'essayer.

Si j'avais à choisir de Java à l'école des enfants, je dirais un peu des histoires d'horreur à propos de l'assemblage et C, alors essayez de les diviser en trois catégories.

  1. Intrépide. Ils n'étaient pas attention.
  2. La peur et paniqué parce qu'ils savent qu'ils ne pouvaient pas gérer ce genre de complexité.
  3. La peur et hâte parce qu'ils comprennent que même des gens plus intelligents qu'eux peuvent obtenir des coups de poing dans l'intestin par d'étranges-cul de mémoire et des problèmes de matériel, mais de l'enfer, il ne sonne comme un bon défi.

Je louerais de groupe 3.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X