Si tu ne t'y connais pas en programmation, je devrais commencer par te dire qu'un langage, c'est juste un système de communication et un langage de programmation, au fond, c'est un langage artificiel conçu pour communiquer des instructions à une machine, typiquement un ordinateur.
 
Il existe de nombreux langages de programmations. Certains sont plus populaires que d'autres. Certains sont plus récents, certains sont plus puissants dans une certaine mesure.
 
Dans un monde idéal, chaque langage de programmation a un but précis. Donc un ingénieur devrait être capable de s'adapter au projet en cours et d'utiliser les technologies optimales pour ce projet. Mais la vérité est que, très souvent, nous avons tendance à nous familiariser avec tel ou tel langage et nous trouvons que certains langages sont pénibles ; ça dépend des caractéristiques du langage et du temps qu'on a passé à les utiliser. C'est un peu comme les langages naturels (les langages humains). Tu peux apprendre plusieurs langues (anglais, italien, espagnol, allemand, japonais, etc.) et où que tu ailles, il y aura un langage qui sera adéquat et que tu devrais utiliser, mais si ta langue de base c'est le français, pour t'exprimer, tu serais toujours plus à l'aise en français. Si tu te retrouves dans un pays où on ne parle pas français, tu devrais bien sûr t'adapter et parler la langue locale, mais en vérité tu serais soulagé d'y rencontrer des francophones et de parler français avec eux, vu que les mots te viennent plus naturellement.
 
La différence est que tu ne choisis pas ton langage humain de base. C'est généralement la langue que les gens parlent là où tu nais et grandis, le langage que tes parents parlent, le langage que tes amis et tes enseignants parlent dans ton école, etc.
Pour les langages de programmation, c'est différent. Les programmeurs peuvent faire le choix d'apprendre un langage en particulier même si leurs motivations peuvent être différentes. La problématique que je veux relever ici, c'est pourquoi et comment les programmeurs choisissent leurs langages de programmation ? Quelle est la meilleure façon de s'y prendre ?
 
D'après ce que j'ai observé, il y a 2 raisons principales qui poussent les gens à choisir un langage spécifique:
 
- Suivre la tendance: je suppose que ce sont surtout les débutants qui le font. Quand tu veux apprendre à programmer au début, tu ne sais pas grand-chose sur les différents langages mais il te faut bien commencer quelque part. Donc souvent, tu commences par le langage qui est populaire dans ton école, parmi tes profs/mentors, ou juste parmi tes amis. Bref, tu choisis les langages auquel tu es le plus exposé ou tu suis juste les conseils de tes proches. L'avantage c'est que tu aurais forcément autour de toi des gens qui se spécialisent dans les mêmes technologies, donc ils seront là pour te guider, te soutenir et vous pourriez travailler sur les mêmes projets. C'est un peu comme choisir d'acheter un jeu vidéo parce que tous tes amis ont le même jeu. Si tu es bloqué à un niveau dans le jeu, il y a probablement un de tes amis qui sait ce qu'il faut faire. En plus, vous pouvez échanger des disques, discuter de l'actualité de jeux, prendre plaisir à jouer ensemble, etc. En somme, tu deviens membre de la communauté et c'est à peu près la même chose quand tu choisis un langage de programmation.
 
- Exigence du projet: tout au long de leur carrière, les développeurs rencontrent plusieurs projets qu'ils se doivent de terminer. Les exigences de ces projets peuvent les amener à apprendre de nouveaux langages, de nouvelles technologies. Par exemple, si tu travailles pour une compagnie et que tu es affecté sur un nouveau projet en Python, tu aurais besoin d'apprendre Python. D'autant plus que dans certaines SSII, on se retrouve consultant expert dans n'importe quel domaine en quelques heures... Même si tu développes à ton propre compte, tu peux avoir à apprendre un nouveau langage imposé par tes clients ou qui satisfait mieux les besoins de tes utilisateurs (en terme de vitesse ou d'expérience utilisateur par exemple)
 
Personnellement, je pense que les deux arguments sont valides. Par rapport au premier argument, j'ajouterais juste qu'il ne s'agit pas de suivre la tendance juste pour suivre la tendance. Il faut faire des recherches sur les langages pour savoir quel est celui qui t'arrange le plus. Pour ce qui est de la deuxième raison, je comprends qu'il faille parfois faire des choses qu'on n'aime pas mais je conseillerais d'utiliser les langages et les technologies où l'on se sent le plus à l'aise, tant que c'est possible. Si la programmation doit être ton travail quotidien, c'est mieux de prendre plaisir à le faire. Fais ce que tu aimes, sérieux.
 
Pour ce qui est de mon expérience personnelle, je suppose que j'ai opté pour C#.NET tout d'abord parce que c'était très populaire dans l'institut ou je me suis sérieusement mis à la programmation (NIIT). Mais ça, c'est juste la raison pour laquelle j'ai commencé C#. Il y a plusieurs autres raisons qui font que je continue de l'utiliser. La raison principale est que je trouve que la programmation sous C# est "confortable", mais au début ce n'était pas parce que c'était le langage que j'utilisais le plus souvent. D'ailleurs C# n'était pas mon premier langage de programmation. J'avais programmé en VB et en Pascal avant ça, donc ce n'est pas comme si je suis resté bloqué sur mon premier langage. Quand je dis "confortable", je veux dire que je prends plaisir à écrire des applications en C#. Je préfèrerais apprécier mes heures de coding plutôt que d'écrire du code dans un langage bizarre que je trouve pénible. C'est vrai qu'il faut se soucier de certains aspects de l'application tels que la performance mais je crois qu'il faut surtout aimer ce qu'on fait.
 
Mais qu'est ce qui est si cool à propos de C# ? Je ne vais pas comparer C# aux autres langages et affirmer que c'est techniquement mieux que les autres. Ce n'est pas le but de cet article et comme je l'ai dit précédemment, il n'y a pas de langage parfait, il y a juste des langages adéquats pour les circonstances qui se présentent. Ce que je vais faire ici, c'est d'expliquer en quoi C#.NET améliore ma productivité (et probablement la tienne aussi, quand tu voudras bien l'essayer):
 
Je ne peux pas m'empêcher de mentionner que Visual Studio, l'environnement de travail de C#/.NET est probablement le meilleur IDE au monde. Ces fonctionnalités d'automation telles que l'IntelliSense et le glisser-déposer des contrôles permettent d'économiser beaucoup de temps et d'effort. Ce n'est pas de la paresse, c'est vraiment à propos de productivité. Que tu travailles en solo ou en équipe, tu fais toujours face à d'importantes tâches qui ne sont pas nécessairement liées à la programmation. Les automations t'évitent de perdre du temps sur les tâches évidentes et fréquentes, ce qui te permet de te concentrer sur les choses qui sont vraiment importantes.
 
Le langage en lui même est facile à apprendre, il suit la même syntaxe que C, C++, Java, etc. Donc quiconque connaît un de ces langages similaires peut s'y retrouver rapidement. Aussi, on dit souvent que C# est simple et élégant.
 
C# est puissant. Il me permet de faire tout ce que je veux, que ce soit un site Web, une application Web, un service Web, une application cliente, un jeu, une application Windows, un service Windows, un service Web, une application dans le navigateur (Silverlight), etc. Tandis que la plupart des langages ne peuvent être utilisées que pour un domaine précis, soit le serveur web, soit le navigateur, soit le client, C# peut tout faire. L'avantage évident est que tu n'as pas besoin d'apprendre un nouveau langage quand tu veux commencer un nouveau genre d'application.
 
Interoperabilité et intégration des langages:  les applications et les services C# peuvent aisément parler entre eux. En fait ils peuvent communiquer avec les autres applications .NET. Par exemple, tu peux facilement faire une application C# WPF qui reçoit des données d'un service VB.NET WCF et passer ces données à une application C# Silverlight.
 
Ok, maintenant tu sais pourquoi j'aime tant C#...