pt
Moulé à la louche depuis 1999
Les trucs qui m'énervent... et je vais pas prendre de pincettes
Internet, informatique, logiciel libre, économie, politique, vie courante et tout le reste...

:-) Indépendance

Lundi 25 fevrier 2008

En tant que développeur de logiciels, on a toujours essayé d'améliorer les outils pour nous faciliter la vie. La dernière chose que vous voulez, c'est que votre programme cesse de fonctionner si son environnement change (microprocesseur, disques, etc.)

Au début, quand on programmait en assembleur, on était dépendant du microprocesseur: Changez de microprocesseur, et votre programme était bon à mettre à la poubelle. Il fallait tout ré-écrire pour le nouveau microprocesseur. Impensable de nos jours.
Les langages de plus haut niveau (C, C++...) on permit de s'affranchir (à peu près) du microprocesseur (moyennant quand même une recompilation).

Avant, quand vous vouliez écrire sur disque, vous indiquiez dans quelle piste et quel secteur écrire. Donc votre programme était spécifique à un type de disque.
Changez de disque dur, et vous étiez bon pour modifier votre programme !
Les systèmes de fichiers (FAT, NTFS, ext2/ext3...) ont permis de s'affranchir de ces dépendances.

De même, les nouveaux langages à machine virtuelle (Microsoft .Net, Java, Python...) permettent de s'affranchir de nombreux problèmes bas niveau telle que l'allocation et libération de la mémoire.

Quand on programme, on veut résoudre un problème concret (un problème de la vie), et pas se battre avec des problèmes bas niveau liés spécifiquement à l'ordinateur.

Il est temps de passer à un niveau supérieur.

  • Je veux pouvoir changer de disque dur et que mon programme continue à fonctionner.
  • Je veux pouvoir changer de microprocesseur ou de carte graphique et que mon programme continue à fonctionner.
  • Je veux pouvoir changer de carte mère ou de BIOS et que mon programme continue à fonctionner.
  • De même, je veux pouvoir changer de système d'exploitation et que mon programme continue à fonctionner.

Un système d'exploitation n'est finalement rien d'autre qu'une commodité permettant de faire fonctionner des logiciels. Il participe au même titre que le microprocesseur, le BIOS ou les périphériques.

Pour un projet perso, je ne miserais pas sur des technologies qui me limiteraient à un microprocesseur. De même, je ne miserais pas sur les technologies qui me limitent à un seul système d'exploitation.

Pour un projet perso, je considère donc les technologies Microsoft comme mort-nées:

  • Vous faites un site web sous IIS ? IIS ne tourne que sous Windows.
  • Développez un logiciel en .Net (C#/VB.Net/aspx) ? .Net ne tourne que sous Windows (oubliez Mono, c'est un terrain miné).
  • Développez une application sous Access ? Elle ne fonctionnera que sous Windows.
  • Vous avez fait un programme en VisualBasic ? Il ne fonctionnera que sous Windows.
  • Vous utilisez Microsoft Office ? Les documents Word/Excel sont conçus pour être lisibles uniquement avec des logiciels fonctionnant sous Windows.

Voilà pourquoi j'affectionne des langages comme Python: Je peux écrire des logiciels qui fonctionneront tel quel sous Windows, Linux, MacOSX, etc.

Et si on sort du domaine du développement, c'est aussi une des raisons pour lesquelles je choisis en priorité des logiciels multi-plateformes comme Firefox, OpenOffice.org, Gimp, Inkscape ou FreeMind: Je peux changer de système d'exploitation à volonté, et continuer à travailler avec mes fichiers.

L'important, ce sont les logiciels, pas le système d'exploitation.

Bon vent, donc, aux logiciels et technologies qui essaient de me lier à un OS précis. Je veux être libre.

"Libre", voilà le mot. Et c'est justement le logiciel libre qui permet cette liberté.

Voir tous les billets