Débuter en programmation

Pour débuter en programmation, quel langage de programmation, quels outils de développement choisir? Cela dépend en fait du type de logiciels que l'on veut réaliser.
La programmation peut se faire dans trois domaines principaux:

Le tendance la plus moderne est de créer une application Web fonctionnant aussi localement sans connection, et utilisant Ajax.
Il existe aussi d’autres domaines de programmation à base de scripts.

A coté des logiciels, il y a aussi les progiciels, logiciels pour entreprises qui peuvent faire intervenir des techniques différentes comme l'utilisation d'UML, ou la programmation par aspects.

Le choix du langage de programmation

Quand on décide de se lancer dans la programmation, le choix du langage est la première étape, il doit être réfléchi, et il dépend de son projet mais aussi de son avenir, un futur informaticien par exemple, utilisera un langage qu’on utilise en entreprise (plutôt qu’un outil académique comme Caml).
Il est préférable de maîtriser la programmation « locale », hors serveur, avant de passer à la programmation pour le Web, sur serveur ou en page Web, beaucoup plus difficile. La programmation en JavaScript notamment, en l’absence de messages d’erreurs, est particulièrement ardue. Il existe des logiciels d’aide au déboguage cependant.

Le site Scriptol.fr décrit tous les langages populaires et indique pourquoi utiliser l’un plutôt que l’autre.
On y trouve aussi une histoire des langages de programmation et des fiches pour les principaux d’entre eux. Des exemples de programmes simples sont donnés pour tous les langages.
Le site est aussi consacré aux algorithmes qui sont proposés sur le site dans les langages Scriptol, PHP et C, ainsi qu'en JavaScript.

Les langages se classent en catégories d’utilisations:

Certains langages disposent de versions multiples adaptées aux différents domaines d’utilisation (ASP, JSP…)

Le langage C++

Il existe plus de six compilateurs gratuits C et C++.
Visual C de Microsoft est plus strict, analyse mieux les erreurs que BCC 5.5. Disponible sur le site Microsoft à l’intérieur de l’outil de développement rapide Visual Studio Community ou dans le SDK .NET. Le compilateur GCC est disponible sous Linux, MingW et Whatcom sous Windows.
On peut construire des logiciels plus facilement avec Speedy Make, une alternative XML à make, le compilateur de projets classique.
Le langage C++ cède maintenant la place, à la fois pour les applications locales et les applications Web, à Java et C# ce dernier fonctionnant sur plateforme .NET. Et le langage Go est un autre challenger.

Le langage C# (C Sharp)

On peut si l’on dispose de la plateforme (sous Windows et Linux) remplacer C++ par C#. Il existe plusieurs environnements de développement gratuits: Turbo Explorer C#, Sharp Develop, et Visual C# Express. Tous permettent de définir l’interface d’une application visuellement.
L’avantage de C# est la gestion automatique de la mémoire (comme Go), l’utilisation de XAML pour définir une interface de façon déclarative en XML. En outre il fonctionne sur la plateforme .NET où il peut partager les classes avec d’autres langages.

Le langage Java

Java est largement utilisé pour créer des services Web.

Les outils de développement les plus utilisé sont NetBeans et Eclipse, ce qui va de pair avec le SDK Java fournit par Oracle.
Eclipse peut paraître ardu au départ comparé au plus classique NetBeans.

Le langage JavaScript

Il fonctionne dans le navigateur mais peut aussi être utilisé localement grâce aux compilateurs-interpréteurs V8 de Google ou Tamarin utilisé par Mozilla. Ces nouveaux compilateurs JIT (Just-In-Time) rendent JavaScript aussi rapide que Java.
Programmer en JavaScript est différent car il ne reprend pas le modèle orienté objet classique mais utilise des prototypes dynamiques. Il n'y a pas une grande différence entre un tableau, une fonction et un objet ce qui le rend très flexible. C'est en fait un langage très innovateur.

L'application locale de JavaScript la plus connue est le serveur Node.js qui fonctionne sous Windows ou Linux.

Les nouveaux langages

Il existe des langages plus modernes et beaucoup plus simples à utiliser. Ces langages, outre la facilité de lecture, sont aussi plus adaptés à la programmation de pages web ou de sites.
Ce sont Python, Ruby, Scriptol et PHP.
Ruby est utilisé surtout pour le web avec Ruby on Rails, Python est un langage de script universel utilisé par le logiciel de services web Zope.

Par contre la simplicité n'est pas de mise pour les langages systèmes que sont Go de Google et Rust de Mozilla (et le future M# de Microsoft). Il semble que la lisibilité du code soit le moindre de leurs soucis, mais ces langages sont faciles à éviter.

La programmation pour le Web

La réalisation de RIA, application Internet riche, donc dotée d’une interface utilisateur aussi complète que celle d’un logiciel de bureau, est l’enjeu majeur du développement actuel. Il faut choisir les bons outils, les bons formats.

Le langage PHP fonctionne sur tous les systèmes. C’est un langage de Scripts non typé. Scriptol constitue un front-end, qui permet d’avoir un contrôle d’erreurs à la compilation.
Scriptol produit du code source PHP imbriqué ou non dans les pages HTML, ou des exécutables binaires. Le but étant de réaliser des applications fonctionnant à la fois sur le Web ou localement sans accès Internet. L’interpréteur Scriptol facilite l’apprentissage du langage.
Noter que Microsoft fournit un runtime, Silverlight, accompagné d’un outil de développement payant Expression Blend, pour créer des applications mixtes fonctionnant sur les Web ou sur le bureau (voir les outils XAML).

Le langage alternatif à PHP, ASP de Microsoft est proche du Basic. Il ne fonctionne que sur un serveur Windows. Pour des applications lourdes, on utilise souvent Java (Facebook utilise PHP tandis que Twitter est passé sous Scala). Java existe en version langage de script, JSP, fonctionnant coté serveur comme PHP.

Coté navigateur, on utilise JavaScript et de plus en plus souvent dans le cadre de la technique en vogue actuellement, Ajax. Le standard se nomme ECMAScript.
Pour le développement, l'outil de développement des navigateurs contrôle les échanges entre le serveur et le navigateur, les requêtes et signale les erreurs rencontrées dans un script JavaScript.

XML devient indispensable comme format de fichier notamment avec le développement d’Ajax, même si JSON s’emploie aussi fréquemment et est plus facile à utiliser avec JavaScript.

Créer une documentation

Pour le manuel d’emploi, le plus simple est d’utiliser LibreOffice qui produira un document Word, HTML pour le web, ou PDF imprimable . La légèreté du code HTML produit par la version 2 est impressionnante par rapport aux versions précédentes ou d’autres logiciels.
Dans le cas ou votre programme fournit les sources, inutile de décrire les fonctions une à une, un générateur de documentation de code source peut faire cela pour vous Doxygen (W/L), et il en existe de nombreux autres.

La distribution du logiciel

Les logiciels sous Windows sont souvent intégrés à un installeur qu’il suffit de lancer pour avoir les icônes, etc.
Vous disposerez d’un tel système en téléchargeant un générateur d’installeur complet comme Inno Setup.
Il propose un wizard (bon génie) pour générer le script d’installation. On peut ensuite ajouter des options manuellement.
Préparez ensuite une icône 32×32, cela en format gif ou jpg ou au format Windows.
Une archive peut être créée avec un logiciel d’archivage gratuit. Vous avez le choix entre 7-Zip, ou IZArc.

Ressources et outils