LA PROGRAMMATION, OÙ COMMENCER ?


Par David K. Every, traduit de l'anglais par Charles Gigučre.
(C) 1998 - Tous droits réservés par l'auteur

Plusieurs personnes m'ont demandé où commencer pour faire de la programmation. Et bien, j'ai débuté il y a de cela 20 ans, à l'époque où les ordinateurs (et les langages) étaient plus simples que ce qu'ils sont aujourd'hui, alors j'ai une bonne idée pour vous indiquer par où commencer aujourd'hui.

Les livres que j'ai lus ne sont pas des livres «d'introduction», j'ai acquis des connaissances qui m'empêche de regarder un livre traitant d'informatique et de le voir par les yeux d'un novice, et il existe des centaines de livres pour les débutants. Alors je ne vous recommanderai aucun livre, cependant je vous recommande de lire. Ne choisissez pas seulement les livres qui vous paraissent pertinents, mais ceux qui sont faciles à lire (et amusant) -- cela vous aidera (vous pourrez vous taper les briques plus tard).

Je peux cependant vous donner des indications générales sur la manière d'apprendre si vous désirez programmer. Toutes ces indications assument que vous n'avez aucune expérience. Vous pouvez sauter des étapes et aller directement à ce qui vous intéresse le plus. Amusez-vous et faites ce qui vous plaît. Si vous avez de la difficulté à comprendre certaines sections, n'ayez pas peur d'essayer d'autres genres de programmation et voyez ce qui vous intéresse le plus. L'école, l'entraînement, les cours, tous cela fonctionnent pour certaines personnes, mais cet article assume que vous n'avez pas le temps pour cela ou que vous n'y avez pas accès.

 

Scripting

Le scripting regroupe un ensemble de langages pouvant être utilisé pour différentes choses. Le scripting peut également être un des types de programmation les plus simples. C'est également un des moyens d'être productif rapidement en programmation. (Je crois que les gens retirent beaucoup d'une chose lorsqu'ils sont capables de voir le résultat de leur travail). Plusieurs des concepts appris en faisant du scripting peuvent être appliqués dans d'autres langages de programmation, alors ce n'est pas un gaspillage d'efforts ou de connaissances. C'est un excellent endroit pour débuter et vous introduire à la programmation et ses nombreux concepts.

Scripting dans un Shell

Certains environnements, tels que le DOS ou Unix, possèdent des shell de programmation/scripting qui y sont incorporés. Cela permet aux utilisateurs d'automatiser des fonctions de gestion de fichiers, telles que recherche, déplacement, copie ou suppression, ainsi que la fabrication d'applications simples.

Les utilisateurs de Mac n'ont pas été oubliés -- ils peuvent ajouter des émulateurs DOS qui imitent un PC compatible IBM complet (avec le scripting DOS incorporé), ou en ajoutant des émulateurs de scripting (qui ne réalisent que la partie scripting du DOS sur un Mac). Les utilisateurs de Mac peuvent également mettre Unix sur leur ordinateur (et s'amuser avec l'OS) ou émuler un des environnements de scripting de Unix (tel que CShell ou Perl). MPW (Mac Programming Workshop) possède aussi un riche environnement de scripting riche, mais plutôt unique.

Ce sont tous de bons endroits pour débuter, mais ils peuvent devenir aussi complexes que les autres langages de programmation. Le scripting dans un Shell est beaucoup moins à la mode, car il est souvent spécialisé, mais il permet un tas de possibilité pour ceux qui s'y intéressent.

AppleScript est un drôle d'hybride, mais vraiment puissant. C'est un scripting de Shell et d'application en même temps qui peut être augmenté par des utilitaires provenant de tierces-parties. C'est aussi un bon endroit pour débuter, et plusieurs livres (orientés vers les débutants) y sont consacrés.

Le scripting du Système se fait bien avec AppleScript ou Frontier; ceux-là permettront aux utilisateurs d'écrire des scripts pour une application en particulier (afin d'automatiser des tâches), ou même écrire des scripts qui englobent plusieurs applications (afin d'automatiser des tâches qui requièrent plusieurs applications). Vous pouvez augmenter la productivité significativement en automatisant quelques tâches -- tout en apprenant des concepts de programmation. Le scripting est un bijou pour les utilisateurs experts, des compagnies ont épargné une fortune en automatisant des tâches avec AppleScript.

Il existe également plusieurs systèmes de script qui sont spécifiques à des applications. Les applications de Microsoft Office ont leur propre environnement de scripting, et c'est le cas pour d'autres applications. Cela vous donne la possibilité d'automatiser plusieurs tâches d'une application et ainsi accroître considérablement votre productivité. Peut importe si vous travaillez pour une petite ou une grosse entreprise, dans les deux cas le scripting est un excellent moyen d'apprendre la programmation et de créer des choses intéressantes, tout en tirant plus de productivité de votre ordinateur.

Le système de script Lingo de MacroMedia Directors est excellent pour créer des présentations multimédia, ainsi que Hypercard (ou SuperCard). Vous pouvez créer de superbes applications en utilisant ces environnements. Ces environnements sont conçus pour les graphiques et le multimédia, mais peuvent être utilisés pour faire beaucoup plus. Plusieurs ont créé des jeux d'aventure, des interfaces de bases de données, de petits utilitaires et de petites applications, ou même le prototypage de progiciels. Mais soyez prudent et n'allez pas trop loin -- si vous essayez de créer l'application rêvée de tous avec ces environnements, vous vous cognerez le nez à leurs limitations, et passerez beaucoup plus de temps à essayer de contourner ces limitations plutôt que d'utiliser un outil plus adéquat pour faire le travail. Cependant, ce sont de bons environnements pour débuter, plus spécifiquement si vous avez un intérêt dans le multimédia ou les jeux (jeux de stratégie ou à déplacements, pas les jeux d'arcade).

Donc le scripting est un excellent moyen pour s'introduire aux concepts de programmation. Sous plusieurs aspects, ces environnements sont plus faciles à apprendre, sous d'autres, ils sont aussi complexes (et pas aussi riche en possibilités) que d'autres environnements de développement. Après quelques mois (pouvant aller jusqu'à une année ou deux) de scripting, les gens ont fait le tour et veulent plus. D'autres sont très heureux à automatiser tout ce qui peut l'être avec le scripting -- c'est bien également. Certains deviennent des gourous de la configuration et aident les compagnies en tant que consultants, uniquement en créant des scripts pour automatiser des tâches. Mais si vous en voulez plus, il y a encore bien des choses à apprendre.

 

La programmation de bases de données

Une autre façon de débuter en programmation (et vous familiariser avec ses concepts), c'est la programmation de bases de données. Les bases de données ont très souvent leur propre environnement de scripting ou leur propre langage de programmation qui sont très puissant. Des solutions complètes peuvent être créées par la programmation de bases de données. Dans les produits bas de gamme on retrouve Claris FileMaker, et dans les produits haut de gamme on retrouve ACIUS 4th Dimension (d'autres produits que je ne mentionne pas sont tout aussi bons). À partir de ces produits vous pouvez créer des solutions puissantes en utilisant leur environnement.

La programmation de bases de données n'est pas essentielle si vous désirez devenir programmeur, c'est en quelque sorte une spécialité. Cependant plusieurs des concepts appris dans la gestion des bases de données constitueront une solide expérience pour plus tard. Mais si cela ne vous intéresse pas, passez par-dessus. Si cela vous intéresse, des carrières y sont consacrées. Plusieurs sont heureux d'être des programmeurs de bases de données et sont très productifs.

 

Programmation visuelle et 4GL

PowerBuilder, ProGraph, VisualBasic (1) et d'autres environnements de programmation «visuelle» font partie de cette catégorie. Plusieurs de ces environnements se disent «4GL» ou langage de 4ème génération, comparativement à d'autres langages qui sont considérés de 3ème génération -- c'est un abus de langage car ils ne représentent que des chemins différents vers une solution, quelques fois c'est mieux, d'autre fois c'est pire. Certains 4GL sont très complexes (et puissant), tous requérant peu d'écriture de codes comparativement aux IDE (2).

(1) Je suis vraiment très généreux envers VisualBasic en le plaçant dans cette catégorie -- il est à mi-chemin entre un environnement visuel complet et le scripting; HyperCard est presque aussi puissant que VisualBasic. VB est le pire dans cette catégorie et HyperCard est le meilleur dans sa catégorie. Les deux peuvent être d'excellents outils d'apprentissage et de création de solutions.

(2) Attention: certains environnements se disent «Visuel» tel que Visual C++, Visual Cafe et d'autres -- ils ne le sont pas. Les véritables environnements «Visuel» sont ceux où vous pouvez programmer graphiquement en reliant des objets (et quelques fois des commandes) en écrivant très peu de code. Visual C++ et Visual Cafe requièrent tous deux beaucoup plus de connaissances en programmation que les environnements visuels discutés ici (mais ils sont dans bien des cas meilleurs que les vieux environnements de développement qui sont encore moins visuels).

Ces environnements de programmation visuels peuvent être très puissants pour les entreprises et quelques applications commerciales les utilisent. Ne comptez pas sur eux pour apprendre les concepts de la programmation, car vous n'avez pas, ou très peu, de code à écrire. Ils peuvent être étendus avec des plug-ins créés avec du code traditionnel. Ils peuvent être très dispendieux, parce que ce sont des environnements qui peuvent faire épargner beaucoup d'argent aux compagnies. Smalltalk Objects est un langage complet, un système et un environnement de développement à lui seul (extrêmement puissant). Plusieurs choix existent, malheureusement ils sont tellement nombreux, changent si souvent, et les exigences sont si variées, que je ne peux en recommander un seul -- cela dépend de ce que vous voulez faire. De nos jours les compagnies offrent souvent des versions d'essai, ou des garanties avec argent remis. Je vous recommande de visiter les newsgroups et de discuter des produits qui vous intéressent afin de voir ce que les autres en disent.

Vous pouvez tout de même apprendre certains concepts de programmation en utilisant ces environnements -- mais vous avez la possibilité d'éviter la programmation directe (ou d'en faire très peu), tout en obtenant les mêmes résultats. D'une certaine façon, ces environnements sont un moyen d'éviter la programmation (ou d'en faire le moins possible). Si ce que vous cherchez est la création d'applications ou de fonctionnalité, alors vous serez heureux. Si ce que vous cherchez est d'appendre tout ce qui touche la programmation et ses concepts, alors ces environnements vous aideront très peu. Ils sont un bon moyen d'entrer dans l'eau tout doucement -- mais vont rarement jusqu'à l'immersion complète (selon l'environnement).

 

IDE

IDE signifie Integrated Development Environment (environnement de développement intégré) -- ce sont les outils les plus utilisés par les développeurs d'applications commerciales. La plupart de ces développeurs boudent les outils faciles à utiliser (les outils visuels et 4GL), c'est beaucoup plus de l'arrogance qu'autre chose -- Je dis : utilisez l'outil le plus simple possible (pour le travail à effectuer), n'essayez pas de montrer que vous êtes bon. Si vous voulez devenir un programmeur professionnel, il est habituellement nécessaire de connaître un IDE. De plus, le choix du langage est très important (et influence le choix de l'IDE).

 

C / C++ / Pascal / Assembleur

CodeWarrior est un excellent IDE (sur Mac ou Windows) qui vous permet de programmer en plusieurs langages (Pascal, C, C++, Java, Assembleur). Si vous désirez programmer dans un langage autre que Java, alors c'est un bon choix. Pour le développement en Java, il est pas mal, et c'est une bonne manière d'apprendre la base -- mais il y a des environnements qui sont mieux.

Si vous voulez apprendre le C++, il ne suffit pas d'apprendre uniquement le langage, mais également le Framework. PowerPlant et MacApp sont deux excellents Framework qui sont utilisés dans CodeWarrior. Les deux sont un peu intimidant et il faut surmonter une certaine frustration avant de passer au travers. Essayez de trouver des tutoriels et des exemples de codes -- après un certain temps vous «l'aurez». Des versions de Framework plus légères sont disponibles pour en comprendre les fondements. Si vous choisissez MacApp, vous aurez entre les mains un Framework plus imposant avec lequel vous pourrez mieux vous cacher du toolbox. Si vous choisissez PowerPlant, vous aurez à apprendre le toolbox.

Si vous possédez un PC, alors VisualC++ n'est pas un mauvais choix. Je préfère CodeWarrior (qui est également disponible sur le PC), mais VC++ n'est pas si mal. Malheureusement sur le PC, vous devez utiliser le Framework MFC -- c'est un très mauvais Framework. Il fonctionne, mais capricieusement (le protocole d'échange de messages est déplaisant).

Une bonne façon de mettra la main sur CodeWarrior, précisément si vous débutez, c'est d'acheter un bon livre renfermant des travaux pratiques sur le langage de programmation qui vous intéresse -- plusieurs RENFERMENT une version légère de CodeWarrior. Metrowerks offre des rabais éducationnels et, je crois, d'autres promotions. Vous n'avez probablement pas besoins de la version «Pro» au départ, enfin tant que vous ne serez pas prêt à livrer un produit commercial. Allez jeter un coup d'oeil sur le site de Metrowerks et voyez ce qu'ils ont à offrir et n'ayez pas peur de poser des questions -- c'est une compagnie vraiment bien.

 

Java

Allez-y pour Java! Ça prend des années avant de devenir bon en programmation.

Pour toutes ces raisons, je dis aux nouveaux programmeurs d'apprendre le Java (à la place du C ou du C++).

Quel environnement Java acheter ?

Certains livres renferment un environnement Java. Alors si vous dénichez un livre intéressant renfermant un IDE, achetez-le. C'est une manière peu coûteuse de commencer. D'ici une année vous aurez progressé suffisamment et tout sera différent, alors ne soyez pas trop exigent en ce qui concerne vos premiers pas.

CodeWarrior est excellent comme IDE, mais plusieurs gens ont conçu des outils «visuels» pour Java. Visual Cafe de Symantec n'est pas mauvais (et supérieur à CodeWarrior sous plusieurs aspects) -- mais les résultats seront un tout petit peu trop «propriétaires» (ils fonctionneront sur plusieurs plates-formes, mais il faut travailler pour les porter dans un autre IDE). Le produit qui m'a vraiment impressionné est Visual Age pour Java d'IBM. VA-Java est un environnement dynamique riche ressemblant à Smalltalk (pour ceux qui le connaisse) et qui utilise Java, il vous permet de faire beaucoup de programmation «visuelle». Cependant il ne peut pas s'utiliser sur un Mac et il est lourd et lent.

YellowBox / Rhapsody

Une solution arrivant à grands pas, et qui pourra rivaliser avec le Visual Age d'IBM dans l'arène du Java, c'est le YellowBox (Rhapsody) d'Apple. Sous plusieurs aspects, Visual Age est en avance (à cause de son RAD - Rapid Application Development, développement rapide d'applications), mais le YellowBox a un Framework plus riche et natif, ce qui le rend très puissant.

Le YellowBox sera modifié pour fonctionner avec Java, et deviendra probablement le meilleur des outils toutes catégories. Mais vous devez encore attendre quelques mois (au moins) et probablement plus encore avant que tout ne soit «parfait». Alors pour l'instant je débute avec un autre outil Java (tel que CodeWarrior), pour apprendre la syntaxe, en attendant le YellowBox.

Si vous désirez vraiment faire du développement d'applications, MAINTENANT, qui soit multi-plateforme, et que vous croyez être capable de sortir quelque chose d'ici un an, alors le YellowBox est un meilleur choix que Java. Mais vous devrez devenir un développeur accrédité Apple pour être sur la liste de distribution du Rhapsody Developer Release ou du Rhapsody Premier Release pour l'obtenir. C'est un formidable environnement avec un puissant Framework, le langage ObjectiveC est plus propre que le C++, mais c'est une route que je recommande à ceux qui ont une bonne expérience en programmation.

Conclusion

Commencez à lire et à apprendre. Les livres avec travaux pratiques sont parfaits pour les débutants (ils vous guident pas à pas dans l'écriture d'un programme). Puis donnez-vous des projets très simples à réaliser pour débuter. Allez fouiller dans les sites de développeurs qui ont un tas de codes sources, des exemples et des snippets (petits bouts de code), et observez comment les choses sont faites -- puis empruntez ces codes pour ajouter de la fonctionnalité à vos programmes. Lorsque vous êtes coincé, allez dans les newsgroups correspondant à votre langage de programmation et posez des questions -- les programmeurs aiment rendre service (ils veulent montrer à quel point ils en savent). Mais amusez-vous. Choisissez des tâches que vous aimez faire et un langage qui vous intéresse. Vous pouvez immédiatement débuter avec le C++ et un Framework, c'est juste plus difficile que de commencer à zéro. La programmation, c'est amusant et très valorisant -- alors arrêtez d'y penser et d'attendre, et sautez dedans !