Un programmeur doit se concentrer sur au moins combien de langues? [fermé]

21

Pour moi, je suis C # et Java. Je trouve que ces 2 langues sont assez similaires, donc c'est plus facile pour moi de se croiser. Je ne sais pas si c'est une bonne idée de choisir d'autres langues différentes. Des pensées?

Mec numérique
la source
demandez-vous parce que les processus d'embauche recherchent des mots clés sur les CV?
Brian
@ 0A0D non en fait, c'était pour un intérêt personnel. Je suis aussi programmeur :)
Digital Dude

Réponses:

43

Je peux penser à au moins cinq raisons d'apprendre une langue, et il semble que vous devriez éventuellement en apprendre une pour chacune d'entre elles.

  1. Un langage pour obtenir votre premier emploi - probablement Java / C # / C ++
  2. Une langue pour faire avancer les choses - probablement Bash / Perl / Python / Ruby
  3. Une langue pour plier votre esprit - probablement Haskell / Clojure / Scala / F #
  4. Un langage pour des raisons spécifiques au domaine - probablement JavaScript / objectif C
  5. Une langue pour se salir les mains - probablement C / Assembly
Eric Wilson
la source
17
Quelle langue les régit tous?
Tester101
4
L'assemblée les gouverne tous. C'est pourquoi il est répertorié en dernier. A gardé le meilleur pour la fin.
WernerCD
9
Tester101: anglais? ; o)
John Fisher du
6
Bien sûr, il n'est pas surprenant que la langue pour obtenir votre premier emploi ne soit pas celle que vous utilisez pour faire avancer les choses.
4
... et dans l'obscurité, attachez-les!
tchrist
53

Il ne s'agit pas du nombre de langues que vous apprenez. Il s'agit d'apprendre de nouveaux concepts. Certaines langues peuvent être en mesure de vous enseigner de nombreux concepts, tandis que d'autres ne peuvent en enseigner qu'un seul.

Si vous connaissez C #, vous n'apprendriez probablement rien de terriblement nouveau en apprenant Java. Mais vous le feriez si vous appreniez Haskell.

Donc, lorsque vous choisissez une nouvelle langue à apprendre, choisissez quelque chose qui vous apprendra des concepts que vous ne connaissez pas déjà.

Frank Shearar
la source
23
+1 "Un langage qui n'affecte pas votre façon de penser la programmation, ne vaut pas la peine d'être connu" -Alan Perlis
Inaimathi
20
@Inaimathi: à moins de savoir que cela aide à payer les factures.
Kramii Reinstate Monica,
5
Juste une note: j'ai suggéré Haskell pour aucune raison autre que radicalement différente de C #. Le filou en amiante en moi voulait dire "apprenez Smalltalk pour apprendre OO"!
Frank Shearar
10
@Digital Dude: le fait que ce soit difficile est un peu pertinent. Cette douleur derrière votre front n'est PAS une mauvaise chose - c'est un signe que votre cerveau se développe. Si vous voulez simplement continuer à apprendre la même chose encore et encore, apprenez Java, puis C #, puis Ruby, puis C ++ (woooh, pas de garbage collector - effrayant!), Puis C (pas de classes - effrayant-effrayant!), Alors peut-être devenez vraiment fou et essayez Objective-C! (Ooooh - il y a deux jours, je ne pouvais pas épeler Mac et maintenant je peux en programmer un!) Mon point - si vous voulez apprendre quelque chose de NOUVEAU, vous devez faire quelque chose de DIFFÉRENT. Suivre la même route vous amène au même endroit.
Bob Jarvis - Réintègre Monica
4
@Kramii @Inaimathi Aha, mais un langage qui vous aide à payer les factures affecte votre façon de penser la programmation
slf
22

Je dirais que la chose la plus importante est la capacité d'apprendre rapidement. Cela dit, il est important de connaître différentes langues utilisées à des fins différentes. Par exemple, je sais:

1) Python et Perl pour la catégorie des langages de script

2) C ++ comme langage "framework"

3) Java pour application mobile

4) C pour l' énorme quantité de code hérité

5) Quelques langages obsolètes que je connaissais quand j'étais jeune (Basic, Pascal, Clipper etc.)

Je dirais que vous avez besoin d'au moins une langue principale et une langue de script. Connaissant C #, je dirais que vous devez apprendre Python ou Perl ou Ruby ensuite. (J'irais avec Python mais c'est juste une question de préférence).

Emiliano
la source
1
je suis également d'accord avec vous celui qui. Un programmeur qui connaît un langage doit au moins avoir besoin d'apprendre l'un des langages de script pour travailler avec lui. Je pense que c'est très important + utile lorsque vous voulez faire des tests. en particulier le développement de jeux..etc. je suppose que je vais choisir le python comme langue supplémentaire :)
Mec numérique
2
karma pour la capacité d'apprendre rapidement
Ayush Goyal
Outre un langage de script, la connaissance d'un langage de script shell peut également être d'une grande aide. Certaines tâches courantes sur le système sont plus faciles à résoudre dans un langage shell que même dans un langage de script comme Python.
CodexArcanum
connaître C # est différent que d'être un expert dans ce langage
Brian
1
Pascal n'est guère un langage obsolète; il y a une tonne de choses en cours de développement dans Delphi ces jours-ci.
Mason Wheeler
8

Il est bon d'apprendre un nouveau langage de programmation chaque année. Mais plutôt que d'apprendre quelque chose de similaire à ce que vous savez déjà, je vous conseillerai d'apprendre quelque chose de radicalement différent comme Scala ou F #. Il vous montrera de nouvelles façons de faire et éventuellement enrichira vos compétences en programmation.

Paweł Dyda
la source
Merci! Je connais un peu ici et là mais j'ai réalisé que je ne peux pas vraiment maîtriser complètement une langue. Il y a toujours de nouvelles choses qui se passent ..: /
Mec numérique
2
@Digital Vous n'avez pas besoin de maîtriser toutes les langues. Vous devez être familier avec les concepts, de sorte que si un problème survient qui serait mieux servi par une langue, vous pouvez prendre cette décision. Il peut également vous exposer à des concepts que vous pouvez utiliser dans vos langues principales.
KeithB
8

Vous devez vous concentrer sur les langues dont vous avez besoin et utiliser pour ce que vous faites . Vraiment, apprendre une langue vient de la pratique, donc vous bénéficiez de cette langue lorsque vous la pratiquez. Si vous allez apprendre une nouvelle langue pendant votre temps libre, faites-le en l'implémentant dans des tâches de complexité croissante, de sorte que vous puissiez vraiment vous familiariser avec elle.


la source
7

se concentrer sur aucun. se concentrer sur l'apprentissage et l'écriture de code propre; clair, expressif, simple et, surtout, non dupliqué.

optez pour les principes de ce type de programmation, les bases (par exemple, l'encapsulation pour la POO; ce qui signifie et ce que cela implique) et apprenez quelques principes

ce truc vous facilitera la tâche. cela facilitera même la tâche des personnes qui travaillent avec vous ou après vous.

oui, vous devez aussi bien connaître la syntaxe. mais ce n'est pas quelque chose qui prend votre attention longtemps

et vous devez aussi bien comprendre les technologies que vous utilisez. mais ceux-ci peuvent être hiérarchisés en fonction du niveau de complexité requis par votre entreprise.

les deux derniers ne sont pas d'un objectif principal, mais d'une certaine concentration

Belun
la source
oui, j'ai récemment choisi C # essential qui est un très bon livre à lire et j'ai découvert beaucoup de choses que je n'ai jamais vraiment su utiliser pleinement. L'autre livre C # en profondeur que j'ai entendu est également recommandé. Il y a tellement de choses à apprendre ... c'est pourquoi j'ai commencé ce post sur la nécessité de concentrer certaines langues.
Mec numérique
priorisez selon votre objectif. vous voulez rendre votre travail plus facile? vous êtes satisfait de votre position et de ce que vous faites? optez pour un code propre. si vous voulez travailler dans une autre entreprise qui utilise une autre technologie, apprenez-le. si vous voulez changer la technologie juste pour la diversité, allez-y. choisissez votre objectif et agissez en conséquence
Belun
6

Un programmeur doit se concentrer sur la programmation et non sur un / des langage (s) spécifique (s).

Ahmet Kakıcı
la source
6

Autant que nécessaire pour faire votre travail.

Mais C # et Java sont aussi proches que l'anglais britannique et l'anglais américain. Vous pourriez apprendre quelque chose de nouveau en optant pour le finnois ou le navajo.


la source
1
ou! Xóõ: en.wikipedia.org/wiki/Taa_language (la langue africaine du "clic").
Jared Updike
hehe, après avoir parlé du finnois ou du navajo. Je pense que je vais opter pour la langue japonaise pour mon quatrième à la place ... assez de programmation ...
Digital Dude
1
@Jared, je pense qu'une langue EXIGEANT le couper-coller juste pour dire son nom, peut encourager les habitudes indésirables dès le début ...
5

Je ne pense pas que vous puissiez nécessairement maîtriser une langue sans avoir suffisamment de compréhension d'autres langues pour voir cette langue "de l'extérieur" pour ainsi dire. Chaque langue différente apporte quelque chose d'autre à la table et les concepts qu'ils apportent sont des choses que vous pouvez ramener aux principales langues avec lesquelles vous travaillez.

Ainsi, le temps passé à apprendre à utiliser d'autres langues n'est jamais perdu, même si vous n'envisagez pas de les utiliser commercialement.

Le vieil adage est d'apprendre une langue chaque année et je dirais certainement que pendant les dix premières années, vous devez le faire. Au-delà de cela, vous pourriez choisir entre explorer plus en profondeur certaines de celles que vous connaissez déjà (peut-être mettre à jour vos connaissances sur celles que vous avez apprises il y a quelques années) ou travailler avec des bibliothèques particulières plutôt que d'accumuler sans cesse de nouvelles langues, mais en gardant un œil sur explorer la pratique de la programmation en travaillant avec différents langages est certainement une aide à votre développement en tant que programmeur.

glénatron
la source
Après un point, vous pouvez également passer du temps à utiliser des concepts appris dans une langue dans une autre. Par exemple, après avoir appris la programmation fonctionnelle en utilisant Haskell, vous pouvez essayer de voir quels concepts de programmation fonctionnelle vous pouvez utiliser en C #. Vous ne voudriez pas écrire un programme de fonction entier en C #, mais des sections de celui-ci pourraient avoir plus de sens de cette façon.
KeithB
3

Les langages de programmation populaires comme C # et Java vous garderont un emploi rémunéré dans la plupart des endroits, mais aucun n'est suffisamment différent l'un de l'autre pour apprendre de nouvelles façons de résoudre les problèmes. Je pense qu'il y a certaines langues avec lesquelles vous mangez (celles que vous utilisez pour faire votre travail) et d'autres avec lesquelles vous jouez. Les deux ont leurs objectifs.

J'ai découvert qu'en apprenant de nouveaux langages de programmation, j'ai également appris de nouvelles façons plus élégantes de résoudre des problèmes. Il ne s'agit pas du nombre de langues ni de la fréquence à laquelle vous les prenez. Chaque langage de programmation qui mérite d'être étudié a un point de vue unique, ce qui vous oblige à aborder vos problèmes avec un nouvel état d'esprit. Plusieurs fois, la valeur vient de l'apprentissage de cet état d'esprit.

J'ai joué avec Smalltalk et j'ai adoré. La langue était juste un plaisir de développer avec. Une fois que vous vous êtes habitué aux idiomes, ils vous ont aidé à être plus expressif avec votre code. Je n'ai pas du tout manqué le typage statique que vous avez en Java / C ++ / C #. Les génériques avec lesquels nous vivons dans nos langages statiquement typés sont vraiment des constructions pour contourner les limitations imposées par le typage statique.

J'utilise régulièrement Ruby et Ruby on Rails, mais pas pour des emplois rémunérés en ce moment. Le principe de conception de Ruby était "d'augmenter le bonheur des programmeurs". Tu dois aimer ce sentiment, et pour la plupart, je pense qu'il offre.

Finalement, Java ira dans le sens de lisp et Smalltalk, et C # suivra. Ce qui sera là pour prendre leur place reste à voir. À la fin de la journée, si vous savez comment résoudre les problèmes et que vous avez plusieurs façons de découper et de découper le problème, vous pourrez trouver un emploi et choisir la langue dont vous avez besoin.

Berin Loritsch
la source
2

Quand il s'agit de maintenir les compétences à jour et flexibles, je pense que vous devriez essayer d'apprendre au moins un langage de programmation complètement nouveau tous les 6 mois environ. Et je veux dire une langue qui est très, très différente.

Ainsi, tout en apprenant davantage sur le framework .net tout en utilisant C # ou les frameworks Java aide à garder la souplesse, l'apprentissage de Haskell, Smalltalk, Scala, Clojure ou Ruby étendra votre technique et vous aidera à réfléchir de différentes manières, dont certaines peuvent être utiles. retour à votre langue principale, et certains d'entre eux peuvent vous aider à passer si Java cesse d'être le roi de la colline.

Si vous n'avez jamais appris le C, bien que sa syntaxe ait été apportée à Java, l'état d'esprit peut être très différent. Il vaut la peine de le savoir, en profondeur, et mieux encore, de comprendre comment le code OO peut être écrit dans ce langage qui ne semble que procédural.

Je recommande de lire le livre de Bruce Tate "Beyond Java", qui met trop bien en évidence les dangers d'être sur une seule langue, notant la montée et la chute du C ++. Bien que le C ++ soit loin d'être mort et qu'il reste des décennies, il est de plus en plus restreint à n'utiliser que dans des situations qui ne peuvent pas bénéficier de gains de productivité dans d'autres langages. En revanche, Sinatra, un framework ruby, vous permet de créer un service Web simple dans environ 6/7 lignes de code, l'équivalent C ++ peut être d'un ordre de grandeur plus grand que cela.

Danny Staple
la source
1

Lorsque vous n'êtes pas anglophone natif, vous devez au moins vous concentrer sur l'amélioration de votre anglais . Je dis cela sur la base de mon expérience. Comprendre cette langue m'a beaucoup aidé.

Tous les bons matériaux (livres, articles, code, etc.) pour apprendre les langages de programmation, les technologies et les nouveaux concepts sont écrits en anglais.

Matias
la source
1

Les langues sont des outils pour faire le travail. Certaines langues sont bonnes pour certains types de problèmes, d'autres sont généralement bonnes pour toutes sortes de résolution de problèmes. Je recommande d'apprendre de nouvelles langues à mesure qu'elles sortent. Ne soyez pas obsédé par ce qui est à la mode ce mois-ci, mais apprenez ce qu'ils peuvent faire, ce dans quoi ils sont bons. Mon conseil est 1 nouvelle langue par an. Ils sortent plus vite que cela, mais vous cherchez à mettre de nouveaux outils dans votre boîte à outils, pas à être le nouvel enfant à la mode sur le bloc.

Un essai qui parle des différences de langues est «Battre les moyennes» de Paul Graham. Je recommande de le lire, mais une partie importante est ici (il utilise "Blub" comme langage hypothétique pour que vous n'allez pas discuter de ce que votre langage préféré peut faire):

Ou que diriez-vous de Perl 4? Entre Perl 4 et Perl 5, des fermetures lexicales se sont ajoutées au langage. La plupart des pirates de Perl conviendraient que Perl 5 est plus puissant que Perl 4. Mais une fois que vous l'avez admis, vous avez admis qu'un langage de haut niveau peut être plus puissant qu'un autre. Et il s'ensuit inexorablement que, sauf dans des cas particuliers, vous devez utiliser le plus puissant possible.

Cependant, cette idée est rarement suivie jusqu'à sa conclusion. Après un certain âge, les programmeurs changent rarement de langue volontairement. Quelle que soit la langue à laquelle les gens sont habitués, ils ont tendance à considérer juste assez bon.

{couper}

Tant que notre hypothétique programmeur Blub regarde dans le continuum de puissance, il sait qu'il regarde vers le bas. Les langages moins puissants que Blub sont évidemment moins puissants, car il leur manque une fonctionnalité à laquelle il est habitué. Mais lorsque notre hypothétique programmeur Blub regarde dans l'autre direction, dans le continuum de puissance, il ne se rend pas compte qu'il lève les yeux. Ce qu'il voit n'est que des langues étranges. Il les considère probablement comme équivalents en puissance à Blub, mais avec tous ces autres trucs poilus également. Blub est assez bon pour lui, car il pense à Blub.

Lorsque nous passons au point de vue d'un programmeur utilisant l'un des langages plus haut dans le continuum de puissance, cependant, nous constatons qu'il à son tour méprise Blub. Comment pouvez-vous faire quoi que ce soit dans Blub? Il n'a même pas y.

Par induction, les seuls programmeurs en mesure de voir toutes les différences de pouvoir entre les différentes langues sont ceux qui comprennent la plus puissante. (C'est probablement ce que voulait dire Eric Raymond à propos de Lisp faisant de vous un meilleur programmeur.) Vous ne pouvez pas faire confiance aux opinions des autres, à cause du paradoxe Blub: ils sont satisfaits du langage qu'ils utilisent, car cela dicte la leur façon de penser les programmes.

http://www.paulgraham.com/avg.html

La plupart des applications que nous expédions sont écrites en C # ou VB. Lorsque nous avons dû ajouter des scripts à une application, nous avons choisi Python (Lua était le choix final). Nous apprenons le F # parce que cela peut faire de nouvelles choses velues qui sont difficiles à expliquer et à comprendre si tout le monde sait que c'est C # / Java / VB.

Tangurena
la source
0

eh bien tout d'abord il y a un certain nombre de langages qui sont très difficiles à éviter pour la plupart des programmeurs: javascript, sql, c, etc. donc vous pourriez aussi bien vous familiariser avec eux, ils ne vont pas disparaître.

c'est aussi une bonne idée de connaître un langage de script de type canard ... par exemple un de perl, python, ruby, lua etc. ceux-ci sont incroyablement utiles pour un large éventail de problèmes, y compris l'automatisation d'une grande partie de votre propre corvée quotidienne

Pour le meilleur ou pour le pire, vous rencontrerez également probablement C # et / ou Java à un moment donné, ils sont assez répandus.

en tout cas, ne vous limitez pas artificiellement. les codeurs que je connais qui évitent explicitement de prendre des outils intéressants semblent avoir des visions du monde cloîtrées et un impact limité.

Brad Clawsie
la source
0

Cela pourrait devenir un autre débat spécialiste vs généraliste dans un sens. Certaines personnes peuvent passer beaucoup de temps à connaître une langue à de grandes profondeurs, ce qui leur convient parfaitement. D'autres personnes peuvent aimer en savoir un peu sur un tas de langues différentes qui leur conviennent. La plupart des gens sont entre ces deux extrêmes.

Si vous souhaitez des suggestions de langues à explorer, voici quelques idées:

  1. Programmation fonctionnelle - Haskell ou Lisp seraient des exemples ici et le changement de paradigme peut être un peu déroutant dans une certaine mesure.

  2. Spécifique à la base de données - PL / SQL ou T-SQL me viennent à l'esprit comme quelque chose qui peut être utile si vous voulez faire plus de travail principal avec des systèmes qui nécessitent une base de données pour certaines de ses fonctionnalités.

  3. Langages Web de l'interface utilisateur - ActionScript ou Javascript seraient ici des exemples de langages utilisés dans les applications Internet riches, bien qu'AIR puisse faire en sorte que certaines applications de bureau utilisent des appels Web dans certains cas, comme Twhirl à l'aide de l'API Twitter.

Ce ne sont que des idées et selon l'endroit où vous voulez être, elles peuvent vous être utiles ou inutiles. Bonne chance avec tous vos choix.

JB King
la source
0

Un programmeur doit connaître trois langues: C, anglais et quelque chose d'autre.

C est un langage de base, il est proche de la machine et possède des règles de syntaxe communes à plusieurs langages de haut niveau. C vous oblige à penser à des choses comme les structures de données d'une manière très différente de Java. De plus, les vms Python et Ruby sont tous deux construits en C, et vous pouvez intégrer C dans les deux langues lorsque vous souhaitez augmenter votre vitesse.

L'anglais est la langue courante de la programmation. La plupart des livres, des rapports techniques, des sites Web techniques et des articles de journaux sont publiés en anglais d'abord, et parfois en anglais exclusivement. De plus, si l'anglais n'est pas votre première langue, l'apprentissage de l'anglais étendra votre boîte à outils pour manipuler des concepts (cela vaut également pour les anglophones qui apprennent une autre langue).

Le Something Else devrait être un langage qui n'est pas procédural, ou qui n'est pas typé statiquement, ou qui est fortement orienté objet, ou qui est en quelque sorte fondamentalement différent de C. Haskell, Scala, Python, Ruby, un dialecte Lisp, peu importe .

Après cela, vous pouvez apprendre tout ce que votre situation spécifique requiert, probablement C # ou Java.

philosodad
la source
Je souhaiterais savoir pourquoi vous, critique anonyme, avez voté contre cette réponse.
philosodad
la langue anglaise ne vous apprend pas l'idée, c'est seulement un moyen d'exprimer l'idée.
sagarmatha
@sagarmatha: Même si c'était vrai, ce qui n'est pas le cas , il n'y a rien «seulement» à pouvoir s'exprimer dans le langage de communication par défaut du domaine. Si vous améliorez votre anglais, vous pourrez vous exprimer clairement auprès des anglophones et, plus important encore, lire et comprendre l'anglais beaucoup plus rapidement. Comme le souligne Matias, les livres de programmation et les articles techniques ont tendance à paraître en anglais en premier , et parfois en anglais uniquement .
philosodad
Je ne comprends pas pourquoi vous avez été rétrogradé, mais je conviens avec vous que la connaissance de l'anglais est aussi importante que la connaissance d'un langage de programmation principal. @sagarmatha: Vous venez de vous contredire. Si les idées sont exprimées en anglais, alors la connaissance de la langue anglaise vous permettra sûrement d'apprendre ces nouvelles idées. La façon dont vous l'apprenez et l'appliquez dépendra de votre capacité à comprendre l'anglais et vos compétences en programmation.
chiurox