Tutoriel pour Apprendre à programmer en C# sur .NET
...
Partie 1 : Les fondamentaux
Alors, par quoi on commence ? Par les bases pardi !
Dans cette première partie, nous allons découvrir à quoi ressemble le langage C# et ce qu'est .NET. Nous apprendrons à manipuler Visual Studio, l'outil de travail du développeur C#. Enfin et surtout, nous allons créer nos premiers programmes console en manipulant nos premières instructions en C#.
Cette partie ne sera pas la plus graphique et la plus interactive, mais il faut bien commencer quelque part ! Prenez le soin de bien apprendre toutes les notions théoriques, elles vous seront indispensables pour la suite.
Nous aurons l'occasion de pratiquer avec deux petits TP pour vérifier que vous avez bien suivi les premiers chapitres.
Vous êtes prêts ? Moi aussi, ça tombe bien !Allez c'est parti, on y va !
Introduction
Dans ce tout premier chapitre, nous allons découvrir ce qu'est le C#, son histoire et son rapport avec le framework .NET.
D'ailleurs, vous ne savez pas ce qu'est un framework ? Ce n'est pas grave, je vous rappelle que c'est un cours pour débutants,
tout cela sera expliqué !
Avant d'aller plus loin, une petite préface vous présentera l'esprit du tutoriel et vous donnera quelques conseils pour le suivre dans les meilleures conditions.
Préface
À qui s’adresse ce tutoriel ?
Aux débutants ! Pas besoin d'avoir fait de la programmation avant pour suivre ce tutoriel ! Je vais donc faire de mon mieux pour
détailler au maximum mes explications, c'est promis.
Mon but est réellement de rendre ce tutoriel accessible pour les débutants.
Bien sûr, il y en a peut-être parmi vous qui ont déjà fait du C, du C++, du Java... Évidemment, si vous avez déjà programmé, ce sera plus facile pour vous (surtout pour la première partie qui présente les bases du langage).Attention néanmoins de ne pas vouloir aller trop vite : le C# ressemble à d'autres langages mais il a quand même ses spécificités !
Esprit du tutoriel
Nous allons découvrir ensemble de nombreuses choses en apprenant à programmer en C#. Il y aura bien entendu des TP pour vous faire pratiquer, afin que vous puissiez vous rendre compte de ce que vous êtes capables de faire après avoir lu plusieurs chapitres plus théoriques.
Néanmoins, je veux que vous soyez actifs ! Ne vous contentez pas de lire passivement mes explications, même lorsque les chapitres sont plutôt théoriques ! Testez les codes et les manipulations au fur et à mesure. Essayez les petites idées que vous
avez pour améliorer ou adapter légèrement le code. Sortez un peu des sentiers battus du tutoriel : cela vous fera pratiquer et vous permettra de découvrir rapidement si vous avez compris ou non le chapitre.
Pas d'inquiétude, si jamais vous bloquez sur quoi que ce soit qui n'est pas expliqué dans ce cours, la communauté qui sillonne
les forums saura vous apporter son aide précieuse. Au passage, je tiens à vous rappeler que la section "Commentaires" est exclusivement destinée aux commentaires et n'a pas pour vocation de regrouper les questions concernant ce tutoriel ; les forums sont là pour ça.
Durée d’apprentissage
Il faut compter plusieurs semaines, voire plusieurs mois, pour atteindre un niveau solide, vous permettant de commencer à faire des choses sérieuses plutôt que de "bricoler". D'ailleurs merci de m'informer du temps que vous a pris la lecture de ce cours pour que je puisse indiquer aux autres lecteurs une durée moyenne de lecture.
Composition du cours
Un lecteur attentif aura remarqué que le titre est "Apprenez à programmer en C# sur .NET" (qu ise prononce "Apprenez à programmer en cé sharpe sur dotte nette").
Alors, allez-vous apprendre le C# ou le .NET ? En fait, vous allez voir que l'un ne va pas sans l'autre :
C# : c'est le langage, la "langue" dans laquelle vous allez parler. Vous allez par exemple pouvoir dire "Ouvre une fenêtre en haut à gauche de l'écran".
.NET : ce sont les outils dont vous avez besoin pour travailler. C'est bien beau de parler, avec le langage, mais sans le marteau et le tournevis pour mettre en place la fenêtre, vous ne feriez pas grand chose.
.NET est un ensemble de composants informatiques, que l'on appelle framework, qui vous permet d'avoir accès à la création et manipulation de fenêtres, à l'écriture de fichiers, aux fonctionnalités réseau de la machine, à la manipulation de fichiers XML, etc.
Le tutoriel est loin d'être fini, vous ne voyez donc pas toutes les parties. Voici ce que j'envisage, pour l'instant, de traiter :
Les fondamentaux
Notions importantes
Créer des applications riches en design avec WPF
Notions avancées
Communiquer grâce au réseau
Le début de ce cours sera plutôt théorique. Pour savoir coder, il faut commencer par apprendre les bases du langage, c'est un passage obligé.
Petit à petit j'introduirai la pratique pour illustrer certains points importants ; cela vous permettra de mieux comprendre des fonctionnements et surtout de bien mémoriser le cours.
Le code
Parce que c'est la norme chez la quasi-totalité des développeurs professionnels, le code source que nous allons voir sera écrit en anglais. On prend l'habitude d'écrire en anglais car le code peut ensuite facilement être relu par des personnes d'autres nationalités, anglophones ou non.
Imaginez qu'un espagnol souhaite corriger le code d'un allemand, et que le tout est relu par un français... Si chacun écrit dans sa langue natale, cela donne quelque chose de vraiment horrible (ça sent le vécu ).
Rassurez-vous ! Ce n'est pas parce que, dans le code source, la "fenêtre" sera appelée "window" que ce cours sera plus difficile !
Toutes mes explications seront en français, et les commentaires dans le code pour vous guider seront en général en français.
J'ai fait le choix d'écrire le code source en anglais pour vous habituer à travailler avec du code anglais, car c'est ce que font les
programmeurs dignes de ce nom(pas que chez les professionnels d'ailleurs). Pas besoin d'être un génie en anglais pour lire et écrire du code dans cette langue.
Si vous avez vraiment du mal à parler anglais, utilisez un dictionnaire ou des traductions en ligne. Vous y trouverez forcément votre bonheur et ce n'est pas grave si vous ne faites pas des traductions parfaites, l'important c'est de
pouvoir être compris par des gens qui ne parlent pas le français.
On dit qu'il vaut mieux programmer en mauvais anglais qu'en bon français, et c'est un conseil très sérieux!
En outre, je vous conseille de prendre les mêmes habitudes d'écriture que moi, aussi bien pour la mise en forme que pour la façon de nommer les choses. Pourquoi ? Parce que coder c'est bien, mais coder proprement, c'est mieux. En fait, il s'agit de conventions de codage respectées par "ceux qui savent programmer". Respecter ces conventions montre déjà que vous n'êtes pas le premier venu qui écrit n'importe quoi. Après assimilation de ce tutoriel, vous serez un vrai développeur qui a des habitudes de développeur. Il vous sera ainsi plus facile de communiquer avec d'autres personnes.
Allez plus loin !
N'hésitez pas à regarder d'autres tutoriels portant sur le sujet. Il est toujours bon de diversifier ses sources pour avoir différentes approches du sujet.
De manière générale, je vous recommande de ne pas hésiter à tester les codes que je présenterai au fur et à mesure. Surtout, si vous avez des idées pour les améliorer un peu, faites-le ! Ça ne marchera pas à tous les coups, mais cela vous fera beaucoup plus progresser que vous ne le pensez ! Ne comptez donc pas uniquement sur les TP pour pratiquer, ce serait vraiment dommage.
Sachez aussi que je suis ouvert à toutes remarques, critiques, questions, insultes... portant sur ce tutoriel. N'hésitez donc pas à poster des commentaires, surtout si votre message peut être utile pour d'autres personnes. Par contre, veuillez ne pas m'envoyer de MP, sauf en cas de force majeure, parce que je n'aurai pas le temps de vous répondre individuellement (la rédaction de ce tutoriel en elle-même nécessite déjà beaucoup de temps), et que s'il s'agit d'une demande d'aide, les forums sont là pour ça et on vous y répondra plus rapidement que moi.
Comment sont créés les programmes ?
Un programme : qu'est-ce que c'est ?
Comme vous le savez, votre ordinateur exécute des programmes pour effectuer des tâches. Vous utilisez des programmes tous les jours :
votre navigateur web ;
votre traitement de texte ;
votre lecteur de musique ;
vos jeux vidéo.
Ce sont tous des programmes !
Votre ordinateur ne peut exécuter ces programmes que s'ils sont écrits dans le seul langage qu'il comprend, le binaire :
L'ordinateur lit les programmes en langage binaire.
Le processeur de votre ordinateur lit et comprend ce code, qui lui indique ce qu'il doit faire.
Mais... on ne va pas écrire des programmes en binaire quand même ?! C'est trop compliqué !
Bien sûr que non. Personne n'écrit sérieusement des programmes directement en binaire. C'est, comme vous le dites, trop compliqué. Voilà pourquoi on écrit les programmes dans des langages plus simples et plus "humains".
Il est en fait possible de "coder directement en binaire". Ça s'appelle l'assembleur. Les instructions sont très basiques, pour que le processeur les comprenne directement. Néanmoins, dans ce langage, il faut beaucoup de temps et d'efforts
pour faire quelque chose d'aussi simple qu'une calculatrice.
Code :Autre
mov %eax , %edx
mov $4 , %eax
mov $1 , %ebx
mov $BUFF , %ecx
int $0x80
Les instructions assembleur que vous voyez ci-dessus correspondent directement à du binaire comme 00101111
01000101.
Comment créer des programmes "simplement" ?
Il existe des centaines de langages de programmation dont le but est de simplifier l'écriture de ce code binaire/assembleur. En effet, les langages que l'on utilise traditionnellement pour programmer, comme le C et le C++, nous permettent de créer des programmes bien plus facilement qu'en assembleur (binaire).
Je vais vous expliquer rapidement le principe de fonctionnement des langages "traditionnels" comme le C et le C++, puis je vous présenterai le fonctionnement du C#. Comme le C# est plus récent, on a pu améliorer son fonctionnement par rapport au C et au C++ comme nous allons le voir.
Langages traditionnels : la compilation
Avec des langages traditionnels comme le C et le C++, on écrit des instructions simplifiées, lisibles par un humain comme :
Code : C
printf("Bonjour");
Ce n'est pas vraiment du français, mais c'est quand même beaucoup plus simple que le binaire ou l'assembleur vous avouerez !
Bien entendu, l'ordinateur ne comprend pas ces instructions. Lui, il veut du binaire, du vrai.
Pour obtenir du binaire à partir d'un code écrit en C ou C++, on doit effectuer ce qu'on appelle une compilation. C'est un programme qui traduit le code source en binaire exécutable :
La compilation permet de traduire le code source en binaire.
Cette méthode est efficace et a fait ses preuves. De nombreuses personnes développent toujours en C et C++ aujourd'hui.
Néanmoins, ces langages ont aussi un certain nombre défauts dus à leur ancienneté. Par exemple, un programme compilé (binaire) ne fonctionne que sur la plateforme sur laquelle il a été compilé. Cela veut dire que si vous compilez sous Windows,
vous obtenez un programme qui fonctionne sous Windows uniquement (et sur un type de processeur particulier). Impossible de
le faire tourner sous Mac OS X ou Linux simplement, à moins de le recompiler sous ces systèmes d'exploitation (et d'effectuer au passage quelques modifications).
...
Les programmes binaires ont ce défaut : ils ne fonctionnent que pour un seul type de machine. Pour les développeurs qui
écrivent le code, c'est assez fastidieux à gérer.
Langages récents : le code managé
Les langages récents, comme le C# et le Java, résolvent ce problème de compatibilité tout en ajoutant de nombreuses fonctionnalités appréciables au langage, ce qui permet de réaliser des programmes beaucoup plus efficacement.
La compilation en C# ne donne pas un programme binaire, contrairement au C et au C++. Le code C# est en fait transformé dans un langage intermédiaire (appelé CIL, anciennement MSIL) que l'on peut ensuite distribuer à tout le monde. Ce code, bien sûr, n'est pas exécutable lui-même, car l'ordinateur ne comprend que le binaire.
Regardez bien ce schéma pour comprendre comment cela fonctionne :
Traitement du code pour en faire un programme exécutable.
Le code en langage intermédiaire (CIL) correspond au programme que vous allez distribuer. Sous Windows, il prend l'apparence d'un .exe comme les programmes habituels, mais il ne contient en revanche pas de binaire.
Lorsqu'on exécute le programme CIL, celui-ci est lu par un autre programme (une machine à analyser les programmes, appelée CLR) qui le compile cette fois en vrai programme binaire. Cette fois, le programme peut s'exécuter, ouf !
Ça complique bien les choses quand même ! Est-ce bien utile ?
Cela offre beaucoup de souplesse au programmeur. Le code en langage intermédiaire (CIL) peut être distribué à tout le monde. Il
suffit d'avoir installé la machine CLR sur son ordinateur, qui peut alors lire les programmes en C# et les compiler "à la volée" en binaire. Avantage : le programme est toujours adapté à l'ordinateur sur lequel il tourne.
La CLR vérifie aussi la sécurité du code ; ainsi en C du code mal pensé (par exemple une mauvaise utilisation des pointeurs) peut entraîner des problèmes pour votre PC, ce que vous risquez beaucoup moins avec le C#. De plus, la CLR dispose du JIT debugger qui permet de lancer Visual Studio (le logiciel qui va nous servir à faire des programmes) si une erreur survient dans un programme .NET pour voir ce qui a causé cette erreur.
Cette complexité ralentit légèrement la vitesse d'exécution des programmes (par rapport au C ou au C++), mais la différence est aujourd'hui vraiment négligeable par rapport aux gains que cela apporte. On parle de code managé.
Le langage C# et le framework .NET
Qu'est-ce que le langage C# ? Qui l'a créé ? Quel est le rapport avec .NET ? Et puis, qu'est-ce que c'est .NET ?
Autant de questions auxquelles nous allons répondre maintenant.
Le C# ressemble beaucoup au Java dont il est inspiré, bien que les deux langages présentent des différences notables. Il reprend aussi certaines notions du C/C++ mais s'en démarque sensiblement.
Seul, il ne sert pas à grand chose. En effet, le langage a besoin d'une boîte à outils pour exécuter facilement des actions courantes, comme ouvrir un fichier, communiquer sur le réseau, ouvrir une fenêtre, réduire une fenêtre, accéder à une base de données, etc.
Cette boîte à outils, que l'on utilise quasi-systématiquement en C#, c'est le framework .NET. C'est un peu comme un énorme couteau suisse qui offre toutes les possibilités dont vous pouvez rêver.
Ce framework .NET n'est pas forcément lié au langage C#. Il est aussi possible de l'utiliser dans d'autres langages comme Visual Basic (plus simple, pour les programmeurs occasionnels), J# (plus proche de Java pour les habitués de Java) ou encore F# (langage fonctionnel).
Tutoriel pour Apprendre à programmer en C# sur .NET
...
Partie 1 : Les fondamentaux
Alors, par quoi on commence ? Par les bases pardi !
Dans cette première partie, nous allons découvrir à quoi ressemble le langage C# et ce qu'est .NET. Nous apprendrons à manipuler Visual Studio, l'outil de travail du développeur C#. Enfin et surtout, nous allons créer nos premiers programmes console en manipulant nos premières instructions en C#.
Cette partie ne sera pas la plus graphique et la plus interactive, mais il faut bien commencer quelque part ! Prenez le soin de bien apprendre toutes les notions théoriques, elles vous seront indispensables pour la suite.
Nous aurons l'occasion de pratiquer avec deux petits TP pour vérifier que vous avez bien suivi les premiers chapitres.
Vous êtes prêts ? Moi aussi, ça tombe bien !Allez c'est parti, on y va !
Introduction
Dans ce tout premier chapitre, nous allons découvrir ce qu'est le C#, son histoire et son rapport avec le framework .NET.
D'ailleurs, vous ne savez pas ce qu'est un framework ? Ce n'est pas grave, je vous rappelle que c'est un cours pour débutants,
tout cela sera expliqué !
Avant d'aller plus loin, une petite préface vous présentera l'esprit du tutoriel et vous donnera quelques conseils pour le suivre dans les meilleures conditions.
Préface
À qui s’adresse ce tutoriel ?
Aux débutants ! Pas besoin d'avoir fait de la programmation avant pour suivre ce tutoriel ! Je vais donc faire de mon mieux pour
détailler au maximum mes explications, c'est promis.
Mon but est réellement de rendre ce tutoriel accessible pour les débutants.
Bien sûr, il y en a peut-être parmi vous qui ont déjà fait du C, du C++, du Java... Évidemment, si vous avez déjà programmé, ce sera plus facile pour vous (surtout pour la première partie qui présente les bases du langage).Attention néanmoins de ne pas vouloir aller trop vite : le C# ressemble à d'autres langages mais il a quand même ses spécificités !
Esprit du tutoriel
Nous allons découvrir ensemble de nombreuses choses en apprenant à programmer en C#. Il y aura bien entendu des TP pour vous faire pratiquer, afin que vous puissiez vous rendre compte de ce que vous êtes capables de faire après avoir lu plusieurs chapitres plus théoriques.
Néanmoins, je veux que vous soyez actifs ! Ne vous contentez pas de lire passivement mes explications, même lorsque les chapitres sont plutôt théoriques ! Testez les codes et les manipulations au fur et à mesure. Essayez les petites idées que vous
avez pour améliorer ou adapter légèrement le code. Sortez un peu des sentiers battus du tutoriel : cela vous fera pratiquer et vous permettra de découvrir rapidement si vous avez compris ou non le chapitre.
Pas d'inquiétude, si jamais vous bloquez sur quoi que ce soit qui n'est pas expliqué dans ce cours, la communauté qui sillonne
les forums saura vous apporter son aide précieuse. Au passage, je tiens à vous rappeler que la section "Commentaires" est exclusivement destinée aux commentaires et n'a pas pour vocation de regrouper les questions concernant ce tutoriel ; les forums sont là pour ça.
Durée d’apprentissage
Il faut compter plusieurs semaines, voire plusieurs mois, pour atteindre un niveau solide, vous permettant de commencer à faire des choses sérieuses plutôt que de "bricoler". D'ailleurs merci de m'informer du temps que vous a pris la lecture de ce cours pour que je puisse indiquer aux autres lecteurs une durée moyenne de lecture.
Composition du cours
Un lecteur attentif aura remarqué que le titre est "Apprenez à programmer en C# sur .NET" (qu ise prononce "Apprenez à programmer en cé sharpe sur dotte nette").
Alors, allez-vous apprendre le C# ou le .NET ? En fait, vous allez voir que l'un ne va pas sans l'autre :
C# : c'est le langage, la "langue" dans laquelle vous allez parler. Vous allez par exemple pouvoir dire "Ouvre une fenêtre en haut à gauche de l'écran".
.NET : ce sont les outils dont vous avez besoin pour travailler. C'est bien beau de parler, avec le langage, mais sans le marteau et le tournevis pour mettre en place la fenêtre, vous ne feriez pas grand chose.
.NET est un ensemble de composants informatiques, que l'on appelle framework, qui vous permet d'avoir accès à la création et manipulation de fenêtres, à l'écriture de fichiers, aux fonctionnalités réseau de la machine, à la manipulation de fichiers XML, etc.
Le tutoriel est loin d'être fini, vous ne voyez donc pas toutes les parties. Voici ce que j'envisage, pour l'instant, de traiter :
Les fondamentaux
Notions importantes
Créer des applications riches en design avec WPF
Notions avancées
Communiquer grâce au réseau
Le début de ce cours sera plutôt théorique. Pour savoir coder, il faut commencer par apprendre les bases du langage, c'est un passage obligé.
Petit à petit j'introduirai la pratique pour illustrer certains points importants ; cela vous permettra de mieux comprendre des fonctionnements et surtout de bien mémoriser le cours.
Le code
Parce que c'est la norme chez la quasi-totalité des développeurs professionnels, le code source que nous allons voir sera écrit en anglais. On prend l'habitude d'écrire en anglais car le code peut ensuite facilement être relu par des personnes d'autres nationalités, anglophones ou non.
Imaginez qu'un espagnol souhaite corriger le code d'un allemand, et que le tout est relu par un français... Si chacun écrit dans sa langue natale, cela donne quelque chose de vraiment horrible (ça sent le vécu ).
Rassurez-vous ! Ce n'est pas parce que, dans le code source, la "fenêtre" sera appelée "window" que ce cours sera plus difficile !
Toutes mes explications seront en français, et les commentaires dans le code pour vous guider seront en général en français.
J'ai fait le choix d'écrire le code source en anglais pour vous habituer à travailler avec du code anglais, car c'est ce que font les
programmeurs dignes de ce nom(pas que chez les professionnels d'ailleurs). Pas besoin d'être un génie en anglais pour lire et écrire du code dans cette langue.
pouvoir être compris par des gens qui ne parlent pas le français.
On dit qu'il vaut mieux programmer en mauvais anglais qu'en bon français, et c'est un conseil très sérieux!
En outre, je vous conseille de prendre les mêmes habitudes d'écriture que moi, aussi bien pour la mise en forme que pour la façon de nommer les choses. Pourquoi ? Parce que coder c'est bien, mais coder proprement, c'est mieux. En fait, il s'agit de conventions de codage respectées par "ceux qui savent programmer". Respecter ces conventions montre déjà que vous n'êtes pas le premier venu qui écrit n'importe quoi. Après assimilation de ce tutoriel, vous serez un vrai développeur qui a des habitudes de développeur. Il vous sera ainsi plus facile de communiquer avec d'autres personnes.
Allez plus loin !
N'hésitez pas à regarder d'autres tutoriels portant sur le sujet. Il est toujours bon de diversifier ses sources pour avoir différentes approches du sujet.
De manière générale, je vous recommande de ne pas hésiter à tester les codes que je présenterai au fur et à mesure. Surtout, si vous avez des idées pour les améliorer un peu, faites-le ! Ça ne marchera pas à tous les coups, mais cela vous fera beaucoup plus progresser que vous ne le pensez ! Ne comptez donc pas uniquement sur les TP pour pratiquer, ce serait vraiment dommage.
Sachez aussi que je suis ouvert à toutes remarques, critiques, questions, insultes... portant sur ce tutoriel. N'hésitez donc pas à poster des commentaires, surtout si votre message peut être utile pour d'autres personnes. Par contre, veuillez ne pas m'envoyer de MP, sauf en cas de force majeure, parce que je n'aurai pas le temps de vous répondre individuellement (la rédaction de ce tutoriel en elle-même nécessite déjà beaucoup de temps), et que s'il s'agit d'une demande d'aide, les forums sont là pour ça et on vous y répondra plus rapidement que moi.
Comment sont créés les programmes ?
Comme vous le savez, votre ordinateur exécute des programmes pour effectuer des tâches. Vous utilisez des programmes tous les jours :
votre navigateur web ;
votre traitement de texte ;
votre lecteur de musique ;
vos jeux vidéo.
Ce sont tous des programmes !
Votre ordinateur ne peut exécuter ces programmes que s'ils sont écrits dans le seul langage qu'il comprend, le binaire :
L'ordinateur lit les programmes en langage binaire.
Le processeur de votre ordinateur lit et comprend ce code, qui lui indique ce qu'il doit faire.
Mais... on ne va pas écrire des programmes en binaire quand même ?! C'est trop compliqué !
Bien sûr que non. Personne n'écrit sérieusement des programmes directement en binaire. C'est, comme vous le dites, trop compliqué. Voilà pourquoi on écrit les programmes dans des langages plus simples et plus "humains".
Il est en fait possible de "coder directement en binaire". Ça s'appelle l'assembleur. Les instructions sont très basiques, pour que le processeur les comprenne directement. Néanmoins, dans ce langage, il faut beaucoup de temps et d'efforts
pour faire quelque chose d'aussi simple qu'une calculatrice.
Code :Autre
mov %eax , %edx
mov $4 , %eax
mov $1 , %ebx
mov $BUFF , %ecx
int $0x80
Les instructions assembleur que vous voyez ci-dessus correspondent directement à du binaire comme 00101111
01000101.
Comment créer des programmes "simplement" ?
Il existe des centaines de langages de programmation dont le but est de simplifier l'écriture de ce code binaire/assembleur. En effet, les langages que l'on utilise traditionnellement pour programmer, comme le C et le C++, nous permettent de créer des programmes bien plus facilement qu'en assembleur (binaire).
Langages traditionnels : la compilation
Avec des langages traditionnels comme le C et le C++, on écrit des instructions simplifiées, lisibles par un humain comme :
Code : C
printf("Bonjour");
Ce n'est pas vraiment du français, mais c'est quand même beaucoup plus simple que le binaire ou l'assembleur vous avouerez !
Bien entendu, l'ordinateur ne comprend pas ces instructions. Lui, il veut du binaire, du vrai.
Pour obtenir du binaire à partir d'un code écrit en C ou C++, on doit effectuer ce qu'on appelle une compilation. C'est un programme qui traduit le code source en binaire exécutable :
La compilation permet de traduire le code source en binaire.
Cette méthode est efficace et a fait ses preuves. De nombreuses personnes développent toujours en C et C++ aujourd'hui.
Néanmoins, ces langages ont aussi un certain nombre défauts dus à leur ancienneté. Par exemple, un programme compilé (binaire) ne fonctionne que sur la plateforme sur laquelle il a été compilé. Cela veut dire que si vous compilez sous Windows,
vous obtenez un programme qui fonctionne sous Windows uniquement (et sur un type de processeur particulier). Impossible de
le faire tourner sous Mac OS X ou Linux simplement, à moins de le recompiler sous ces systèmes d'exploitation (et d'effectuer au passage quelques modifications).
...
Les programmes binaires ont ce défaut : ils ne fonctionnent que pour un seul type de machine. Pour les développeurs qui
écrivent le code, c'est assez fastidieux à gérer.
Langages récents : le code managé
Les langages récents, comme le C# et le Java, résolvent ce problème de compatibilité tout en ajoutant de nombreuses fonctionnalités appréciables au langage, ce qui permet de réaliser des programmes beaucoup plus efficacement.
Regardez bien ce schéma pour comprendre comment cela fonctionne :
Traitement du code pour en faire un programme exécutable.
Le code en langage intermédiaire (CIL) correspond au programme que vous allez distribuer. Sous Windows, il prend l'apparence d'un .exe comme les programmes habituels, mais il ne contient en revanche pas de binaire.
Lorsqu'on exécute le programme CIL, celui-ci est lu par un autre programme (une machine à analyser les programmes, appelée CLR) qui le compile cette fois en vrai programme binaire. Cette fois, le programme peut s'exécuter, ouf !
Ça complique bien les choses quand même ! Est-ce bien utile ?
Cela offre beaucoup de souplesse au programmeur. Le code en langage intermédiaire (CIL) peut être distribué à tout le monde. Il
suffit d'avoir installé la machine CLR sur son ordinateur, qui peut alors lire les programmes en C# et les compiler "à la volée" en binaire. Avantage : le programme est toujours adapté à l'ordinateur sur lequel il tourne.
La CLR vérifie aussi la sécurité du code ; ainsi en C du code mal pensé (par exemple une mauvaise utilisation des pointeurs) peut entraîner des problèmes pour votre PC, ce que vous risquez beaucoup moins avec le C#. De plus, la CLR dispose du JIT debugger qui permet de lancer Visual Studio (le logiciel qui va nous servir à faire des programmes) si une erreur survient dans un programme .NET pour voir ce qui a causé cette erreur.
Cette complexité ralentit légèrement la vitesse d'exécution des programmes (par rapport au C ou au C++), mais la différence est aujourd'hui vraiment négligeable par rapport aux gains que cela apporte. On parle de code managé.
Le langage C# et le framework .NET
Qu'est-ce que le langage C# ? Qui l'a créé ? Quel est le rapport avec .NET ? Et puis, qu'est-ce que c'est .NET ?
Autant de questions auxquelles nous allons répondre maintenant.
Seul, il ne sert pas à grand chose. En effet, le langage a besoin d'une boîte à outils pour exécuter facilement des actions courantes, comme ouvrir un fichier, communiquer sur le réseau, ouvrir une fenêtre, réduire une fenêtre, accéder à une base de données, etc.
Cette boîte à outils, que l'on utilise quasi-systématiquement en C#, c'est le framework .NET. C'est un peu comme un énorme couteau suisse qui offre toutes les possibilités dont vous pouvez rêver.
Ce framework .NET n'est pas forcément lié au langage C#. Il est aussi possible de l'utiliser dans d'autres langages comme Visual Basic (plus simple, pour les programmeurs occasionnels), J# (plus proche de Java pour les habitués de Java) ou encore F# (langage fonctionnel).