Click here to send us your inquires or call (852) 36130518

HISTOIRE DES LANGAGES INFORMATIQUE

2002 Jean Bellec

Retour histoire informatique

version partielle provisoire
noter que les hyperliens mentionnent des pages encore en construction, et que leur existence ne fait que reflter l'avancement de cette version partielle et peut-tre partiale de l'histoire informatique.

La programmation des machines comme l'ASCC (Harvard MkI) ou les premires machines de gestion fut une opration de cblage, la manire des automates industriels. IBM, Univac et Bull avaient dvelopp le concept de tableau de connexion amovible qui avait l'avantage de ne pas immobiliser le systme pendant le dveloppement d'un programme particulier. Ensuite, ces constructeurs inventrent un concept de tableau secondaire pour garder des morceaux de programme partags, un prdcesseur des sous programmes en quelque sorte. Ces tableaux de connexion restrent le moyen de programmer les machines jusque vers 1955, moment o les ordinateurs programme enregistr sortirent des laboratoires.

La programmation par panneaux de connexions garda des traces dans le milieu des programmeurs d'applications de gestion o le concept de procdures avait du mal pntrer. Aussi, naquirent les Gestions Automatiques de Programme (nom donn par IBM France au Report Program Generator -RPG-) introduit sur les premiers petits ordinateurs de gestion et dont la dernire version RPG3 fut le langage principal de programmation du System 38 et de l'AS/400.
Je pense qu'on retrouve une trace de cette approche dans les tableurs (Visicalc, Multiplan et autres Excel) qui sont devenus le principal usage programmatique sur les micro-ordinateurs.

 

Les machines programme enregistr drivent des concepts de von Neumann au dbut des annes 1950. La caractristique principale de ces machines qui restait conteste dans les annes 1960, mais s'imposa au moins partiellement par la suite, tait de banaliser la mmoire principale -mmoire tores ou tambour- entre donnes et programmes et de laisser envisager l'auto modification des programmes. L'usage de cette auto modification pouvait tre un gain de place en rutilisant comme constantes certaines parties du programme -source de pnibles mises au point au dbut des annes 1960,, ce pouvait aussi l'amorce d'une intelligence artificielle o le programme savait s'adapter aux pripties du calcul. En pratique, la principale utilisation de la banalisation de la mmoire a t la programmation automatique, c'est dire, la fabrication d'un programme partir d'un langage de programmation au moyen d'un autre programme qu'on appellera, probablement abusivement, un compilateur. L'abus de ce mot tait peut-tre que la fonction de traducteur de langage tait complment par la runion de sous-programmes ou de macro-instructions.

Cette vision de la programmation automatique s'est peu prs impose au dbut des annes 1960 (et dure encore de nos jours), il ne faut pas ignorer qu'une autre solution avait t labore aussi peu prs simultanment, celle de l'interprtation d'un langage de haut niveau. Le concept d'interprteur avait t utilis par Wilkes en Grande Bretagne puis par IBM (S/360) et Bull (M-40 et Gamma 55) pour excuter un code puissant et complexe au moyen d'une machine plus frustre et meilleur march. Les microprogrammes de ces machines reprsentaient un interprteur. Cette solution d'interprteur perdurera dans des machines surtout utilises interactivement, comme le systme BASIC de Dartmouth et GE ou le PAF de Dimitri Starynkevitch la CAB500 de SEA en France. 
BASIC fut dvelopp par John Kemeny et Thomas Kurtz Dartmouth. Sa diffusion sur le time-sharing de General Electric le popularisa durant les annes 1970 et ce langage fut diffus dans divers dialectes et tendu vers le graphique et le multimdia sur les premires gnrations de microordinateurs. C'est en crivant un processeur BASIC pour Altair que Bill Gates commena son ascension et cra Microsoft.
En fait ces interprteurs utilisrent trs vite une solution intermdiaire avec les compilateurs: celle d'un parser qui transformait le code source en code intermdiaire et l'interprteur proprement dit. On aura reconnu les solutions du P-code et des premires versions de Java.

Les premires bauches de langages et de compilateurs se heurtaient deux problmes cruciaux cette poque de puissance de calcul rare et chre: l'encombrement accru des programmes et la lenteur d'excution. La comparaison avec un simple Autocode o chaque instruction de code source correspondait une instruction machine tait notablement en dfaveur des langages et surtout des langages qui se voulaient indpendants de la machine sous-jacente. Le traducteur de langage Autocode fut appel l'Assembleur. Ce n'est pas un hasard si la dfinition par John Backus de FORTRAN, dont la version intiale date de 1954, tait inspire par le code d'instructions de l'IBM 704. FORTRAN continua son volution jusqu' nos jours avec le FORTRAN II, en 1957 qui l'tablit comme langage standrad scientifique, FORTRAN IV en 1962, Fortran 77 normail en avril 1978, puis Fortran 90 en 1991.
A cette exception prs, les constructeurs de machine laissrent de comits de normalisation peupls de leurs scientistes et par des universitaires la dfinition en 1958 du langage ALGOL. Les concepts de ALGOL furent sensiblement innovants, ils ignoraient les particularits des registres pour faire les calculs sur des variables en mmoire, ils admettaient la possibilit de rcursivit des procdures, ils standardisaient une structure de blocs lexicographiques. Certains constructeurs dcidrent de construire leur machine autour de Algol, c'est notamment le cas de Burroughs. Un inconvnient d'Algol est son ignorance de la notion de fichiers qui limita son usage soit des programmes tournnat sur des machines spcifiques soit diffuser sur papier des algorithmes.


En parallle, un comit de normalisation des applications de gestion, pouss par les administrations amricaines et quelques grands clients, le CODASYL publia en 1959 les premires spcifications de COBOL.  La mmoire de Grace Hopper est associe la naisssance de COBOL, essentiellement parce qu'elle apporta son exprience de FLOW-MATIC sur Univac I.
Ce langage n'aurait probablement pas eu le succs qu'il a connu sans les contraintes de l'administration amricaine. Par rapport FORTRAN et ALGOL, le CODASYL eut le souci de la rsolution des problmes pratiques des utilisateurs de fichiers squentiels base de cartes ou de supports magntiques.
Aucun langage n'avait t conu pour l'accs direct aux donnes que permettaient les disques magntiques et les entres directes par terminaux. Les comits de normalisation de COBOL se contentrent d'ajouter des commandes (verbes) de positionnement dans les fichiers pour supporter les disques. Ce n'est pas un hasard si les transactions CICS ont  trs longtemps t longtemps t programmes en macro-assembleur en y ajoutant des commandes spcifiques que d'autres constructeurs ajoutrent au COBOL pour supporter le transactionnel. COBOL continua d'tre amlior par le CODASYL sous les versions 1961, 1968 et 1974 et 1980.

IBM, ne supportant COBOL qu' contre coeur, essaya en 1964 de faire avec PL/1 un langage universel en prenant ce qu'il y avait de mieux dans ALGOL et en lui ajoutant les plus de FORTRAN et de COBOL. PL/1 s'essaya mme traiter du temps rel et du transactionnel en dfinissant le concept de process sans trop en mesurer l'application relle. PL/1 traitant tous les formats de donnes et en particulier les chanes de  bits tait un langage tentant pour rayer l'assembleur de l'offre logiciel. Le concepteurs de MULTICS, puis aprs eux ceux de Honeywell (PL/6 pour CP-6, puis pour GCOS8) et Bull (HPL pour GCOS64 et GCOS7) pour en faire un langage d'criture du systme d'exploitation. Au prix d'une certaine interprtation des spcifications de PL/1 et/ou d'une pince d'assembleur, le concept d'une programmation de systme en langage de haut niveau fut acquis. IBM, plutt que d'utiliser PL/1 pour ses nouveaux dveloppements, en dfinit un sous-ensemble plus efficient PL/S. Un autre dialecte de PL/1 qui eut son importance fut PL/M dvelopp en 1972 par Gary Kindall qui lui servit comme langage d'implmentation de CP/M.

Plutt que de dformer PL/1 les concepteurs de UNIX autour de Ken Thompson aux Bell Laboratories prfrrent , partir de langages d'implmentation utiliss au MIT (CPL, BCPL et B) dvelopper en 1971 leur propre langage qui eut le succs que l'on sait, le langage C. Le plus clbre des compilateurs C, appel gcc, a t dans le cadre du projet GNU.

Un langage original, Forth, bas entirement sur le concept de piles et de rcursivit, eut un certain succs la fin des donnes 1970. Il fut conu en 1969 comme langage de process control par Chuck Moore, un astronome.

En fait, les concepteurs de langages cherchrent le plus souvent ce que tous les concepts utiles au programmeur soient dfinissables dans "leur" langage  suivant ainsi la tentation d'imiter l'volution des langages naturels o cet utilisateur sans parler des Acadmies acceptent des mots trangers pour les nationaliser. L'ide d'utiliser plusieurs langages diffrents pour crire un mme programme est un concept quelque peu abscons pour un esprit occidental. C'tait cependant oublier qu'un programme est le plus souvent crit par plusieurs personnes et, qui pis est, des priodes diffrentes. Cette ncessit a d'abord t satisfaite par des extensions des concepts de sous-programmes et par des dfinitions rigoureuses des interfaces entre programmes (paramtres d'appel et de retour) spcification rigoureuse des donnes partages, par le concept de package apparu un peu plus tard. Il devint donc possible de ne pas recompiler le programme depuis la totalit de ses modules en code source, ce qui tait encore la rgle sous-entendue par certains langages, mais d'diter les liens entre modules par un processeur spcifique. Cette possibilit a t juge ncessaire par les concepteurs des systmes d'exploitation ds les annes 1960, bien que c'est seulement avec le dveloppement des langages orients objet que ce concept a t pris en compte par les concepteurs de langage.

Une dformation des langages et de leurs compilateurs a t mis en oeuvre trs tt, c'est de faire prcder la compilation et mme le parsing par un traitement syntactique au niveau du code source permettant d'tendre volont le langage. L''utilisation de macroprocesseurs plus ou moins sophistiqus de l'INCLUDE de C jusqu'au traitement rcursif de TRAC et du MacProc de Bull, en passant a permis au programmeur COBOL d'crire des transactions ou de raliser une modularit spcifique -pas ncessairement rigoureuse, parce que non interprte l'excution.

Parmi les langages nouveaux qui virent le jour une cadence plus faible partir des annes 1975, il convient de citer ADA (1979), langage soumis un concours par le Pentagone avec un objectif de remplacer JOVIAL , un anctre de 1960, et de se substituer PL/1 en renforant le typage des donnes et la solidit des interfaces. ADA vint trop tardivement pour s'imposer sur les main frames et trop tt pour acqurir une place sur les micros trop peu puissants, l'poque. Il se heurta la concurrence de C et dut se contenter la niche des systmes embarqus de l'US Air Force o il vole oprationnellement au dessus des continents. Le concours de spcification de ADA fut remport par l'quipe de Jean Ichbiah CII-HB.
En France, et pour des besoins peu prs identiques ceux des tats-Unis, les Armes dcidrent d'utiliser le langage LTR (Langage Temps Rel), ce qui eut pour effet de rarfier le march potentiel de ADA.

 

Pascal fut un langage dfini en 1970 Zurich par le professeur Niklaus Wirth des fins pdagogiques: moins complet que C, moins sujet la "programmation spaghetti" que BASIC,  n'exigeant pas de compilateur volumineux, il tait appropri aux micro-ordinateurs de premire gnration. Pascal fut mme quelques temps vers 1980 un candidat pour remplacer le systme d'exploitation de ceux-ci par un interprteur de P-code (UCSD). On notera aussi la mme poque le succs de l'aventure Borland partir d'un compilateur Pascal sur micros dont le prix menaa un temps le business de Microsoft. L'augmentation de la taille de mmoire disponible lui fit cder la place C. L'quipe Wirth essaya de prolonger le dveloppement de PASCAL avec Modula (1975)

 

C'est encore au cours des annes 1970 que fut invent le langage Smalltalk, dvelopp au Xerox PARC par Alan Kay et Adele Goldberg. Ce langage ajoute l'esprit de l'UCSD deux donnes importantes: la prise en compte d'un cran avec fentres (au lieu du paradigme Teletype ou cartes perfores utilises jusqu'alors) et le concept d'objets communiquant par messages. L'insuccs de Smalltalk repris par Digitalk eut comme raison le caractre dogmatique excluant du systme les programmes non crits dans ce langage. Les dfinitions de Smalltalk pour un langage orient objet, la dfinition de l'hritage des variables et le concept de cration/destruction d'objet seront reprises dans le produit industriel le plus important C++ invent par le danois Bjarne Stroustrup aux Bell Laboratories en 1983 et qui a su coexister avec C -en utilisant le compilateur C comme le traducteur du langage par le prprocesseur C++. Le succs de C et de C++ doit beaucoup la disponibilit de la chane GNU dveloppe initialement au MIT puis dans la communaut des logiciels libres. La gratuit de la chane de fabrication a strilis les efforts faits par certains pour fournir une  chane comparable. Il faut toutefois signaler la grande antriorit (1964) du langage norvgien SIMULA qui fut le pionnier des langages orients objet.
Une variante de C++, C# fut introduite en 2000 par Microsoft. 

 

Au milieu des annes 1980, une quipe de Sun autour de James Gosling se mirent tudier le problme de programmation des objets distribus interconnects sur Internet. En 1991, ils dvelopprent un langage nomm Oak. L'ide nouvelle tait de dvelopper un systme de programmation unique pour des objets d'architecture interne diffrente et dont les programmes devaient pouvoir tre tlchargs distance. Avant d'tre utiliss dans ce contexte, le concept fut tendu aux ordinateurs personnels dans le paradigme de "votre ordinateur est le rseau". ce langage est JAVA (introduit formellement en 1995) qui reprend l'essentiel des concepts de C ainsi que celui des langages interprts en standardisant le langage intermdiaire destin au tlchargement. Les premiers systmes Java fonctionnrent donc la manire de Basic et eurent des difficults s'imposer contre C pour des raisons de performances que ne contrebalanaient pas l'amlioration d la robustesse. La puissance des microprocesseurs et les tailles de mmoire augmentant, il devint possible d'imaginer la ralisation de compilateurs Java "Just in Time" qui transformaient le langage intermdiaire en code machine spcifique du type de microprocesseur chaque invocation du programme Java. Tout se passait comme s'il s'agissait d'une interprtation avec la rapidit d'un compilateur standard. JavaScript un dialecte sous-ensemble de Java devint rapidement le langage le plus rpandu dans les applications distribues du Web. 

 

Une autre famille de langages est drive des interprteurs de commande eux-mme drivs des antiques Job Control Languages des systmes de batch processing. Les JCL taient devenus complexes et le besoin de paramtrage de ceux-ci par exemple par un jeu de macros s'imposa. Ensuite l'intrt d'y introduire le concept de boucles fut reconnu. Nous avions l'embryon d'un nouveau langage de programmation certes spcialis avec des lments relativement ignors des langages plus "srieux".
Dans les systmes time-sharing, l'quivalent du JCL se retrouvait dans les langages de  commande, qu'on appellera plus tard les shells.
L'analyse des besoins par des informaticiens plus rigoureux aboutit la cration d'une nouvelle famille de langages interprts dont les plus connus sont REXX (introduit vers 1980 par IBM Hursley) et PERL (invent en 1987 par Larry Wall). Bull en fusionnant les besoins du JCL et ceux de l'utilisation interactive cra le langage commun GCL sur GCOS7 au dbut des annes 1980.

 

Le PHP (1995) est un langage de programmation interprt invent en Scandinavie spcifiquement pour le dveloppement des applications distribues sur Internet. Alors que JAVA se plaait dlibrment comme langage client dans un modle client-serveur o le serveur tait un simple serveur de bases de donnes (machine SQL), PHP permet la programmation d'une application sur le serveur en utilisant un catalogue standard de ressources, suffisamment limit pour ne pas compromettre l'intgrit du serveur. Le succs de PHP actuellement est sans doute d son statut de "logiciel libre" associ au serveur Web Apache et au moteur de base de donnes MySQL.

 

 

Il reste parler de langages qui visaient des marchs particuliers ou du moins qui n'ont pas cherch en remplacer d'autres. Ces langages sont fonds sur des interprteurs.

LISP a t dvelopp ds la fin des annes 1950 au MIT comme un langage automodifiable bas sur le traitement de listes. L'ide  de John McCarthy, dans la ligne de von Neumann, aura t de laisser l'automate de base de l'interprteur la responsabilit de l'optimisation ou de la recherche de convergence du processus dcrit par le programme LISP. Ce langage fut -avant ALGOL- le premier admettre la rcursivit. Il fut aussi le premier tre indpendant de la gestion de mmoire et ncessiter ce qu'on appellera la "garbage collection".
Sa version Lisp1.5 publie en 1962 resta le standard jusqu' l'closion de nombreux dialectes dans les annes 1980 (Common Lisp, Le_Lisp, l'INRIA, AutoLisp dans AutoCad, Scheme)
. IL a eu avec TRAC (Calvin Mooers MIT 1966) et Snobol (1962-1964) des continuations visant plus spcifiquement le traitement de chanes de caractres -avec les restrictions poses par l'ASCII-. Prolog dvelopp en Europe depuis 1972 Marseille (Alain Colmerauer et Philippe Roussel) et Edinburgh n'a pas su s'imposer non plus probablement plus cause de ses mthodes de commercialisation que par sa participation la dbcle de la Ve gnration japonaise.
LOGO se Seymour Papert, en 1968, fut un essai de populariser les langages de programmation en ajoutant aux constructions de base de LISP des primitives graphiques.

On notera aussi que les tableurs (Visicalc et EXCEL)  dans lesquels ont t insrs de vritables programmes procdent de la mme logique d'interprtation que les processeurs d'intelligence artificielle. Leur convivialit empirique a eu beau jeu de leur permettre de s'imposer devant leurs anctres.

APL invent par Ken Iverson IBM la fin des annes 1950 voulait un peu tre aux nombres ce que LISP tait aux chanes de caractre. L'utilisation d'un jeu de symboles mathmatiques non disponibles sur les claviers ordinaires a probablement t une des sources de son chec devant BASIC et les tableurs. Lui aussi est un langage interprt excutable sans traitement pralable par le moteur de la machine.

Les ordinateurs se sont avrs capables d'excuter des oprations non seulement sur des nombres mais sur des variables symboliques. C'est ainsi que sont ns les langages Macsyma (Joel Moses au MIT en 1969), puis Maple (Universit de Waterloo en 1980) et Mathematica (Stephen Wolfram 1988) qui permettent les calculs mathmatiques sous forme algbrique aussi bien que sous leur expression numrique.

On aura du mal classer EMACS dans les langages de programmation. Mais tout comme les tableurs il s'agit d'un processeur spcialis inspir de LISP qui a t progressivement tendu pour avoir ces capacits de programmation. Son dveloppement universitaire et sa diffusion dans le monde GNU a fait de Richard Stallman un auteur de programmes ayant marqu l'histoire de l'informatique.

On n'a trait ici que des langages rpandus en dehors de leur quipe d'origine. A tous les langages diffusion restreinte dont certains ont t l'origine des langages mentionns ci-dessus (BCPL pour C, LIS pour ADA...) il convient d'ajouter ceux destins des applications particulires (MUMPS, TeX, Postscript) dont certains mritent qu'on leur accorde une place sidans l'histoire du logiciel.

HISTOIRE et Commentaires sur les LANGAGES de PROGRAMMATION

  • FORTRAN
  • ALGOL
  • COBOL
  • PL/1
  • C
  • ADA
  • BASIC
  • LISP
  • SIMULA
  • SNOBOL
  • EMACS

ARTICLES

LINKS

Computer Language History contenant un arbre de la filiation des langages de programmation ainsi que des liens vers des histoires particulires aux diffrents langages.

DecorCollection歐洲傢俬| 傢俬/家俬/家私| 意大利傢俬/實木傢俬| 梳化| 意大利梳化/歐洲梳化| 餐桌/餐枱/餐檯| 餐椅| 電視櫃| 衣櫃| 床架| 茶几

橫額| 貼紙| 貼紙印刷| 宣傳單張| 海報| 攤位| foamboard| 喜帖| 信封 數碼印刷

QR code scanner| inventory management system| labelling| Kiosk| warehouse management|

邮件营销| Email Marketing| 電郵推廣| edm营销| 邮件群发软件| edm| 营销软件| Mailchimp| Hubspot| Sendinblue| ActiveCampaign| SMS

Tomtop| Online shop| Online Einkaufen

地產代理/物業投資| 租辦公室/租寫字樓| 地產新聞| 甲級寫字樓/頂手| Grade A Office| Commercial Building / Office building| Hong Kong Office Rental| Rent Office| Office for lease / office leasing| Office for sale| Office relocation

香港甲級寫字樓出租

中環中心| 合和中心| 新文華中心| 力寶中心| 禮頓中心| Jardine House| Admiralty Centre| 港威大廈| One Island East| 創紀之城| 太子大廈| 怡和大廈| 康宏廣場| 萬宜大廈| 胡忠大廈| 信德中心| 北京道1號| One Kowloon| The Center| World Wide House

| 國際小學| 英國學校| International schools hong kong| 香港國際學校| Wycombe Abbey| 香港威雅學校| school day| boarding school Hong Kong| 香港威雅國際學校| Wycombe Abbey School

Addmotor Electric Bike| Electric bike shop / electric bicycle shop| Electric bike review| Electric trike| Fat tire electric bike| Best electric bike| Electric bicycle| E bike| Electric bikes for sale| Folding electric bike| Electric mountain bike| Electric tricycle| Mid drive electric bike Juiced Bikes Pedego Rad-Power