Site Perso de

Thomas JANNAUD

Des actualités personnelles sous un style impersonnel, et inversement.



Programmation
Tutoriels et conseils pour bien démarrer, outils à utiliser 01 Février 2008
programmation

Ce n'est pas si dur que ça n'en a l'air ! Vous verrez qu'on sait très vite faire des choses qui nous surprennent. Ça commence dès notre premier programme, où l'on met 2 heures pour afficher "Bonjour" à l'écran mais où l'on a ce sentiment de pays conquis qui nous envahit. Puis l'Histoire continue quand le serpent qu'on a créé mange sa première pomme. Et 1 an plus tard vous savez reprogrammer Windows mais sans les bugs.

Sans le savoir, ma vie a pris un nouveau virage il y a 8 ans en me lançant dans la programmation. Cela aura été un travail personnel de longue haleine, mais je ne le regrette pas. Ça s'est même révélé payant pour faire la différence devant des recruteurs ! (à condition de ne pas lâcher le reste non plus !)

J'espère vous faire découvrir ma passion et la partager en écrivant ce site, et peut-être faire naître une vocation chez vous ! Si vous ne vous êtes pas encore trouvés de passe-temps intelligent, c'est peut-être ce qu'il vous fallait, qui sait...

Ci contre 2 livres pour apprendre les principes de la programmation et de l'algorithmique. Les 2 vont de paire mais sont très différents. La programmation c'est l'art de faire fonctionner quelque chose sur l'ordinateur. L'algorithmique sera au contraire appréciée des gens qui aiment les maths : par quelle technique trier des nombres le plus rapidement possible, chercher le plus court chemin dans un graphe, ...

Suivant où vous vous situez, "Introduction à l'algorithmique" est conseillé aux titulaires d'un bac S, tandis que "S'initier à la programmation" est plus du genre "Programmer pour les nuls", mais qui sait ! :D

Les grandes étapes

Avertissement

Bien des fois vous en aurez très très marre et aurez envie de balancer votre ordi par la fenêtre. Tout le monde est passé par là et y repassera ! Mais c'est en s'accrochant que l'on y arrive. Etre seul face à sa machine, ça c'est un défi. Au début, c'est dur. Mais quand ça marche cela apporte tellement de joie... qu'on aurait tort de s'en priver ! Bon courage, vous ne le regretterez pas.

Conseils (d'un vieux loup de mer)

Si vous n'avez pas trop d'idées pour des petits exercices, allez voir Prologin : il y en a une multitude, des plus simples aux plus complexes, avec même un correcteur automatique. Essayez-les tous pour chaque nouveau langage que vous ambitionnez d'apprendre.

Faites un tour du côté de ma page de codes sources, où je mets pas mal de codes sources (souvent simples) en ligne, ce qui est même plus rapide que de lire des tutoriels longs et ennuyeux comme les miens :), ou pour avoir un point de vue global sur la physionomie des codes d'un langage.

Inscrivez vous aussi à des sites comme codes-sources.com (www.vbfrance.fr, www.cppfrance.fr, ...) ; des dizaines de "open-sources" sont postées chaque jour, et vous y trouverez certainement votre bonheur (si vous n'en êtes pas à votre premier programme)

Pour qui, pourquoi ?

Il y a déjà beaucoup de sites sur le sujet, alors pourquoi en faire un ?

Parce que tous les tutoriels sur le net commencent en expliquant que ‘+’ désigne l’opérateur d’addition, ‘-’ la soustraction, ... et ça étouffe.

Ce site se veut sans blabla.

Les pages que vous allez lire n'en restent pas moins le nectar du fruit arrivé à maturation de 8 longues années de dur labeur dans l'univers du développement (Rien que ça ! ^^). Et tout ça rien que pour vous (et moi qui disait "pas de blabla"...)

Les débutants

Il y a une présentation de divers langages, avec leurs caractéristiques (points forts, points faibles) et la manière de les utiliser, c.a.d quel éditeur avoir, où trouver le compilateur, ... ainsi que des conseils. Bref : comment bien débuter, et le cas échéant dans quel langage.

Sinon, mes tutoriels ne sont destinés qu'à ceux qui ont déjà programmé dans un langage, n'importe lequel (ils sont tous plus ou moins équivalents). Si vous arrivez quand même à suivre, tant mieux pour vous : téléphonez à Paris Match pour qu'ils viennent prendre des photos du mozart de l'informatique que vous êtes.

J'ai quand même pris le soin de vous donner des redirections vers de bons sites proposant des tutoriels débutants.

Les pas débutants

Si vous cherchez plutôt à maîtriser rapidement un nouveau langage à peu de frais vous êtes au bon endroit. Ou en tout cas, c'est fait pour ! En gros, vous avez déjà pas mal de pratique dans un langage particulier, et pour une raison ou pour une autre vous devez apprendre un nouveau langage, i.e quelle est la syntaxe pour déclarer une variable, faire une boucle, déclarer une fonction, faire un graphique, ...

Ne snobez pas la section codes sources qui vous offre ses codes sources sur un plateau. C'est sans nul doute le meilleur moyen de comprendre d'un coup d'oeil l'architecture d'un programme et l'utilisation des mots clés dans un nouveau langage (déclaration des fonctions, variables, ...).

Les spécialistes

Ce site ne s'adresse pas non plus aux spécialistes : il ne cherche pas à constituer un répertoire des API les plus secrètes de Windows, par exemple. Et d'une parce que ce site fait déjà autre chose et on ne peut pas tout faire. Et de deux parce que je ne les connais pas : j'ai appris tout tout seul (ou presque), par internet ou grâce à des livres et j'ai encore beaucoup à apprendre. Vous trouverez cependant un document très bien fait concernant les API justement, dans la section codes sources.

Présentation de différents langages

QBasic
Mon premier langage sur ordinateur (mon premier est le Basic sur TI-82, quasi équivalent). Ça aura l'air un peu pourri au premier abord, mais l'avantage d'être un langage limité, c'est que justement il est limité, donc parfait pour apprendre : peu de mots clés, l'essentiel pour vous faire même des petits jeux (serpents, Mario, ... !), et même un accès à la lecture / enregistrement des fichiers. Et l'avantage, c'est que vous tapez votre code, vous cliquez sur un bouton et hop ! c'est parti, pas besoin de s'embêter avec la console / les compilateurs et les trucs comme ça. !
Bref, à faire absolument avant de s'attaquer à un autre langage. Excellent pour le cerveau !
Visual Basic
Un très bon langage, pas forcément très agréable pour l'algorithmique pure, mais très bien pour développer de véritables applications professionnelles sous Windows, sans mentir ; vous serez étonnés du résultat. Vous pouvez vous créer une interface en quelques clics et l'environnement de développement contient un débugger très bien fait.
Ce langage tire toute sa puissance de sa capacité à utiliser les API Windows ou d'autres applications (ex : OpenGL, DirectX, Excel, ...). Et il faut bien avouer que lorsque l'on programme, en général c'est plus une question de gestion d'événements et de design que de l'algorithmique pure, sauf si on fait un GPS par exemple (algo de plus courts chemins, optimisation, ...). Et à ce sens, VB excelle.
CamL
Un langage fonctionnel, incroyablement agréable. C'est tout le contraire de Visual Basic : de l'algorithmique pure, mais aucun design / interface. A dire vrai il ne sert à rien dans la pratique car faire des programmes console n'intéresse personne (enfin... je pense). Mais c'est vraiment une bonne idée de l'apprendre, surtout qu'il n'y a que très peu de mots-clés, et vous découvrirez une nouvelle dimension de la programmation, j'en suis sûr. CamL représente le nec plus ultra à mon avis pour tout ce qui est arbres, graphes, ... Difficile pour un débutant.
Java
Un excellent langage pour apprendre la programmation objet. Java dispose d'une bibliothèque très fournie disponible ici. L'avantage du java c'est que les programmes tourneront indifféremment sous Mac ou PC, et qu'apprendre le Java revient quasiment à apprendre le C++, son concurrent. Difficile pour un débutant, mais à connaître absolument.
C++
Le langage de programmation objet par excellence, très prisé (comme le Java) si vous comptez être développeur de métier. Difficile pour un débutant, mais à connaître absolument.
PHP/Javascript
Ça ne sert que si vous avez un site internet. Leur syntaxe / mots clés ressemblent au Java/C++, mais ils sont moins puissants. Je ne m'aventurerais pas à faire de "vrais" programmes" avec, je ne les utilise que par nécessité, 10 lignes par-ci par-là.
AppleScript :
Le langage de base sous Mac. On peut coder avec l'Editeur de scripts (pas d'interface) ou avec Xcode (une interface est réalisable). Il est assez simple, et assez intuitif. Par contre il existe peu de tutoriels sur le Web, donc une communauté peu développée où il n'est pas simple de trouver des exemples. (sauf sur mon site, bien entendu ! ^^)

Conclusion

Si vous êtes sous Windows, commencez par QBasic si vous n'avez jamais rien fait. Dominez le (en 2-3 mois) puis passez à autre chose.

Quels outils utiliser ?

Pour programmer, tapez simplement votre code en .txt, enregistrez, remplacez '.txt' par .java pour du Java, '.cpp' pour du C++, '.html' pour du Web... et le compilateur transforme ce code en programme .exe. C'est tout !

J'explique plus loin comment avec un bon éditeur gratuit on peut lui demander de faire ça à notre place.

Les *** indiquent que le compilateur est intégré à l'éditeur.

Une description plus précise de certains outils est faite dans les pages tutoriels correspondant aux langages associés.

Les compilateurs

**** QBasic
Le langage que je préconise pour débuter. L'éditeur n'est pas ultra agréable (ressemble au DOS), mais on s'y fait vite, et il n'y a que peu d'instructions. Telechargez
**** Visual Basic
Normalement, ça coute cher, très cher. Mais depuis 2005, Microsoft a sorti les versions "Express Edition" de Visual Studio (gratuites). Il y a maintenant la 2008. L'environnement semble assez complexe à maîtriser au début, mais c'est un leurre : il se révèle très pratique d'utilisation.
Il y a d'un coté la partie "graphique" où l'on crée l'interface (les boutons, cases à cocher, ...), et de l'autre la partie code, où l'on gère les événements associés aux contrôles de l'interface. Télécharger
**** AppleScript
"Editeur de Scripts" est gratuit sur Mac (déjà installé il me semble). Pour faire du Applescript Studio (= AppleScript + une interface digne de ce nom), utilisez XCode, lui aussi sur le DVD de Léopard (c'est le dossier "Developer", mais il n'est pas installé d'office).
Bref, tout est gratuit !
CamL
Le compilateur est disponible gratuitement sur le site de l'Inria, pour PC et Mac. (Préférez OCamL à CamL)
Java
Normalement java est intégré à toute machine, de base. Sinon (en cas de force majeur), il est disponible sur internet, gratuitement (c'est dingue, mais plus j'écris plus je me rends compte que tout à l'air gratuit !).
Lignes de commande pour compiler :
javac nomfichier.java pour compiler
java nomdelaclasse (sans extension) pour exécuter.
HTML
Il n'y a pas de compilateur, ou enfin si, mais alors on ne s'en rend pas compte. Ouvrez tout simplement votre fichier avec votre navigateur web préféré (sauf internet explorer).
N'importe quel langage

Téléchargez le compilateur associé, tapez votre code dans un éditeur de texte basique (typiquement le bloc-notes Windows) et lancez le compilateur par ligne de commande.

Bien choisir son éditeur

Vous l'avez bien compris maintenant, programmer ce n'est rien d'autre que d'utiliser un compilateur sur du code. Et ce code source vous pouvez le taper n'importe où. Vous aurez donc juste besoin de votre bite et de votre couteau. Et du bloc-notes Windows, c'est tout. (sans rire !!!)

Je rigole un petit peu quand même, mais pas tant que ça. Le seul défaut du bloc-notes Windows, c'est qu'il manque la coloration syntaxique (mots clés d'une certaine couleur, commentaires d'une autre, ...), et que passer par la ligne de commande pour exécuter son programme c'est pas rigolo. Utilisez Notepad++ (Windows) ou XCode (Mac), gratuits.

Ceci est valable pour tous les langages !!! Sur internet, on va vous dire "Prenez DevC++ pour le C++, FrontPage pour un site web, Eclipse pour Java", ... mais il ne faut pas écouter ceux qui disent ça. Dites leurs de venir me voir s'ils ne sont pas contents, je vais les recevoir :D. Ça ne va que vous encombrer, vous changerez sans cesse d'environnement et donc mettrez du temps à retrouver vos petites habitudes et à configurer vos éditeurs à chaque fois.

Bref, prenez 1 seul bon éditeur, et autant de compilateurs que de langages. Après, "reliez" votre éditeur aux compilateurs.

Mon environnement de programmation :

image environnement de programmation XCode

Comme vous pouvez le constater je ne raconte pas de blabla et mes conseils s'appliquent aussi à moi-même ! :). J'ai un poil plus que le bloc note, avec les fichiers du projet accessibles en 1 seul clic, et l'éditeur avec coloration automatique. Et la touche "build and Go" pour compiler/exécuter.

Configurer la compilation

Le plus dur est de configurer la compilation (i.e d'entrer la ligne de commande que l'on souhaite que l'éditeur exécute à notre place, pour chaque langage) mais une fois que c'est fait... c'est fait. Et après ça marche tout seul (Latex, CamL, java, ...).

Exemple avec EditPlus et Java (mais c'est assez universel)

Pour compiler

Command="C:\\Program Files\\Java\\bin\\javac.exe"
Argument="$(FilePath)"

Pour exécuter

Command="C:\\Program Files\\Java\\bin\\java.exe"
Argument="$(FileNameNoExt) (il ne faut pas l'extension !!)

Exemple avec EditPlus et OCamL

Pour compiler

Command="C:\\Program Files\\Objective Caml\\Bin\\ocamlc.exe"
Argument=-I "c:\\program files\\objective caml\\lib" -o output.exe $(FileName)

Pour exécuter

Command="c:\\program files\\objective caml\\bin\\ocamlrun.exe"
Argument="$(FileDir)\\output.exe"

Laissez un commentaire !

Pas besoin de vous connecter, commencez à taper votre nom et une case "invité" apparaîtra.

Tutoriel VB6/VBA
Bases pour créer une belle app en VB6/VBA + astuces et codes sources
Tutoriel CamL
Bases, astuces et codes sources pour se familiariser avec ce language
Tutoriel Java
Bases pour créer une appli en Java avec interface + astuces et code sources
Tournoi de sumos
en un mot : super !
Vicky Cristina Barcelona
Une sortie épique un samedi soir, avec Nico le fidèle compère
Enigme
De quoi vous occuper un bon moment avec un énoncé très simple !
Playa del Carmen et le Yucatan
Tacos et farniente au pays maya
Kyoto - rangs d'oignon et lac biwa
ils sont fous ces japonais !
Kyoto - Visites, photos et généralités
le moral qui remonte !
Les restaurants japonais
La découverte de Tokyo au travers de ses restos
Une nouvelle compagne dans ma vie
relation longue durée souhaitée
WWDC
une semaine à la conférence annuelle d'Apple
Sierra Nevada
road trip encore plus à l'américaine que d'habitude
Que faire un week end de 3 jours ?
"Les week end pourris, c'est ma grande passion." Omar Sharif.
Soirée au café-théâtre
Le Matana (Paris 5ème), un café à découvrir ?
Accident
Scoop ! Verglaplanning sous mes fenêtres en photo !
Config MAMP : php/mysql/phpmyadmin sur Mac OS X
MAMP on OS X, in French and English
Un week-end à Athènes
Après les îles, la ville !
Tutoriel Rubik's Cube
Le rubik's cube par étapes. 2 méthodes simples
Configurer ses sauvegardes
Du bon usage de DropBox, disques durs externes, des gestionnaires...