À quel moment puis-je dire que j'ai «appris» une langue?


67

Au cours de mes quelques années de programmation, j'ai tout joué, de Ruby à C ++. J'ai tout fait, du simple apprentissage de la syntaxe de base (Ruby) à la réalisation de plusieurs projets majeurs (pour moi) qui ont élargi mes capacités avec la langue. Étant donné cette diversité (et le fait que l'apprentissage d'une langue ne s'arrête jamais réellement), quand puis-je dire que je connais (ou ai appris) une langue?


12
Je pense que le mot que vous recherchez est "maîtriser" une langue, "appris" dans ce contexte est un peu étrange.
Pieter B

7
"Les mots ont une signification: quand tu as la signification, tu peux oublier les mots." - Zhuangzi
jfrankcarr

9
quand vous ne devrez pas poser cette question, vous aurez appris ce que vous devez savoir ...

1
@JarrodRoberson Est-ce que c'est Zhuangzi qui a dit ça aussi?
jadkik94

2
Selon LinkedIn, la barre très basse pour mettre en place un langage de programmation sur votre curriculum vitae de compétences ... Selon mon équipe de LinkedIn, les personnes qui ont déjà vu le code Java se sentent probablement à l’aise de l’énumérer dans leur section de compétences.
Chris Dale

Réponses:


70

À quel moment pouvez-vous dire que vous avez "appris" une langue comme l'anglais ou le français? Je pense que la plupart des gens accepteraient que vous ayez appris une langue quand vous pouvez l’utiliser pour communiquer. Vous n'avez pas besoin de connaître tous les mots ni de comprendre tous les idiomes, mais vous devez connaître la plupart des sous-ensembles (plutôt petits) de la langue que les gens utilisent dans la conversation quotidienne. Ayant "appris" une langue dans cette mesure, vous pouvez continuer à en apprendre davantage au fil de votre utilisation quotidienne et à vous exposer de plus en plus à la langue. Au moment de votre mort, vous ne saurez toujours pas tout ce qu'il y a à savoir sur la langue, mais personne ne dira que vous n'avez jamais "appris" la langue.

C'est donc, je pense, avec les langages informatiques. Vous pouvez dire que vous "connaissez" un langage comme C ++ ou Ruby lorsque vous pouvez y écrire des programmes utiles. Si vous devez quantifier votre degré de connaissance de la langue, utilisez les mêmes termes que ceux que vous utiliseriez pour une langue humaine. Dites "Je connais un peu de C ++" ou "Je connais le C ++ conversationnel " ou "Je parle couramment le C ++", ce qui signifie que vous en savez juste assez pour vous débrouiller, de quoi faire des choses utiles, ou que vous êtes un expert, respectivement.


15
Les termes conversationnel et fluent sont plutôt subjectifs et bien qu’ils s’appliquent au langage naturel, il est difficile de voir ce qu’ils veulent dire par application à un langage informatique. Bien que toujours subjectif, fonctionnel et idomatique peut mieux fonctionner. Fonctionnel implique que vous connaissiez suffisamment la syntaxe pour écrire des constructions utiles, alors qu'avoir une connaissance idiomatique implique que vous sachiez non seulement écrire dans le langage, mais que vous le sachiez suffisamment pour utiliser les idiomes du langage, comme utiliser usingen C #. ou b, a = a, bet des générateurs en python. Sinon, +1.
Mark Booth

13
@MarkBooth Toute description autre qu'un score à un examen sera quelque peu subjective. Le but est d'utiliser la familiarité que la plupart des gens ont déjà avec les niveaux de connaissance des langues humaines comme guide approximatif de la connaissance d'un langage informatique, et de le faire de manière conviviale, ce qui invite à une enquête plus approfondie. Conversation C ++ est un raccourci pour «Je connais les bases, mais vous devrez peut-être m'aider avec un code avancé, obscur ou délicat».
Caleb

3
Bien que je pense que vous avez principalement raison, je pense que beaucoup de gens supposent à tort qu’ils ont appris une langue naturelle alors qu’ils ont encore un niveau misérable. Et cela s'applique aussi aux personnes qui disent avoir appris les langages de programmation.
Hayem

Je pense que votre réponse est parfaite, elle montre même à quel point il est impossible de quantifier les connaissances linguistiques. En effet, bien que parler signifie simplement que vous pouvez parler de presque tout, avec autant d’explications que le ferait un locuteur natif, cela ne résout pas le fait que la plupart des locuteurs natifs ne possèdent pas un dixième des connaissances linguistiques de bons écrivains ( , pas Harry Potter ou Dan Brown, vrai vieux style difficile à lire des choses). Comment répondriez-vous à cela, alors que personne n’a pris la peine de le faire pour les langues? et quand en fait cela a-t-il un impact important sur la productivité de la programmation?
Morg.

1
@Morg. Quelles ordures. La programmation concerne autant la communication avec les futurs programmeurs (y compris vous-même) que le fait de dire à l'ordinateur quoi faire. Certes, la simple écriture d’un code peut ne pas avoir besoin d’être bien communiquée, mais dans le monde réel, il est bien plus important de préciser vos intentions aux futurs responsables de la maintenance du code que de faire en sorte que votre ordinateur agisse correctement. Quoi qu'il en soit, ces commentaires ne servent plus à améliorer cette réponse. Je suggère donc que nous en adressions le sujet à Software Engineering Chat si vous souhaitez en discuter davantage.
Mark Booth

25

Cela dépend de qui demande

La personne qui pose la question a probablement une certaine idée du niveau de compétence attendu de quelqu'un qui dit avoir "appris une langue".

En gros, j’ai rencontré deux échelles archétypales, par lesquelles les gens jugent la réponse à la question "as-tu appris X?"

Pour la plupart des nerds, c’est une question piège pour éliminer les posers. C’est déjà démontré par les autres réponses à votre question;). Si vous dites que vous l'avez appris, vous ne voyez pas l'étendue de la tâche, ce qui est implicitement la "perfection" et, pire encore, vous échouez dans l'humilité.

Pour la plupart des patrons, vous "l'avez appris", si vous pouvez résoudre leurs problèmes , un critère souvent déjà rencontré si votre code est compilé. Répondre à sa question de manière humble l'amènera à confier cette tâche à un poseur qui pourrait également être un membre de la famille.

Alors, quel est votre public?


4
Dans les interviews, vous le savez si vous le savez. Sur le lieu de travail, vous le savez si Google le sait.
Asfallows

3
Dans les entretiens, c’est «je le sais» si l’enquêteur porte une cravate et c’est «s'il vous plaît, définissez 'savoir'» s'il ne le fait pas;). Pour être honnête, la plupart des intervieweurs demandent si on "a de l'expérience avec", ce à quoi je suis plus enclin à répondre par "oui"
keppla

18

Je pense que les gens se concentrent sur la finalité du mot "appris" étant un temps parfait, cela signifie que vous avez fini d'apprendre. Et comme chacun l’a noté, les langages de programmation sont des entités vivantes, tout comme les langues parlées. Par exemple, une personne maîtrisant parfaitement le C # 2 examinerait le C # 3 avec LINQ, Lambdas, les varmots - clés, les initialiseurs d’objet / de collection et les méthodes d’extension et constaterait que beaucoup de choses avaient changé par rapport à ce qu’il avait appris pour la version précédente. La même chose se passe avec C # 4 avec await, asyncmots - clés et d' autres nouvelles constructions linguistiques.

Et nous ne parlons que de syntaxe ici. Nous oublions que la plupart des langues sont associées à un framework . C # a le framework .NET, Java a son propre framework, tout comme Ruby, C ++, PHP et PERL. Pensez au cadre d'une langue comme étant le vocabulaire et le langage lui-même n'est qu'une syntaxe. Connaître la langue signifie que vous savez comment faire une phrase dans la langue. Connaître le cadre signifie que vous pouvez bien vous exprimer dans la langue. Enfin, une fois que vous connaissez la syntaxe et le vocabulaire, vous devez apprendre les expressions pour pouvoir écrire du code en tant que "locuteur natif".

Je dirais qu'il y a plusieurs niveaux d'apprentissage.

  1. Hello World (vous pouvez écrire les programmes les plus rudimentaires.)
  2. Compétent (vous pouvez écrire des programmes de base, mais vous devez consulter l'aide en ligne régulièrement)
  3. Courant (vous pouvez écrire des programmes avancés avec quelques références nécessaires).
  4. Locuteur natif (vous pouvez écrire des programmes avancés avec une aide en ligne minimale, votre code est identique à celui d'un autre locuteur natif).

3
Nitpick: awaitde C # 5, la nouveauté majeure de C # 4 était dynamic.
svick

Vous avez raison ... Je continue de perdre de vue quelle version de C # correspond à quelle version de .NET
Michael Brown

7

Vous pouvez rarement dire que vous avez appris une langue. Cela implique que vous avez fini d'apprendre à ce sujet, ce qui est ... stupide.

Dire que vous connaissez une langue, c'est bien quand vous pouvez écrire du code qui ne rompt pas de manière flagrante les idiomes de la langue (peut-être après une semaine de résolution du problème) sans faire référence à une référence de syntaxe.


2
Les idiomes changent, les styles varient d'un endroit à l'autre et les langues elles-mêmes changent avec le temps. Si vous ne pouvez pas dire que vous "connaissez" ou "avez appris" un langage comme C ++ jusqu'à ce que vous en ayez fini, peu de gens peuvent prétendre avoir appris le C ++.
Caleb

1
@Caleb exactement.
Michael Brown

3
Si vous apprenez comme ça, alors vous ne connaissez même pas votre langue maternelle, qui est aussi
idiote

@ Caleb, pire que cela, de nombreuses parties de c ++ sont meilleures lorsqu'elles sont ignorées, comme l'ont souligné Carmack et Torvalds - donc .. avoir tout appris de cpp n'est pas vraiment bénéfique.
Morg.

3

C'est plus un facteur basé sur l'opinion. Dans tous les termes techniques, "appris" signifierait avoir une connaissance complète de, comme on s'attendrait à ce que vous sachiez TOUT de la langue.

Cependant, dans le monde de la programmation, je pense qu'il est plus important de pouvoir programmer couramment dans la langue pour réaliser un objectif / une tâche. Cela signifie aussi probablement que si vous êtes à l'aise avec la langue. Bien sûr, vous pourriez aller là-bas et obtenir un diplôme après des années et des années de collège, mais ce n'est que pour se faire remarquer? Vous définissez quand vous pouvez dire que vous avez appris une langue.


2

Lorsque vous commencez à remarquer ses défauts. Une fois que vous commencez à apprendre une langue, vous êtes généralement encore occupé à apprendre à faire des choses ou vous êtes très impliqué dans sa tâche pour vous rendre compte de ses échecs (bien sûr, c'est à moins que vous ne commenciez à les apprendre d'un point de vue négatif, juste pour voir à quel point cela est pire. est comparé à votre langue préférée jusqu’à présent). Je dirais que vous ne connaissez pas vraiment une langue tant que vous n'êtes pas parfaitement conscient des domaines dans lesquels elle échoue.


Je ne peux pas être d'accord avec ça. Cela peut être vrai pour la première langue ou les deux langues que vous apprenez - vous ne pouvez simplement pas savoir quoi chercher, alors même les défauts de conception les plus grossiers sont impossibles à distinguer de la bonne façon de faire les choses. Une fois que vous avez appris quelques langues, vous devriez être capable de voir les défauts de langue peu de temps après avoir commencé à en apprendre une nouvelle. Mais pendant un moment dans votre développement, vous assimilerez à tort "différent" à "faux". Jusqu'à ce que vous appreniez quelques langues de chaque type majeur (procédural, OO, fonctionnel, déclaratif, etc.), vos jugements immédiats seront suspects.
Warren Young

2

Ma réponse personnelle à cela est quand,

  1. Je connais les bases pour écrire un programme simple au niveau de la production.
  2. J'ai passé au moins 3 heures consécutives à résoudre un problème qui semblait simple mais qui ne l'était pas.

À partir de là, je n'appellerais pas cela apprendre, mais maîtriser.


1

Au moment où votre application ou composant peut lire le courrier, c'est-à-dire la loi de Zawinski , qui stipule:

«Chaque programme tente de se développer jusqu'à ce qu'il puisse lire le courrier. Les programmes qui ne peuvent pas s’étendre sont remplacés par des programmes qui le peuvent. »Inventé par Jamie Zawinski (qui l’appelait la« loi de l’enveloppement logiciel ») pour exprimer sa conviction que tous les programmes vraiment utiles subissent une pression pour évoluer en kits d’outils et en plates-formes applicatives le courrier, dit-il, n’est qu’un effet secondaire de cela).

Cela a été mis à jour lorsque RSS est devenu populaire pour "... peut lire les flux RSS" et pourrait probablement être mis à jour ces jours-ci pour "... peut lire les flux Twitter". ;-)


0

Je pense que vous avez appris une langue quand vous ne la voyez pas. Vous ne voyez pas les cycles for et les accès aux données, mais le flux de travail de l'algorithme.

Vous ne jouez pas des tours avec le passage de paramètre et le traitement de tableau, les macros magiques. Vous ne considérez pas votre code comme un outil de marketing personnel à montrer à vos amis et à vos enseignants, mais à exprimer votre compréhension d'un problème et votre volonté à l'ordinateur de la manière la plus lisible.

Vous avez des habitudes qui vous aident à éviter beaucoup d'erreurs simplement en les suivant, comme: utilisez des blocs de code {} et () dans des expressions même si vous êtes absolument certain que "ce ne sera qu'une ligne" ou que "je ne suis pas dupe et je sais ordre de priorité des opérateurs ".

Vous ne comptez plus le nombre de classes, de modèles et d’API de structure que vous connaissez. C’est à cela que s'adressent intellisense, les références et les didacticiels et Google. Mais lorsque vous examinez un problème, vous savez immédiatement quelles parties il peut être scindé et avec quels outils et algorithmes vous allez les résoudre.

Ce que vous faites fonctionne , est élégant et petit . Vous aimez coder et trouvez facilement vos bugs. Oui, les maîtres font aussi des bugs parce qu'ils sont humains - mais ils les trouvent rapidement parce que leur structure de code les conduit au bon endroit.

Et réalisez enfin: vous avez appris à penser, analyser et résoudre des problèmes; par rapport à eux, le langage actuel est secondaire, juste la boîte actuelle de règles et d’outils.

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.