<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>Site WWW de Laurent Bloch</title>
	<link>http://www.laurentbloch.org/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net (Sarka-SPIP)</generator>




 
	<item xml:lang="fr">
		<title>Th&#232;ses et recherches</title>
		<link>http://www.laurentbloch.org/spip.php?article183</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article183</guid>
		<dc:date>2010-08-31T07:58:17Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		


		<dc:subject>Scheme</dc:subject>
		<dc:subject>programmation</dc:subject>
		<dc:subject>langage de programmation</dc:subject>
		<dc:subject>parall&#233;lisme</dc:subject>
		<dc:subject>CAML</dc:subject>
		<dc:subject>style fonctionnel</dc:subject>

		<description>&lt;p&gt;Cet article publie les th&#232;ses et travaux de recherche de quelques amis qui ont bien voulu me les confier.&lt;/p&gt;

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique12" rel="directory"&gt;Syst&#232;mes, d&#233;veloppement, recherche&lt;/a&gt;

/ 
&lt;a href="http://www.laurentbloch.org/spip.php?mot1" rel="tag"&gt;Scheme&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot4" rel="tag"&gt;programmation&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot5" rel="tag"&gt;langage de programmation&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot68" rel="tag"&gt;parall&#233;lisme&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot69" rel="tag"&gt;CAML&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot70" rel="tag"&gt;style fonctionnel&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Cet article publie les th&#232;ses et travaux de recherche de quelques amis qui ont bien voulu me les confier.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;La th&#232;se de Francis Dupont, &lt;i&gt;Langages fonctionnels et parall&#233;lisme &#8212;
Une r&#233;alisation pour le syst&#232;me CAML&lt;/i&gt; :&lt;/p&gt; &lt;dl class='spip_document_93 spip_documents spip_documents_center'&gt; &lt;dt&gt;&lt;a href=&quot;http://www.laurentbloch.org/IMG/pdf/Francis-Dupont-ParallelCAML-2.pdf&quot; title='PDF - 688 ko' type=&quot;application/pdf&quot;&gt;&lt;img src='http://www.laurentbloch.org/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 688 ko' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt; &lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Th&#232;se de Francis Dupont&lt;/strong&gt;&lt;/dt&gt; &lt;dd class='spip_doc_descriptif' style='width:120px;'&gt;Parallel CAML
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;La th&#232;se de Manuel Serrano, &lt;i&gt;Vers une compilation portable&lt;/i&gt; et &lt;i&gt;performante des langages fonctionnels&lt;/i&gt; :&lt;/p&gt; &lt;dl class='spip_document_95 spip_documents spip_documents_center'&gt; &lt;dt&gt;&lt;a href=&quot;http://www.laurentbloch.org/IMG/gz/these-serrano-ps.gz&quot; title='GZ - 644 ko' type=&quot;application/x-gzip&quot;&gt;&lt;img src='http://www.laurentbloch.org/local/cache-vignettes/L52xH52/gz-9b352.png' width='52' height='52' alt='GZ - 644 ko' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt; &lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Th&#232;se de Manuel Serrano&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;La HDR de Manuel Serrano, &lt;i&gt;Vers une programmation fonctionnelle&lt;/i&gt; praticable :&lt;/p&gt; &lt;dl class='spip_document_96 spip_documents spip_documents_center'&gt; &lt;dt&gt;&lt;a href=&quot;http://www.laurentbloch.org/IMG/gz/hdr-serrano-ps.gz&quot; title='GZ - 917.9 ko' type=&quot;application/x-gzip&quot;&gt;&lt;img src='http://www.laurentbloch.org/local/cache-vignettes/L52xH52/gz-9b352.png' width='52' height='52' alt='GZ - 917.9 ko' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt; &lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;HDR de Manuel Serrano&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>L'algorithme de Liang pour la division des mots par ordinateur</title>
		<link>http://www.laurentbloch.org/spip.php?article181</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article181</guid>
		<dc:date>2010-07-13T21:06:10Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		


		<dc:subject>langage</dc:subject>
		<dc:subject>LaTeX</dc:subject>
		<dc:subject>typographie</dc:subject>
		<dc:subject>TeX</dc:subject>

		<description>#Sommaire Le probl&#232;me de la division des mots est compliqu&#233; &#171; Il y a des probl&#232;mes dont on trouve tout de suite une solution simple mais approch&#233;e, voire na&#239;ve et pour lesquels une solution compl&#232;te n&#233;cessite une approche autrement plus s&#233;rieuse. La division des mots, c'est-&#224;-dire la coupure des mots en fin de ligne d'un texte, est de ceux-l&#224;. C'est tellement vrai que lorsque l'on parle de ce probl&#232;me &#224; un enseignant d'informatique en universit&#233;, la r&#233;plique est presque invariablement la m&#234;me : O&#249; est le (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique22" rel="directory"&gt;Typographie, TeX/LaTeX, etc.&lt;/a&gt;

/ 
&lt;a href="http://www.laurentbloch.org/spip.php?mot47" rel="tag"&gt;langage&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot62" rel="tag"&gt;LaTeX&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot66" rel="tag"&gt;typographie&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot67" rel="tag"&gt;TeX&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;spip&quot;&gt;#Sommaire&lt;/h3&gt;
&lt;h3 class=&quot;spip&quot;&gt;Le probl&#232;me de la division des mots est compliqu&#233;&lt;/h3&gt;
&lt;p&gt;&#171; Il y a des probl&#232;mes dont on trouve tout de suite une solution
simple mais approch&#233;e, voire na&#239;ve et pour lesquels une solution
compl&#232;te n&#233;cessite une approche autrement plus s&#233;rieuse. La division
des mots, c'est-&#224;-dire la coupure des mots en fin de ligne d'un texte,
est de ceux-l&#224;. C'est tellement vrai que lorsque l'on parle de ce
probl&#232;me &#224; un enseignant d'informatique en universit&#233;, la r&#233;plique est
presque invariablement la m&#234;me : &lt;i&gt;O&#249; est le probl&#232;me ? Mes &#233;tudiants
de DEUG, ou de licence, font &#231;a en TP&lt;/i&gt; &#187;.&lt;/p&gt; &lt;p&gt;Ces lignes de Jacques Andr&#233; introduisaient en 1986 l'article de
Jacques D&#233;sarm&#233;nien &lt;i&gt;La division par ordinateur des mots fran&#231;ais :
application &#224; TeX&lt;/i&gt;, (Technique et Science Informatiques 1986/04).
L'article, en ma possession mais malheureusement toujours pas
disponible en ligne librement, expliquait toute la difficult&#233; du sujet
et en exposait la solution, bas&#233;e sur un myst&#233;rieux &#171; algorithme de
Liang &#187;, dont je ne trouvai pas le moyen de consulter la
documentation, sauf &#224; me rendre &#224; la biblioth&#232;que de l'Universit&#233;
Stanford pour y emprunter la th&#232;se de Ph.D. soutenue en 1983 par Frank
Liang, &lt;i&gt;Word Hy-phen-a-tion by Com-put-er&lt;/i&gt; ; les tirets &#224; l'int&#233;rieur
des mots de ce titre y indiquent les positions l&#233;gitimes de c&#233;sure,
nous utiliserons cette notation dans la suite.&lt;/p&gt; &lt;p&gt;Depuis 2004, mais je ne m'en suis avis&#233; que r&#233;cemment, Frank Liang a autoris&#233; la mise en ligne d'une &lt;a href='http://www.tug.org/docs/liang/' class='spip_out' rel='external'&gt;photocopie de sa th&#232;se&lt;/a&gt;, de pi&#232;tre qualit&#233; mais lisible. Il &#233;tait d'ailleurs d&#233;j&#224; possible d'en lire un r&#233;sum&#233; dans le &lt;i&gt;TeXbook&lt;/i&gt; de Donald Knuth, &#224; l'annexe H (page 515 de la traduction fran&#231;aise de Jean-C&#244;me Charpentier). J'ai donc lu r&#233;cemment le texte int&#233;gral, pour constater que la substance relative &#224; la division des mots m'en avait d&#233;j&#224; &#233;t&#233; d&#233;livr&#233;e par l'article de D&#233;sarm&#233;nien.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Ranger efficacement des mots (ou des motifs)&lt;/h3&gt;
&lt;p&gt;En fait, les trois quarts des 44 pages de texte de la th&#232;se (sans
compter les annexes qui incluent le programme de g&#233;n&#233;ration des motifs
de c&#233;sure et la table des motifs) sont consacr&#233;s &#224; des tr&#233;sors
d'ing&#233;niosit&#233; algorithmique destin&#233;s &#224; gagner quelques milliers
d'octets en m&#233;moire, efforts dont l'auteur se dispenserait sans doute
en grande partie s'il devait recommencer ce travail sur un ordinateur
contemporain. Aussi le lecteur impatient des aspects linguistiques et
typographiques peut-il sans dommage passer directement &#224; la section
suivante.&lt;/p&gt; &lt;p&gt;Pour stocker des mots ou des motifs (fragments de mots, &lt;i&gt;patterns&lt;/i&gt;),
Liang utilise les arbres de recherche &lt;i&gt;(digital search trees)&lt;/i&gt;, ou
&lt;i&gt;tries&lt;/i&gt;, une structure de donn&#233;es qui peut &#234;tre envisag&#233;e comme un
arbre &lt;i&gt;m&lt;/i&gt;-aire, o&#249; &lt;i&gt;m&lt;/i&gt; est le nombre de lettres de l'alphabet sur
lequel sont d&#233;finis les mots. Les recherches sont effectu&#233;es caract&#232;re
par caract&#232;re, avec &#224; chaque n&#339;ud une alternative &#224; &lt;i&gt;m&lt;/i&gt; branches.&lt;/p&gt; &lt;p&gt;Comme les informaticiens pr&#233;f&#232;rent les arbres binaires, Liang passe
ensuite du &lt;i&gt;trie&lt;/i&gt; &lt;i&gt;m&lt;/i&gt;-aire au &lt;i&gt;trie&lt;/i&gt; cha&#238;n&#233; implant&#233; par un arbre
binaire, o&#249; l'alternative &#224; &lt;i&gt;m&lt;/i&gt; branches est r&#233;alis&#233;e par une s&#233;quence
de comparaisons, &#224; chaque n&#339;ud si le caract&#232;re qui s'y trouve est &#171; bon &#187; on passe au fils droit, au fils gauche sinon.&lt;/p&gt; &lt;p&gt;Liang implante son &lt;i&gt;trie&lt;/i&gt; cha&#238;n&#233; dans un tableau &#224; &lt;i&gt;m&lt;/i&gt; colonnes, une
par lettre de l'alphabet. La premi&#232;re ligne du tableau contient, dans
chaque case qui correspond &#224; une lettre qui est l'initiale d'un ou de
plusieurs mots, le num&#233;ro d'une ligne dont les cases qui correspondent
aux secondes lettres de chacun de ces mots indiqueront des num&#233;ros
de ligne o&#249; se trouveront des pointeurs vers les lignes correspondant
aux troisi&#232;mes lettres, et ainsi de suite. Une marque sp&#233;ciale indique
qu'ue case correspond &#224; la derni&#232;re lettre du mot consid&#233;r&#233;.&lt;/p&gt; &lt;p&gt;Le tableau ainsi obtenu est plein de cases vides : pour gagner de la place Liang regroupe les lignes dont les cases occup&#233;es sont dans des colonnes diff&#233;rentes, ce qui lui impose d'indexer chaque case avec la lettre pr&#233;c&#233;dente du mot auquel elle correspond. Enfin on peut encore gagner de la place en remarquant que beaucoup de mots partagent un suffixe commun, et qu'en remontant dans le &lt;i&gt;trie&lt;/i&gt; en partant des feuilles on doit pouvoir fusionner les &lt;i&gt;subtries&lt;/i&gt; communs, non sans identifier, dans une table associative, les n&#339;uds &#233;quivalents. Bref, ces tr&#233;sors d'ing&#233;niosit&#233; algorithmique r&#233;cursive permettent &#224; Frank Liang de faire tenir son algorithme et sa table de classement des mots ou des motifs, qui sont loin d'&#234;tre simples, en tr&#232;s peu de place. L'originalit&#233; des m&#233;thodes employ&#233;es justifie pleinement la pr&#233;sence de cet expos&#233; dans une th&#232;se de Ph.D.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;C&#233;sure&lt;/h3&gt;
&lt;p&gt;Apr&#232;s ce long pr&#233;ambule consacr&#233; aux structures de donn&#233;es propres &#224;
stocker les mots et les motifs, l'op&#233;ration de c&#233;sure elle-m&#234;me
(&lt;i&gt;hyphenation&lt;/i&gt; en anglais) fait l'objet d'un expos&#233; assez
laconique. Deux m&#233;thodes sont envisageables : d&#233;finir et appliquer des
r&#232;gles, ou constituer un dictionnaire exhaustif o&#249; chaque mot,
accompagn&#233; de ses diff&#233;rentes formes d&#233;riv&#233;es, figurera annot&#233; des
points de c&#233;sure autoris&#233;s. Notons que le probl&#232;me des formes
d&#233;riv&#233;es, s'il est simple en anglais moderne, d&#233;barrass&#233; de la plupart
des flexions et variations des formes verbales, est nettement plus
complexe en fran&#231;ais.&lt;/p&gt; &lt;p&gt;Nous avons appris &#224; l'&#233;cole les r&#232;gles de c&#233;sure des mots fran&#231;ais, et
d'ailleurs ce sont elles que l'on retrouve dans le programme de c&#233;sure
du premier syst&#232;me de typographie informatique con&#231;u d&#232;s 1954 par une
&#233;quipe fran&#231;aise men&#233;e par &lt;a href='http://jacques-andre.fr/chi/chi88/raymond-sea.html' class='spip_out' rel='external'&gt;F.H. Raymond&lt;/a&gt; et G. Bafour. Un
programme qui repose uniquement sur ces r&#232;gles aura l'avantage de la
simplicit&#233;, et il permettra de diviser correctement la plupart des
mots.&lt;/p&gt; &lt;p&gt;N&#233;anmoins, ces r&#232;gles acceptent un certain nombre d'exceptions, qui
produiront autant d'erreurs, inacceptables pour un syst&#232;me de
typographie professionnel. Ainsi, nous explique Jacques D&#233;sarm&#233;nien,
apr&#232;s avoir compil&#233; tous les manuels typographiques et grammaticaux
qu'il a pu trouver, &lt;strong&gt;&#233;pis-copal&lt;/strong&gt; sera divis&#233; selon une r&#232;gle
phon&#233;tique, cependant qu'&lt;strong&gt;&#233;pi-scope&lt;/strong&gt;, plus moderne, sera divis&#233; selon
une r&#232;gle &#233;tymologique. Le groupe &lt;strong&gt;ill&lt;/strong&gt; est ins&#233;cable lorsqu'il
repr&#233;sente un son mouill&#233; comme dans &lt;strong&gt;grillage&lt;/strong&gt;, mais pas dans
&lt;strong&gt;vil-lage&lt;/strong&gt;. De m&#234;me pour le groupe &lt;strong&gt;gn&lt;/strong&gt;, ins&#233;cable sauf dans
&lt;strong&gt;stag-nant&lt;/strong&gt; o&#249; le &lt;strong&gt;g&lt;/strong&gt; et le &lt;strong&gt;n&lt;/strong&gt; sont prononc&#233;s s&#233;par&#233;ment.
Encore les manuels ne sont-ils pas unanimes sur ces points d&#233;licats.&lt;/p&gt; &lt;p&gt;L'id&#233;e, g&#233;niale, de Frank Liang fut de combiner la m&#233;thode des r&#232;gles avec celle du dictionnaire, en constituant non pas un dictionnaire des mots &#224; diviser, mais un dictionnaire des sous-mots, qui sont enregistr&#233;s sous forme de motifs. Ce dictionnaire comportera un petit nombre de motifs correspondant aux r&#232;gles, et un plus grand nombre de motifs correspondant aux exceptions et aux exceptions des exceptions. Comment le motif de l'exception pourra-t-il prendre le pas sur le motif de la r&#232;gle, c'est ce que nous allons voir.&lt;/p&gt; &lt;p&gt;Ainsi, pour reprendre l'expos&#233; de D&#233;sarm&#233;nien, pour diviser un mot on extraiera tous ses sous-mots, qui seront confront&#233;s au dictionnaire des motifs, constitu&#233; pr&#233;alablement. Les lettres d'un groupe qui constitue un motif sont s&#233;par&#233;es par des coefficients entiers de 0 &#224; 9 qui indiquent la d&#233;sirabilit&#233; ou la non-d&#233;sirabilit&#233; d'une coupure &#224; cet endroit. En fait 0, qui indique &#171; pas de coupure &#187;, sera omis. Les nombres impairs indiquent les coupures autoris&#233;es, les nombres
pairs (dont 0, omis) les coupures interdites. Lorsque plusieurs
coefficients fournis par diff&#233;rents motifs sont en concurrence pour
une m&#234;me position de c&#233;sure &#233;ventuelle, le plus grand l'emporte.
Ainsi, la pr&#233;sence dans le dictionnaire des motifs &lt;strong&gt;vil3l&lt;/strong&gt; et
&lt;strong&gt;avil4l&lt;/strong&gt; permet la c&#233;sure de &lt;strong&gt;vil-lage&lt;/strong&gt; et interdit celle de
&lt;strong&gt;gravil/lon&lt;/strong&gt;. Le &lt;strong&gt;e&lt;/strong&gt; ouvert non accentu&#233; de &lt;strong&gt;t&#233;-les-cope&lt;/strong&gt; le
distingue de &lt;strong&gt;mi-cro-scope&lt;/strong&gt;, qui ne se coupera pas non plus comme &lt;strong&gt;dis-co-phile&lt;/strong&gt;, ce qu'indiquent &lt;strong&gt;1s2cop, e2s3cop, di2s3cop&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;D&#233;sarm&#233;nien s'est rang&#233; &#224; l'avis du &lt;i&gt;Memento typographique&lt;/i&gt; de C. Gouriou, &#171; qu'il est pr&#233;f&#233;rable, surtout dans les ouvrages destin&#233;s aux &#233;l&#232;ves, d'&#233;viter de conserver en fin de ligne des syllabes malsonnantes ou pr&#234;tant &#224; des interpr&#233;tations regrettables &#187;, et il a introduit les motifs +&lt;strong&gt;con4&lt;/strong&gt; et +&lt;strong&gt;cons4&lt;/strong&gt; &#224; cet effet.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;R&#233;gularit&#233; compar&#233;e des diff&#233;rentes langues&lt;/h3&gt;
&lt;p&gt;Pour engendrer le dictionnaire de motifs, Frank Liang a &#233;crit le
programme Patgen, auquel il faut fournir une liste de mots
pr&#233;alablement divis&#233;s, dont il inf&#233;rera un dictionnaire de motifs apte
&#224; les reproduire. Les bons dictionnaires anglais ou am&#233;ricains
mentionnent pour chaque mot les points de c&#233;sure acceptables, mais pas
les dictionnaires fran&#231;ais. En outre, un tel dictionnaire exist&#226;t-il,
qu'il ne fournirait sans doute pas les c&#233;sures des formes d&#233;riv&#233;es, dont la langue fran&#231;aise est riche. Bref, Jacques D&#233;sarm&#233;nien a pr&#233;f&#233;r&#233; &#233;crire directement les motifs n&#233;cessaire &#224; la production du dictionnaire d&#233;sir&#233;. Ce travail (de romain) est d&#233;crit en d&#233;tail dans l'article, il a fait alterner essais de programmes et compilation manuelle de motifs au fur et &#224; mesure qu'apparaissaient les c&#233;sures inattendues.&lt;/p&gt; &lt;p&gt;Une fois tout ce travail fait et que l'on croit toucher au but, surgit un autre probl&#232;me : avec TeX, la c&#233;sure d&#233;pend de la police de caract&#232;res ! En effet le traitement des ligatures et des cr&#233;nages n'est pas sans effet, D&#233;sarm&#233;nien a d&#251; adapter les polices.&lt;/p&gt; &lt;p&gt;Aucun programme de division des mots ne peut pr&#233;tendre &#224; la perfection, puisqu'aussi bien les langues humaines sont d'une flexilbilit&#233; infinie, qu'en outre elles varient dans le temps et dans l'espace et que leurs diff&#233;rents locuteurs ne sont pas forc&#233;ment d'accord entre eux sur les usages. Certains sont carr&#233;ment non-programmables : en anglais &lt;i&gt;record&lt;/i&gt; se coupe &lt;strong&gt;re-cord&lt;/strong&gt; s'il s'agit du nom et &lt;strong&gt;rec-ord&lt;/strong&gt; s'il s'agit du verbe. Donc il s'agira, pour chaque langue, d'&#233;tablir un dictionnaire de motifs de taille raisonnable et qui ne laissera subsister qu'un tout petit nombre d'exceptions r&#233;siduelles, la plupart des logiciels de composition donnant la possibilit&#233; de diviser &#171; &#224; la main &#187; les mots trop r&#233;tifs.&lt;/p&gt; &lt;p&gt;&#192; la fin de son article Jacques D&#233;sarm&#233;nien nous livre une comparaison int&#233;ressante. On peut estimer que le nombre de motifs qu'il faut introduire dans le dictionnaire, pour traiter des cas d'exception par exemple, est une mesure de l'irr&#233;gularit&#233; de l'orthographe de la langue consid&#233;r&#233;e. La diffusion de TeX/LaTeX a conduit de nombreux chercheurs &#224; construire des dictionnaires adapt&#233;s &#224; d'autres langues que l'anglais, et ils se sont r&#233;unis &#224; C&#244;me en 1985 pour comparer leurs r&#233;sultats.&lt;/p&gt; &lt;p&gt;Le dictionnaire de D&#233;sarm&#233;nien pour le fran&#231;ais comporte 804 motifs, dont 412 pour les c&#233;sures &#233;tymologiques. Pour l'anglais il en faut 4 447, pr&#232;s de 10 000 pour l'allemand, mais seulement 88 pour l'italien, langue dont l'orthographe a &#233;t&#233; fix&#233;e au XIX&lt;sup&gt;e&lt;/sup&gt; si&#232;cle seulement, selon des principes sans doute plus rationnels.&lt;/p&gt; &lt;p&gt;Ce n'est que si l'on ne s'est jamais pos&#233; la question que cette question de la division des mots peut sembler ancillaire. Comme Bernard Gaulle nous le rappelait, par exemple dans son article de 1994 dans les &lt;a href='http://cahiers.gutenberg.eu.org/cg-bin/article/CG_1994___18_61_0.pdf' class='spip_out' rel='external'&gt;Cahiers GUTenberg n&#176; 18&lt;/a&gt;, &lt;i&gt;Commentaires sur la portabilit&#233; des documents (LA)TEX&lt;/i&gt;, la m&#233;thode et les choix de division des mots ont une importance primordiale pour la qualit&#233; typographique d'un texte, ainsi que pour l'adaptation d'un syst&#232;me de composition &#224; une langue particuli&#232;re.&lt;/p&gt; &lt;p&gt;Les programmes de Liang ont &#233;t&#233; traduits dans &#224; peu pr&#232;s tous les langages de programmation et utilis&#233;s pour d'autres syst&#232;mes de composition que TeX et LaTeX, en voici une &lt;a href='http://sites.google.com/site/schemephil/hyphenate.ss' class='spip_out' rel='external'&gt;version dans mon langage pr&#233;f&#233;r&#233;&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>La Renaissance du parall&#233;lisme</title>
		<link>http://www.laurentbloch.org/spip.php?article180</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article180</guid>
		<dc:date>2010-07-08T20:07:23Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		


		<dc:subject>programmation</dc:subject>
		<dc:subject>parall&#233;lisme</dc:subject>
		<dc:subject>style fonctionnel</dc:subject>

		<description>#Sommaire- Beaut&#233;s et d&#233;cadence du calcul parall&#232;le De 1960 &#224; la fin des ann&#233;es 1980 le calcul parall&#232;le fut un domaine de recherche actif, avec des d&#233;bouch&#233;s industriels remarquables qui culmin&#232;rent avec les Connection Machines de Thinking Machines Corporation dont le premier mod&#232;le comptait 65 536 processeurs ! L'essor de ces d&#233;veloppements passionnants fut bris&#233; par les progr&#232;s de la micro-&#233;lectronique : l'am&#233;lioration rapide des performances et de l'efficacit&#233; des microprocesseurs, au rythme pr&#233;vu (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique10" rel="directory"&gt;L'informatique : science et industrie&lt;/a&gt;

/ 
&lt;a href="http://www.laurentbloch.org/spip.php?mot4" rel="tag"&gt;programmation&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot68" rel="tag"&gt;parall&#233;lisme&lt;/a&gt;, 
&lt;a href="http://www.laurentbloch.org/spip.php?mot70" rel="tag"&gt;style fonctionnel&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;spip&quot;&gt;#Sommaire-&lt;/h3&gt;
&lt;h3 class=&quot;spip&quot;&gt;Beaut&#233;s et d&#233;cadence du calcul parall&#232;le&lt;/h3&gt;
&lt;p&gt;De 1960 &#224; la fin des ann&#233;es 1980 le calcul parall&#232;le fut un domaine de
recherche actif, avec des d&#233;bouch&#233;s industriels remarquables qui
culmin&#232;rent avec les &lt;i&gt;Connection Machines&lt;/i&gt; de &lt;a href='http://en.wikipedia.org/wiki/Thinking_Machines' class='spip_out' rel='external'&gt;Thinking Machines
Corporation&lt;/a&gt; dont
le premier mod&#232;le comptait 65 536 processeurs !&lt;/p&gt; &lt;p&gt;L'essor de ces d&#233;veloppements passionnants fut bris&#233; par les progr&#232;s
de la micro-&#233;lectronique : l'am&#233;lioration rapide des performances et
de l'efficacit&#233; des microprocesseurs, au rythme pr&#233;vu par la &lt;a href='http://www.laurentbloch.org/spip.php?article154#inter2' class='spip_out'&gt;loi de
Moore&lt;/a&gt;,
assurait la croissance de l'industrie et le d&#233;veloppement des usages
de l'informatique sans remettre en cause ni les logiciels existants ni
les m&#233;thodes de programmation, alors que se convertir au calcul
parall&#232;le aurait exig&#233;, outre des investissements mat&#233;riels
significatifs, des remises en cause intellectuelles et techniques
consid&#233;rables du c&#244;t&#233; de la programmation.&lt;/p&gt; &lt;p&gt;Ann&#233;e apr&#232;s ann&#233;e, les progr&#232;s des processeurs procuraient
gratuitement les m&#234;mes gains de performance que le dur labeur de
parall&#233;lisation des programmes. Si parall&#233;liser un programme prenait deux ans, ce d&#233;lai procurait conform&#233;ment &#224; la loi de Moore un doublement de la densit&#233; des circuits, et les gains qui en r&#233;sultaient.&lt;/p&gt; &lt;p&gt;Dans le num&#233;ro de juin des &lt;a href='http://cacm.acm.org/' class='spip_out' rel='external'&gt;Communications of the ACM&lt;/a&gt; &lt;a href='http://en.wikipedia.org/wiki/Peter_J._Denning' class='spip_out' rel='external'&gt;Peter
J. Denning&lt;/a&gt; et &lt;a href='http://csg.csail.mit.edu/Users/dennis/' class='spip_out' rel='external'&gt;Jack
B. Dennis&lt;/a&gt; consacrent un
&lt;i&gt;point de vue&lt;/i&gt; dense et profond &#224; la &lt;i&gt;Renaissance du parall&#233;lisme&lt;/i&gt;.
En effet les progr&#232;s techniques dont la loi de Moore rend compte
commencent &#224; atteindre des limites fix&#233;es par la physique : quand
l'&#233;paisseur du di&#233;lectrique des transistors se mesure en dizaines
d'atomes, on comprend bien qu'il va falloir trouver un autre moyen
pour continuer &#224; accro&#238;tre la puissance de calcul. D'ailleurs les
fr&#233;quences d'horloge n'augmentent plus gu&#232;re.&lt;/p&gt; &lt;p&gt;Parmi les autres moyens envisageables pour accro&#238;tre les performances,
utiliser plusieurs processeurs (ou des processeurs multi-c&#339;urs, ce qui
revient au m&#234;me) au lieu d'un semble une id&#233;e prometteuse. Il est
aussi possible d'utiliser plusieurs ordinateurs qui se r&#233;partissent le
travail, cela s'appelle une grappe &lt;i&gt;(cluster)&lt;/i&gt;, la liaison entre les
unit&#233;s de calcul est moins intime que dans un multiprocesseur, les
probl&#232;mes &#224; r&#233;soudre sont diff&#233;rents mais pas trop. R&#233;partir une
charge de travail entre plusieurs processeurs pose des probl&#232;mes de
synchronisation et de coordination qui ne sont pas triviaux : cela
s'appelle le calcul parall&#232;le.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Id&#233;es nouvelles, id&#233;es anciennes&lt;/h3&gt;
&lt;p&gt;L'apparition des multiprocesseurs, des multi-c&#339;urs et des &lt;i&gt;clusters&lt;/i&gt;,
et leur corollaire, la r&#233;apparition du parall&#233;lisme, tombent dans un
oc&#233;an d'oubli, et les ing&#233;nieurs et chercheurs de la nouvelle
g&#233;n&#233;ration red&#233;couvrent des probl&#232;mes qu'ils croient
nouveaux. L'article de Denning et Dennis propose une brillante
synth&#232;se des acquis du premier parall&#233;lisme, directement r&#233;utilisables
avec les nouveaux processeurs.&lt;/p&gt; &lt;p&gt;La premi&#232;re architecture multiprocesseurs fut celle du &lt;a href='http://en.wikipedia.org/wiki/Burroughs_large_systems' class='spip_out' rel='external'&gt;Burroughs
B5000&lt;/a&gt;, lanc&#233;
en 1961 par une &#233;quipe sous la direction de &lt;a href='http://en.wikipedia.org/wiki/Robert_S._Barton' class='spip_out' rel='external'&gt;Robert S. Barton&lt;/a&gt;. Le B5000 comportait
de nombreuses innovations significatives qui lui donnaient 20 ans
d'avance sur le reste de l'industrie :&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; premier syst&#232;me d'exploitation &#233;crit en langage &#233;volu&#233;, Algol en l'occurrence ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; multiprocesseur &#224; m&#233;moire partag&#233;e et commutation &lt;i&gt;crossbar&lt;/i&gt; ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; architecture &#224; pile ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; jeu d'instructions r&#233;duit ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; code automatiquement r&#233;-entrant, etc.&lt;/p&gt; &lt;p&gt;L'apparition d'un multiprocesseur tel que le B5000 stimula la recherche
en parall&#233;lisme : en 1971 un groupe de chercheurs de Brown University et
de General Electric mirent au point un mod&#232;le d'environnement d'ex&#233;cution parall&#232;le qui serait parfaitement apte &#224; r&#233;soudre des probl&#232;mes consid&#233;r&#233;s aujourd'hui comme des d&#233;fis pour la recherche.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;D&#233;terminisme du calcul parall&#232;le&lt;/h3&gt;
&lt;p&gt;Le probl&#232;me th&#233;orique central du calcul parall&#232;le est celui du
d&#233;terminisme, qui demande qu'un r&#233;seau de t&#226;ches parall&#232;les en m&#233;moire
partag&#233;e produise toujours le m&#234;me r&#233;sultat &#224; partir des m&#234;mes
donn&#233;es, ind&#233;pendamment des vitesses d'ex&#233;cution respectives des
t&#226;ches. Un r&#233;sultat majeur de la recherche dans ce domaine est le
&lt;i&gt;th&#233;or&#232;me du d&#233;terminisme&lt;/i&gt;, qui donne une condition suffisante pour
garantir le r&#233;sultat. En voici l'&#233;nonc&#233; :&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; une t&#226;che est un calcul &#233;l&#233;mentaire qui r&#233;alise l'application d'une fonction &#224; des arguments pour produire un r&#233;sultat ; &lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; deux t&#226;ches sont dites en conflit si l'une d'elles modifie une cellule de m&#233;moire utilis&#233;e par l'autre ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; dans un syst&#232;me de t&#226;ches concurrentes, des situations de comp&#233;tition &lt;i&gt;(race conditions)&lt;/i&gt; peuvent survenir qui feraient que le r&#233;sultat du calcul d&#233;pende des vitesses d'ex&#233;cution relatives des diff&#233;rentes t&#226;ches ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; le d&#233;terminisme du calcul est garanti si le syst&#232;me est soumis &#224; la contrainte que, pour chaque couple de t&#226;ches en conflit, l'ordre d'ex&#233;cution soit toujours le m&#234;me pour tout calcul du syst&#232;me.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Programmation fonctionnelle et composition de programmes parall&#232;les&lt;/h3&gt;
&lt;p&gt;Il r&#233;sulte du th&#233;or&#232;me du d&#233;terminisme expos&#233; ci-dessus un corollaire
selon lequel un programme constitu&#233; de t&#226;ches concurrentes implant&#233;
sans recours &#224; l'op&#233;ration d'affectation au moyen d'un langage de
programmation fonctionnel sera, de fa&#231;on inh&#233;rente (&#171; gratuitement &#187;),
d&#233;terministe, puisque chaque t&#226;che d&#233;livre son r&#233;sultat &#224; son
successeur sans interf&#233;rence entre leurs zones m&#233;moire respectives.&lt;/p&gt; &lt;p&gt;On consultera avec profit la th&#232;se que Francis Dupont a consacr&#233;e &#224; une implantation parall&#232;le du langage fonctionnel CAML, disponible sur ce site ici :&lt;/p&gt;
&lt;dl class='spip_document_93 spip_documents spip_documents_left' style='float:left;'&gt; &lt;dt&gt;&lt;a href=&quot;http://www.laurentbloch.org/IMG/pdf/Francis-Dupont-ParallelCAML-2.pdf&quot; title='PDF - 688 ko' type=&quot;application/pdf&quot;&gt;&lt;img src='http://www.laurentbloch.org/local/cache-vignettes/L52xH52/pdf-eb697.png' width='52' height='52' alt='PDF - 688 ko' style='height:52px;width:52px;' /&gt;&lt;/a&gt;&lt;/dt&gt; &lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Th&#232;se de Francis Dupont&lt;/strong&gt;&lt;/dt&gt; &lt;dd class='spip_doc_descriptif' style='width:120px;'&gt;Parallel CAML
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Les chercheurs en syst&#232;mes parall&#232;les avaient un autre sommet &#224;
atteindre : la composition de programmes parall&#232;les, c'est-&#224;-dire
l'&#233;tablissement des conditions auxquelles un programme parall&#232;le
peut &#234;tre incorpor&#233;, sans modification, &#224; un programme parall&#232;le
plus grand. Il faut pour cela satisfaire trois principes :&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; masquage de l'information : l'&#233;tat interne d'une t&#226;che ne doit pas &#234;tre accessible &#224; une autre t&#226;che ; &lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; ind&#233;pendance du contexte : une t&#226;che ne doit pas d&#233;pendre de valeurs ext&#233;rieures &#224; sa m&#233;moire locale ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; non-interf&#233;rence des arguments : si deux t&#226;ches concurrentes acc&#232;dent &#224; la m&#234;me donn&#233;e, aucune des deux ne doit la modifier.&lt;/p&gt; &lt;p&gt;Les langages de programmation fonctionnels satisfont automatiquement
ces trois principes ; leurs modules sont donc, de fa&#231;on inh&#233;rente,
composables.&lt;/p&gt; &lt;p&gt;Tous les probl&#232;mes ne rel&#232;vent pas de solutions d&#233;terministes ; les
syst&#232;mes transactionnels en sont l'illustration : une place dans un
avion ne peut &#234;tre r&#233;serv&#233;e qu'une fois, et ce sera par la t&#226;che la
plus rapide. Comment construire des syst&#232;mes parall&#232;les par
composition de modules dont certains ne sont pas d&#233;terministes,
voil&#224; une question ouverte.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;M&#233;moire virtuelle et abandon des fichiers&lt;/h3&gt;
&lt;p&gt;La m&#233;moire virtuelle n'est pas juste une astuce technique pour
faciliter le rangement des objets : en d&#233;couplant la programmation
de la gestion de la m&#233;moire, elle procure un &#233;cran d'abstraction
et un m&#233;canisme centralis&#233; d'acc&#232;s aux donn&#233;es qui d&#233;barrasse les
modules des lourdeurs qui seraient des obstacles &#224; leur composition
parall&#232;le.&lt;/p&gt; &lt;p&gt;Le syst&#232;me Multics a d&#233;montr&#233;, dans les ann&#233;es 1960, qu'il &#233;tait
possible, de fa&#231;on efficace, d'implanter toutes les donn&#233;es, tant
persistantes que temporaires, dans un espace-adresse unique. Chaque
donn&#233;e y a une adresse, et la persistance est un attribut facultatif.
Cette conception ouvre la voie &#224; la disparition des fichiers, cette
plaie de l'informatique, h&#233;rit&#233;e de la m&#233;canographie, et qui rend
tout incompr&#233;hensible au profane.&lt;/p&gt; &lt;p&gt;Multics est venu trop t&#244;t pour r&#233;ussir, il co&#251;tait trop cher sur
des ordinateurs trop gros et pas assez puissants. Aujourd'hui la
voie est ouverte aux syst&#232;mes parall&#232;les persistants sans fichiers,
qui formeront l'informatique de demain.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Make et Makefile</title>
		<link>http://www.laurentbloch.org/spip.php?article179</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article179</guid>
		<dc:date>2010-07-08T12:10:01Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Laurent Bloch</dc:creator>



		<description>#Sommaire- make Le syst&#232;me Unix (comme d'autres) poss&#232;de un syst&#232;me de construction de programmes (on dit aussi un configurateur) nomm&#233; make. Au moyen de ce syst&#232;me on peut d&#233;crire les fichiers source et autres n&#233;cessaires &#224; la construction d'un programme, les d&#233;pendances entre fichiers, les commandes n&#233;cessaires &#224; la compilation des sources et &#224; la construction des ex&#233;cutables, ainsi que beaucoup d'autres choses. L'usage habituel de make consiste &#224; d&#233;terminer automatiquement quelles parties d'un grand (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique20" rel="directory"&gt;Bo&#238;te &#224; outils&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;spip&quot;&gt;#Sommaire-&lt;/h3&gt;
&lt;h3 class=&quot;spip&quot;&gt;make&lt;/h3&gt;
&lt;p&gt;Le syst&#232;me Unix (comme d'autres) poss&#232;de un syst&#232;me de construction de programmes (on dit aussi un configurateur) nomm&#233; make. Au moyen de ce syst&#232;me on peut d&#233;crire les fichiers source et autres n&#233;cessaires &#224; la construction d'un programme, les d&#233;pendances entre fichiers, les commandes n&#233;cessaires &#224; la compilation des sources et &#224; la construction des ex&#233;cutables, ainsi que beaucoup d'autres choses.&lt;/p&gt; &lt;p&gt;L'usage habituel de make consiste &#224; d&#233;terminer automatiquement quelles parties d'un grand programme (ou d'un texte compos&#233; avec LaTeX) doivent &#234;tre recompil&#233;es apr&#232;s que certains fichiers source aient &#233;t&#233; modifi&#233;s, et &#224; lancer les commandes appropri&#233;es pour ce faire.&lt;/p&gt; &lt;p&gt;Make est en fait un syst&#232;me plus g&#233;n&#233;ral que seulement un configurateur de programmes. C'est un langage de programmation adapt&#233; &#224; la r&#233;solution de syst&#232;mes de contraintes. Un programme make (g&#233;n&#233;ralement contenu dans un fichier nomm&#233; Makefile) comporte essentiellement deux types d'instructions : des r&#232;gles et des commandes.&lt;/p&gt; &lt;p&gt;Une r&#232;gle &#233;nonce le nom d'une cible &#224; atteindre (par exemple le nom d'un fichier ex&#233;cutable) suivi des noms des cibles pr&#233;liminaires dont elle d&#233;pend et qu'il faudra avoir atteintes avant d'esp&#233;rer atteindre la cible courante. Cela s'&#233;crit par exemple ainsi, le nom de la cible est en d&#233;but de ligne suivi de :, les noms des cibles interm&#233;diaires sont dans la suite de la ligne :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;all: mon_livre&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;mon_livre: chapitre1 chapitre2&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;chapitre1: figures-chap1&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;chapitre2: figures-chap2&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/1841a033ddc9af32473810bf35ba50da.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Une ligne qui contient une instruction de type r&#232;gle est suivie de lignes d'instructions de type commande qui formulent les actions &#224; effectuer pour atteindre la cible de la r&#232;gle :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;objet1: source1&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt;tabulation&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; bigloo &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; source1 &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; objet1&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/c9dca82b0e3c4c1144582f40dc500ddc.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Attention une ligne de commande commence toujours par le caract&#232;re &lt;tt&gt;tabulation&lt;/tt&gt;, c'est un des moindres pi&#232;ges de make que de donner une signification syntaxique &#224; un caract&#232;re invisible.&lt;/p&gt; &lt;p&gt;Il y a aussi des d&#233;finitions de variables et des lignes de commentaires :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# il est souvent pr&#233;f&#233;rable de d&#233;finir les outils&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# par des variables comme ceci :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;BIGLOO = bigloo&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# et de les utiliser ainsi, pour des raisons expliqu&#233;es plus bas :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt;tabulation&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;BIGLOO&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; source1 &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; objet1&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/d78bfaa5643545d27e0598c9bbab30ec.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Make peut &#234;tre utilis&#233; pour configurer d'autres objets que des programmes : toute situation o&#249; certains fichiers-cibles doivent &#234;tre mis &#224; jour automatiquement &#224; partir de fichiers-origines &#224; chaque modification de ces derniers et selon certaines r&#232;gles est susceptible d'&#234;tre automatis&#233;e au moyen de make. Une cible n'est d'ailleurs pas n&#233;cessairement un fichier, il peut s'agir plus g&#233;n&#233;ralement d'un ensemble de t&#226;ches &#224; r&#233;aliser d&#233;sign&#233; par un nom symbolique.&lt;/p&gt; &lt;p&gt;Le langage de make est loin d'&#234;tre simple et sa description compl&#232;te exc&#233;derait les limites de ce document [&lt;a href='#nb1' class='spip_note' rel='footnote' title='Voir le manuel d'Oram [1]. Des outils similaires &#224; make sont disponibles pour (...)' id='nh1'&gt;1&lt;/a&gt;]. Nous nous contenterons d'indiquer quelques moyens propres &#224; r&#233;diger un programme make simple.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Un Makefile simple pour construire un programme&lt;/h3&gt;
&lt;p&gt;Un programme make est contenu dans un fichier nomm&#233; par convention Makefile. En g&#233;n&#233;ral on place dans un m&#234;me r&#233;pertoire les fichiers qui servent &#224; la construction du programme et le Makefile qui indique comment le construire. Les exemples ci-dessous supposent cette condition remplie, et que ce r&#233;pertoire est le r&#233;pertoire courant quand on tape la commande make.&lt;/p&gt; &lt;p&gt;Nous prendrons comme exemple la construction d'un programme en Scheme compil&#233; avec le compilateur Bigloo. Notre Makefile va comporter des lignes de texte essentiellement de deux sortes, d&#233;crites par les deux alin&#233;as suivants.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Lignes de r&#232;gles&lt;/h3&gt;
&lt;p&gt;Des lignes de r&#232;gles, ou lignes de d&#233;pendance, &#233;num&#232;rent, pour une cible &#224; produire, les cibles pr&#233;alables (souvent des fichiers) dont elle d&#233;pend. Si un des fichiers dont d&#233;pend la cible est modifi&#233; depuis sa derni&#232;re construction [&lt;a href='#nb2' class='spip_note' rel='footnote' title='L'enregistrement de r&#233;pertoire qui permet d'acc&#233;der &#224; un fichier pointe sur une (...)' id='nh2'&gt;2&lt;/a&gt;], il faudra la reconstruire. Ainsi, la r&#232;gle de d&#233;pendance pour lire-outils.o est tr&#232;s simple :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;lire-outils.o: lire-outils.scm&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Le fichier-objet &lt;tt&gt;lire-outils.o&lt;/tt&gt; d&#233;pend du fichier-source &lt;tt&gt;lire-outils.scm&lt;/tt&gt;. Si ce dernier est modifi&#233; (la cr&#233;ation est un cas particulier de modification) il faut reconstruire l'objet.&lt;/p&gt; &lt;p&gt;Une ligne de r&#232;gle se reconna&#238;t au fait qu'elle comporte le signe &#171; : &#187;, qui s&#233;pare la cible &#224; sa gauche des pr&#233;-requis &#224; sa droite :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;lire-swissprot: lire-outils.o lire-swiss-seq.o choix-fichier.o&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;La premi&#232;re r&#232;gle du Makefile joue un r&#244;le particulier, elle mentionne une cible toujours vis&#233;e. Il convient de mettre en t&#234;te soit la r&#232;gle qui d&#233;clenche la construction du programme r&#233;sultant, soit une r&#232;gle qui se contente d'&#233;num&#233;rer les ex&#233;cutables souhait&#233;s :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;all: lire-swissprot&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot;&gt;Lignes de commandes&lt;/h3&gt;
&lt;p&gt;Des lignes de commandes &#233;num&#232;rent les actions &#224; effectuer pour produire la cible. Dans le cas simple que nous allons d&#233;crire ce seront des compilations et des &#233;ditions de liens, mais toute commande Unix serait acceptable.&lt;/p&gt; &lt;p&gt;Attention, chaque ligne de commande s'ex&#233;cute dans un environnement propre au sens Unix du terme ; si par exemple nous voulons visiter des sous-r&#233;pertoires o&#249; des commandes make d&#233;clencheront d'autres actions, et ainsi de suite r&#233;cursivement, placer la commande cd appropri&#233;e sur une ligne et passer &#224; la ligne suivante pour d&#233;crire les actions ne produira pas le r&#233;sultat escompt&#233;. Il faut utiliser la syntaxe du shell pour la composition s&#233;quentielle des processus :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;cd&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt;mon repertoire&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; ; &lt;span style=&quot;color: #800000;&quot;&gt;${MAKE}&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt;ma cible&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt;${MAKE}&lt;/code&gt; est une variable standard de &lt;i&gt;make&lt;/i&gt; qui d&#233;signe &lt;code class='spip_code' dir='ltr'&gt;make&lt;/code&gt;. &#192; cet endroit nous voulons ex&#233;cuter make, mais si nous &#233;crivons simplement make nous n'aurons la garantie ni que nous invoquons bien la m&#234;me version de make que celle qui a lanc&#233; le Makefile, ni surtout qu'elle va s'ex&#233;cuter avec les m&#234;mes param&#232;tres. &lt;code class='spip_code' dir='ltr'&gt;${MAKE}&lt;/code&gt; nous donne ces garanties [&lt;a href='#nb3' class='spip_note' rel='footnote' title='Notons que le signe $ a, ici et en d'autres circonstances, une valeur (...)' id='nh3'&gt;3&lt;/a&gt;].&lt;/p&gt; &lt;p&gt;Une ligne de commande commence par un caract&#232;re de tabulation. Comme make reconna&#238;t les lignes de commande &#224; ce caract&#232;re, il faut prendre garde &#224; ne pas l'oublier pour les lignes de commande et &#224; ne pas en mettre ailleurs. Et avoir remarqu&#233; que le &#171; copier-coller &#187; &#224; la souris de votre interface graphique pr&#233;f&#233;r&#233;e transforme parfois les tabulations en espaces blancs.&lt;/p&gt; &lt;p&gt;La ligne de commande pour la cible lire-outils.o sera :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo &lt;span style=&quot;color: #660033;&quot;&gt;-afile&lt;/span&gt; access-file.scm &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; lire-outils.scm&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Voici la ligne de commande pour l'&#233;dition de liens qui construit le programme (la r&#232;gle pour le programme complet est plus longue, pour aller &#224; la ligne il faut placer un caract&#232;re &#171; \ &#187; &#224; la fin, imm&#233;diatement suivi d'un retour-chariot) :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo lire-outils.o lire-swiss-seq.o choix-fichier.o \&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; lire-swissprot&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/fa6dd7d98d55d8af873145833623ed43.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;sans oublier la tabulation.&lt;/p&gt; &lt;p&gt;Notre Makefile complet peut donc s'&#233;crire comme suit :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;all: lire-swissprot &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;choix-fichier.o : choix-fichier.scm &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo &lt;span style=&quot;color: #660033;&quot;&gt;-afile&lt;/span&gt; access-file.scm &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; choix-fichier.scm &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;lire-swiss-seq.o : lire-swiss-seq.scm &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo &lt;span style=&quot;color: #660033;&quot;&gt;-afile&lt;/span&gt; access-file.scm &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; lire-swiss-seq.scm &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;lire-outils.o : lire-outils.scm &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo &lt;span style=&quot;color: #660033;&quot;&gt;-afile&lt;/span&gt; access-file.scm &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; lire-outils.scm &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;lire-swissprot: lire-outils.o lire-swiss-seq.o choix-fichier.o &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo lire-swiss-seq.o lire-outils.o choix-fichier.o &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; lire-swissprot&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/7e3e10da09f128c12d5760bf634a70f2.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;H2&gt;G&#233;n&#233;raliser et factoriser&lt;/H2&gt;
&lt;h3 class=&quot;spip&quot;&gt;R&#232;gles g&#233;n&#233;riques&lt;/h3&gt;
&lt;p&gt;Les trois r&#232;gles de construction des objets sont extr&#234;mement similaires. L'esprit de la programmation rechigne devant l'in&#233;l&#233;gance de cette r&#233;p&#233;tition. Make nous offre la possibilit&#233; d'&#233;crire des r&#232;gles g&#233;n&#233;riques :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;.o: &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;.scm&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo &lt;span style=&quot;color: #660033;&quot;&gt;-afile&lt;/span&gt; access-file.scm &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/3bfd2318cc74ab5c2f0a6285841c3f0a.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;ce qui signifie : pour tout fichier-cible avec un nom de la forme &lt;tt&gt;%.o&lt;/tt&gt;, % &#233;tant un pr&#233;fixe quelconque, le fichier &lt;tt&gt;%.scm&lt;/tt&gt; s'il existe est un bon pr&#233;requis, et alors l'action d&#233;crite par la ligne de commande suivante est ex&#233;cut&#233;e (si quelque-chose a &#233;t&#233; modifi&#233; dans le pr&#233;requis). &lt;tt&gt;$&lt;&lt;/tt&gt; est une variable dont la valeur est la liste des pr&#233;requis qui ont d&#233;clench&#233; la r&#232;gle (ici le fichier &lt;tt&gt;%.scm&lt;/tt&gt;), &lt;tt&gt;$@&lt;/tt&gt; est une variable qui d&#233;signe la cible courante. Nous obtenons donc le Makefile suivant :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;all: lire-swissprot &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;.o: &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;.scm &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo &lt;span style=&quot;color: #660033;&quot;&gt;-afile&lt;/span&gt; access-file.scm &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;lire-swissprot: lire-outils.o lire-swiss-seq.o choix-fichier.o &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; bigloo lire-swiss-seq.o choix-fichier.o lire-outils.o &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; lire-swissprot&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/62e885cff8078cd2d82bb9517af3719e.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Ceci r&#233;dig&#233; il nous suffit de nous placer dans un r&#233;pertoire contenant les fichiers suivants :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;Makefile choix-fichier.scm lire-swiss-seq.scm&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;access-file.scm lire-outils.scm &lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/38843fb3696e177b6f3bb81a857d0a2c.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;et taper la commande &lt;tt&gt;make&lt;/tt&gt; suffira &#224; construire notre programme lire-swissprot.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;R&#232;gles de suffixes&lt;/h3&gt;
&lt;p&gt;Une autre fa&#231;on d'&#233;crire pour make des r&#232;gles plus g&#233;n&#233;rales (et donc moins nombreuses) est d'utiliser les suffixes des noms de fichiers pour d&#233;terminer les r&#232;gles &#224; leur appliquer. En g&#233;n&#233;ral sous Unix les fichiers source sont suffix&#233;s par .scm pour les programmes Bigloo, .c pour les programmes C, .cc pour les programmes C++, .f pour les programmes Fortran, etc. Les compilateurs produisent des fichiers objet suffix&#233;s par .o. Ceci nous permet d'&#233;crire des r&#232;gles selon une syntaxe que nous allons illustrer par un exemple.&lt;/p&gt; &lt;p&gt;Supposons que nous voulions construire un programme nomm&#233; iter-os &#224; partir de fichiers source Bigloo, C et C++. C'est l'objet du Makefile ci-dessous :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash cadre&quot;&gt;&lt;div class=&quot;bash bash&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;.SUFFIXES : .o .c .cc .scm&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;BGL_SOURCES = peuple-iter.scm call-os.scm&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;BGL_OBJECTS = peuple-iter.o call-os.o&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;SOURCES = $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;BGL_SOURCES&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; create_db.cc read_db.cc \&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; write_db.cc copy_seq.cc \&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; xalloc.c liste_db.cc query_db.cc stub.cc&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;CXX_OBJECTS = read_db.o create_db.o write_db.o \&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; copy_seq.o liste_db.o query_db.o stub.o&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;C_OBJECTS = xalloc.o&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;OBJECTS = $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;CXX_OBJECTS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;C_OBJECTS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;BGL_OBJECTS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;EXECUTABLE = iter-os&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;CCC =&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;usr&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;ucb&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;cxx&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;BIGLOO = bigloo&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;CFLAGS = &lt;span style=&quot;color: #660033;&quot;&gt;-O3&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;CPPFLAGS =&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;BGL_FLAGS = &lt;span style=&quot;color: #660033;&quot;&gt;-Obench&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-farithmetic&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-rm&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;BGL_LDFLAGS = &lt;span style=&quot;color: #660033;&quot;&gt;-lstatic-bigloo&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #007800;&quot;&gt;CC&lt;/span&gt;=&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;gcc&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;all: $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;EXECUTABLE&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; Makefile&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;.cc.o:&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;CCC&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;CPPFLAGS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;.c.o:&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;CC&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;CFLAGS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;.scm.o:&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;BIGLOO&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-afile&lt;/span&gt; access - file.scm $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;BGL_FLAGS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&lt;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;$&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;EXECUTABLE&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;OBJECTS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;BIGLOO&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;BGL_LDFLAGS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; $&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;OBJECTS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;clean :&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;rm&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-f&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;EXECUTABLE&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; $&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;OBJECTS&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurentbloch.org/local/cache-code/09249d6f3136b55cc054c5542a1125aa.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Ce Makefile commence &#224; ressembler &#224; du travail professionnel. La premi&#232;re ligne d&#233;finit les suffixes que nous allons utiliser (en fait cette ligne n'est indispensable que pour d&#233;finir le suffixe des fichiers Bigloo, les autres sont d&#233;finis par d&#233;faut). Les listes de fichiers objet sont d&#233;finis par des variables pour &#233;viter les d&#233;finitions multiples qui aboutissent &#224; des incoh&#233;rences. La variable d&#233;finie par &lt;tt&gt;BGL_OBJECTS = ...&lt;/tt&gt; est invoqu&#233;e ult&#233;rieurement sous le nom &lt;code class='spip_code' dir='ltr'&gt;${BGL_OBJECTS}&lt;/code&gt;. Les accolades &lt;code class='spip_code' dir='ltr'&gt;{&lt;/code&gt; et &lt;code class='spip_code' dir='ltr'&gt;}&lt;/code&gt; peuvent &#234;tre remplac&#233;es (sauf cas particulier) par des parenth&#232;ses ( et ).&lt;/p&gt; &lt;p&gt;Les drapeaux des compilateurs sont d&#233;finis par des variables vides par m&#233;fiance &#224; l'&#233;gard de make, qui souvent pr&#233;voit des valeurs par d&#233;faut. Les noms des compilateurs sont d&#233;finis par des variables pour les m&#234;mes raisons que nous utilisions &lt;tt&gt;$&lt;i&gt;MAKE&lt;/i&gt;&lt;/tt&gt; ci-dessus pour d&#233;signer make.&lt;/p&gt; &lt;p&gt;La r&#232;gle .cc.o d&#233;crit comment faire un fichier objet .o &#224; partir d'un fichier source .cc. La variable &lt;tt&gt;$&lt;&lt;/tt&gt; d&#233;signe le fichier pr&#233;requis &#224; partir duquel on construit la cible. &lt;tt&gt;$@&lt;/tt&gt; est comme ci-dessus une variable qui d&#233;signe la cible courante.&lt;/p&gt; &lt;p&gt;La r&#232;gle clean permet de d&#233;truire les fichiers interm&#233;diaires et finals pour repartir des sources quand on a fait des b&#234;tises. make clean sera la fa&#231;on de l'invoquer.&lt;/p&gt; &lt;p&gt;Ces quelques paragraphes sont loin d'&#233;puiser le sujet make. Ils devraient vous permettre d'&#233;crire des Makefiles simples et de lire ceux que vous trouverez dans les distributions de logiciels r&#233;cup&#233;r&#233;es sur le r&#233;seau. Pour de plus amples d&#233;tails, voir le manuel d'Oram. make&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; R&#233;f&#233;rences&lt;/h3&gt;
&lt;p&gt;[1]
Andrew Oram Steve Talbott. Managing Projects with make. O'Reilly, Sebastopol, USA, 1991.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;p&gt;[&lt;a href='#nh1' id='nb1' class='spip_note' title='Notes 1' rev='footnote'&gt;1&lt;/a&gt;] Voir le manuel d'Oram [1]. Des outils similaires &#224; make sont disponibles pour d'autres syst&#232;mes. Certains sont dot&#233;s d'une interface graphique, mais ils ont l'inconv&#233;nient de ne pas &#234;tre aussi programmables que make. Les syst&#232;mes de programmation destin&#233;s au langage Java utilisent des outils sp&#233;cifiques, notamment Maven et Ant, qui r&#233;alisent des fonctions analogues.&lt;/p&gt; &lt;p&gt;[&lt;a href='#nh2' id='nb2' class='spip_note' title='Notes 2' rev='footnote'&gt;2&lt;/a&gt;] L'enregistrement de r&#233;pertoire qui permet d'acc&#233;der &#224; un fichier pointe sur une structure de donn&#233;es appel&#233;e i-n&#339;ud qui contient les caract&#233;ristiques statiques du fichier, notamment sa date de cr&#233;ation, sa date de derni&#232;re modification et sa date de derni&#232;re consultation. Le fonctionnement de make repose sur ces informations.&lt;/p&gt; &lt;p&gt;[&lt;a href='#nh3' id='nb3' class='spip_note' title='Notes 3' rev='footnote'&gt;3&lt;/a&gt;] Notons que le signe $ a, ici et en d'autres circonstances, une valeur syntaxique pour make. Or il a aussi une valeur syntaxique pour le shell Unix, par exemple nous pouvons d&#233;signer notre r&#233;pertoire racine par $HOME, ce qui peut &#234;tre utile notamment dans un Makefile. Pour &#233;viter une ambigu&#239;t&#233; dans ce cas, et par convention, dans un Makefile tout emploi du signe $ pour une commande du shell se fera en &#233;crivant $$ (deux signes $).&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>La bulle universitaire &#8212; Faut-il poursuivre le r&#234;ve am&#233;ricain ?</title>
		<link>http://www.laurentbloch.org/spip.php?article178</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article178</guid>
		<dc:date>2010-05-17T18:54:10Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Laurent Bloch</dc:creator>



		<description>Dans ce petit livre publi&#233; &#224; Lausanne par les &#201;ditions d'En bas, Libero Zuppiroli, professeur de physique &#224; la tr&#232;s r&#233;put&#233;e &#201;cole polytechnique f&#233;d&#233;rale de Lausanne (EPFL), narre l'adoption, irr&#233;fl&#233;chie &#224; son avis, par les universit&#233;s europ&#233;ennes, de ce qu'elles auraient suppos&#233; &#234;tre le mod&#232;le am&#233;ricain. Plus pr&#233;cis&#233;ment, il s'agit de la transformation, au cours des quinze derni&#232;res ann&#233;es, de la v&#233;n&#233;rable et respect&#233;e EPFL pour qu'elle adopte ce mod&#232;le, transformation accomplie avec un succ&#232;s qui, aux dires du (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique13" rel="directory"&gt;Lectures&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Dans ce petit livre publi&#233; &#224; Lausanne par les &lt;a href='http://www.enbas.ch/' class='spip_out' rel='external'&gt;&#201;ditions d'En bas&lt;/a&gt;,
&lt;a href='http://personnes.epfl.ch/libero.zuppiroli' class='spip_out' rel='external'&gt;Libero Zuppiroli&lt;/a&gt;,
professeur de physique &#224; la tr&#232;s r&#233;put&#233;e &#201;cole polytechnique f&#233;d&#233;rale
de Lausanne (EPFL), narre l'adoption, irr&#233;fl&#233;chie &#224; son avis, par les
universit&#233;s europ&#233;ennes, de ce qu'elles auraient suppos&#233; &#234;tre le
mod&#232;le am&#233;ricain. Plus pr&#233;cis&#233;ment, il s'agit de la transformation, au
cours des quinze derni&#232;res ann&#233;es, de la v&#233;n&#233;rable et respect&#233;e EPFL
pour qu'elle adopte ce mod&#232;le, transformation accomplie avec un succ&#232;s
qui, aux dires du professeur Zuppiroli, confirm&#233;s par la position de
l'&#233;cole dans les classements du &lt;i&gt;Times&lt;/i&gt; et de Shanga&#239;, a exc&#233;d&#233;
toutes les esp&#233;rances : &#171; L'op&#233;ration est parfaitement r&#233;ussie et
l'&#201;cole est d&#233;finitivement engag&#233;e dans une course vers l'excellence,
aliment&#233;e par les recrutements de professeurs jeunes, ambitieux,
acquis aux valeurs de la comp&#233;tition et du &lt;i&gt;leadership&lt;/i&gt; et
op&#233;rant sur des sujets de recherche &#224; la mode... &#187; (p. 62). Le
recrutement aux postes strat&#233;giques de professeurs form&#233;s aux
&#201;tats-Unis a grandement contribu&#233; au r&#233;sultat.&lt;/p&gt; &lt;div style=&quot;float:right;width:20%; padding:5px;&quot;&gt;
&lt;iframe src=&quot;http://rcm-fr.amazon.fr/e/cm?t=chelaubloland-21&amp;o=8&amp;p=8&amp;l=as1&amp;asins=2829003853&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Quelle est la teneur de cette transformation ? le passage d'une
pratique universitaire tourn&#233;e vers la science &#224; l'&#232;re du management
scientifique et de la recherche &#224; haut d&#233;bit (&#224; flux tendus ?). Zuppiroli cite (p. 30)
le CV de 53 pages d'un tel &#171; professeur manager &#187;, class&#233; par la base
de donn&#233;es &lt;a href='http://fr.wikipedia.org/wiki/ISI_Web_of_Knowledge' class='spip_out' rel='external'&gt;ISI Web of knowledge&lt;/a&gt; au 163&lt;sup&gt;e&lt;/sup&gt;
rang des 1120 scientifiques de sa discipline : coauteur d'&#224; peu pr&#232;s
630 articles et 9 livres, il a pendant les ann&#233;es 1995-1996 &#233;t&#233; invit&#233;
&#224; une trentaine de conf&#233;rences internationales o&#249; il a pr&#233;sent&#233; ses
r&#233;sultats, de la Cor&#233;e au Canada et du Japon &#224; la Su&#232;de, cependant
qu'il publiait 57 articles dans des revues internationales &#224; comit&#233; de
lecture, tout en enseignant &#224; l'EPFL, en y dirigeant un institut, en
dirigeant un grand laboratoire &#224; 700 km de Lausanne, sans compter de
nombreuses autres fonctions de conseiller dans diff&#233;rents organismes
publics et priv&#233;s.&lt;/p&gt; &lt;p&gt;Si l'on &#233;value l'activit&#233; de ce professeur-manager &#224; l'aune de la
science d'hier, le constat risque bien de s'imposer qu'il n'a gu&#232;re eu
de temps pour une activit&#233; intellectuelle &#224; l'ancienne mode, que pour
lui l'action a pris le pas sur la pens&#233;e, que le pouvoir l'a plus
int&#233;ress&#233; que le savoir (qui ennuie tout le monde), et que pendant les
trajets en avion entre les conf&#233;rences il a surtout travaill&#233; ses
pr&#233;sentations &lt;i&gt;Powerpoint&lt;/i&gt;, outil principal de la science &lt;i&gt;new style&lt;/i&gt;.&lt;/p&gt; &lt;p&gt;Arriv&#233; l&#224;, le lecteur de Zuppiroli risque fort de conclure que tout
cela rel&#232;ve de l'imposture intellectuelle ; c'est qu'il n'aura pas
compris ce que sont les quatre piliers de la science contemporaine,
qui ne peuvent &#234;tre nomm&#233;s que dans la nouvelle langue scientifique
d&#233;riv&#233;e de l'anglais, le &lt;i&gt;globbish&lt;/i&gt; (p. 31) :&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;i&gt;Networking&lt;/i&gt; : l'art de construire des r&#233;seaux de chercheurs de port&#233;e internationale. Ainsi, les 57 articles du professeur cit&#233; par Zuppiroli pour la p&#233;riode 1995-1996 sont cosign&#233;s par 197 auteurs.
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;i&gt;Fundraising&lt;/i&gt; : l'art de ramasser de l'argent.
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;i&gt;Marketing&lt;/i&gt; : l'art de faire savoir que l'on est le meilleur.
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;i&gt;Management&lt;/i&gt; : pour faire prosp&#233;rer une entreprise aussi importante il faut ma&#238;triser la gestion tant des finances que des hommes.&lt;/p&gt; &lt;p&gt;Fort bien, dira-t-on alors &#224; Libero Zuppiroli, mais qui fait le vrai
travail ? parce que malgr&#233; tout il y en a, et m&#234;me on peut dire que la
production scientifique n'a jamais &#233;t&#233; aussi importante
qu'aujourd'hui, au moins en volume. Or pour faire ce travail de
recherche il ne faut en tout cas pas trop compter sur les &#233;tudiants
solvables des pays riches, qui ont parfois d&#233;j&#224; pay&#233; des droits
d'inscription faramineux pour acc&#233;der aux meilleurs instituts de la
nouvelle science, et qui pensent de toute fa&#231;on qu'&#224; partir du moment
o&#249; ils ont &#233;t&#233; admis on ne va pas en plus leur demander de travailler
pour obtenir leur dipl&#244;me.&lt;/p&gt; &lt;p&gt;D'ailleurs, nous explique Zuppiroli (p. 84), l'offre de formation
s'adapte &#224; la client&#232;le : cela s'appelle les accords de Bologne,
conclus en 1999 par les ministres de l'enseignement sup&#233;rieur europ&#233;ens,
hors de toute concertation avec les milieux universitaires concern&#233;s,
pour uniformiser les cursus des universit&#233;s europ&#233;ennes selon le
format anglo-saxon. La version fran&#231;aise du cursus en question s'appelle
LMD : licence en trois ans, master en deux ans, doctorat en trois ans.
Gr&#226;ce &#224; ce syst&#232;me, &#171; l'universit&#233; europ&#233;enne devrait prendre l'aspect
d'une gigantesque cha&#238;ne de supermarch&#233;s o&#249; les nouveaux &#233;tudiants,
clients consommateurs de savoir, pourraient partout acc&#233;der aux m&#234;mes
produits et acqu&#233;rir des dipl&#244;mes voisins...&lt;/p&gt; &lt;p&gt;L'uniformit&#233; produit les m&#234;mes effets pour les dipl&#244;mes universitaires
que pour les l&#233;gumes vendus en supermarch&#233; : c'est le triomphe de la
tomate bien calibr&#233;e insipide et hors sol que l'on appelle abusivement
&lt;i&gt;tomate hollandaise&lt;/i&gt;, car de nos jours elle est produite partout. &#187;
Partout triomphent les &#233;tudes les plus courtes et les moins originales,
assorties de la baisse des exigences pour obtenir les dipl&#244;mes. Quant
aux ambitieux professeurs experts en &lt;i&gt;leadership&lt;/i&gt; et en communication,
ils consid&#232;rent l'enseignement comme une perte de temps dont il convient
de se d&#233;barrasser dans toute la mesure du possible, par exemple en le
sous-traitant &#224; des charg&#233;s de cours recrut&#233;s pour de petits boulots.&lt;/p&gt; &lt;p&gt;Cela dit, &#171; la mobilit&#233; des &#233;tudiants &#224; travers l'Europe n'a pas
beaucoup cr&#251; avec les accords de Bologne. En fait, la mobilit&#233; est
surtout une affaire d'argent pour des voyages et des logements. Seuls
les parents et les &#233;tablissements les plus riches peuvent offrir des
possibilit&#233;s r&#233;elles de mobilit&#233; aux &#233;tudiants.&lt;/p&gt; &lt;p&gt;Le vrai but de cette op&#233;ration universitaire est &#224; terme la baisse
du salaire des dipl&#244;m&#233;s. Quand r&#232;gne l'uniformit&#233;, celui qui est
embauch&#233;, c'est celui qui a le moins d'exigences... Dans les ann&#233;es
1970, les revenus du travail repr&#233;sentaient les 2/3 des revenus
mondiaux alors que dans les ann&#233;es 2000, les revenus du travail
n'en repr&#233;sentent plus qu'un tiers. &#187; (p. 85).&lt;/p&gt; &lt;p&gt;Mais alors, qui r&#233;alise vraiment le travail de recherche, qui produit
la substance des trente articles annuels du professeur-manager et de
ses &#171; pauvres points &#187; ? Parce qu'il s'agit d'un vrai travail, qui
exige de nombreuses nuits blanches et ne rapporte pas grand-chose. Si
j'en juge par les signatures des articles des revues &#224; comit&#233; de
lecture du domaine informatique qui me tombent sous les yeux, les
sources de th&#233;sards et de stagiaires post-doctoraux qui acceptent de
travailler jour et nuit comme des for&#231;ats pour des r&#233;mun&#233;rations
mis&#233;rables se trouvent, de plus en plus, en Chine, en Inde, dans
quelques pays arabes et orientaux et en Russie. C'est la m&#234;me chose en
biologie et en bioinformatique, pour ce que j'en ai vu. Mes observations
personnelles rejoignent celles de Zuppiroli (pp. 37-38).&lt;/p&gt; &lt;p&gt;Libero Zuppiroli, dans une interview au journal helv&#232;te &lt;a href='http://www.letemps.ch/Page/Uuid/2615a668-2afa-11df-9430-6778e9c7e283|0' class='spip_out' rel='external'&gt;Le Temps&lt;/a&gt;,
n'exprime pas un grand enthousiasme pour cette &#233;volution et ses
brillants r&#233;sultats : &#171; Disons que je vis une histoire d'amour
contrari&#233;e : quand je suis arriv&#233;, je suis tomb&#233; amoureux de
l'EPFL. C'&#233;tait une femme en pleine maturit&#233;, ayant beaucoup de
classe, d'humanit&#233;, de pudeur aussi &#8211; les chercheurs ne s'affichaient
pas sp&#233;cialement. Un accent mis sur l'enseignement, la formation des
&#233;lites locales&#8230; Et tout &#224; coup, &#224; cause des politiques, on l'a
surmaquill&#233;e, on a raccourci ses jupes&#8230; Je ne me sens plus chez moi,
mais j'ai continu&#233; mon travail, j'ai dirig&#233; mon laboratoire, et &#233;crit
mes trait&#233;s&#8230; &#187;&lt;/p&gt; &lt;p&gt;Mais, pourra-t-on objecter &#224; Zuppiroli, vous critiquez l'application
en Europe du mod&#232;le universitaire am&#233;ricain, mais vous ne pouvez pas
nier que Harvard, Stanford, le MIT et Caltech soient de formidables
p&#233;pini&#232;res de prix Nobel, des antres de savoir ? Certes, r&#233;pond
l'auteur (pp. 89-91), et d'ailleurs un professeur &#224; Stanford a sans
doute plus de libert&#233; intellectuelle que son coll&#232;gue europ&#233;en. Comme
la quinzaine d'universit&#233;s am&#233;ricaines qui occupent le dessus du
panier croulent sous des monceaux de dollars et jouissent d'une
r&#233;putation telle qu'aucun chercheur au monde ne peut r&#233;sister &#224; une
offre qui en &#233;mane, et qu'en outre les comit&#233;s de lecture des
meilleurs journaux scientifiques et les diff&#233;rentes instances de
financement sont &#224; leurs pieds, ne serait-ce que parce qu'ils en sont issus, leur succ&#232;s est assur&#233;. Et de surcro&#238;t, l'enseignement
n'y est plus un probl&#232;me, &#171; car dans ces &#233;tablissements d'&#233;lite les
&#233;tudiants du premier et du second cycles &lt;i&gt;(undergraduates)&lt;/i&gt; sont
relativement peu nombreux (un &#224; trois &#233;tudiants par membre du corps
enseignant toutes cat&#233;gories confondues). &#187; (p. 90).&lt;/p&gt; &lt;p&gt;Qu'est-ce qui emp&#234;che les universit&#233;s europ&#233;ennes d'en faire autant ?
&#171; La r&#233;ponse est simple : l'&#201;cole et l'Universit&#233; sont encore con&#231;ues
en Europe comme des services publics destin&#233;s &#224; augmenter les
capacit&#233;s culturelles des populations locales. &#187; (p. 91).&lt;/p&gt; &lt;p&gt;Cr&#233;&#233;e en 1853 sur le mod&#232;le de l'&#201;cole centrale de Paris, puis rattach&#233;e &#224; l'universit&#233; de Lausanne, l'EPFL a &#233;t&#233; form&#233;e par une
inspiration que ses cr&#233;ateurs ont puis&#233;e &#224; deux sources : l'universit&#233;
allemande, con&#231;ue par Humboldt comme une r&#233;publique des professeurs,
et dont on peut rappeler qu'elle a servi de mod&#232;le aux meilleures
universit&#233;s am&#233;ricaines, et l'&#233;cole d'ing&#233;nieurs fran&#231;aise, incorpor&#233;e
au mod&#232;le r&#233;publicain pour mettre l'enseignement scientifique au
service de la nation.&lt;/p&gt; &lt;p&gt;Les derniers chapitres du livre de Libero Zuppiroli sont consacr&#233;s &#224;
un projet utopique : la fondation d'une institution universitaire
d'enseignement et de recherche, baptis&#233;e Utopia, o&#249; seraient mises &#224;
nouveau au premier plan les exigences de l'esprit, la pens&#233;e plut&#244;t
que l'action, la libert&#233; de la recherche plut&#244;t que de rejoindre les
&#171; hordes de fourmis qui suivent tristement, en longues files, les
chemins balis&#233;s des nanosciences, des biotechnologies et des sciences
cognitives. &#187; (p. 127). Utopia restera &#171; attach&#233;e aux accords de Bologne &#187;, mais pas ceux de 1999, ceux de 1230, &#171; qui &#233;tablirent l'Universit&#233; m&#233;di&#233;vale de Bologne dans son autonomie et ses
structures d&#233;mocratiques. &#187; (p. 112).&lt;/p&gt; &lt;p&gt;Bref, ce livre est un pamphlet salubre qui invite &#224; soumettre &#224; la &#171; &lt;i&gt;disputatio&lt;/i&gt; m&#233;di&#233;vale &#187; (p. 119) certaines des id&#233;es peut-&#234;tre
un peu trop vite consid&#233;r&#233;es comme &#233;videntes au sujet de la n&#233;cessaire
(de toute fa&#231;on n&#233;cessaire) r&#233;forme du syst&#232;me universitaire fran&#231;ais.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Avoir des leaders dans la comp&#233;tition universitaire mondiale</title>
		<link>http://www.laurentbloch.org/spip.php?article177</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article177</guid>
		<dc:date>2010-04-15T17:49:17Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique13" rel="directory"&gt;Lectures&lt;/a&gt;


		</description>


 <content:encoded>
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>L'informatique en France de la seconde guerre mondiale au Plan Calcul</title>
		<link>http://www.laurentbloch.org/spip.php?article176</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article176</guid>
		<dc:date>2010-04-07T19:30:36Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>Observer la naissance d'une nouvelle science n'est pas une occasion qui se pr&#233;sente tous les jours : Pierre-&#201;ric Mounier-Kuhn a su la saisir. &#192; dire vrai, s'il a fait preuve d'&#224;-propos, il y a mis aussi de la pers&#233;v&#233;rance, parce que c'est depuis bient&#244;t vingt-cinq ans que cet historien de formation et de m&#233;tier consacre tout son temps aux archives des laboratoires et des industriels, quand il ne recueille pas les t&#233;moignages des acteurs, &#224; qui il n'a pas manqu&#233; de faire lire et relire ses chapitres avant (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique10" rel="directory"&gt;L'informatique : science et industrie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div style=&quot;float:right;padding:5px;&quot;&gt;
&lt;iframe src=&quot;http://rcm-fr.amazon.fr/e/cm?t=siwwdelabl-21&amp;o=8&amp;p=8&amp;l=as1&amp;asins=2840506548&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Observer la naissance d'une nouvelle science n'est pas une occasion
qui se pr&#233;sente tous les jours : Pierre-&#201;ric Mounier-Kuhn a su la
saisir. &#192; dire vrai, s'il a fait preuve d'&#224;-propos, il y a mis aussi
de la pers&#233;v&#233;rance, parce que c'est depuis bient&#244;t vingt-cinq ans que
cet historien de formation et de m&#233;tier consacre tout son temps aux
archives des laboratoires et des industriels, quand il ne recueille
pas les t&#233;moignages des acteurs, &#224; qui il n'a pas manqu&#233; de faire lire
et relire ses chapitres avant publication.&lt;/p&gt; &lt;p&gt;Ce volume de sept cents pages d&#233;crit la gestation de l'informatique &#224;
l'universit&#233; et dans les laboratoires de recherche publics : deux
autres volumes nous sont promis, respectivement d&#233;volus aux r&#244;les des
entreprises et de l'&#201;tat.&lt;/p&gt; &lt;p&gt;La recherche fran&#231;aise ne peut gu&#232;re se targuer d'avoir &#233;t&#233; &#224;
l'avant-garde de la cr&#233;ation de l'informatique, et le d&#233;sastre
militaire de 1940 ne suffit pas &#224; expliquer ce r&#244;le effac&#233;, puisque les Pays-Bas, le Danemark ou l'Italie ont &#233;t&#233; plus pr&#233;sents dans cette aventure.&lt;/p&gt; &lt;p&gt;C'est justement l&#224; que le livre de Pierre-&#201;ric Mounier-Kuhn est
passionnant : au-del&#224; des p&#233;rip&#233;ties parfois cocasses de la r&#233;sistance
du mandarinat scientifique aux id&#233;es nouvelles et de l'incapacit&#233; &#224;
profiter des exp&#233;riences &#233;trang&#232;res qui pourtant s'offraient &#224; la
coop&#233;ration, c'est tout un paysage intellectuel fran&#231;ais que nous
d&#233;crit l'auteur, avec des effets qui vont bien au-del&#224; de la seule
informatique. L'impression g&#233;n&#233;rale qui se d&#233;gage de ces r&#233;cits
crois&#233;s ou affront&#233;s, c'est que le principal handicap rencontr&#233; par
les chercheurs fran&#231;ais dans cette aventure fut l'absence de modestie.&lt;/p&gt; &lt;p&gt;La tradition nationale de l'all&#233;geance ne fut pas pour rien non plus
dans ce qu'il faut bien appeler un &#233;chec. Des chercheurs qui
s'enferraient dans des voies qui de plus en plus &#233;videmment ne
menaient nulle part, mais qui jouissaient d'appuis politiques en haut
lieu, comme Louis Couffignal, ont pu pendant des ann&#233;es accaparer les
cr&#233;dits et &#233;carter les rivaux potentiels. Des potentats vieillissants
regardaient avec morgue de jeunes chercheurs en mal de moyens, qui dans bien des cas n'ont eu comme ressource que l'&#233;migration sous des
climats plus accueillants. Les math&#233;maticiens &#233;tablis &#233;crasaient de leur m&#233;pris ceux qu'ils voyaient comme des t&#226;cherons.&lt;/p&gt; &lt;p&gt;Bien que non informaticien de formation, Pierre-&#201;ric Mounier-Kuhn a
r&#233;ussi &#224; saisir avec une grande finesse non seulement quantit&#233;
d'aspects intellectuels de la science et de la technique informatiques,
mais aussi ses aspects psychologiques et sociaux. Ainsi, c'est avec
nostalgie que j'ai lu les pages qu'il consacre au centre de calcul
(pp. 572 ett sq.), emplacement central impos&#233; par l'unicit&#233; et
l'encombrement de l'ordinateur et par l'inexistence de r&#233;seau, o&#249; se
retrouvaient par la force des choses tous ceux qui avaient &#224; faire
avec l'informatique, et qui de ce fait &#233;tait un lieu d'&#233;changes
d'exp&#233;riences, de transmissions de savoirs, et aussi de camaraderie.
Maintenant chacun est seul &#224; son bureau devant son ordinateur
individuel, c'est techniquement bien mieux mais humainement on
y a perdu, ainsi qu'en &#233;changes directs, que ne suppl&#233;e pas
la communication &#233;lectronique.&lt;/p&gt; &lt;p&gt;Le chapitre VII, &lt;i&gt;L'informatique, une discipline ? De la contestation
&#224; l'institutionnalisation (1966&#8212;1976)&lt;/i&gt;, contient des pages
quasi-tragiques, o&#249; l'on voit des esprits aussi brillants qu'Andr&#233;
Lichnerowicz et Pierre Lelong faire passer &#224; la trappe, le 30 mars
1965, (p. 478) le projet de cr&#233;er une section d'informatique au CNRS,
ou bien le g&#226;chis du projet Cyclades (p. 533), dirig&#233; par Louis Pouzin
&#224; partir de 1971, qui aurait pu placer une &#233;quipe fran&#231;aise parmi les
cr&#233;ateurs de l'Internet si les t&#233;l&#233;communicants n'avaient pas eu sa
peau au profit du mod&#232;le &#224; circuits virtuels, plus commode pour la
facturation d&#233;taill&#233;e des communications t&#233;l&#233;phoniques, mais
totalement ferm&#233; et inapte &#224; la prolif&#233;ration spontan&#233;e qui a fait le
miracle de l'Internet.&lt;/p&gt; &lt;p&gt;Ren&#233; de Possel (p. 474), bien que muni d'une forte l&#233;gitimit&#233;
math&#233;matique de par sa participation &#224; la fondation du groupe
Bourbaki, sera en quelque sorte banni de la science &#224; cause de son
engagement informatique. &#192; la t&#234;te de l'Institut Blaise Pascal en 1957 (p.278), il fut un
grand semeur d'id&#233;es et initiateur de vocations. J'ai appris dans ce
livre qu'il &#233;tait le professeur de Maurice Audin, disparu,
probablement mort sous la torture &#224; Alger en 1957, dont il soutint la
th&#232;se &lt;i&gt;in absentia&lt;/i&gt;. L'Institut Blaise Pascal fut le berceau parisien de la science informatique fran&#231;aise, &#224; c&#244;t&#233; des berceaux grenoblois (anim&#233; par Jean Kuntzmann et Louis Bolliet), toulousain et nanc&#233;en (Claude Pair).&lt;/p&gt; &lt;p&gt;Il y a aussi d'heureux &#233;v&#233;nements : ainsi
&#171; Claude Pair consid&#232;re l'appartition &#224; Nancy en 1964 du cours de
&#8220;Th&#233;orie des langages et compilation&#8221; comme le faire-part de naissance
d'une science informatique en France. &#187; (p. 511)&lt;/p&gt; &lt;p&gt;Jacques Arsac est bien s&#251;r un personnage qui appara&#238;t souvent dans le
livre, ainsi p. 515 pour signaler l'&#233;poque o&#249; il se consacre &#224; l'&#233;tude
des syst&#232;mes d'exploitation, et les r&#233;flexions qu'ils lui inspirent :
&#171; Si l'analyse num&#233;rique est &#233;videmment une branche des math&#233;matiques,
si la recherche en langages de programmation rel&#232;ve de la linguistique
et de la logique, le d&#233;veloppement des syst&#232;mes n'est l'application
d'aucune science pr&#233;existante : il n'emprunte pas grand-chose aux
math&#233;matiques, il n'a pas encore de th&#233;orie propre &#8212; et ce n'est pas
non plus une technique &#233;tablie avec ses proc&#233;d&#233;s s&#251;rs et &#233;prouv&#233;s. &#187;
C'est peut-&#234;tre cette singularit&#233; qui a fait na&#238;tre l'id&#233;e que
puisqu'aucune science &#233;tablie ne suffisait &#224; embrasser l'informatique,
il lui en fallait une propre.&lt;/p&gt; &lt;p&gt;Mounier-Kuhn en inf&#232;re une id&#233;e, que je serais tent&#233; d'adopter : &#171; Avan&#231;ons l'hypoth&#232;se que la diffusion de la gamme universelle
IBM/360, ainsi nomm&#233;e parce qu'elle couvre aussi bien les applications
de gestion que le calcul scientifique, tandis que jusque-l&#224; ces
domaines &#233;taient &#233;quip&#233;s de types diff&#233;rents d'ordinateurs, a
contribu&#233; &#224; faire prendre conscience d'une unit&#233; fondamentale de
l'informatique. &#187; (note p. 515).&lt;/p&gt; &lt;div style=&quot;float:right;padding:5px;&quot;&gt;
&lt;iframe src=&quot;http://rcm-fr.amazon.fr/e/cm?t=siwwdelabl-21&amp;o=8&amp;p=8&amp;l=as1&amp;asins=2840506548&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Nous ne saurions &#233;voquer ces pionniers sans nommer Marcel-Paul Sch&#252;tzenberger, th&#233;oricien reconnu internationalement pour ses travaux sur les automates et les langages, un des inventeurs du concept de pile, au demeurant personnage fantasque et hors du commun &#224; tous points de vue, qui a mis le pied &#224; l'&#233;trier de toute une g&#233;n&#233;ration.&lt;/p&gt; &lt;p&gt;D&#232;s les premi&#232;res pages du livre (pp. 49 et sq.) Pierre-&#201;ric Mounier-Kuhn
campe le sujet avec un rare m&#233;lange de pr&#233;cision, de concision et
d'&#233;l&#233;gance ; quiconque cherche une d&#233;finition des notions centrales
de l'informatique et des ordinateurs, ainsi qu'un expos&#233; lapidaire des
circonstances de leur apparition, fera bien de s'y reporter.&lt;/p&gt; &lt;p&gt;Bref, une lecture indispensable. D'autant plus que pour un ouvrage sur
papier glac&#233; abondamment illustr&#233; de photos, de diagrammes et m&#234;me de
dessins humoristiques, le prix demand&#233; par les Presses de l'universit&#233;
Paris-Sorbonne, plus ancien &#233;diteur et imprimeur de France, est
franchement un cadeau.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>L'informatique dans l'enseignement secondaire</title>
		<link>http://www.laurentbloch.org/spip.php?article175</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article175</guid>
		<dc:date>2010-03-22T20:25:06Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>Les r&#233;sultats de l'informatisation en France sont m&#233;diocres &#224; l'aune des comparaisons internationales. C'est d'eux que d&#233;pend la prosp&#233;rit&#233; future de notre &#233;conomie. Leur am&#233;lioration demande des actions dans plusieurs domaines, l'introduction de l'informatique dans l'enseignement secondaire n'est pas des moindres. Il s'agit de l'informatique, pas des soit-disant TICE. L'informatique est une science constitu&#233;e autour de quatre concepts : algorithme ; information ; machine ; langage. La programmation (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique5" rel="directory"&gt;Syst&#232;mes d'information&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Les r&#233;sultats de l'informatisation en France sont m&#233;diocres &#224; l'aune des comparaisons internationales. C'est d'eux que d&#233;pend la prosp&#233;rit&#233; future de notre &#233;conomie. Leur am&#233;lioration demande des actions dans plusieurs domaines, l'&lt;a href='http://www.epi.asso.fr/' class='spip_out' rel='external'&gt;introduction de l'informatique dans l'enseignement secondaire&lt;/a&gt; n'est pas des moindres.&lt;/p&gt; &lt;p&gt;Il s'agit de l'informatique, pas des &lt;a href='http://www.laurentbloch.org/spip.php?article54' class='spip_out'&gt;soit-disant TICE&lt;/a&gt;. L'informatique est une science constitu&#233;e autour de quatre concepts :&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; algorithme ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; information ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; machine ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; langage.&lt;/p&gt; &lt;p&gt;La programmation des ordinateurs en est la discipline centrale. C'est elle que les &#233;l&#232;ves, de la seconde &#224; la terminale au moins, doivent apprendre, &#224; raison de trois heures par semaine. C'est comme &#231;a. Parce que si l'on n'est pas pass&#233; par l&#224;, ce sont toutes sortes d'aspects du monde contemporain qui sont incompr&#233;hensibles. Parce que si l'on n'a pas acquis une compr&#233;hension s&#233;rieuse de ce qu'est la programmation d'un ordinateur, on ne sera pas en mesure de contribuer &#224; l'informatisation de son entreprise, plus tard.&lt;/p&gt; &lt;p&gt;Lorsque l'on propose le programme &#233;nonc&#233; ci-dessus &#224; quelqu'un de raisonnable, il objecte : &#171; vous n'y pensez pas ! Apprendre &#224; programmer pour comprendre le monde : cet argument n'est pas recevable pour la plupart des &#233;l&#232;ves &#187;.&lt;/p&gt; &lt;p&gt;J'emprunterai une r&#233;ponse &#224; la pr&#233;face que Christian Queinnec a bien voulu consacrer &#224; mon &lt;a href='http://www.laurentbloch.org/spip.php?article13' class='spip_out'&gt;livre de syst&#232;me&lt;/a&gt; :&lt;/p&gt; &lt;p&gt;&#171; &#8220;Pourquoi l'informatique est-elle si compliqu&#233;e ?&#8221; J'entends, je lis, souvent, cette
question. Elle d&#233;note &#224; la fois une incompr&#233;hension de ce que recouvre r&#233;ellement
l'informatique (manipuler une feuille de calcul dans un tableur ressortit-il &#224; l'informatique ?), un effroi devant une r&#233;v&#233;lation &lt;i&gt;a priori&lt;/i&gt; d&#233;plaisante (l'informatique est
complexe) enfin, un d&#233;couragement devant l'effort suppos&#233; immense qu'il faudrait
d&#233;ployer pour dominer cette science.&lt;/p&gt; &lt;p&gt;Si l'on reprend les termes de cette question en les adaptant aux math&#233;matiques,
son inanit&#233; saute aux yeux car qui s'exclamerait &#8220;pourquoi les math&#233;matiques sont-elles
si compliqu&#233;es ?&#8221;. Il est de notori&#233;t&#233; publique que les math&#233;matiques sont
compliqu&#233;es : un long apprentissage, comptant de nombreuses ann&#233;es d'&#233;tude et accompagn&#233;
d'un discours appropri&#233;, nous en ont finalement persuad&#233;s. Tapoter une
calculette, nous en sommes s&#251;rs, ne s'apparente pas &#224; faire des math&#233;matiques et se
tromper dans les touches n'est pas v&#233;cu comme une insuffisance en math&#233;matiques. &#187;&lt;/p&gt; &lt;p&gt;Filons ce parrall&#232;lle, assez explicatif, entre les attitudes intellectuelles vis-&#224;-vis des math&#233;matiques d'une part, de l'informatique d'autre part : l'&#233;cole, le coll&#232;ge, le lyc&#233;e proposent &#224; tous les &#233;l&#232;ves d'apprendre &#224; faire des r&#232;gles de trois. Beaucoup finissent par y arriver tant bien que mal. Un peu plus tard le programme comporte la r&#233;solution des &#233;quations du second degr&#233;, et un nombre non n&#233;gligeable de bacheliers y parviennent.&lt;/p&gt; &lt;p&gt;Il n'est pas douteux que la ma&#238;trise de la r&#232;gle de trois soit tr&#232;s utile dans la vie pratique, mais que celle de l'&#233;quation du second degr&#233; soit rigoureusement sans usage pratique pour l'immense majorit&#233; de la population. Pourquoi l'enseigner alors ? Eh bien parce qu'en comprenant ce probl&#232;me malgr&#233; tout assez simple, le lyc&#233;en entr'ouvre une porte qui lui permettra de comprendre l'activit&#233; des ing&#233;nieurs et des chercheurs, et par l&#224; une grande partie de ce qui se passe dans notre monde.&lt;/p&gt; &lt;p&gt;Une grande partie des &#233;l&#232;ves de l'enseignement secondaire consid&#232;re comme irrecevable la pr&#233;tention de leur faire apprendre les math&#233;matiques pour comprendre le monde. Cette d&#233;claration d'irrecevabilit&#233; n'a jamais &#233;t&#233; accept&#233;e comme un argument recevable pour retirer les math&#233;matiques des programmes de
l'enseignement secondaire.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Informatique et informatisation III</title>
		<link>http://www.laurentbloch.org/spip.php?article174</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article174</guid>
		<dc:date>2010-03-18T13:31:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Laurent Bloch</dc:creator>



		<description>#Sommaire- Science informatique et art de l'informatisation Renversement s&#233;mantique Le mot informatique, nous dit Michel Volle, d&#233;signerait tout autre chose que la science et la technique que avons pris l'habitude de d&#233;signer par ce terme : &#171; La dialectique que recouvre selon moi le mot &#8220;informatique&#8221; r&#233;side dans l'alliage du cerveau humain et de l'automate : cerveau de l'utilisateur certes, mais aussi du programmeur... Cet alliage introduit dans la nature un &#234;tre nouveau, dont il fait &#233;merger les (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique5" rel="directory"&gt;Syst&#232;mes d'information&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;spip&quot;&gt;#Sommaire-&lt;/h3&gt;
&lt;h3 class=&quot;spip&quot;&gt;Science informatique et art de l'informatisation&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Renversement s&#233;mantique&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Le mot informatique, nous dit Michel Volle, d&#233;signerait tout autre chose que
la science et la technique que avons pris l'habitude de d&#233;signer par ce terme : &#171; La
dialectique que recouvre selon moi le mot &#8220;informatique&#8221; r&#233;side dans l'alliage du
cerveau humain et de l'automate : cerveau de l'utilisateur certes, mais aussi du
programmeur... Cet alliage introduit dans la nature un &#234;tre nouveau, dont il fait
&#233;merger les propri&#233;t&#233;s (tout comme l'alliage du cuivre et de l'&#233;tain a introduit un
&#234;tre nouveau, le bronze). Ces propri&#233;t&#233;s (possibilit&#233;s et risques) concernent les
individus, les m&#233;nages, les institutions. Dans le cas des institutions (et notamment
des entreprises), l'APU (Automate programmable universel et ubiquitaire) s'allie
&#224; l'organisation des cerveaux humains, EHO (&#202;tre humain organis&#233;), et l'alliage
prend une forme sp&#233;cifique, organis&#233;e. Sa mise en &#339;uvre, c'est l'informatisation
(de la soci&#233;t&#233;, de l'institution, de la vie personnelle). &#187;&lt;/p&gt; &lt;p&gt;Cette nouvelle acception du terme informatique recouvre les concepts, les
m&#233;thodes et les outils qui permettent de r&#233;aliser ce que l'on nomme commun&#233;ment
un Syst&#232;me d'information (SI).&lt;/p&gt; &lt;p&gt;Ainsi, par ce r&#233;tablissement s&#233;mantique, l'informatique reviendrait &#224; son origine
&#233;tymologique : l'information est ce qui donne une forme (ce qui in-forme),
que ce soit &#224; l'&#234;tre humain individuel ou, dans le cas qui nous int&#233;resse, &#224; l'&#234;tre
collectif qu'est l'entreprise. L'informatique est alors l'art de constituer ce squelette
de l'entreprise, qui lui permet d'avoir une forme, et que l'on appellera syst&#232;me
d'information.&lt;/p&gt; &lt;p&gt;Notez que dans le paragraphe qui pr&#233;c&#232;de j'ai parl&#233; d'art et non pas de science ;
l'exercice de constitution du syst&#232;me d'information est en effet plus proche de
l'activit&#233; du m&#233;decin que de celle du math&#233;maticien, et la m&#233;decine est un art
plut&#244;t qu'une science, m&#234;me si, comme l'informatique au sens de Volle, elle emprunte
beaucoup &#224; diverses sciences : biologie, chimie, physique, statistique pour
la m&#233;decine, math&#233;matiques, logique, sociologie, &#233;conomie pour l'informatique.
L'informatique ainsi red&#233;finie, l'informatisation devient le processus par lequel
les humains et les entreprises qu'ils ont cr&#233;&#233;es acqui&#232;rent l'art de l'informatique,
qui leur permet de construire les syst&#232;mes d'information qui les animeront.
L'inconv&#233;nient de cette r&#233;forme s&#233;mantique est qu'elle laisse sans nom ce
que nous appelions informatique jusqu'alors. Michel Volle propose plate-forme
technique de l'informatique ou technique de l'informatique : l'informaticien que
je suis ne saurait se r&#233;soudre &#224; un telle r&#233;duction de la discipline qui est en
train de transformer le monde et l'humanit&#233;. Il y a certes de la technique dans
l'informatique au sens pr&#233;-vollien, mais cette technique est inform&#233;e par la science
qui lui donne, donc, sa forme.&lt;/p&gt; &lt;p&gt;Cette question de terminologie est-elle oiseuse ? Oui et non : le jour o&#249; le directeur
de la recherche de l'Institut Pasteur, sous l'&#233;gide de qui je travaillais,
m'a expliqu&#233; que l'apport de l'informatique &#224; la biologie se comparait &#224; celui de
l'&#233;lectrophor&#232;se, j'ai compris que la question de l'informatisation de la science
pasteurienne &#233;tait en mauvaise voie et que nous ne rattraperions pas le retard
pris sur les chercheurs d'autres pays, parce que l&#224; pr&#233;cis&#233;ment la r&#233;duction de
l'informatique &#224; une simple technique de laboratoire avait des implications &#233;pist&#233;mologiques
catastrophiques.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;R&#233;tablissement s&#233;mantique&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Regardons autour de nous ce que donne la terminologie des autres cultures :
justement, le num&#233;ro de f&#233;vrier des &lt;i&gt;Communications of the ACM&lt;/i&gt; (CACM) plaide
pour la cr&#233;ation de dipl&#244;mes en &lt;i&gt;Informatics&lt;/i&gt;, et explique que ce terme, r&#233;cent
outre-Atlantique, d&#233;signe l&#224;-bas plut&#244;t l'enseignement de ce que l'on y appelle
&lt;i&gt;computing&lt;/i&gt; dans le contexte d'un autre domaine, donc ce que nous appellerions ici
informatique appliqu&#233;e, par exemple &lt;i&gt;bioinformatique&lt;/i&gt;, alors que dans les universit&#233;s
europ&#233;ennes informatique traduit &lt;i&gt;Computer Science&lt;/i&gt;, que l'on peut opposer
&#224; &lt;i&gt;Information Technology&lt;/i&gt; (IT), de plus en plus &#224; la mode pour d&#233;signer tout ce
qui a trait &#224; la plate-forme technique de l'informatique de Michel Volle.&lt;/p&gt; &lt;p&gt;Bref, tout cela n'est ni tr&#232;s simple ni tr&#232;s clair, alors je propose de conserver
la terminologie en vigueur aujourd'hui : l'informatique d&#233;signe &#224; la fois la
science informatique &lt;i&gt;(Computer Science)&lt;/i&gt; et les techniques qui en rel&#232;vent (&lt;i&gt;Information
Technology&lt;/i&gt;, IT). La r&#233;alisation d'un Syst&#232;me d'information (SI) mobilise
des connaissances et des comp&#233;tences en informatique, en logique, en &#233;conomie,
en sociologie, c'est un domaine qui poss&#232;de une certaine autonomie.&lt;/p&gt; &lt;p&gt;L'informatisation peut s'entendre selon deux acceptions : au sens factitif ou
volontariste elle d&#233;signe la r&#233;alisation du SI, c'est l'informatisation voulue ; en
un sens plus passif elle &#233;voque l'invasion de tous les domaines de la vie par les
artefacts informatiques, c'est l'informatisation immanente.&lt;/p&gt; &lt;p&gt;L'informatisation immanente a lieu, &lt;i&gt;volens nolens&lt;/i&gt; : cela ne saurait emp&#234;cher
l'informatisation voulue d'&#233;chouer en tout ou en partie. Et c'est bien ce qui arrive,
&#224; tel point que les SI des entreprises peuvent &#234;tre supplant&#233;s par l'informatique
ambiante. Dans les universit&#233;s par exemple Facebook et Twitter font concurrence
aux Espaces num&#233;riques de travail (ENT), aux didacticiels et aux syst&#232;mes de
gestion d'emplois du temps mis en place par les DSI.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Facteurs de succ&#232;s (ou d'&#233;chec) de l'informatisation&lt;/h3&gt;
&lt;p&gt;Dans une entreprise, r&#233;aliser le SI n&#233;cessite des connaissances, des comp&#233;tences,
de la constance et une organisation ad&#233;quate bas&#233;e sur le dialogue et la
coop&#233;ration. Le d&#233;faut de l'une ou plusieurs de ces qualit&#233;s peut provoquer l'&#233;chec
de l'entreprise.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Connaissances et comp&#233;tences&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;La r&#233;ussite de la construction du SI exige donc des des connaissances et des
comp&#233;tences dans les diff&#233;rents domaines &#233;voqu&#233;s plus haut, mais, malgr&#233; qu'on
en ait, ce sont les comp&#233;tences en informatique qui sont d&#233;terminantes, parce que
ce sont celles qui seront le plus mises &#224; contribution et qui sont les plus difficiles
&#224; se procurer.&lt;/p&gt; &lt;p&gt;C'est l'acquisition de ces connaissances et comp&#233;tences qui repr&#233;sentera la
part principale de l'effort d'informatisation. La r&#233;ussite de toute l'entreprise exige
un effort d'apprentissage qui concerne une large part de la population, sur une
longue p&#233;riode, c'est-&#224;-dire qu'il doit commencer au sein du syst&#232;me &#233;ducatif
pour se poursuivre au long de la vie professionnelle.&lt;/p&gt; &lt;p&gt;Ce projet rencontre une difficult&#233; (parmi d'autres) : l'incertitude qui r&#232;gne
quant &#224; la nature exacte des connaissances et comp&#233;tences en question. De nombreuses
d&#233;cennies ont &#233;tabli et consolid&#233; des corpus de connaissances qui permettent
d'&#233;noncer ce que doit savoir un ing&#233;nieur en m&#233;canique automobile ou
en g&#233;nie chimique, tandis que rien de tel n'existe pour l'informatique. Comme
chacun l'utilise, on croit souvent que la dext&#233;rit&#233; dans son usage est le signe
d'une comp&#233;tence pour construire des syst&#232;mes &#224; base d'informatique. Et m&#234;me
dans le syst&#232;me &#233;ducatif la formation &#224; la bureautique tient souvent lieu d'enseignement
informatique. Cette confusion est source de grandes d&#233;convenues et de
qualifications inadapt&#233;es sur le march&#233; du travail.&lt;/p&gt; &lt;p&gt;Il y a une autre confusion, plus insidieuse et donc plus dangereuse : la prolif&#233;ration
des m&#233;thodes de conduite de projet, des normes de qualit&#233;, des syst&#232;mes
de management et autres mod&#232;les de maturit&#233; ont entra&#238;n&#233; la multiplication des
chefs de projet qui n'ont jamais ma&#238;tris&#233; autre chose qu'Excel pour &#233;tablir des
budgets et des plannings, des ing&#233;nieurs en g&#233;nie logiciel qui n'ont jamais &#233;crit une
ligne de programme et des architectes de syst&#232;me qui ne sont que des utilisateurs
de syst&#232;mes dont ils n'ont aucune id&#233;e de la structure interne.&lt;/p&gt; &lt;p&gt;L'existence de ces vastes populations mal form&#233;es, qui croient poss&#233;der des
comp&#233;tences qu'elles n'ont pas et qui occupent dans les organisations des postes
de responsabilit&#233; technique, est une source de co&#251;ts dans les entreprises et d'&#233;checs
dans les projets. Pour chaque projet qui commence, il faut commencer avec un
consultant qui va expliquer de quoi il s'agit, puis une assistance &#224; ma&#238;trise d'ouvrage
qui va expliquer et &#233;crire ce dont on a besoin : dans une entreprise dot&#233;e
d'une DSI, ceci devrait &#234;tre l'aboutissement d'une d&#233;marche interne.&lt;/p&gt; &lt;p&gt;La pr&#233;sence de l'informatique dans les programmes de l'enseignement secondaire
est un bon indicateur de l'aptitude d'un pays &#224; faire face aux &#233;volutions
exig&#233;es par l'informatisation, et de ce point de vue la France est fort mal plac&#233;e : cf. par exemple sur le &lt;a href='http://www.epi.asso.fr/revue/docu/ d0912b.htm' class='spip_out' rel='external'&gt;site de l'EPI&lt;/a&gt;.
De fa&#231;on g&#233;n&#233;rale, la France est assez mal plac&#233;e du point de vue de la formation&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Constance&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;L'informatique est un domaine o&#249; l'investissement demande des efforts soutenus
et prolong&#233;s, parce que mener un projet &#224; bien y prend beaucoup de temps.
Cela n'est possible que si la direction de l'entreprise, munie d'une perception
suffisamment claire des enjeux et des moyens &#224; y consacrer, s'implique dans le
projet.&lt;/p&gt; &lt;p&gt;L'investissement dans l'informatisation du SI est particul&#232;rement complexe,
lourd et incertain, parce qu'il est difficile de r&#233;pondre &#224; deux questions :&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; que faut-il faire ?
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; que peut-on faire ?&lt;/p&gt; &lt;p&gt;L'ing&#233;nieur qui con&#231;oit un objet mat&#233;riel dispose d'un ensemble d'outils conceptuels
bien &#233;tablis, notamment les lois de la physique et de la chimie, sur lesquels
il peut s'appuyer pour &#233;laborer son projet, l'expliquer &#224; ses coll&#232;gues et &#224; son
employeur, &#233;ventuellement par des dessins ou des maquettes, etc.&lt;/p&gt; &lt;p&gt;L'architecte de syst&#232;me d'information ne dispose de rien de tel, la mati&#232;re
dont il doit tirer la substance de son projet est mouvante, floue, variable.
La complexit&#233; du processus d'informatisation est sous-estim&#233;e par les responsables
&#224; la formation insuffisante. Une cause r&#233;currente d'&#233;chec de l'informatisation
r&#233;side dans la difficult&#233; &#233;prouv&#233;e par beaucoup de dirigeants &#224; se faire une
id&#233;e raisonnable de ce qu'ils peuvent attendre de l'informatique, de ce que cela va
co&#251;ter, et surtout de l'implication personnelle exigible de chacun pour que cela
r&#233;ussisse.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Dialogue et coop&#233;ration&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Tout projet d'informatisation est par nature un projet de collaboration. On
a souvent tendance &#224; percevoir cette collaboration comme une relation entre le
commanditaire du projet, qui donne des ordres sous forme de cahier des charges,
et un ma&#238;tre d'oeuvre, qui r&#233;alise. Cette vision inspir&#233;e du monde du b&#226;timent et
des travaux publics a des limites qui d&#233;coulent de diff&#233;rences &#233;videntes entre les
deux mondes :&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; visible &#8211; invisible ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; mat&#233;riel &#8211; immat&#233;riel ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurentbloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; irr&#233;versible &#8211; r&#233;versible.&lt;/p&gt; &lt;p&gt;La logique cahier des charges &#8211; ma&#238;tre d'oeuvre conduit au &lt;a href='http://www.laurentbloch.org/spip.php?article137#inter5' class='spip_out'&gt;cycle de d&#233;veloppement en V&lt;/a&gt;, qui pr&#233;sente l'avantage (fallacieux) d'une division du travail claire,
mais l'inconv&#233;nient d'&#234;tre inadapt&#233; &#224; la r&#233;alit&#233; de la construction du SI.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Plan du cours d'algorithmes pour la biologie (BNF 103)</title>
		<link>http://www.laurentbloch.org/spip.php?article117</link>
		<guid isPermaLink="true">http://www.laurentbloch.org/spip.php?article117</guid>
		<dc:date>2010-03-07T17:19:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		


		<dc:subject>article_une</dc:subject>

		<description>Le cours suivra le plan suivant : D&#233;finitions, notations, pseudocode Exemple, Pseudo-code, pseudo-code-&gt;scheme, recherche dans une liste, complexit&#233;, notations asymptotiques. Donn&#233;es et information Quelques notions de base. Graphes et arbres Encores des notions de base... Automates et machines de Turing &#192; l'attaque des vrais fondements. Automates II : non-d&#233;terminisme Apr&#232;s les automates &#224; &#233;tats finis d&#233;terministes, les automates non-d&#233;terministes, qui sont d'ailleurs &#233;quivalents. (...)

-
&lt;a href="http://www.laurentbloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;

/ 
&lt;a href="http://www.laurentbloch.org/spip.php?mot65" rel="tag"&gt;article_une&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Le cours suivra le plan suivant :&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurentbloch.org/spip.php?article68' class='spip_in'&gt;D&#233;finitions, notations, pseudocode&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt; Exemple, Pseudo-code, pseudo-code-&gt;scheme, recherche dans une liste, complexit&#233;, notations asymptotiques.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurentbloch.org/spip.php?article111' class='spip_in'&gt;Donn&#233;es et information&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Quelques notions de base.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurentbloch.org/spip.php?article110' class='spip_in'&gt;Graphes et arbres&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Encores des notions de base...&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurentbloch.org/spip.php?article112' class='spip_in'&gt;Automates et machines de Turing&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&#192; l'attaque des vrais fondements.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurentbloch.org/spip.php?article113' class='spip_in'&gt;Automates II : non-d&#233;terminisme&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Apr&#232;s les automates &#224; &#233;tats finis d&#233;terministes, les automates non-d&#233;terministes, qui sont d'ailleurs &#233;quivalents.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurentbloch.org/spip.php?article118' class='spip_in'&gt;Expressions r&#233;guli&#232;res&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;La suite logique des automates, auxquels elles sont &#233;quivalentes.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article71' class='spip_in'&gt;Acc&#233;l&#233;ration d'un algorithme&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Recherche du maximum d'un ensemble de valeurs, &lt;i&gt;memoization&lt;/i&gt; de Fibonacci, recherche de segments maximaux O(n&lt;sup&gt;3&lt;/sup&gt;), O(n&lt;sup&gt;2&lt;/sup&gt;), O(n).
On attaque l'algorithmique proprement dite.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article76' class='spip_in'&gt;Acc&#233;l&#233;ration de l'algorithme de Fibonacci&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Un exemple.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article77' class='spip_in'&gt;Tris&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Algorithmes de tri par insertion, recherche de maximum dans une liste, tri fusion, tri rapide, tri lin&#233;aire.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article81' class='spip_in'&gt;Structures de donn&#233;es &#233;l&#233;mentaires&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Les pile, les files, le tas et tris par tas, les arbres, arbres binaires de recherche, tables de hashage.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article88' class='spip_in'&gt;Recherche de mots dans un texte&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Force brute, Knuth-Morris-Pratt (KMP), Karp Rabin.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article144' class='spip_in'&gt;Le pr&#233;c&#233;dent en style r&#233;cursif&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article94' class='spip_in'&gt;Instrumentation d'un programme pour l'observer : KMP&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Une variation autour du pr&#233;c&#233;dent.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Recherche de mots dans un texte (suite)&lt;/h3&gt;
&lt;p&gt;Structures de donn&#233;es
Les arbres de mot-cl&#233;s (keyword trees), les arbres de suffixes (suffix trees).&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Recherche d'un motif dans un texte&lt;/h3&gt;
&lt;p&gt;Prosite, les expressions r&#233;guli&#232;res, grep, les automates &#224; &#233;tat fini, expression r&#233;guli&#232;res -&gt; automates &#224; &#233;tat finis ind&#233;terministes, d&#233;terminisation d'un automate &#224; &#233;tat fini, minimisation d'automates &#224; &#233;tat finis.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Algorithmes sur les graphes&lt;/h3&gt;
&lt;p&gt;Le m&#233;tabolisme, repr&#233;sentation de graphe, recherche de plus court chemin, recherche d'arbre couvrant minimal.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article89' class='spip_in'&gt;Algorithme de Needleman et Wunsch&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Alignement de s&#233;quences.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurentbloch.org/spip.php?article90' class='spip_in'&gt;Programmation dynamique&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Recherche de s&#233;quences hydrophobes, comparaison de s&#233;quence par l'algorithme de &lt;a href='http://www.laurentbloch.org/spip.php?article89' class='spip_in'&gt;Needleman et Wunsch&lt;/a&gt;, par l'algorithme de Smith et Waterman, optimisation de Gotoh, multiplication de matrices : minimisation des calculs.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Recherche dans des banques de donn&#233;es&lt;/h3&gt;
&lt;p&gt;Blast, Fasta, les matrices PAM.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Chaines de Markov&lt;/h3&gt;
&lt;p&gt;Pr&#233;diction de mod&#232;les de g&#232;nes, pr&#233;diction de structure, repr&#233;sentation de motifs fonctionnels.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Des probl&#232;mes difficiles : NP-compl&#233;tude&lt;/h3&gt;
&lt;p&gt;Probl&#232;me de la clique, Sat, voyageur de commerce.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Solution presque optimales&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Simulated anealing&lt;/i&gt;, algorithmes g&#233;n&#233;tiques...&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>


 
	


 
	

</channel>
</rss>
