applications

C2-HIST-04 : Histoire des logiciels (la couche applicative)#

Objectifs pédagogiques#

  • connaitre les différents langages de programmation majeurs

  • mettre en perspective l’histoire du matériel et son adoption par le grand public

    • avec les logiciels à disposition

    • avec les deux grands types de licences (libres et privatives)

  • connaître la sous-culture hacker et ses origines

La couche applicative#

Au-dessus du système d’exploitation se trouve la (ou les) couche applicative. Dans le cadre de ce cours, nous nous concentrerons sur l’application elle-même.

Avant les langages de programmation#

Avant les langages de programmation, les programmes étaient mis en oeuvre dans les ordinateurs par câblage sur la console. Aucun des premiers systèmes n’était capable de programmer de façon générique.

Il est difficile de dire quel a été le premier programme de tous les temps comme il est difficile de dire quel est le premier ordinateur. Plusieurs équipes dans le monde ont travaillé en parallèle pour résoudre des problèmes différents.

Manchester Baby#

Le premier programme historiquement (en terme de date) a été écrit sur le Manchester baby en 1948, un ordinateur expérimental qui possédait un processeur à 7 instructions.

Le programme faisait 17 lignes :

man-baby-prog

dont l’algorigramme est le suivant :

man-baby-algo

Ce programme ne servait à pas grand chose. Il lui a fallu 52 minutes pour calculer la plus grande valeur de \(2^18\), un résultat connu de tous.

ENIAC#

Quelques mois après le premier programme sur le Manchester Baby, les programmeuses (et programmeurs) de l’ENIAC on réussi à écrire un programme sur l’ENIAC. Ce programme a permis d’obtenir un résultat jusque là inconnu : une simultation de désintégration de neutrons lors d’une fission nucléaire.

Les langages de programmation#

Dès l’apparition des premiers système d’exploitation aux premiers logiciels en passant par les diverses bibliothèques de fonctions (modules sous Python) il y a un (ou des) langage de programmation.

Quelques dates et langages :

  • Avant 1950 : aucun langage (à l’exception de short code, un langage plus évolué que le langage machine en 1949)

  • 1954 : FORTRAN inventé par John Backus. Ce langage (FORmula TRANslator) est encore largement utilisé aujourd’hui dans les applications scientifiques

  • 1970 : C inventé par Ken Thompson et Dennis Ritchie pour programmer UNIX

  • 1975 : SmallTalk est le premier langage orienté objet

  • 1978 : SQL qui n’est pas un langage de programmation à proprement parler mais fondamental pour accéder aux bases de données relationnelles

  • 1983 : C++ : un langage proche de C dans sa syntaxe mais totalement orienté objets.

  • 1991 : Python

  • 1995 : Java

  • 1995 : PHP qui est le principal langage de programmation pour les sites internet

Programmes sur cartes perforées#

Le langage de programmation permet d’écrire un programme complet et de le charger dans l’ordinateur qui se chargera de transformer les instructions du langages en instructions machines (bits) compréhensibles par les composants électroniques de l’ordinateur.

Pour le passage du programme écrit dans un langage de programmation vers l’ordinateur, on a tout d’abord utilisé des cartes perforées à l’image du métier Jaccard.

punched-card

Le principe est extrêmement simple : chaque ligne du programme est écrite par une opératrice ou un opérateur sur une machine appelée perforatrice qui traduit l’instruction du langage en trous dans la carte. La position du trou correspond à un bit à 1.

perforatrice

Un programme complet était donc un paquet de cartes appelé batch

batch

La carte était ensuite lue par un appareil connecté à l’ordinateur afin de stocker le programme dans la mémoire. Le système de cartes perforées est resté en fonction jusque dans les années 1980 lorsque des systèmes de stockage plus performants (cassettes, disquettes et disques durs) sont arrivés sur le marché

Les premiers programmes vendus#

Les années 1970 voient l’arrivée des micro-ordinateurs (à l’opposé des mainframes gigantesques) que le grand public a pu acquérir pour plusieurs dizaines de milliers de dollars. Ils n’étaient pas dotés de lecteurs de cartes perforées mais de lecteurs de cassettes pour le stockage de masse.

Parmis les premiers programmes vendus, on peut citer Microchess, développé par Peter Jennings en 1976. Le programme était envoyé sous la forme du code source que l’acheteur devait intégralement réécrire.

C’est aussi à cette époque que les premières grandes entreprises de développement logiciel sont apparues. Notamment Microsoft

La culture hacker#

Pour bien comprendre la naissance des logiciels libres, il faut comprendre la culture hacker des années 60 à la fin des années 1980 (voir Levy).

La culture hacker est née en 1961 au club de modélisme ferroviaire du Massachusett’s Institude of Technology (MIT) dont le noyau dur des membres ont été à l’origine de la création du laboratoire leader mondial de l’intelligence artificielle au début des années 1980 : le MIT’s Artificial Intelligence Laboratory.

La culture hacker peut être définie comme une sous-culture (culture d’un groupe social déterminé et fini, par opposé à la définition de la culture) regrouppant des personnes qui se délectent de comprendre de façon approfondie le fonctionnement interne d’un système, en particulier un système informatique (wikipedia).

Ethique hacker#

  • toute information est par nature libre ;

  • ne pas se fier à l’autorité, promouvoir la décentralisation ;

  • les hackers peuvent se juger par leurs prouesses, non par d’autres hiérarchies sociales (ce qui permettra à un jeune prodige d’une dizaine d’années de rejoindre le groupe) ;

  • art et beauté peuvent être créés avec un ordinateur ;

  • les ordinateurs peuvent changer et améliorer la vie.

(librement traduit par wikipedia de l’article original de Steven Levy

Richard Stallman#

Richard Stallman, pape de la culture hacker a cette jolie phrase :

What they had in common was mainly love of excellence and programming. They wanted to make their programs that they used be as good as they could. They also wanted to make them do neat things. They wanted to be able to do something in a more exciting way than anyone believed possible and show “Look how wonderful this is. I bet you didn’t believe this could be done.

C’est dans ce monde que sont né les premiers logiciels libres. Parmi eux, on peut citer :

  • EMACS (éditeur de code informatique comme Thonny)

  • LISP (un langage de programmation permettant de fiare de l’IA)

  • Le projet GNU et la Free Software Foundation

  • Linux (dans ses premières versions) ainsi que tous les logiciels système qui sont toujours utilisés aujourd’hui

Les logiciels libres (OSS)#

gnu

Les premiers programmes étaient en sources ouvertes. Ils étaient mêmes propres au domaine public (sans licences). Ils n’étaient pas encore des logiciels libres

Parmi les logiciels vendus, Il y avait plusieurs raisons à cela :

  1. la diversité des architectures matérielles forçaient à avoir un logiciel générique qui pouvait être modifié par l’utilisateur final

  2. aucune norme sur un média générique pour transmettre le logiciel

Caractéristiques des logiciels libres#

Il existe plusieurs définitions des logiciels libres. Dans le cadre de ce cours, nous prendrons celle de la Free Software Foundation:

  1. la liberté d’exécuter le programme, pour tous les usages ;

  2. la liberté d’étudier le fonctionnement du programme et de l’adapter à ses besoins ;

  3. la liberté de redistribuer des copies du programme (ce qui implique la possibilité aussi bien de donner que de vendre des copies) ;

  4. la liberté d’améliorer le programme et de distribuer ces améliorations au public, pour en faire profiter toute la communauté.

La connaissance et la distribution du code source est une condition sine qua non.

Le copyleft et les licences libres#

Evidemment, on peut imaginer que disposant du code source dans le domaine public, il est aisé pour des industriels de s’emparer de la technologie dont ils ne sont pas les auteurs.

De ce constat a émergé l’idée de copyleft (opposé à l’idée de copyright dont le logo est toujours utilisé aujourd’hui :

copyleft

Sont donc apparues des licences dites libres qui protègent le logiciel lbre en tant que tel. Il existe évidemment des nuances dans chacune de ces licences. Parmi elles, citons :

  1. La GPL (GNU General Public Licence)

  2. BSD licence

il existe une liste complète liée à une comparaison des éléments protégés sur Wikipedia.

Les programmes propriétaires (privatifs)#

Paul Allen et Bill Gates, fondateur de Microsoft sont parmi les premiers à s’inquiéter du modèle trop ouvert et non adapté - selon eux - à une exploitation commerciale. Le second, Bill Gates, part d’un constat :

The feedback we have gotten from the hundreds of people who say they are using BASIC has all been positive. Two surprising things are apparent, however, 1) Most of these “users” never bought BASIC (less thank 10% of all Altair owners have bought BASIC), and 2) The amount of royalties we have received from sales to hobbyists makes the time spent on Altair BASIC worth less than $2 an hour.

En 1976, Bill Gates s’est fendu d’une lettre ouverte restée célèbre : an open letter to hobbyists envoyée à tous les hackerspaces qu’il appelle hobbyists. Dans cette lettre, il décrit plusieurs éléments qui seront par la suite fondamentaux dans l’histoire du développement logiciel :

  1. Le développement du logiciel prend du temps,

  2. Le hardware coûte quelque chose, le logiciel devrait aussi être payant.

  3. Partager du logiciel avec du hradware sans le payer est du vol.

Et il termine par :

Now I ask you–does a musician have the right to collect the royalty on the sale of his records or does a writer have the right to collect the royalty on the sale of his books? Are people who copy software any different than those who copy records and books?

Parmi les destinataires de cette lettre, il y avait le club de hackers Homebrew Computer Club. Deux membres de ce club sont restés connus : Steve Jobs et Steve Wosniak, fondateurs de Apple Computers.

Lorsqu’on observe la politique logicielle d’Apple aujourd’hui, peut-on dire que les deux fondateurs ont bien compris ce que disaient Paul Allen et Bill Gates ?

Exemple d’une pile technologique : un serveur Web sous Linux#

linux web app

Sources#

  1. Levy, Steven; Hackers, Anchor/Doubleday 1984, ISBN 0-385-19195-2.

  2. The Jargon File, 2003, ver 4.4.7 online