LSE (French:Langage symbolique d'enseignement) is aprogramming language developed atSupélec andTélémécanique from the late 1960s to the mid-1970s.[1][2][3][4] It is similar toBASIC, except withFrench-language instead ofEnglish-language keywords. It was derived from an earlier language calledLSD, also developed at Supélec. It is most commonly said to be an acronym forLangage Symbolique d'Enseignement (Symbolic Teaching Language), but other expansions are also known (e.g.Langage de Sup-Élec, or the more cynicalLangage Sans Espoir (hopeless language)).
LSE originally flourished because being "interpreted", the "tokens" used were common to all languages and with a nationalized "editor", tokenized programs could be listed in any language. Obviously, the support from theFrench Ministry of National Education was very important, but it declined as the ministry lost interest. It went through a number of revisions; earlier versions of LSE lacked full support forstructured programming, later versions such as LSE-83 (aka LSE-1983) by Jacques Arsac added structured programming support, along withexception handling.[5] Even later revisions, such as LSE-2000, added more functionality, new types, new operators (NI, ET QUE, OU QUE and SELON-DANS-SINON), flow control commands, etc.
1*CHANSON DES 99 BOUTEILLES DE BIERE 2*PASCAL BOURGUIGNON, 2003 10 FAIRE 20 POUR N←99 PAS -1 JUSQUA 1 20 &STROF(N) 30 AFFICHER['IL EST TEMPS D’’ALLER AU MAGASIN.',/] 40 TERMINER100 PROCEDURE &STROF(N) LOCAL S1,S0;CHAINE S1,S0;S1←"S";S0←"S"110 SI N=2 ALORS S0←"" SINON SI N=1 ALORS DEBUT S1←"";S0←"" FIN120 AFFICHER[U,' BOUTEILLE',U,' DE BIERE SUR LE MUR.',/]N,S1130 AFFICHER[U,' BOUTEILLE',U,' DE BIERE.',/]N,S1140 AFFICHER['EN PRENDRE UNE, LA FAIRE PASSER.',/]150 AFFICHER[U,' BOUTEILLE',U,' DE BIERE SUR LE MUR.',2/]N-1,S0160 RETOUR
Example from Jacques Arsac in LSE83:[5]
1 CHAINE A,B,BP5 FAIRE10 AFFICHER 'A = ' ;LIRE A ; SI A=’’ ALORS FINI IS11 AFFICHER 'B = ' ;LIRE B ; BP ← B1215 R SI LGR(A) # LGR(B) ALORS .FAUX. SINON &ANAG(A,B) IS20 SI R ALORS AFFICHER A, 'EST ANAGRAMME DE ',BP21 SINON AFFICHER A, 'N’’EST PAS ANAGRAMME DE 1, BP22 IS25 BOUCLER2930 TERMINER3150 FONCTION &ANAG(U,V) LOCAL J {lgr(u)=lgr(v)}51 SI U=' ' ALORS RESULTAT .VRAI. IS52 SI J = 0 ALORS RESULTAT .FAUX. IS54 RESULTAT &ANAG(SCH(U,2, ' '),MCH(V,J,l, ' '))$55 &ANAG$99(*** MÉTHODE D'EUCLIDE POUR TROUVER LE PLUS GRAND DIVISEUR COMMUN D'UN** NUMÉRATEUR ET D'UN DÉNOMINATEUR.** L. Goulet 2010*)PROCÉDURE &PGDC(ENTIER U, ENTIER V) : ENTIER LOCAL U, V ENTIER T TANT QUE U > 0 FAIRE SI U< V ALORS T←U U←V V←T FIN SI U ← U - V BOUCLER RÉSULTAT VFIN PROCÉDUREPROCÉDURE &DEMO(ENTIER U, ENTIER V) LOCAL U, V AFFICHER ['Le PGDC de ',U,'/',U,' est ',U,/] U, V, &PGDC(U,V)FIN PROCÉDURE&DEMO(9,12)
The language LSE (Langage Symbolique d'Enseignement–a symbolic teaching language) was defined at my laboratory in 1971 and implemented on the MITRA 15 and T1600, both French-made systems.