<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.10" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Stanford CS Education Library</title>
	<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/</link>
	<description>A diary of madness</description>
	<pubDate>Fri, 05 Dec 2008 12:57:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.10</generator>

	<item>
		<title>by: Christian</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-145</link>
		<pubDate>Sun, 02 Apr 2006 03:49:22 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-145</guid>
					<description>Ah oui, j'oubliais. Dans mon cours d'intelligence artificielle, hormi les reseaux de neurones, tout le reste peut t'interesser car il s'agit essentiellement d'une approche fonctionnelle de la programmation, mais sans se fonder sur un langage particulier. Il s'agit de specifications algebriques (comme des modules, si tu preferes, avec interfaces (appelees ici signatures) et en-tetes (appelees ici type abstraits)). Je traite en long, large et en travers tout ce qu'on peut faire avec une ou des piles, file d'attente et les parcours d'arbres. Tout ca sans pointeurs, c'est-a-dire sans les mains! :-)</description>
		<content:encoded><![CDATA[<p>Ah oui, j&#8217;oubliais. Dans mon cours d&#8217;intelligence artificielle, hormi les reseaux de neurones, tout le reste peut t&#8217;interesser car il s&#8217;agit essentiellement d&#8217;une approche fonctionnelle de la programmation, mais sans se fonder sur un langage particulier. Il s&#8217;agit de specifications algebriques (comme des modules, si tu preferes, avec interfaces (appelees ici signatures) et en-tetes (appelees ici type abstraits)). Je traite en long, large et en travers tout ce qu&#8217;on peut faire avec une ou des piles, file d&#8217;attente et les parcours d&#8217;arbres. Tout ca sans pointeurs, c&#8217;est-a-dire sans les mains! <img src='http://www.sungnyemun.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Christian</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-144</link>
		<pubDate>Sat, 01 Apr 2006 16:24:12 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-144</guid>
					<description>Les maths servent a resoudre des problemes, comme par exemple tuer le temps (avant qu'il nous tue). Ou alors elles ne servent a rien, comme la musique, l'architecture, l'informatique (on peut vivre sans), ca depend du point de vue. L'informatique est a tort consideree par les eleves ingenieurs comme une branche du bricolage, au mieux de l'artisanat, mais pas des sciences. Inquietant, pour des ingenieurs. J'ai tendance a penser que le succes des maths est tel qu'on ne le voit pas. C'est ca la veritable marque du succes, comme l'apparition de l'oxygene dans la biosphere. On peut poser son regard n'importe ou et, comme dans The Matrix, on pourrait voir le code si on savait regarder. Quelle immeuble sans maths? Quel telephone? Et en meme temps, heureusement qu'on ne voit pas tout ca tout le temps. Un musicien professionnel m'a avoue un jour qu'il n'aimait pas ecouter de la musique car il ne pouvait s'empecher d'entendre les notes...

Aborder les automates et les expressions regulieres par le code source, c'est encore prendre l'informatique par le bout du bricolage. Au mieux, on deviendra bricoleur, mais, en tant que tel, on ne sera jamais capable de construire l'equivalent logiciel d'un barrage. Pour passer a l'echelle, pour abstraire de nouveaux problemes, il faut de la theorie, et les automates sont la voie royale pour demontrer en quoi la theorie est efficiente.

Dans mon cours de compilation en anglais je presente la compilation des expressions regulieres vers les automates asynchrones (epsilon-NFA), et leur transformation en NFA puis DFA. Mais attention, en pratique, ce n'est peut-etre pas comme ca qu'il faut proceder, a cause de l'explosion possible du nombre d'etat (la determinisation est exponentielle dans le pire des cas, comme je le montre dans le cours &lt;i&gt;Information Retrieval&lt;/i&gt;).

Quant a l'interet d'utiliser un langage fonctionnel pour implanter des automates, tout depend du type d'automate, du type d'application et du type de langage, ce n'est pas si simple. Evidemment, C est tres rapide. Mais si l'efficacite etait le seul critere, on pondrait de l'assembleur soi-meme, comme tu dis, et il y a de vraies bonnes raisons de ne pas faire cela (pas tout le temps). Si le type d'application est la recherche d'occurrences de chaines dans des chaines, et si les automates sont des DFAs, alors C est une bonne idee. Mais si les automates sont des automates a pile tres compliques pour generer des analyseurs syntaxiques, j'y reflechirais a deux fois avant d'envisager C (meme si ca se fait, par exemple Yacc).

L'inconvenient d'Erlang est l'absence de typage strict et fort a la compilation. Mais cette option a ses fans, comme pour Scheme et LISP. Moi j'accepte de ceder un peu de liberte contre une aide sans faille (d'aucuns diraient faciste:-) du compilateur.

On peut traduire &lt;i&gt;pattern matching&lt;/i&gt; par &lt;i&gt;filtrage de motifs&lt;/i&gt;.

L'interet d'une presentation algebriciste (osons) des automates et autre est qu'elle permet de s'abstraire d'un modele de machine ou de calcul particulier. Pas de memoire, pas de temps. Comme en maths. Tu deroules une equation jusqu'a trouver le resultat. Ca permet de comprendre le concept. Apres, et seulement apres, tu codes, et, la, tu fais autrement si tu juges que c'est plus efficace, par exemple, ou parce que tu n'as pas le choix (contraintes exterieures). Alors, evidemment, tu ne fais pas comme ca pour programmer un menu ou des widgets, attention, ce n'est pas de la religion, il faut etre pragmatique sans etre ignorant (donc connaitre la theorie et, eventuellement, ne pas s'en servir expres).

A mon avis, si on est bon en grammaire et en linguistique, comme toi, on n'a pas de mal a piger l'algebre des langages fonctionnels et la compilation (le calcul symbolique, en somme). Ca demande "seulement" d'oublier tout ce qu'on croit savoir sur la programmation et de lire les bons livres.

Et apres les langages fonctionnels, il faudrait jeter un petit coup d'oeil a la programmation a logiques, comme Prolog. C'est vraiment puissant et deconcertant. Tellement de belles choses a decouvrir...
</description>
		<content:encoded><![CDATA[<p>Les maths servent a resoudre des problemes, comme par exemple tuer le temps (avant qu&#8217;il nous tue). Ou alors elles ne servent a rien, comme la musique, l&#8217;architecture, l&#8217;informatique (on peut vivre sans), ca depend du point de vue. L&#8217;informatique est a tort consideree par les eleves ingenieurs comme une branche du bricolage, au mieux de l&#8217;artisanat, mais pas des sciences. Inquietant, pour des ingenieurs. J&#8217;ai tendance a penser que le succes des maths est tel qu&#8217;on ne le voit pas. C&#8217;est ca la veritable marque du succes, comme l&#8217;apparition de l&#8217;oxygene dans la biosphere. On peut poser son regard n&#8217;importe ou et, comme dans The Matrix, on pourrait voir le code si on savait regarder. Quelle immeuble sans maths? Quel telephone? Et en meme temps, heureusement qu&#8217;on ne voit pas tout ca tout le temps. Un musicien professionnel m&#8217;a avoue un jour qu&#8217;il n&#8217;aimait pas ecouter de la musique car il ne pouvait s&#8217;empecher d&#8217;entendre les notes&#8230;</p>
<p>Aborder les automates et les expressions regulieres par le code source, c&#8217;est encore prendre l&#8217;informatique par le bout du bricolage. Au mieux, on deviendra bricoleur, mais, en tant que tel, on ne sera jamais capable de construire l&#8217;equivalent logiciel d&#8217;un barrage. Pour passer a l&#8217;echelle, pour abstraire de nouveaux problemes, il faut de la theorie, et les automates sont la voie royale pour demontrer en quoi la theorie est efficiente.</p>
<p>Dans mon cours de compilation en anglais je presente la compilation des expressions regulieres vers les automates asynchrones (epsilon-NFA), et leur transformation en NFA puis DFA. Mais attention, en pratique, ce n&#8217;est peut-etre pas comme ca qu&#8217;il faut proceder, a cause de l&#8217;explosion possible du nombre d&#8217;etat (la determinisation est exponentielle dans le pire des cas, comme je le montre dans le cours <i>Information Retrieval</i>).</p>
<p>Quant a l&#8217;interet d&#8217;utiliser un langage fonctionnel pour implanter des automates, tout depend du type d&#8217;automate, du type d&#8217;application et du type de langage, ce n&#8217;est pas si simple. Evidemment, C est tres rapide. Mais si l&#8217;efficacite etait le seul critere, on pondrait de l&#8217;assembleur soi-meme, comme tu dis, et il y a de vraies bonnes raisons de ne pas faire cela (pas tout le temps). Si le type d&#8217;application est la recherche d&#8217;occurrences de chaines dans des chaines, et si les automates sont des DFAs, alors C est une bonne idee. Mais si les automates sont des automates a pile tres compliques pour generer des analyseurs syntaxiques, j&#8217;y reflechirais a deux fois avant d&#8217;envisager C (meme si ca se fait, par exemple Yacc).</p>
<p>L&#8217;inconvenient d&#8217;Erlang est l&#8217;absence de typage strict et fort a la compilation. Mais cette option a ses fans, comme pour Scheme et LISP. Moi j&#8217;accepte de ceder un peu de liberte contre une aide sans faille (d&#8217;aucuns diraient faciste:-) du compilateur.</p>
<p>On peut traduire <i>pattern matching</i> par <i>filtrage de motifs</i>.</p>
<p>L&#8217;interet d&#8217;une presentation algebriciste (osons) des automates et autre est qu&#8217;elle permet de s&#8217;abstraire d&#8217;un modele de machine ou de calcul particulier. Pas de memoire, pas de temps. Comme en maths. Tu deroules une equation jusqu&#8217;a trouver le resultat. Ca permet de comprendre le concept. Apres, et seulement apres, tu codes, et, la, tu fais autrement si tu juges que c&#8217;est plus efficace, par exemple, ou parce que tu n&#8217;as pas le choix (contraintes exterieures). Alors, evidemment, tu ne fais pas comme ca pour programmer un menu ou des widgets, attention, ce n&#8217;est pas de la religion, il faut etre pragmatique sans etre ignorant (donc connaitre la theorie et, eventuellement, ne pas s&#8217;en servir expres).</p>
<p>A mon avis, si on est bon en grammaire et en linguistique, comme toi, on n&#8217;a pas de mal a piger l&#8217;algebre des langages fonctionnels et la compilation (le calcul symbolique, en somme). Ca demande &#8220;seulement&#8221; d&#8217;oublier tout ce qu&#8217;on croit savoir sur la programmation et de lire les bons livres.</p>
<p>Et apres les langages fonctionnels, il faudrait jeter un petit coup d&#8217;oeil a la programmation a logiques, comme Prolog. C&#8217;est vraiment puissant et deconcertant. Tellement de belles choses a decouvrir&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: dda</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-143</link>
		<pubDate>Sat, 01 Apr 2006 07:19:23 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-143</guid>
					<description>Moi qui n'ai jamais été passionné par les maths... J'ai fait A2 qui plus est... Dur dur !  Il va falloir que je reprenne des cours intensifs !

En fait, c'est la faute de mes profs [ce ne peut pas être de ma faute, voyons !] : il n'ont jamais sû répondre à une question simple, que je leur posais souvent, du moins avant de décrocher. &lt;em&gt;À quoi ça sert ?&lt;/em&gt; Désarmant n'est-ce-pas ?

Je suis passionné entre autres par les expressions régulières [?], les regex quoi, et j'ai toujours voulu en savoir plus sur "comment ça marche". Mais la plupart du temps, les implémentations sont du type PCRE/NFA, et j'ai eu du mal à trouver de la doc abordable [du code source quoi :-)] sur les DFA. Mais si j'avais été à P6 au lieu de P7 j'en saurais plus à l'heure qu'il est...

Je vois bien comment un automate pourrait être plus facile/moins difficile à écrire en langage fonctionnel [enfin je n'en connais qu'un et si peu...]. Ce ne serait pas forcément plus rapide/efficace – difficile de faire mieux qu'en pur C je pense, enfin si y'aurait bien l'assembleur, mais je chipote nostalgiquement, là – avec du &lt;em&gt;pattern matching&lt;/em&gt; [désolé pour les anglicismes, tout mon vocabulaire me vient de "là-bas"] à ne plus quoi savoir en faire.

Encore merci pour tout !</description>
		<content:encoded><![CDATA[<p>Moi qui n&#8217;ai jamais été passionné par les maths&#8230; J&#8217;ai fait A2 qui plus est&#8230; Dur dur !  Il va falloir que je reprenne des cours intensifs !</p>
<p>En fait, c&#8217;est la faute de mes profs [ce ne peut pas être de ma faute, voyons !] : il n&#8217;ont jamais sû répondre à une question simple, que je leur posais souvent, du moins avant de décrocher. <em>À quoi ça sert ?</em> Désarmant n&#8217;est-ce-pas ?</p>
<p>Je suis passionné entre autres par les expressions régulières [?], les regex quoi, et j&#8217;ai toujours voulu en savoir plus sur &#8220;comment ça marche&#8221;. Mais la plupart du temps, les implémentations sont du type PCRE/NFA, et j&#8217;ai eu du mal à trouver de la doc abordable [du code source quoi <img src='http://www.sungnyemun.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ] sur les DFA. Mais si j&#8217;avais été à P6 au lieu de P7 j&#8217;en saurais plus à l&#8217;heure qu&#8217;il est&#8230;</p>
<p>Je vois bien comment un automate pourrait être plus facile/moins difficile à écrire en langage fonctionnel [enfin je n&#8217;en connais qu&#8217;un et si peu&#8230;]. Ce ne serait pas forcément plus rapide/efficace – difficile de faire mieux qu&#8217;en pur C je pense, enfin si y&#8217;aurait bien l&#8217;assembleur, mais je chipote nostalgiquement, là – avec du <em>pattern matching</em> [désolé pour les anglicismes, tout mon vocabulaire me vient de &#8220;là-bas&#8221;] à ne plus quoi savoir en faire.</p>
<p>Encore merci pour tout !
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Christian</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-142</link>
		<pubDate>Sat, 01 Apr 2006 04:44:46 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-142</guid>
					<description>Je ne comprends decidement pas pourquoi...  C'etait 

http://www-igm.univ-mlv.fr/~berstel/Elements/Elements.html

Berstel et Chretienne etaient mes profs a Paris VI, au siecle dernier. J'adore leur style, c'est rare de lire un &lt;i&gt;textbook&lt;/i&gt; aussi bien redige, pas d'anglicisme, un francais impeccable qui ne prend pas le lecteur pour un lecteur de "Metro", une structure logique, des definitions pour tous les concepts, une composition en LaTeX et des figures vraiment claires (attention, un automate est faux, ceci dit), en particulier le chapitre sur les arbres.

Quant aux automates finis, j'ai fait pas mal de redites entre mon cours de compilation (en anglais) et celui de recherche d'information, avec quelques differences dans le focus. 

Ma presentation, comme toutes mes presentations, a volontairement un cachet algebrique, meme si ce n'est pas une veritable theorie algebrique des automates (c-a-d. j'utilise des ensembles, mais aussi des fonctions), car cela permet de s'abstraire des boucles et des pointeurs. Apres, libre a chacun d'implanter tout cela comme il veut ou peut (avec un langage fonctionnel, une presentation algebrique facilite toujours la tache, meme s'il faut parfois renoncer au tout fonctionnel pour des raisons d'efficacite). En tout cas, c'est la base de la base que tu as la, et j'ai bosse tres dur pour la rendre accessible (toutes les figures sont codees en LaTeX, en plus). 

Si tu veux en savoir plus, ou plus sur un sujet particulier, n'hesite pas a me le demander ici ou par courrier.

Par exemple, si tu prevois d'appliquer la theorie des automates a la recherche efficate de texte dans du texte, il y a un excellent bouquin en francais la-dessus (les chercheurs francais sont tres bons dans ce domaines) que je peux te recommander.

En pensant a toi, j'ai mis en ligne quelques supports de plus. Il manque les sources, car je dois comprendre comment les integrer dans ma moulinette perso qui met automatiquement a jour mon site a partir de ma base Subversion de documents LaTeX.

Amuse-toi bien!</description>
		<content:encoded><![CDATA[<p>Je ne comprends decidement pas pourquoi&#8230;  C&#8217;etait </p>
<p><a href="http://www-igm.univ-mlv.fr/~berstel/Elements/Elements.html" rel="nofollow">http://www-igm.univ-mlv.fr/~berstel/Elements/Elements.html</a></p>
<p>Berstel et Chretienne etaient mes profs a Paris VI, au siecle dernier. J&#8217;adore leur style, c&#8217;est rare de lire un <i>textbook</i> aussi bien redige, pas d&#8217;anglicisme, un francais impeccable qui ne prend pas le lecteur pour un lecteur de &#8220;Metro&#8221;, une structure logique, des definitions pour tous les concepts, une composition en LaTeX et des figures vraiment claires (attention, un automate est faux, ceci dit), en particulier le chapitre sur les arbres.</p>
<p>Quant aux automates finis, j&#8217;ai fait pas mal de redites entre mon cours de compilation (en anglais) et celui de recherche d&#8217;information, avec quelques differences dans le focus. </p>
<p>Ma presentation, comme toutes mes presentations, a volontairement un cachet algebrique, meme si ce n&#8217;est pas une veritable theorie algebrique des automates (c-a-d. j&#8217;utilise des ensembles, mais aussi des fonctions), car cela permet de s&#8217;abstraire des boucles et des pointeurs. Apres, libre a chacun d&#8217;implanter tout cela comme il veut ou peut (avec un langage fonctionnel, une presentation algebrique facilite toujours la tache, meme s&#8217;il faut parfois renoncer au tout fonctionnel pour des raisons d&#8217;efficacite). En tout cas, c&#8217;est la base de la base que tu as la, et j&#8217;ai bosse tres dur pour la rendre accessible (toutes les figures sont codees en LaTeX, en plus). </p>
<p>Si tu veux en savoir plus, ou plus sur un sujet particulier, n&#8217;hesite pas a me le demander ici ou par courrier.</p>
<p>Par exemple, si tu prevois d&#8217;appliquer la theorie des automates a la recherche efficate de texte dans du texte, il y a un excellent bouquin en francais la-dessus (les chercheurs francais sont tres bons dans ce domaines) que je peux te recommander.</p>
<p>En pensant a toi, j&#8217;ai mis en ligne quelques supports de plus. Il manque les sources, car je dois comprendre comment les integrer dans ma moulinette perso qui met automatiquement a jour mon site a partir de ma base Subversion de documents LaTeX.</p>
<p>Amuse-toi bien!
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: dda</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-141</link>
		<pubDate>Fri, 31 Mar 2006 02:52:53 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-141</guid>
					<description>Le lien d'élément d'algorithmique n'est toujours pas passé...
Quant à ton cours je me suis jeté dessus – pas trop le temps, mais un cours qui a un chapitre sur les DFA, je prends...

</description>
		<content:encoded><![CDATA[<p>Le lien d&#8217;élément d&#8217;algorithmique n&#8217;est toujours pas passé&#8230;<br />
Quant à ton cours je me suis jeté dessus – pas trop le temps, mais un cours qui a un chapitre sur les DFA, je prends&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Christian</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-140</link>
		<pubDate>Tue, 28 Mar 2006 11:28:27 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-140</guid>
					<description>Ah oui, j'ai lu le source HTML et je constate que je ne connais pas HTML. C'est pourquoi je m'interesse a XML:-)

Le lien escamote vers le bouquin d'algo est &lt;a href="http://www-igm.univ-mlv.fr/~berstel/Elements/Elements.html"&gt;Elements d'algorithmique&lt;/a&gt;. Quant a mon cours &lt;a href="http://konkuk.ac.kr/~rinderkn/doc/IR/ir.html" rel="nofollow"&gt;Information Retrieval&lt;/a&gt;, il contient quelques infos utiles sur les arbres digitaux (pour les dictionnaires). Au passage, si tu t'interesses a la recherche de chaines de caracteres dans du texte, ma presentation de l'algo de (Knuth,)Morris et Pratt est meilleure que celle de ce bouquin (une boucle en moins, non mais).
</description>
		<content:encoded><![CDATA[<p>Ah oui, j&#8217;ai lu le source HTML et je constate que je ne connais pas HTML. C&#8217;est pourquoi je m&#8217;interesse a XML:-)</p>
<p>Le lien escamote vers le bouquin d&#8217;algo est <a href="http://www-igm.univ-mlv.fr/~berstel/Elements/Elements.html">Elements d&#8217;algorithmique</a>. Quant a mon cours <a href="http://konkuk.ac.kr/~rinderkn/doc/IR/ir.html" rel="nofollow">Information Retrieval</a>, il contient quelques infos utiles sur les arbres digitaux (pour les dictionnaires). Au passage, si tu t&#8217;interesses a la recherche de chaines de caracteres dans du texte, ma presentation de l&#8217;algo de (Knuth,)Morris et Pratt est meilleure que celle de ce bouquin (une boucle en moins, non mais).
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: dda</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-139</link>
		<pubDate>Mon, 27 Mar 2006 16:17:37 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-139</guid>
					<description>Je me disais bien que j'avais une vision simpliste des choses... :-) Et voilà-t-y pas que les arbres se prennent pour Stendahl... [Entre parenthèses tes liens ne passent pas. Mets les en clair je modifierai].

Pour les clefs, je comprends l'histoire de la dispersion de mes entiers – mais je n'ai pas ce souci, a priori. Et je n'aurai pas de collision, bikoze le logiciel qui produit se fichier se sert de ses clefs pour y retrouver ses cochons. Donc clefs uniques. Et mon approche Vikingesque de la collision de clefs serait l'écrasement des données précédentes :D Sans blague !

Tu es très clair, merci pour toutes ces explications... Que de choses à apprendre...</description>
		<content:encoded><![CDATA[<p>Je me disais bien que j&#8217;avais une vision simpliste des choses&#8230; <img src='http://www.sungnyemun.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Et voilà-t-y pas que les arbres se prennent pour Stendahl&#8230; [Entre parenthèses tes liens ne passent pas. Mets les en clair je modifierai].</p>
<p>Pour les clefs, je comprends l&#8217;histoire de la dispersion de mes entiers – mais je n&#8217;ai pas ce souci, a priori. Et je n&#8217;aurai pas de collision, bikoze le logiciel qui produit se fichier se sert de ses clefs pour y retrouver ses cochons. Donc clefs uniques. Et mon approche Vikingesque de la collision de clefs serait l&#8217;écrasement des données précédentes <img src='http://www.sungnyemun.org/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Sans blague !</p>
<p>Tu es très clair, merci pour toutes ces explications&#8230; Que de choses à apprendre&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Christian</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-138</link>
		<pubDate>Mon, 27 Mar 2006 15:46:47 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-138</guid>
					<description>Si les clefs sont entrees dans l'arbre de recherche dans l'ordre (croissant ou decroissant), alors tu obtiens une liste... triee, heureusement, mais tout a fait ininteressante. On prouve qu'en moyenne l'arbre est equilibre ou presque, ceci dit. Donc: dans le pire des cas, ce n'est pas terrible, mais en moyenne c'est bon. Un arbre equilibre implique un acces a un noeud en un temps proportionnel a la hauteur du noeud, qui est alors un logarithme de l'arite de chaque noeud (deux si binaire), en la supposant fixe. Pour garantir un temps logarithmique dans le pire des cas, il faut utiliser un AVL ou un arbre rouge-noir, par exemple. Malheureusement, c'est plus complique que tu ne le decris, il faut faire des rotations de sous-arbres de facon a garantir l'invariant qui dit que la difference de hauteur maximale entre deux sous-arbres freres est toujours au plus un (en valeur absolue). Tu peux te reporter &lt;a&gt;Elements d'algorithmique&lt;/a&gt; pour une bonne presentation des arbres rouge-noir.

Si tes clefs sont uniques, ca n'implique pas que la table de hachage soit indiquee: si les clefs sont trop dispersees (sur l'ensemble des entiers), tu dois allouer (enfin, la lib qui te fourni la table) un tableau, donc un bout de memoire contigue, qui va etre sous-utilisee, car trouee... En fait, comme le paradoxe des anniversaires le suggere, les collisions de clefs sont rapidement tres probables, meme si les clefs sont dispersees uniformement. La gestion des elements dont les clefs sont en collisions peuvent etre simplement chaines (et donc accedes sous une meme clef, puis recherche dans cet arbre de collisions) ou, fin du fin, stockes dans un arbre de recherche equilibre (ceinture et bretelles).

Je ne sais pas si je suis clair...</description>
		<content:encoded><![CDATA[<p>Si les clefs sont entrees dans l&#8217;arbre de recherche dans l&#8217;ordre (croissant ou decroissant), alors tu obtiens une liste&#8230; triee, heureusement, mais tout a fait ininteressante. On prouve qu&#8217;en moyenne l&#8217;arbre est equilibre ou presque, ceci dit. Donc: dans le pire des cas, ce n&#8217;est pas terrible, mais en moyenne c&#8217;est bon. Un arbre equilibre implique un acces a un noeud en un temps proportionnel a la hauteur du noeud, qui est alors un logarithme de l&#8217;arite de chaque noeud (deux si binaire), en la supposant fixe. Pour garantir un temps logarithmique dans le pire des cas, il faut utiliser un AVL ou un arbre rouge-noir, par exemple. Malheureusement, c&#8217;est plus complique que tu ne le decris, il faut faire des rotations de sous-arbres de facon a garantir l&#8217;invariant qui dit que la difference de hauteur maximale entre deux sous-arbres freres est toujours au plus un (en valeur absolue). Tu peux te reporter <a>Elements d&#8217;algorithmique</a> pour une bonne presentation des arbres rouge-noir.</p>
<p>Si tes clefs sont uniques, ca n&#8217;implique pas que la table de hachage soit indiquee: si les clefs sont trop dispersees (sur l&#8217;ensemble des entiers), tu dois allouer (enfin, la lib qui te fourni la table) un tableau, donc un bout de memoire contigue, qui va etre sous-utilisee, car trouee&#8230; En fait, comme le paradoxe des anniversaires le suggere, les collisions de clefs sont rapidement tres probables, meme si les clefs sont dispersees uniformement. La gestion des elements dont les clefs sont en collisions peuvent etre simplement chaines (et donc accedes sous une meme clef, puis recherche dans cet arbre de collisions) ou, fin du fin, stockes dans un arbre de recherche equilibre (ceinture et bretelles).</p>
<p>Je ne sais pas si je suis clair&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: dda</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-137</link>
		<pubDate>Mon, 27 Mar 2006 14:46:50 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-137</guid>
					<description>Et en plus j'ai des fans maintenant !... :-)

arbres de recherche : hmmmm. Donc je pourrais mettre mes nœuds dans l'arbre dans l'ordre où ils arrivent, donc. La difficulté serait de bien balancer les branches, de façon à ne pas avoir un arbre qui penche tout du côté gauche... Hmmm... Partir de 1, et chaque fois que l'on descend, multiplier cet accumulateur par 2 et vérifier que l'on a stocké (accumulateur) nœuds à ce niveau avant de descendre d'un niveau. Mouais mouais mouais...

La table de hash marcherait bien dans mon cas je pense, car j'ai des clefs uniques pour chaque nœud – un bête numéro à la con. C'est d'ailleurs ce que j'utilisais dans la première version de mon parseur, avant de changer pour une bdd sqlite3 en mémoire [beaucoup plus rapide].

L'espagnol ne fait pas encore partie de mon paquetage... ça viendra peut-être un jour !</description>
		<content:encoded><![CDATA[<p>Et en plus j&#8217;ai des fans maintenant !&#8230; <img src='http://www.sungnyemun.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>arbres de recherche : hmmmm. Donc je pourrais mettre mes nœuds dans l&#8217;arbre dans l&#8217;ordre où ils arrivent, donc. La difficulté serait de bien balancer les branches, de façon à ne pas avoir un arbre qui penche tout du côté gauche&#8230; Hmmm&#8230; Partir de 1, et chaque fois que l&#8217;on descend, multiplier cet accumulateur par 2 et vérifier que l&#8217;on a stocké (accumulateur) nœuds à ce niveau avant de descendre d&#8217;un niveau. Mouais mouais mouais&#8230;</p>
<p>La table de hash marcherait bien dans mon cas je pense, car j&#8217;ai des clefs uniques pour chaque nœud – un bête numéro à la con. C&#8217;est d&#8217;ailleurs ce que j&#8217;utilisais dans la première version de mon parseur, avant de changer pour une bdd sqlite3 en mémoire [beaucoup plus rapide].</p>
<p>L&#8217;espagnol ne fait pas encore partie de mon paquetage&#8230; ça viendra peut-être un jour !
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Christian</title>
		<link>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-134</link>
		<pubDate>Mon, 27 Mar 2006 07:10:26 +0000</pubDate>
		<guid>http://www.sungnyemun.org/wordpress/2006/03/26/stanford-cs-education-library/#comment-134</guid>
					<description>dda, en fait je suis un de tes admirateurs secrets, depuis une serie de commentaires que tu as pondu chez la Marmotte l'an dernier, ou tu as montre a quel point la linguistique est quelque chose de beau et puissant, sans compter la maitrise du coreen, des caracteres chinois, de l'histoire et de la psychologie de l'autochtone.

Il n'est pas besoin qu'il existe une "relation arborescente" naturelle entre elements d'un ensemble pour pouvoir les placer dans un arbre de recherche, il suffit juste d'avoir un ordre total sur l'ensemble (tu peux comparer toute paire d'elements). C'est toi qui choisi la relation d'ordre.

Les dictionnaires sont souvent implantes a base de &lt;i&gt;tries&lt;/i&gt;, en francais &lt;i&gt;arbres digitaux&lt;/i&gt;. Je cause un poil de ca dans mon cours &lt;b&gt;Information Retrieval&lt;/b&gt; (le mot anglais &lt;i&gt;trie&lt;/i&gt; provient de la troncature de &lt;i&gt;retrieval&lt;/i&gt;). Les tables de hachages ne sont pas indiquees dans le cas des dictionnaires humains, me semble-t-il, a cause de la faible dispersion des codes de hachages (beaucoup de mots sont proches, par exemples partagent des prefixes a la pelle et une fonction a du mal a les disperser dans la table). Une table de hachage n'est efficace qu'en moyenne (par rapport au pire des cas), et a la condition d'avoir une bonne (dans un sens statistique) fonction de hachage -- sinon gare au paradoxe des anniversaires (la probabilite d'avoir deux personnes au moins ayant meme date anniversaire est superieure a 50% des que le groupe compte plus de 23 personnes), et pourtant elles sont toutes independantes!

Je connais un dictionnaire de sanscrit par Gerard Huet, une grosse pointure... en logique formelle et programmation fonctionnelle, qui emploie la technique du &lt;i&gt;trie&lt;/i&gt; (optimisee pour partager les suffixes). Cf. &lt;a href="http://cristal.inria.fr/~huet/" rel="nofollow"&gt;la page de G. Huet&lt;/a&gt; ainsi que ses publis de linguistiques informatique. Tu vas adorer ce qu'il fait!

Malheureusement, je ne comprends pas le jargon linguistique... J'aimerais comprendre la linguistique, vraiment. Je sens qu'il a encore matiere a croiser l'info et la linguistique de facon innovante. Bon, mais je comprends les langages fonctionnels, c'est deja ca. Je te felicite de vouloir comprendre les deux!

Ah, oui, interpreteur, quelle horreur. J'aime les langues. (Si tu lis l'espagnol, tu peux toujours acheter ma traduction de Pablo Neruda chez Gallimard, qui est bilingue.)

Allez, hop! Je retourne a mon probleme (J'essaie de faire accepter a Yacc une grammaire d'un langage vraiment abominable depuis deux semaines. En fait j'utilise un generateur d'analyseurs syntaxique plus puissant (LR(1)) mais c'est dur dur quand meme.) L'idee est de traduire ce langage vers les schemas XML.

Bon courage! [Et rassure-toi a propos de ton cerveau...]</description>
		<content:encoded><![CDATA[<p>dda, en fait je suis un de tes admirateurs secrets, depuis une serie de commentaires que tu as pondu chez la Marmotte l&#8217;an dernier, ou tu as montre a quel point la linguistique est quelque chose de beau et puissant, sans compter la maitrise du coreen, des caracteres chinois, de l&#8217;histoire et de la psychologie de l&#8217;autochtone.</p>
<p>Il n&#8217;est pas besoin qu&#8217;il existe une &#8220;relation arborescente&#8221; naturelle entre elements d&#8217;un ensemble pour pouvoir les placer dans un arbre de recherche, il suffit juste d&#8217;avoir un ordre total sur l&#8217;ensemble (tu peux comparer toute paire d&#8217;elements). C&#8217;est toi qui choisi la relation d&#8217;ordre.</p>
<p>Les dictionnaires sont souvent implantes a base de <i>tries</i>, en francais <i>arbres digitaux</i>. Je cause un poil de ca dans mon cours <b>Information Retrieval</b> (le mot anglais <i>trie</i> provient de la troncature de <i>retrieval</i>). Les tables de hachages ne sont pas indiquees dans le cas des dictionnaires humains, me semble-t-il, a cause de la faible dispersion des codes de hachages (beaucoup de mots sont proches, par exemples partagent des prefixes a la pelle et une fonction a du mal a les disperser dans la table). Une table de hachage n&#8217;est efficace qu&#8217;en moyenne (par rapport au pire des cas), et a la condition d&#8217;avoir une bonne (dans un sens statistique) fonction de hachage &#8212; sinon gare au paradoxe des anniversaires (la probabilite d&#8217;avoir deux personnes au moins ayant meme date anniversaire est superieure a 50% des que le groupe compte plus de 23 personnes), et pourtant elles sont toutes independantes!</p>
<p>Je connais un dictionnaire de sanscrit par Gerard Huet, une grosse pointure&#8230; en logique formelle et programmation fonctionnelle, qui emploie la technique du <i>trie</i> (optimisee pour partager les suffixes). Cf. <a href="http://cristal.inria.fr/~huet/" rel="nofollow">la page de G. Huet</a> ainsi que ses publis de linguistiques informatique. Tu vas adorer ce qu&#8217;il fait!</p>
<p>Malheureusement, je ne comprends pas le jargon linguistique&#8230; J&#8217;aimerais comprendre la linguistique, vraiment. Je sens qu&#8217;il a encore matiere a croiser l&#8217;info et la linguistique de facon innovante. Bon, mais je comprends les langages fonctionnels, c&#8217;est deja ca. Je te felicite de vouloir comprendre les deux!</p>
<p>Ah, oui, interpreteur, quelle horreur. J&#8217;aime les langues. (Si tu lis l&#8217;espagnol, tu peux toujours acheter ma traduction de Pablo Neruda chez Gallimard, qui est bilingue.)</p>
<p>Allez, hop! Je retourne a mon probleme (J&#8217;essaie de faire accepter a Yacc une grammaire d&#8217;un langage vraiment abominable depuis deux semaines. En fait j&#8217;utilise un generateur d&#8217;analyseurs syntaxique plus puissant (LR(1)) mais c&#8217;est dur dur quand meme.) L&#8217;idee est de traduire ce langage vers les schemas XML.</p>
<p>Bon courage! [Et rassure-toi a propos de ton cerveau&#8230;]
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
