Est-il sage de faire des allers-retours entre deux langages de programmation? [fermé]


28

J'écris pas mal de PHP depuis près de deux ans. Maintenant, je fais du développement .NET (principalement c #). Cependant, parfois je reviens en arrière et je fais du php.

Ma question principale est la suivante: est-il sage pour moi de continuer à le faire ou dois-je continuer le développement en C #? Est-ce que cela me nuirait à long terme (sachez que mon objectif principal n'est pas d'être un jack o all trades) ou est-ce une bonne pratique à faire?


30
vaut mieux être un cric de tous les métiers qu'un poney à un tour
scrwtp

27
Cela vous nuira certainement si vous vous limitez à seulement deux langues. Obtenez plus d'outils différents dans votre boîte à outils.
SK-logic

4
Vous posez cette question comme si vous étiez totalement libre de choisir entre C # et PHP - est-ce vraiment le cas?
Doc Brown

10
Connaître tous les petits détails d'une langue est sans aucun doute très utile. Mais lorsque vous travaillez avec plusieurs langues, à un moment donné, vous vous retrouverez à concevoir des parties du programme d'une certaine manière, quelle que soit la langue dans laquelle vous travaillez actuellement. Il s'agit d'une sorte de programmeur nirvana, où la langue devient secondaire et l'application est ce qui compte. C'est un endroit idéal, car cela signifie que vous avez un potentiel en tant que programmeur même à l'avenir, lorsque les gens travailleront dans un nouveau langage Z ++ sophistiqué.

2
Seulement deux? De nombreux programmeurs travaillent régulièrement dans plusieurs langues. Connaître plusieurs vous donne un plus grand ensemble d'outils à partir desquels puiser.
Caleb

Réponses:


75

Utiliser deux langues en même temps n'est rien. Il n'est pas rare que les programmeurs utilisent plusieurs langues différentes chaque jour. Différentes tâches et différentes technologies nécessitent différentes langues.

Aujourd'hui encore, j'ai déjà utilisé quatre ou cinq langages différents, et c'est intéressant parce que je n'avais pas fait de programmation jusqu'à présent. Tout ce que j'ai fait, c'est travailler sur une présentation.

Comme un bon programmeur , il est essentiellement nécessaire que vous connaissez votre chemin en plusieurs langues, et la seule façon d'atteindre (et préserver) une aisance raisonnable est en utilisant ces langues.


4
Je ne sais pas comment quelqu'un pourrait être un programmeur efficace sans utiliser au moins 3 langues régulièrement.
Brian Knoblauch

1
@Brian - ces trois langues étant votre langue parlée / écrite principale, votre langage de programmation principal et SQL et / ou HTML?
KeithS

2
@KeithS Uniquement si vous créez des pages super simples côté client et ne touchez jamais aux enregistrements XML côté serveur. CSS et Javascript comptent comme leurs propres langues, tout comme XPath et XSLT et XQuery.
Tacroy

2
Tout ce qui contient "La plupart des gens" ou "la plupart des développeurs" doit être suivi d'une sorte de citation. Sinon, c'est subjectif. Presque tous les développeurs que j'ai rencontrés (et moi-même inclus) considèrent SQL comme un langage de programmation, et l'exhaustivité de Turing n'est pas un facteur nécessaire pour un langage de programmation (pensez aux DSL, qui sont généralement conçus pour NE PAS être complets). HTML et XML sont évidemment pas de langages de programmation (bien que vous puissiez avoir des langages spécifiques au domaine XML). Les regex ne sont pas des langages de programmation, mais les automates programmables / configurables le sont.
luis.espinal

2
Ce n'est pas une source. C'est un lien vers une discussion (les discussions ne sont pas, en elles-mêmes, des sources), et celle-ci est uniquement axée sur CSS et HTML. Il ne traite pas du test "turing complete" (je vous suggère de lire le travail de Martin Fowler sur le sujet des DSL), ni de savoir si SQL est un langage de programmation (ce qu'il est, voici une source réelle: en.wikipedia.org/ wiki / SQL , ou ce amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Soit vous ne lisez pas entièrement mon article, soit vous pensez qu'un lien vers stackexchange est une source (ce qui n'est pas le cas)
luis.espinal

37

est-ce une bonne pratique à faire?

C'est une excellente pratique. De plus, je recommanderais d'élargir régulièrement votre liste de langues en en essayant une nouvelle.

Les langues et les technologies tombent en faveur très rapidement, en quelques années. Par exemple, Objective C a décollé avec une force incroyable après avoir été presque mort pendant deux décennies et demie - une éternité selon les normes de cette industrie!

Peu importe que vous envisagiez de "ne pas être un con pour tous les métiers": si vous prévoyez de rester dans l'industrie assez longtemps, il est très sûr de supposer que vous devrez changer votre pile technologique au moins une fois tout au long de votre carrière. L'utilisation de plusieurs langues vous permet désormais d'être prêt à passer un préavis raisonnablement court.


14

Est-ce que cela me nuirait à long terme (sachez que mon objectif principal n'est pas d'être un jack o all trades) ou est-ce une bonne pratique à faire?

Connaître deux langues ou plus ne vous nuirait jamais. Connaître vos langues très peu profondes (sans comprendre le fonctionnement interne) peut vous nuire.

Personnellement, je préférais toujours maîtriser un langage de programmation orienté objet en premier . Cela vous fournirait un apprentissage approfondi de tous les concepts de programmation et faciliterait l'apprentissage du suivant une fois qu'il y a un besoin.

est-ce une bonne pratique à faire?

Absolument oui!

Je suggérerais certainement d'en apprendre plus d'un et de les pratiquer en créant des applications. En attendant, vous pouvez également envisager d'apprendre certains langages de script (jQuery, KnockoutJs, etc.) et des bibliothèques si vous faites ou prévoyez de faire du développement Web.


1
Je ne pense pas que penser, l'apprentissage de la POO vous apprendra de nombreux concepts de la programmation fonctionnelle, d'une part, les règles de portée JavaScripts sont très différentes des autres langages de POO populaires tels que C #, etc. il existe de nombreux autres concepts.
phant0m

Je suis entièrement d'accord. Cependant, jQuery et KnockoutJs ne sont PAS des langages de script. Et je ne recommanderais pas "l'apprentissage de jQuery" sans connaissance fondamentale de JavaScript.
Bruno Schäpper

vous ne pouvez pas apprendre jQuery sans apprendre JavaScript dans le processus parce que jQuery n'est pas une langue, c'est une bibliothèque écrite dans une langue.
ILikeTacos

5

Cela ne devrait pas vous nuire à long terme, la maîtrise de plusieurs langues fait de vous un développeur complet. Utiliser "le bon outil pour faire le bon travail" est le but ultime et être versé dans différentes langues vous aide à atteindre cet objectif, car vous savez ce qui existe et pouvez prendre une décision bien informée sur la plate-forme / le cadre / le langage à utiliser. faire quelque chose.


Merci pour la réponse, mais je me demandais si les changements fréquents ne nuiraient pas à mon processus d'apprentissage ou ne le prolongeraient pas ou cela dépend-il simplement des capacités de la personne?
Lamin Sanneh

@LaminSanneh Apprendre une autre langue ne fait pas empirer la première. Ce n'est pas un RPG et vous n'avez pas un nombre défini de points de "compétence de programmation" que vous pouvez attribuer à chaque langue. Au pire, cela vous enlève du temps que vous auriez consacré à une autre langue. Mais les langues ne sont qu'un moyen d'exprimer vos idées, et apprendre de nouvelles langues vous offre de nouvelles perspectives et idées que vous pouvez appliquer à celles que vous connaissez déjà. Bien sûr, vous ne connaîtrez pas la syntaxe de toutes les langues, mais qui s'en soucie? C'est une recherche rapide sur Google
Jay

5

Au cours de votre carrière, vous avez à apprendre de nouvelles langues et de nouvelles technologies; l'industrie l'exige simplement. Lors de ma première mission professionnelle, j'ai dû livrer du code écrit en Ada, C et Fortran, ainsi que des scripts SQL et shell. J'ai dû passer de C ++ à Java et vice versa au cours des deux dernières années. J'ai écrit des scripts shell en csh, bash et perl.

Prendre le temps d'apprendre différentes langues, surtout si elles sont dans des domaines différents (OO, fonctionnel, logique, etc.) vous aidera de plusieurs manières. Cela gardera votre cerveau affûté. Il vous aidera à séparer les concepts de l'implémentation (par exemple, les hachages et les cartes ne sont pas seulement des types de données dans un langage particulier). Cela vous donnera une meilleure idée des outils appropriés pour un problème donné (par exemple, je ne construirais pas de site Web en C et je n'écrirais pas de pilote de périphérique en Haskell). Cela peut vous faciliter la tâche pour trouver un emploi ("Hé, il connaît déjà Intercal 1 , nous n'avons pas besoin de le former!"). Il vous donnera une idée des défis auxquels sont confrontés les concepteurs de langage. Cela peut vous inspirer pour créer votre propre langage de programmation.

À tout le moins, cela vous évitera de vous ennuyer.


1. Blague. N'essayez pas d'apprendre Intercal.


4

Les gens qui prennent leur retraite cette année ont commencé leur carrière avant C a été créé. Il est sûr de dire que vous pourriez changer de langage de programmation une ou deux fois dans votre carrière. Vous ne voulez pas travailler pour des employeurs qui ne comprennent pas cela.

Lorsque vous êtes nouveau, le changement de contexte entre deux langues est beaucoup plus difficile, vous serez donc plus productif si vous travaillez au moins 4 à 8 heures dans une langue avant de passer. Plus tard, vous pourrez basculer instantanément sans perte de productivité. En d'autres termes, l'utilisation de deux langues deviendra éventuellement une force au lieu de vous ralentir.


2

Il y a un avantage et un inconvénient à cela.

Voici l'avantage ...

Comme d'autres l'ont mentionné, être capable d'apprendre de nouveaux et de travailler avec de nombreux langages et outils de programmation est presque essentiel pour avoir une longue carrière en programmation. Les choses changent au fil des ans, les outils / langues vont et viennent. Bien sûr, il y a des gens qui se contentent de programmer dans le même COBOL mainframe qu'ils utilisaient dans les années 1980, mais c'est une situation relativement rare. La plupart des programmeurs finissent par changer d'outils / de langues plusieurs fois au cours de leur carrière. Parfois, vous pouvez être embauché parce que vous connaissez une technologie plus ancienne ou que vous connaissez toutes les langues avec lesquelles une entreprise travaille.

L'inconvénient est ...

Certains employeurs vous verront comme un «cric de tous les métiers, maître de rien» et rejetteront votre candidature sans vous donner une chance. Ils recherchent un expert étroit dans un domaine spécifique, pas simplement un bon programmeur bien équilibré. Parfois, vous pouvez être interrompu par les RH parce que vous n'avez pas "5 ans d'expérience continue en [X]". Vous pourrez peut-être éviter cela en adaptant votre curriculum vitae à l'emploi, mais cela peut ne pas vous aider lors d'un entretien technique.

Pour moi, l'avantage est bien meilleur, mais vous devez être conscient qu'une minorité d'organisations le considère comme négatif.


+1, De plus, je suis certain qu'il y a une corrélation entre cette minorité d'organisations et une mauvaise programmation et l'inefficacité.
K.Steff

2
Ce négatif est cependant annulé par les employeurs qui pensent exactement le contraire. J'ai mon mot à dire dans les décisions d'embauche où je travaille, et je serais très difficile de convaincre d'embaucher quelqu'un qui n'avait qu'un seul langage de programmation à son actif. Peut-être pour un poste junior, mais certainement pas pour un développeur senior.
Jon Hanna

@JonHanna - Le principal problème est que l'équipe de développement ne pourra peut-être même jamais interviewer le développeur potentiel car il est éliminé par les RH, parfois par un programme automatisé. C'est, bien sûr, un problème plus courant dans les grandes organisations. Il est important de s'assurer que vos ressources humaines ne filtrent pas les meilleurs candidats en fonction de critères arbitraires.
jfrankcarr

+1 pour signaler les inconvénients . D'où je viens, le nombre d'entreprises conservant cette vision du «cric de tous les métiers, maître de rien» n'est pas si petit.
lsoliveira

Oui, mais nous pourrions transformer cela en n'importe quelle bonne qualité; il pourrait toujours y avoir un idiot en RH qui pense que c'est une mauvaise qualité. En fin de compte, si les RH dans une organisation sont des idiots, ils vont faire de mauvaises embauches, et tout en étant embauchés, il pourrait y avoir mieux que la ligne de chômage, vous allez chercher un nouvel emploi immédiatement et trouver du travail ailleurs .
Jon Hanna

2

Quand vous faisiez du développement PHP, avez-vous écrit javascript ou SQL? Dans votre développement C #, vous pouvez toujours utiliser les deux. Ce n'est pas aussi simple que d'utiliser un seul langage de programmation.

Si vous êtes content de le faire, ne vous en faites pas. Si vous ne voulez pas faire les deux (ou les deux), vous avez un problème.


2

L'apprentissage d'un nouveau langage de programmation vous apprendra des choses sur la programmation que vous pouvez appliquer aux langages que vous connaissez déjà. Vous devriez certainement envisager au moins de jouer avec d'autres langues, même si vous ne les utilisez pas professionnellement, plutôt que d'en avoir si peu.

Idéalement, une approche très différente de celles que vous connaissez déjà.


2

Non, il n'y a rien de mal à apprendre plusieurs langues et à les utiliser toutes assez souvent. Dans ma vie de tous les jours, je peux rencontrer Ruby, PHP, JavaScript, CoffeeScript, Python et parfois C. Je connais assez bien tous ces langages et passer de l'un à l'autre suffit de basculer un interrupteur dans ma tête. Bien sûr, je manque les fonctionnalités de certaines langues lorsque j'en passe à une autre, mais vous vous en sortirez.

J'essaie de toujours avoir une langue que j'apprends en profondeur et puis une autre comme un "up and coming". De cette façon, vous avez toujours un objectif éducatif clair, puis quelque chose à l'horizon. En ce moment, Ruby est ma langue principale et j'expérimente avec Go. Je ne trouverai probablement jamais d'emploi en tant que développeur Go, mais apprendre une nouvelle langue a fait de moi un meilleur développeur.

Lorsque j'interviewe un développeur, j'aime toujours voir quelques langues différentes sur leur CV. Si un développeur a sur "C / C ++" ou "PHP et Javascript" sur son CV, il semble beaucoup moins intéressant que quelqu'un qui a une solide maîtrise de 4 ou 5 langues. Assurez-vous que vous vous sentez à l'aise dans n'importe quelle langue que vous listez, tout ce qui figure sur votre CV est un jeu équitable dans l'interview!

En bref: l'utilisation régulière de plusieurs langues est le signe d'un bon développeur qui se soucie de son métier. Continuez à coder!


Je dirais que si le développeur dit "C / C ++" dans un curriculum vitae, je voudrais que ce soit la seule langue (s) là-bas. Mais avec d'autres langages infaillibles, mieux c'est.
Coder

2

Lorsque nous regardons les CV, nous recherchons généralement quelqu'un qui connaît plusieurs langues. De plus, à mesure que l'expérience d'une personne augmente, le nombre de langues qu'elle utilise devrait également augmenter.

Dans notre environnement, nous devons souvent nous attaquer à des problèmes nouveaux et intéressants et nous recherchons des personnes prêtes à intervenir et à résoudre ces problèmes, qu'elles aient ou non besoin d'apprendre une nouvelle langue. Le problème peut provenir du code exécuté sur un bureau Windows, un serveur Windows, un serveur Linux ou dans un navigateur.

La connaissance de plusieurs langues est le signe que quelqu'un a une bonne attitude envers son métier. Ils veulent toujours apprendre de nouvelles choses. Un manque de connaissance d'un certain nombre de langues est un signe pour moi qu'une personne ne fait que le strict minimum et n'est pas intéressée par l'apprentissage.


2

Il a toujours été le cas pour les gens de programmer en utilisant plus d'une langue. Lorsque les gens utilisaient Assembly, ils devaient s'appuyer sur un nouveau langage Assembly à chaque fois qu'ils changeaient d'architecture.

Lorsque les gens faisaient du COBOL ou du Fortran, ils faisaient aussi généralement du RPG et / ou du JCL.

Dans Unix, les gens travailleraient avec C, sed, awk, un script shell et à peu près tout dans l'évier de cuisine Unix (presque chaque outil de ligne de commande dans Unix est son propre DSL très spécial.)

Sous DOS, les gens programmeraient en Turbo Pascal ou C en plus des scripts batch. Plus tard, lorsque Windows est arrivé, c'était VB ou quelque chose comme PowerBuilder couplé à SQL et éventuellement à des scripts d'installation par lots.

De nos jours, il est de fait que les gens "travaillent" avec plus de deux langues chaque jour (et par "travail", je veux dire faire du codage au jour le jour ou avoir des connaissances pratiques). Java ou C # ou VB mélangé avec JavaScript et SQL à tout le moins. Ensuite, d'autres langages entrent en jeu pour les scripts batch / job et similaires. Ensuite, pour chaque langue, vous disposez d'un framework qui implémente lui-même un DSL interne, un mini-langage à part entière.

Donc, ce n'est pas seulement bénéfique de travailler avec plus d'une langue, mais c'est nécessaire. Il n'y a aucun moyen de construire un système moderne et complexe avec un seul langage (et par «construire», je ne veux pas simplement coder de la merde qui se compile, mais pour construire quelque chose avec un design décent.)

Heck, je vais sortir d'un membre et dire que je m'attendrais à ce que les enfants à l'université soient compétents dans deux langues ou plus s'ils veulent vraiment être dans cette profession.

Donc, concernant votre question:

Ma question principale est la suivante: est-il sage pour moi de continuer à le faire ou dois-je continuer le développement en C #? Est-ce que cela me nuirait à long terme (sachez que mon objectif principal n'est pas d'être un jack o all trades) ou est-ce une bonne pratique à faire?

Donc, réponse courte, non, utiliser ou basculer entre les langues ne vous donnera pas les cooties. Connaître plus d'une langue ne fera pas de vous un mec de tous les métiers, et il n'y a aucun moyen pour un développeur de devenir un expert en étant incapable d'utiliser plus d'une langue.


1

Plus vous devez comparer en référence à votre (vos) langue (s) principale (s), mieux vous comprendrez les compromis de conception qui ont contribué à le rendre particulièrement fort ou faible à certaines choses et à en tirer profit / compenser ces choses. Maîtrisez au moins un, mais ne vous inquiétez pas d'être un jack de beaucoup d'autres. Cela ne semble que bon.

Il est préférable de demander à quoi ressemble un CV dans une seule langue répertoriée par les développeurs "seniors". La réponse à cette question est: "Pas très intéressé par ce qu'ils font dans la vie."


0

Deux langues peuvent vous aider ou non - cela dépend. Cela ne vous nuira pas, c'est sûr. De nombreux développeurs ont tendance à penser que l'utilisation d'autre chose que la «langue principale» est une pure perte de temps, mais je ne suis pas du tout d'accord. Apprendre une autre langue (et l'utiliser) est un pur avantage: cela vous donne une perspective différente sur la façon de résoudre les problèmes. Il peut arriver que vous commenciez à utiliser l'une des langues pour des tâches particulières à tout moment (comme cela m'est arrivé après avoir eu la chance d'apprendre et d'utiliser Python).


0

Dans cette situation, vous ne demandez pas de passer de JAVA à C # et inversement tout le temps, vous optez plutôt pour C # et PHP, ce qui n'est vraiment pas un gros problème.

Supposons que vous vouliez faire des choses basées sur WEB où vous utilisez une pile WAMP (Windows / Apache / MySQL / PHP) et C #. Vous utilisez le C # pour écrire certains services SOAP, puis utilisez PHP pour les consommer.

Cela me semble totalement acceptable.

Quoi qu'il en soit, connaître plusieurs langues est une bonne chose. Plus vous en savez, mieux c'est. Bibliothèques PHP / C # / Java / Python / javascript [JQuery par exemple]. Soyez utile au plus grand nombre de personnes possible.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.