Est-ce que ça fait mal d'apprendre des morceaux de nombreux langages de programmation?

37

J'ai commencé ma carrière en programmation avec BASIC, en 9e année. J'ai appris un peu le BASIC en écrivant des programmes simples pour ajouter, soustraire et imprimer. Ensuite, je suis allé à l’université et j’ai pris l’informatique et l’informatique. La première année, on m'a enseigné le C et je le maîtrise bien.

Ensuite, j'ai appris le C ++ en deuxième année. Cela m'a juste appris une certaine connaissance de la POO. Maintenant, je fais du PHP (avec HTML). Je n'ai pas maîtrisé C ++, BASIC ou PHP. Je prévois maintenant de passer au développement mobile. Mais je sens que je n'ai pas tout couvert dans les langues que j'ai apprises.

Est-ce que c'est vraiment important?

Fuddin
la source

Réponses:

50

Nous apprenons tous des bouts de langages de programmation. Je ne considère la langue implémenteurs à ceux qui sont 10 sur 10 dans la connaissance d'une langue.

Apprendre plusieurs langues et paradigmes est le seul moyen de développer un "goût" pour ce que vous aimez ou que vous n'aimez pas. Si vous n’appreniez qu’une seule langue, vous ne pourriez même pas vraiment décider si vous l’aimiez ou non.

En fait, vous le faites correctement. Vous serez en mesure de réutiliser les principes fondamentaux les plus importants que vous apprenez dans chacun d'eux tout en vous exposant à différentes syntaxes, bibliothèques et cadres.

brian
la source
16
J'aime cette réponse, sauf que c'est moins "ce que vous aimez" et plus "le bon outil pour le travail". Personne ne devrait utiliser le même langage pour résoudre tous les problèmes. Cela ferait un mauvais développeur de logiciels. Chaque langue et paradigmes ont des avantages et des inconvénients.
user606723
1
Étant donné que les compilateurs et les interprètes ont des bogues, je ne pense pas qu'il soit humainement possible d'atteindre 10 pour la plupart des langues.
Jmoreno
6
Je ne pense pas que même ceux qui écrivent des compilateurs C ++ comprennent le C ++. Individuellement, je veux dire. De toute évidence, collectivement, ils doivent comprendre le langage dans son ensemble, mais je ne pense pas qu'il y ait une seule personne sur cette planète qui comprend tout cela. En fait, les membres du comité savent généralement très bien qu’ils ne comprennent que leur propre domaine de compétence. De même à Java: Martin Odersky a récemment déclaré qu'il pensait qu'il n'y avait que 3 personnes dans le monde qui comprennent les caractères génériques. Et du ton de l'e-mail, j'ai eu l'impression qu'il ne s'était pas inclus
Jörg W Mittag
2
dans ce groupe, même s'il a en fait conçu Java Generics (avec Phil Wadler, bien sûr). Bien que, pour être juste, des jokers aient été ajoutés à son dessin sans son consentement, en fait, contre sa dissidence expresse.
Jörg W Mittag
1
@ Brian, croyez-moi, vous n'avez pas besoin de connaître le langage pour pouvoir implémenter son compilateur. Vous pouvez simplement traduire les spécifications dans un code à l'aveuglette. En conséquence, vous apprendrez au moins quelques notions de base de la langue - c’est la raison pour laquelle c’est ma méthode préférée pour apprendre les nouvelles langues.
SK-logic
21

Si vous êtes encore à l'université, cela ne devrait pas vous inquiéter pour le moment de ne pas avoir l'impression de tout couvrir dans l'une des langues que vous connaissez. Comprendre les théories fondamentales communes derrière ces langages est beaucoup plus important. Une fois que vous avez compris les bases, vous pouvez apprendre les détails des autres langues quand vous en avez besoin.

FrustratedWithFormsDesigner
la source
5
Au cours de mes deux premières années, je pense que nous avons choisi une nouvelle langue toutes les trois à quatre semaines avec le langage Pascal qui a été la base de la plupart de nos projets (1982-1985), dont certains étaient des langages fonctionnels. Une partie du problème consistait à essayer de nous assurer que nous séparions la "programmation" du "codage"
Murph
12

Je crois que le plus important dans la programmation est de comprendre les différents paradigmes .

Dans votre question, vous avez mentionné la programmation orientée objet (OOP) . Si vous maîtrisez ce sujet, vous devriez pouvoir l'expliquer en utilisant uniquement du pseudo-code et essentiellement une représentation graphique de modélisation (telle que des diagrammes de classes UML).

Que vous décidiez d'utiliser Java, C ++ ou C # (...), cela dépend de vous ou de l'entreprise pour laquelle vous travaillez, mais ce qui est vraiment important, c'est de comprendre / reconnaître les différents problèmes et de choisir le meilleur modèle pour les résoudre . Un moyen très important de résoudre les problèmes de programmation consiste à utiliser les modèles de conception que vous pouvez découvrir dans cet ouvrage de référence .

En ce qui concerne les langages incorporés, je pense que l’important est de comprendre les différents problèmes associés à ces technologies.

Métaphoriquement, je comparerais cela à l'écriture d'un bon livre scientifique; ce qui compte, c’est la théorie que vous exposez, les problèmes que vous parvenez à résoudre, etc. Que vous écriviez le livre en anglais, en français ou en japonais n’est finalement pas si important.

Cela dit, il est également important de connaître les spécificités d'une langue particulière si vous souhaitez vous spécialiser dans cette technologie afin de l'exploiter de manière très efficace.

SRKX
la source
2
+1 pour les paradigmes. Il n'est pas important de se concentrer sur le sucre syntaxique du langage X ou Y (vous en avez bien sûr besoin si vous utilisez le langage X tous les jours au travail); ce qui est utile, c’est d’étudier différents paradigmes car, à mon humble avis, ils vous aident à être plus ouvert d’esprit et plus créatif dans la résolution de problèmes.
Sakisk
5

À mon avis, il est inutile de changer de langue très fréquemment. Vous ne serez jamais vraiment saisir l' un d'eux. Surtout certains comme le C ++, où certaines personnes passent une décennie à écrire le langage et dont le code ressemble toujours à du C.

Si vous ne pouvez pas écrire les meilleures pratiques dans une langue, ne continuez pas, IMO. Cela signifie que couvrir plus d'un couple prendra plusieurs années, voire des décennies.

DeadMG
la source
5

Je pense que ça ne fera pas de mal d'apprendre un peu de plusieurs langues, mais en même temps, vous devriez en apprendre au moins une ou deux en profondeur.

Giorgio
la source
3

J'ai utilisé plusieurs langues au cours de ma carrière, comme AMOS Basic, Java, C ++, PHP, VB6, Delphi, etc. Aujourd'hui, j'utilise C #, JavaScript, Ruby et un peu de Clojure au travail, et j'ai également joué avec Pyhton, Erlang, Common Lisp et Scheme.

Mais cet automne, je voulais créer un calendrier de Noël spécial pour mon blog et j'ai décidé de me familiariser avec un problème particulier et de le résoudre en 24 langues supplémentaires. Ce fut une expérience formidable, j'ai beaucoup appris et je vous le recommande vivement si vous avez de l'expérience en programmation.

Ma réponse à vous est la suivante: Apprenez très bien quelques langues (elles devraient être très différentes), mais assurez-vous d’échantillonner et de vous familiariser avec de nombreuses langues.

Aujourd'hui, il est important de bien connaître à la fois la programmation fonctionnelle et la programmation orientée objet. Vous devez également être à l'aise dans un langage très statique et très dynamique.

PS: Mon blog est en norvégien, mais si vous souhaitez voir la liste des langues que j'ai couvertes, vous pouvez regarder ici .

Torbjørn
la source
2

J'apprends ce que j'ai besoin d'apprendre dans une langue particulière lorsque j'ai besoin d'apprendre quelque chose de nouveau. Le "déclencheur" qui me dit que je dois approfondir une langue est qu'un morceau de code particulier a l'air laid ou maladroit, semble inaccessible ou est difficile à tester ou à commenter. Souvent, ces déclencheurs témoignent de mon manque de connaissance d'un idiome de programmation, d'un style, d'une structure de données, etc.

David Pointer
la source
2

Apprendre plusieurs langages de programmation est une bonne pratique et est nécessaire de nos jours; Autant de fois que vous ne pouvez pas toujours utiliser la langue de votre choix pour tout.

Les avantages de voir comment les autres langues fonctionnent vous aideront en tant que programmeur; même si, occasionnellement, lorsque vous sautez autour de vous, faites des erreurs syntaxiques (par exemple, vérifiez l'inégalité !=, ~=ou <>). Vous devez toutefois veiller à apprendre davantage que la syntaxe d'une langue, mais également les meilleures pratiques dans une langue, ainsi que de bonnes compétences générales en ingénierie logicielle. Si vous avez appris le C puis le C ++, assurez-vous que lorsque vous écrivez du code C ++, il est dans le style du code C ++ (plutôt que simplement du C avec quelques nouveaux mots-clés. C’est-à-dire que vous avez plusieurs classes / objets, préférez les références / pointeurs intelligents sur les pointeurs bruts, etc.

dr jimbob
la source
1
Ne me lancez pas sur If x <b> = </ b> 5 Alors. Je dois revérifier tout mon code C pendant environ une semaine après avoir conservé quoi que ce soit en rapport avec BASIC.
user606723
2

il est bon d’étudier au moins les langues sous différents paradigmes de programmation! Langage procédural, déclaratif, fonctionnel, orienté objet, prototypique et dynamique - chaque classe de programmation offre son propre aperçu de la manière d’organiser et de résoudre un problème. Finalement, vous découvrez un ou plusieurs paradigmes avec lesquels vous êtes le plus productif et le plus heureux, et vous les utilisez.

rgordon0
la source
2

Définitivement pas. Bien sûr, vous voulez aussi vous assurer que vous apprenez différents styles de langues. Apprendre à la fois avec C # et Java ne vous ouvrira pas l'esprit, mais apprendre à Java et Haskell le fera.

Découvrez le livre Seven Languages ​​in Seven Weeks , qui vous guidera dans une introduction à Ruby, IO, Scala, Erlang, Prolog, Clojure et Haskell. Si vous aimez les langues, vous allez adorer ce livre.

Zachary K
la source
1
L'apprentissage de C # après Java pourrait vous éclairer grâce à sa programmation fonctionnelle (et aux autres fonctionnalités manquant à Java). Mais si c'est juste pour apprendre, Haskell sera probablement beaucoup mieux, à cause de sa pureté fonctionnelle.
svick
1

Eh bien, C et C ++ ne vous feront aucun mal en programmation mobile. Vous pouvez utiliser les deux avec Cocoa Touch ou le NDK Android, et parfois vous avez besoin de performances. En outre, vous souhaitez parfois écrire parce que vous souhaitez écrire du code qui s'exécute sur plusieurs plates-formes. Dans ce cas, si vous n'utilisez pas un framework tiers, vous pouvez écrire votre application en C / C ++ et la compiler dans des wrappers spécifiques à la plateforme pour les éléments natifs requis (par exemple, le seul moyen d'obtenir un contexte OpenGL. sur iPhone est en utilisant la classe native CAEAGLLayer).

Donc, c'est comme si plus vous aviez d'outils dans le tiroir, plus vous disposiez d'options pour faire le travail. Vous constaterez que vous avez une préférence pour certains, car vous êtes spécialisé dans différents types de tâches. Si vous ne faites que du matériel d'interface utilisateur, C ne sera peut-être pas votre favori de tous les temps. Je m'inquiéterais davantage du genre de choses que je voulais faire, et j'apprendrais ensuite quel outil je devais les faire.

Rab
la source
1

En fait, c’est aussi utile que d’apprendre un peu de français, d’espagnol, d’anglais, d’arabe, d’hindi et de chinois sans jamais connaître l’un d’eux.

Mehrdad
la source
6
Je n'ai aucune idée de ce que tu essayais de dire par là.
svick
Vous vous rendez compte que la plupart d'entre nous ne connaissent pas "bien" même nos langues maternelles, n'est-ce pas?
Spidey
1

Au contraire, je pense que ça fait mal quand je ne suis pas / ne suis pas capable d'apprendre un nouveau langage de programmation. Cela peut être dû au manque de temps ou à d’autres raisons. Autant que je sache, les programmeurs / développeurs de logiciels adorent défier les langages, proposer de meilleurs produits / produits, et lorsque vous voyez que vous faites toujours la même chose, vous ne vous sentez pas bien. Donc, vous voulez un nouveau défi, une nouvelle langue, quelque chose de nouveau à apprendre et à mettre plus de produits par elle.

Donc, je pense que cela me passionne de suivre de nouveaux langages, de nouvelles bibliothèques, de nouvelles approches, de nouvelles technologies. Mais je n'ai pas le temps de tous les avoir et il se peut que les gens ne puissent pas toujours aller assez loin. Alors ça fait mal de ne pas en apprendre plus; mais ne fait pas mal pour en savoir plus.

Yasin Okumuş
la source
0

Je suis d’accord avec brian, FrustratedWithFormsDesign et SRKX, mais j’aimerais ajouter qu’à l’université, élargir vos connaissances avec de multiples langages et paradigmes de programmation est le moyen souhaitable de devenir un bon professionnel.

Il est vraiment improbable que vous sortiez de l'université en tant que programmeur formé. La programmation est un métier difficile et vous aurez besoin des années dans l'industrie pour travailler aux côtés de bons programmeurs, assister à de bons programmes de formation et à des réunions communautaires, et surtout, vous devrez faire face aux problèmes de métier et échouer beaucoup jusqu'à ce que vous appreniez à maîtriser il.

Apprendre de multiples paradigmes, plusieurs langues, résoudre les multiples problèmes de notre région, vous donnera une bonne base pour apprendre le métier par vous-même, au quotidien, tout en agissant en tant que professionnel du secteur.

Vous pouvez assister à un cours sur les compilateurs, mais vous n’allez pas devenir un concepteur de langage, un créateur ou même un développeur de compilateur. Vous obtiendrez les étapes, les processus, les problèmes et les solutions de base, ce qui vous donnera l'avantage de pouvoir adapter ces connaissances à un large éventail de problèmes.

Spidey
la source
0

Réponse courte: non

Réponse longue: Une grande partie du travail d'un programmeur, d'un ingénieur en logiciel ou d'un concepteur est indépendante d'un langage spécifique mais très dépendante d'une certaine méthodologie. Par exemple, la programmation orientée objet concerne essentiellement l'emplacement des éléments en mémoire et au moment de l'exécution, leur accessibilité et leur disponibilité pour une utilisation ultérieure (héritage et encapsulation). Les implémentations diffèrent, telles que Java ayant un objet de classe hérité de niveau supérieur, que cela vous plaise ou non, et C ++ n'ayant aucun élément non spécifié.

Beaucoup de langues partagent des fonctionnalités (et beaucoup divergent). La syntaxe diffère, bien sûr, et il est plus délicat de comparer des paradigmes totalement différents, comme impératif et fonctionnel. Mais le traitement des chaînes est en grande partie identique, où que vous alliez, une fois que vous avez résolu le problème de la syntaxe, de l'index et de la mutabilité. Toute langue avec typage statique a généralement une méthode de casting et de coercition, mais comment et quand vous pouvez le faire dépend du concepteur de langage.

La langue est l'outil. Vous mettez juste plus d'outils à votre ceinture. Mais l'outil est aussi bon que l'artisan qui le manie.

Maintenant, combien vous en apprenez est un choix personnel. Je n'apprendrais jamais une langue pour apprendre une nouvelle. Tout choix d’apprendre une nouvelle langue est dicté par une exigence de cours (il faut apprendre js, php et R pour une seule classe l’année dernière), une exigence de projet existante (si 90% du travail est effectué en perl 6 vous êtes embauché (il en va de même pour les 10% restants après) ou un avantage spécifique à l'application (R sur disons, Java combiné à une bibliothèque de données sucrée pour l'analyse statistique).

Cela dit, vous voulez savoir ce qui est disponible et disponible. Mon collège a donné un cours sur ce sujet, les concepts du langage de programmation . Il s’agissait d’un vaste cours d’aperçu, et non d’un calcul rigoureux en mathématiques ou lié au codage, couvrant les bases de ce qui pourrait être considéré comme pratique plutôt que de l’informatique théorique. C'était un bon cours et j'aurais aimé que ce soit offert quelque chose en 1ère ou 2ème année plutôt qu'en 3ème et 4ème. Le texte était Concepts of Programming Languages . Ne dites pas que vous devez sortir et lire ce livre, mais cela élargirait certainement vos horizons.

Justin Reeves
la source
0

Eh bien, je pense que vous n’avez pas à apprendre chaque langue. Mais essayez d’apprendre des fonctionnalités de base qui seront également nécessaires dans d’autres langues.
Par exemple, les concepts OOPS sont obligatoires dans tous les langages, qu'il s'agisse de Java , de PHP ou de tout autre langage.
Les concepts d' allocation de mémoire sont assez similaires dans de nombreux langages de programmation. Ce genre de sujets à ne jamais manquer.
Chaque langue a sa grammaire et ses règles, il en va de même pour les langages de programmation; Dennis Ritchie lui-même a accepté ce fait. Il faut donc apprendre la grammaire de cette langue.
Mais à mon avis, vous devez apprendre les facteurs non communs entre deux langages de programmation. Ils vous permettront d'identifier quelle langue signifie quoi. C ++ est une base de programmation orientée objet (OOP). Ainsi, une fois que vous avez compris les concepts de la programmation orientée objet , vous apprenez la grammaire que vous verrez également en PHP et Java.
Mon flux d’apprentissage était le suivant:
Visual Basic 5 (partiel) -> HTML 2.0 (partiel) -> C (partiel) -> CPP (partiel) -> Java (partiel)
, puis j’ai réappris le langage C , suivi de C ++, suivi de JAVA ( complète cette fois) puis je suis passé à Android car je connaissais Java et XML(partiel) et l'a appris dans le temps moyen. La première tentative m'a appris moins, mais à la deuxième tentative, assurez-vous de tout apprendre ce qui vous aidera la prochaine fois.

Sandeep Pareek
la source
Cet article est plutôt difficile à lire (mur de texte). Pourriez - vous l' esprit modifier ing dans une meilleure forme?
Gnat