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?
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?
Réponses:
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.
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à.
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).
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.
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.
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
Un programmeur doit se concentrer sur la programmation et non sur un / des langage (s) spécifique (s).
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.
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.
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.
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.
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.
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.
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é.
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:
Programmation fonctionnelle - Haskell ou Lisp seraient des exemples ici et le changement de paradigme peut être un peu déroutant dans une certaine mesure.
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.
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.
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.