Overblog Suivre ce blog
Administration Créer mon blog
25 juin 2010 5 25 /06 /juin /2010 10:40

Régulièrement, qqn se perd dans les outils de clefs publiques/clefs privées; ces lignes sont là pour expliquer la base de "ssh_keygen".

  • A quoi ca sert ? a se logguer de maniere un peu sure sur une machine distante Y depuis une machine X sans aucun login/password a taper.Parfois aussi, à faire du git, cvs, svn, etc.
  • Comment faire ? Si vous n'y connaissez rien et n'avez pas envie de comprendre, allez tout de suite au point ci-dessous "simplification". Sinon:
    • Installez vous sur la machine X
    • Taper "ssh-keygen -t rsa1" (selon le systeme, il peut s'agir d'autre chose que rsa1; rsa, dsa... ).
    • La machine vous demande de choisir un nom de fichier, en general vous n'avez qu'a accepter son choix en tapant entree.
    • Ensuite, ssh-keygen vous demande une passphrase; en general, il sera plus simple de rentrer une passphrase vide en tapant juste "entree".
    • On vous redemande la passphrase, tapez la meme.
    • Deux cas:
      • rsa1: On vous raconte des choses et en particulier on vous dit ou est votre clef publique. Copier la a la fin du fichier "~/.ssh/authorized_keys" (si ce fichier n'existe pas, creez le) SUR LA MACHINE Y (ca marchera pas en le faisant sur la machine X!).
      • rsa2: On vous raconte des choses et en particulier on vous dit ou est votre clef publique. Copier la a la fin du fichier "~/.ssh/authorized_keys2" (si ce fichier n'existe pas, creez le) SUR LA MACHINE Y (ca marchera pas en le faisant sur la machine X!).
  • Simplification dans le cas où vous n'avez de ".ssh" nulle part (genre vous n'avez jamais fait de ssh-keygen):
    • Placez-vous sur la machine X (celle où vous êtes là tout de suite) "ssh-keygen -t dsa"     ou   "ssh-keygen -t rsa" (ou les deux, ça peut pas faire de mal) ==> ne mettez aucune passphrase (tapez entrée)
    • Puis, pourchaque machine Y où vous pouvez avoir besoin de vous logguer "scp -r .ssh monlogin@machineY.truc.com:.ssh"

Ce fichier est deliberement ultra-simple et me permet de simplement depanner des gens peu familiers de cette procedure. Merci de me signaler tout manque de clarte par mail .

 


Repost 0
Published by teytaud - dans Informatique
commenter cet article
25 juin 2010 5 25 /06 /juin /2010 10:27

Vous ne connaissez pas valgrind ? Ca doit être dur le débugguage. Allez, prenez le temps d'apprendre valgrind, c'est vraiment pas long pour démarrer!


1) Installer valgrind, c'est facile:

- sous ubuntu/debian: sudo apt-get install valgrind

- sous mandriva: urpmi valgrind


2) Et pour utiliser en débugage: c'est facile aussi:

  • vous compilez avec -g (sinon ca marche pas!):  

                                 g++ -g -o mon_code mon_code.cpp

  • si votre code c'est "mon_code arg1 arg2", vous faites

                        valgrind --leak-check=yes mon_code arg1 arg2

     (arg1 et arg2 sont des arguments, votre code n'est pas obligé d'en avoir...)

 

3) Et vous voulez "profiler", c'est-à-dire savoir où ça rame ?

Utilisez l'option callgrind:

 

valgrind --tool=callgrind mon_code arg1 arg2

kcachegrind

 

(la deuxième commande fait un affichage graphique)

 

4) vous voulez aller plus loin ? allez la

Repost 0
Published by teytaud - dans Informatique
commenter cet article
25 juin 2010 5 25 /06 /juin /2010 10:18

Si vous êtes développeur et ignorez la gestion concurrente de versions, vous ne pourrez plus vous en passez!

Remarques:
- CVS est souvent remplacé par SVN. Ca fonctionne presque pareil.
- Git est un peu différent, par absence d'une référence centralisée. Mais si vous savez faire du CVS vous apprendrez vite git.



A quoi ca sert


  • principalement, a coder a plusieurs sur un meme projet, typiquement de programmation
  • aussi, a rediger des rapports collaborativements, du moins pour les logiciels de traitement de texte "compiles", comme LaTeX.


Méthode:


Un serveur S, gere par un administrateur A, contient des "repositorys" contenant chacun une arborescence de fichiers.
  • Pour pouvoir utiliser le serveur S, un utilisateur U doit: demander à l'administrateur A de lui ouvrir un compte.
  • pour cela, l'administrateur A va typiquement demander a U
  • un login
  • un password
  • l'administrateur A va aussi fournir a U:
  • un type de serveur (typiquement "pserver")
  • un identifiant genre "machin@truc.org"
  • un chemin, genre "/users/truc/machin/cvs
ou bien directement un CVSROOT de la forme
CVSROOT=:pserveur:machin@truc.org:/users/truc/machin/cvs

  • l'utilisateur U va alors pouvoir s' "enregistrer"; pour cela, U va lancer
    cvs -d :pserveur:machin@truc.org:/users/truc/machin/cv s

  • U peut alors recuperer sa copie du repository:
  • s'installer dans le repertoire /users/moi/oujeveux
  • taper "cvs checkout R" avec R le nom du repository et voir qu'il y a desormais /users/moi/oujeveux/R

  • Quand U veut mettre a jour sa copie (i.e. profiter des ameliorations apportees par les autres personnes travaillant sur le projet), il tape simplement
    cd /users/moi/oujeveux/R ; cvs update -d

  • Quand U est content de sa copie (tout compile, a minima), il peut l'envoyer sur le serveur en tapant
    cd /users/moi/oujeveux/R; cvs update -d ; cvs commit -m mon_message_pour_dire_ce_que_j_ai_fait
    Attention; si U est malchanceux, cvs update peut lui repondre qu'il y a des "conflicts" dans certains fichiers. Il convient alors d'editer les fichiers problematiques, et de corriger manuellement les problemes, signales nettement par des balises, puis de recommencer apres avoir bien verifie que tout est ok, compile, etc.


  • Beaucoup d'options sont possibles (droits differents des utilisateurs, etc)
  • Interface graphique: cf "cervisia" sous Linux ou "wincvs" sous windows
  • Autres outils que cvs: svn (alias subversion)
  • Doc plus complete: ici

Corrections, ajouts: mailez moi
Repost 0
Published by teytaud - dans Informatique
commenter cet article
8 juin 2010 2 08 /06 /juin /2010 15:07

How complex is your game ?

 

A usual tool for answering such a question is computational complexity.

It consists in finding where the problem is, in the following scale:

compl

The classes on the right are more difficult.

For the most important classes:

- PL is the class of problems solvable in poly-logarithmic time;

- P is the class of problems solvable in polynomial time

- PSPACE is the class of problems solvable with polynomial memory

- EXP is the class or problems solvable in exponential time

- EXPSPACE is the class of problems solvable in exponential space.

Given a position, how "powerful" should be your computer, if you want it to find if this situation, in case of perfect play,

is a win for the player to play.

We will here consider only deterministic (i.e. non randomized - this is not "determinism" in the sense of P vs NP) games.

 

Zero-sum two-player games, existence of strategies winning with proba > c:

the surprising thing is that, in the partially observable case, even on a finite board (finite state space), the problem is undecidable. If c<1 and c>0, then the problem is undecidable. How is it possible ? The trick is that usually people consider this case as decidable, because they consider the problem of the existence of a winning strategy independently of what is played by the opponent. This makes the problem much simpler, as in particular the opponent does not have to be clever; he can just play randomly, independently of observations, as it is sufficient for him to win with proba >0.

Importantly, this questions is probably the most natural one. We now consider the easier cases in which we look for a forced win. But keep in mind that the natural case is probably more the case above.

Remark: the undecidability certainly not holds in the fully observable case, which is immediately downgraded to the same case as the existence of winning strategies whatever may be the choice of the opponents, below.


Zero-sum two-player games: the existence of winning strategies whatever may be the choice of the opponents

Consider a game which is encoded in succinct form; this means that the game is given as a simple automaton,

updating variables depending on some rules.

Then, the complexities are as follows:

- deciding whether the situation is a forced win, if everything is observable, is EXPTIME-complete;

- deciding whether the situation is a forced win, if nothing is observable (you have no info!) is EXPSPACE-complete;

- deciding whether the situation is a forced win, if the situation is partially observable, is 2EXP-complete.

==> Rintanen's paper is the main reference in this case.

go.png

The game of Go with japanese rules is fully observable; it is EXPTIME-complete. It is therefore as complicated as it is possible for a fully observable game that can be described in succinct form. This is proved in Robson's impressive paper which exhibits a complicated ko-fights whose results decides the issue of a connection problem.

 

And what if the game is limited in length, to an exponential length ? still the existence of winning strategies, whatever may be the choice of the opponents

Things are much easier in this case:

- the fully observable case is EXPTIME in the fully observable case (no change!);

- the no-observability case is NEXPTIME (much easier);

- the partially observable case is EXPSPACE, which is easier than 2EXP.

This was shown in papers by Mundhenk et al.

 

And what if the game is limited in length, e.g. an acyclic graph is given and the game is played on the graph, i.e. at most a linear number of possible states ?

The fully observable case then becomes linear (solving by minimax). 

I'm not aware of results in the partially or unobservable case, please tell me if you know (olivier.teytaud@gmail.com).

Repost 0
Published by teytaud - dans Recherche
commenter cet article
5 juin 2010 6 05 /06 /juin /2010 15:47

This page is only understandable by go players.

I'm interested in the game of Go as it's a good testbed for computer science - whereas in chess computers are stronger

than humans (by far), computers are still weak in the game of Go. In particular, they sometimes make errors in ladders.

 

Below, a beautiful ladder problem, generated by computer scientists.

I don't give the reference, so that nobody can cheat by looking at the answer,

I hope that the authors of this ladder will forgive me :-)

 

If you have comments on this, please email me olivier.teytaud@gmail.com (in particular if you try to solve it).

 

Question: black plays. Can black kill the left white stone marked with a triangle ?

High quality version of the image: http://www.lri.fr/~teytaud/goladder.jpg

 

 

 
Repost 0
Published by teytaud - dans Recherche
commenter cet article
5 mai 2010 3 05 /05 /mai /2010 12:00

On me demande régulièrement de citer d'autres applications de la technologie MCTS que le jeu de Go; voici donc un bref résumé.

On trouvera une présentation de la technologie MCTS ici:
http://teytaud.over-blog.com/article-35709049.html


1) En restant dans le domaine des jeux:
La technologie dite Monte-Carlo Tree Search (MCTS; on parle parfois aussi de "Upper Confidence Trees") est appliquée avec beaucoup de succès sur des jeux difficiles, où l'humain est traditionnellement bien meilleur que la machine: Hex, Havannah, sont des exemples.
Elle est aussi très efficace pour jouer sur la simple base de règles, sans développement spécifique des jeux: ainsi
MCTS gagne toutes les compétitions de "jeu général", c'est-à-dire les compétitions où les règles sont fournies sous format informatique aux programmes, qui ignorent à l'avance à quel jeu ils vont jouer. Ainsi, les programmes peuvent s'adapter directement à de nombreux jeux, y compris des variantes originales de Go.

Le jeu de Havannah



2) Complètement en dehors des jeux

Notre équipe a réalisé avec succès (avec Carnegie Mellon university) une application à l'optimisation sur des graphes, avec notamment le cas industriel de l'optimisation de librairie de calcul linéaire (http://hal.inria.fr/inria-00379523/fr/). Ce type d'outils est crucial dans toutes les industries où les transformées de Fourier discrètes sont capitales. Ceci est déjà opérationnel, dans la librairie Spiral (http://www.spiral.net/).

Nous démarrons par ailleurs un projet dans l'énergie, conjointement avec la société Artelys; il s'agit de comparer MCTS et les techniques usuelles pour le choix de gestion d'un parc de production électrique. L'application est très préliminaire, mais les essais sur des cas tests de dimension comparable sont encourageants.



Nos confrères à Maastricht ont réalisé des applications à la gestion de stocks: en effet, choisir une action sur un stock en ayant des incertitudes sur ce qui peut entrer par ailleurs dans le stock (et à quel prix) est très proche de poser une pierre sur un goban
en ignorant où l'adversaire va poser sa pierre.

Nous avons des applications de type fondamental, appelées optimisation non-linéaire chère et apprentissage actif cher. Ces méthodes, pas encore directement utilisées dans l'industrie, donnent de bons résultats sur des cas tests; les domaines touchés possiblement sont tous ceux où choisir quel prototype construire, lorsqu'il est long et/ou cher de prédire l'efficacité du prototype; les industries automobile, aérienne, spatiale par exemple.

Globalement, tout le champ du contrôle en temps discret, sur un nombre de pas de temps modéré et possiblement en très grande dimension, est concerné. Le jeu de Go est dans une fourchette idéale, avec une grande dimension (>300 actions possibles en début de partie) et un nombre de pas de temps modéré (une partie peut difficilement dépasser 400 coups); nous sommes là dans un registre mal traité par les techniques classiques, couvrant un grand nombre de problèmes, et où MCTS apporte beaucoup.

 

 

A paper on continuous UCT: http://hal.archives-ouvertes.fr/hal-00542673/en/

Bibtex entry:

@inproceedings{COUTOUX:2011:HAL-00542673:1,
    HAL_ID = {hal-00542673},
    URL = {http://hal.archives-ouvertes.fr/hal-00542673/en/},
    title = { {C}ontinuous {U}pper {C}onfidence {T}rees},
    author = {{C}ouёtoux, {A}drien and {H}oock, {J}ean-{B}aptiste and {S}okolovska, {N}ataliya and {T}eytaud, {O}livier and {B}onnard, {N}icolas},
    abstract = {{U}pper {C}onfidence {T}rees are a very efficient tool for solving {M}arkov {D}ecision {P}rocesses; originating in difficult games like the game of {G}o, it is in particular surprisingly efficient in high dimensional problems. {I}t is known that it can be adapted to continuous domains in some cases (in particular continuous action spaces). {W}e here present an extension of {U}pper {C}onfidence {T}rees to continuous stochastic problems. {W}e (i) show a deceptive problem on which the classical {U}pper {C}onfidence {T}ree approach does not work, even with arbitrarily large computational power and with progressive widening (ii) propose an improvement, termed double-progressive widening, which takes care of the compromise between variance (we want infinitely many simulations for each action/state) and bias (we want sufficiently many nodes to avoid a bias by the first nodes) and which extends the classical progressive widening (iii) discuss its consistency and show experimentally that it performs well on the deceptive problem and on experimental benchmarks. {W}e guess that the double-progressive widening trick can be used for other algorithms as well, as a general tool for ensuring a good bias/variance compromise in search algorithms.},
    language = {{A}nglais},
    affiliation = {{L}aboratoire de {R}echerche en {I}nformatique - {LRI} - {CNRS} : {UMR}8623 - {U}niversit{\'e} {P}aris {S}ud - {P}aris {XI} - {TAO} - {INRIA} {S}aclay - {I}le de {F}rance - {INRIA} - {CNRS} : {UMR}8623 - {U}niversit{\'e} {P}aris {S}ud - {P}aris {XI} - {C}hercheur {I}nd{\'e}pendant - {A}ucune },
    booktitle = {{LION}'11: {P}roceedings of the 5th {I}nternational {C}onference on {L}earning and {I}ntelligent {O}ptimizatio{N} {LION}'11: {P}roceedings of the 5th {I}nternational {C}onference on {L}earning and {I}ntelligent {O}ptimizatio{N} },
    pages = {{TBA} },
    address = {{I}talie },
    audience = {internationale },
    day = {31},
    month = {01},
    year = {2011},
    URL = {http://hal.archives-ouvertes.fr/hal-00542673/PDF/c0mcts.pdf},
}

Repost 0
Published by teytaud - dans Recherche
commenter cet article
4 mai 2010 2 04 /05 /mai /2010 18:47


Plutôt que de vous raconter beaucoup de choses sur ce bon livre (où les experts apprendront peu, mais les gens qui veulent une idée générale rapide auront satisfaction), je vais vous parler d'un jeu fort intéressant: le jeu du mille-pattes ("centipede game" en littérature anglo-saxonne), et puis aussi le jeu de l'ultimatum.

Je vous présente ci-dessous une variante du jeu du mille-pattes. Ce jeu présente l'intérêt qui suit:
  • Si on est très "rationnel", au sens où on prend la décision qui maximise son profit, les deux joueurs sont en très mauvaise situation.
  • Si on coopère, les deux joueurs gagnent beaucoup.
  • En pratique, les gens obtiennent une solution bien meilleure que la maximisation rationnelle du profit.

Les puristes me diront que j'ai un peu simplifié en vulgarisant... Je précise ci-dessous les choses, et puis je parlerai un peu aussi de sociologie, d'ethnologie et de psychologie.

Imaginons qu'Alice joue avec Bob. Ils ont assis face à face, avec une ligne blanche qui les sépare.

Au début, on donne 2 euros à Bob. Soit il le prend (et Alice ne gagne rien), soit il fait passer ces 2 euros par dessus la ligne blanche pour le passer à Alice. Les 2 euros deviennent 4=2+2 euros en traversant la ligne.

Ensuite, Alice a le même choix: soit elle prend 3 euros (la moitié plus un), et Bob reçoit la moitié moins un (soit 1 euro), ou bien elle fait passer les 4 euros de l'autre côté - et les 4 euros deviennent 6 euros.

Donc à chaque étape: il y a N euros sur un côté, et si le joueur "pique" l'argent il en gagne N/2+1 (l'adversaire gagne N/2-1); sinon on ajoute 2 euros, et on passe à l'autre joueur..

On continue jusqu'à ce qu'un des joueurs garde l'argent, ou jusqu'à 100 itérations; si on atteint 100 itérations, chacun gagne 100 euros.

Analysons le jeu. Le dernier joueur aurait pu gagner 101 euros, en "trichant" une étape avant.
Donc s'il est entièrement rationnel, c'est ce qu'il fait.

L'autre joueur, prévoyant son comportement, devrait donc tricher une étape plus tôt, pour gagner 100 euros plutôt que 99... Mais on peut ainsi remonter encore une étape, etc. On arrive à la conclusion stupide que Bob a intérêt, à la première étape, à prendre les 2 euros. Fort heureusement, dans la vraie vie, les humains font des choix plus courtois et plus profitables pour tout le monde.

Et que font les vrais humains ? En gros, ils deviennent parfois rationnels (méchants) vers la fin du jeu. Mais ils font toujours mieux que la solution "rationnelle". En gros, quand la somme est importante, la politesse est mise en défaut au profit de l'égoisme.

Un jeu intéressant aussi est le jeu de l'ultimatum: on donne N euros à un individu, qui doit proposer M euros (avec M compris entre 0 et N) à son partenaire de jeu. Le partenaire a le choix entre accepter et refuser; s'il refuse, personne ne gagne rien, s'il accepte, le partage est effectué, il gagne M euros et l'autre gagne N-M euros.

Que dit la théorie si les joueurs sont rationnels ? Le second joueur a toujours intérêt à accepter (du moins dès que M>0), donc il accepte s'il est rationnel. Le premier joueur, lui, a toujours intérêt à donc proposer M=1.

Et que font les vrais humains ? Ca dépend des cultures. Il y a même des peuples qui proposent M>N/2, genre 60%. Dans nos sociétés il y a beaucoup de 50%, sans doute par habitude des notions de négociations, mais en général on propose un peu moins de la moitié. Les peuples vivant de manière très collaborative sont plus polis. La politesse est plus forte pour quelqu'un du même village. Et quand la somme est très forte, les gens deviennent plus méchants. Un peu décevant, mais pas très étonnant.
Mais je vous laisse découvrir tout ça en fouillant la littérature spécialisée, je suis un béotien du sujet...

Et les applications de tout ça ? Et bien oui, ça sert parfois; en stratégie militaire, ou pour les négociations lors des prises d'otage. Ainsi, certains pays ne cèdent jamais au chantage en cas d'enlèvement; leurs ressortissants sont parait-il moins enlevés que les ressortissants d'autres pays. Tout ça demande des jeux itérés, ou multi-joueurs, à découvrir dans ce livre et d'autres.

Et vous, vous feriez quoi ? Et si les rewards étaient négatifs et l'autre joueur votre meilleur ami ? Genre on joue le nombre d'enfants qu'on n'égorge pas ? Beuh... j'ai pas envie de savoir, on sort du domaine de validité de l'espèce humaine quand on cogite trop à ce qu'on ferait dans des situations tordues :-)

 

Repost 0
Published by teytaud - dans Recherche
commenter cet article
3 mai 2010 1 03 /05 /mai /2010 09:40

L'informatique, ça bouge! Et pas seulement au niveau machine, les langages aussi ont bougé. Petite remontée dans le temps avec le "dictionnaire du basic", par David Lien, traduit par P.S.I., livre expliquant comment fonctionne le langage le plus célèbre de l'époque, le langage Basic.


Ce n'est pas la photo du livre en question! Ca c'est un autre livre, du même éditeur, qui me rappelle aussi ma jeunesse. A l'époque, on achetait les jeux en livre, on les recopiait, et du coup on comprenait les bases de la programmation, forcément, pour pouvoir jouer.


Les normes! Et oui, à l'époque, les normes étaient un peu floues. Du coup, une bonne partie du livre est centrée sur "votre programme ne marche pas parce que le Basic a changé ? Voilà comment recoder le morceau qui pose problème". On y échappe dans les langages modernes, fort heureusement.

En parlant de normes, à cette époque, sur certains ordinateurs, le O était barré au lieu du zéro!

Mon Dieu les numéros de lignes! Ca, c'est vraiment bien que ça ait changé. Pourtant, souvenez-vous, on a eu besoin d'un peu de temps pour s'acclimater au Basic sans numéro de ligne.
Quels numéros de lignes, disent les jeunots ? Autrefois, chaque instruction avait un numéro. Ce numéro était typiquement 10 pour la première instruction, 20 pour la seconde, 30 pour la troisième, et ainsi de suite. Evidemment, quand vous vouliez insérer une ligne entre deux lignes, il fallait utiliser 25, 27, 29, et de temps en temps on était bien coincé; il fallait utiliser un "goto" à la ligne 26, qui partait à la ligne 3000 (pas encore utilisée), suivie de 3010, 3020, 3030, et en 3040 on trouvait un "goto 27".

Et la fin du programme ? Comme il ne pouvait y avoir qu'une fin de programme (tout à la fin), et bien on mettait quelque chose comme "9999 END", et à la fin du programme (avant les procédures) on mettait "GOTO 9999".

Et oui, car on programmait beaucoup avec des "goto" ! Alors qu'aujourd'hui, certes on peut encore mettre des "goto", mais c'est en désuétude. A l'époque il existait néanmoins aussi une espèce de notion de fonction: le gosub! C'est-à-dire qu'on écrivait "gosub 4000", la ligne 4000 et les suivantes contenaient la fonction, et à la fin il y avait un "return". Et les paramètres de la fonction ? Tout en variables globales! Et oui c'est pas très pratique: on fait

550 ...
560 N=50
570 gosub 4000
580 REM mon resultat est dans la variable x.

4000 x=N*N+N+1
4010 return

Imaginez les fonctions récursives! Il fallait stocker les variables locales dans un tableau.

C'était ça, les anciens temps. Après il y a eu des basic qui gardaient la simplicité, les problèmes en moins: toujours pas de déclaration de variable, mais plus de numéro de ligne. Les fonctions sont restées longtemps très pénibles à mettre en oeuvre.

Pas de fonction Exp, pas de fonction Tanh, sur de nombreuses variantes de Basic! Du coup il fallait coder Exp à la ligne 30 000, et Tanh à la ligne 40 000.

Là où ça devient vraiment comique, c'est quand on parle de réutilisabilité! Si vous vouliez réutiliser dans le programme B le "tanh" que vous avez péniblement codé lundi dans un programme A, tout va se casser si vous avez des numéros de ligne qui se mélangent! Imaginez un "tanh" qui chevauche un "exp". Ca, c'était vraiment hyper pénible, ces fichus numéros de ligne!

Et les noms de variables ? Et bien le livre déconseille la tendance "littéraire" consistant à mettre des noms de variables à rallonge. Et j'ai eu des bugs dont je me rappelle encore, au début des années 80, avant que n'arrivent le Mia et les volants à moquette, parce que toutes les variables commençant par deux mêmes lettres étaient identiques! Par exemple, IndexSurLaMatrice et IndiceDeGini sont la même variable. Boa et Bois aussi. Super pratique, n'est-ce-pas ? Quand je pense que je me rappelle encore de ce bug, près de 30 ans après, j'imagine l'énervement que ça a du être.

Le livre qualifie de "programmeurs fous" les adeptes de noms de variables à rallonge. J'avoue être un peu resté sur les noms de variables courts... honte sur moi.

Que ceux qui se rappellent de "peek" et "poke" lèvent la main! Une instruction pour aller lire à une adresse mémoire, une autre instruction pour y écrire. Ouf, maintenant les langages sont suffisamment pratiques pour pouvoir se passer de ça. Mais enfin le C a longtemps gardé de l'arithmétique des pointeurs, on n'est pas si loin de peek et poke!

Y avait-il du bon là-dedans, qu'on a perdu en route ? Peut-être le fait qu'on allumait le PC d'emblée sur du Basic. On parlait à la machine dans un langage informatique. La compréhension du fond de la machine était forcée et naturelle. Et la simplicité des déclarations de variables à la volée, l'absence de compilation - finalement python c'est un peu le retour des bons côtés du basic (sans els mauvais, l'objet en plus). Globalement, les langages sont allés, je crois, dans la bonne direction (le matériel et les systèmes d'exploitation, c'est autre chose - ce ne sont pas les meilleurs systèmes qui ont envahi le marché, notamment chez les particuliers, et l'Amiga ne méritait sans doute pas son petit sort - je laisse plus expert que moi se prononcer sur les aspects Risc et Cisc).

Repost 0
Published by teytaud - dans Recherche
commenter cet article
15 avril 2010 4 15 /04 /avril /2010 23:11

Un livre intéressant quoiqu'un peu décousu, aux titres un peu trop orientés poésie et pas assez orienté précision scientifique, mais plein d'anecdotes marrantes - un bon livre donc quoiqu'un peu verbeux pour moi. Et des mots clefs qui vont faire venir sur cette page un tas de gens qui viennent chercher des photos pornographiques et vont être déçus même s'il y a le mot lingerie plus bas dans ce texte.

Je ne suis pas biologiste, juste un informaticien qui s'intéresse à l'évolution (mais surtout la sélection Darwinienne pour les robots ou contrôleurs ou logiciels, je ne triture pas de bestioles...). Pardonnez-moi les erreurs, n'hésitez pas à contester; je sais qu'il y a dans mes lecteurs des gens plus doués que moi sur le sujet.

Un hermaphrodite qui ne se rend pas compte
qu'on se pose plein de questions
sur lui: est-il un reste d'évolution incomplète, ou un
mode de reproduction meilleur que le notre ?



La sexualité n'a pas besoin des sexes, qu'on se le dise. Par exemple, les hermaphrodites, comme les escargots, qui conservent une dissymétrie dans l'acte sexuel et la fabrication du bébé, mais aussi certaines paramécies qui s'échangent comme ça en passant du matériel génétique: ça s'appelle la conjugaison.

C'est sympa, un échange de matériel génétique,
non ? Ca s'appelle la conjugaison.



Donc, l'existence de deux sexes ne s'explique pas si facilement que ça: l'avantage évolutif de mélange des bons gênes (permettant ainsi à plusieurs mutations génétiques utiles et présentes chez plusieurs individus de se combiner).Il faut qu'il y ait aussi un avantage à l'existence de deux sexes différents (et pourquoi seulement 2 ?) pour expliquer cela. Les informaticiens auront remarqué qu'en évolution de robots, on pratique allègrement la copulation entre 50 robots à la fois, sans distinction de sexe. Certains lézards ne comportent que des femelles qui se reproduisent par parthénogénèse.

Les mâles et les femelles ont des stratégies différentes, "quantité contre qualité" comme le dit crûment l'auteur: le mâle, qui dépense peu d'énergie pour chaque fécondation, a tout intérêt à y aller en force; la femelle, par contre, a tout intérêt à faire attention et à ne pas se disperser (ça me rappelle les statistiques sur la différence de taux de succès entre un homme qui aborde une femme pour proposer une copulation, par rapport à la réciproque, http://0z.fr/dxkXL).

Rien qu'à les voir elles ne sont
pas sympathiques (cf texte).



Homosexualité, bisexualité, homoparentalité, triolisme: les cygnes noirs homosexuels adoptent les bébés que leur confient une femelle désireuse d'assurer une bonne réussite à leurs enfants (qui survivent beaucoup mieux avec des parents mâles homosexuels qu'avec des parents hétérosexuels, chez les cygnes noirs: 80% au lieu de 30%). Chez les oies, deux mâles bisexuels vivent fréquemment avec une femelle; chez les goëlands, c'est plutôt deux femelles et un mâle. Madame Boutin va-t-elle s'en remettre ?

Oh le coquin.



Certaines espèces animales ne font pas dans la tendresse. Ainsi les sangsues mâles perforent les femelles pour les féconder (si!). Les femelles ne sont pas forcément beaucoup plus sympathiques puisqu'il leur arrive de dévorer leur partenaire sexuel (chez les araignées elles peuvent manger le mâle même sans copulation s'il ne leur plait pas). Le xénope mâle, quant à lui, ô le méchant, peut copuler juste pour avoir des enfants à dévorer. L'enfant nait grâce au sacrifice en ressources alimentaires de la maman et le papa se régale.
Chez les poissons gambusies le viol est la norme; chez les canards les messieurs peuvent noyer les dames en les envahissant pour obtenir une copulation. Les mâles antilopes topis s'en prennent aux enfants pour obliger les mamans à copuler. Les dauphins pratiquent abondamment le viol collectif. Une brebis peut mourir sous les coups du mâle dominant en cas d' "adultère". p236 on apprend aussi que (peut-être...) le canard mâle y va assez fort avec un organe trop gros, car ainsi la femelle n'a plus trop envie d'aller copuler ailleurs vu qu'elle ne trouve pas ça sympa du tout et préfère garder le premier qui est calmé pour quelques temps.

Vous le trouvez mignon ? Sachez qu'il pratique le viol collectif.



Pourquoi est-ce à la même page du livre que l'on apprend que plus il y a de compétition pour la fécondation des femelles et plus les organes introducteurs sont longs ? C'est toujours dans la thème de la concurrence pour la fécondation. Aussi chez certaines espèces de lions, criquets, rongeurs, oiseaux, la copulation peut être reproduite (même mâle, même femelle) des dizaines voire centaines de fois de suite. Chez d'autres espèces (crotales, putois, belettes) on remplace la fréquence par la durée (plusieurs heures).

Parfois la différence plait. Chez le poisson "guppy" ou les drosophiles, les mâles atypiques plaisent beaucoup; quoique le mécanisme ne soit pas très clair pour moi (odeur ?), une préférence pour les partenaires ayant un système immunitaire très différent apparait - ce qui semble malin pour compléter la protection immunitaire - je trouve ça carrément magique. Ce type de préférence semble en général moins marqué chez les mâles.

Le fait de connaitre un individu de longue date semble aussi réduire son attrait, ce qui évite la copulation avec des individus génétiquement proches et augmente donc la diversité et favorise un système immunitaire solide (et peut-être la diversité est-elle utile pour beaucoup d'autres choses que le système immunitaire).

La spéciation est parfois amusante. Certains poissons se spécialisent dans l'art de piquer une écaille à d'autres poissons, pour s'alimenter. Alors, parmi ces voleurs, certains ont la bouche de travers à droite, pour piquer une écaille sur leur droite en doublant la victime, et d'autre à gauche. Comme mêler les deux espèces n'est pas souhaitable (la bouche centrée n'est pas efficace), les deux catégories finissent pas devenir exclusives d'après l'auteur: deux espèces (quelqu'un peut donner un exemple d'espèce animale dissymétrique dont 50% des membres sont symétriques aux 50 autres pourcents ?).

Et la recherche en biologie ? Très biaisée par le mécanisme de publication! Car on publie mieux les résultats positifs (qui confirment la théorie dominante) que les résultats négatifs. Chez les informaticiens, je vous promets: c'est pareil :-)

Pourquoi les animaux, surtout mâles, ont parfois des attributs inutiles très visibles ? Pour montrer comme ils sont forts! Ainsi les poissons "porte-glaive" dont un appendice aussi inutile qu'étrange est bien visible. On appelle ça un attribut hypertélique.Pensez aussi à l'exemple du paon. Il parait que certains animaux vont jusqu'à prendre des risques inutiles auprès des prédateurs, juste pour montrer aux femelles à quel point ils sont forts et peuvent se le permettre. L'attribut hypertélique peut être donc une extension abusive d'un attribut qui est une réelle plus-value (dans ce cas, son existence est due à un déficit sensoriel des femelles qui ne voient pas que c'est plus que l'utile), ou bien être là simplement en tant que preuve que si le mâle peut se permettre telle excroissance inutile, c'est parce qu'il est bien vigoureux et bien en forme, donc un bon partenaire potentiel pour fabriquer de bons bébés.
Page 163, l'auteur nous dit que finalement, on obtient un succès supplémentaire en étant un crâneur. Un peu comme la symétrie serait une preuve de résistance aux parasites: en étant blindé contre les parasites, on se développe bien symétrie - donc il est normal dans cette théorie que l'on préfère un partenaire symétrique (il en va de même de l'aspect de la peau).
L'attribut hypertélique est-il limité aux animaux ? La lingerie affriolante est-elle un attribut hypertélique artificiel ? L'auteur préfère citer la sculpture grecque ou Rodin, mais aussi la cosmétique.

Quelques autres anecdotes pour la route ? La transexualité "naturelle" existe chez les poissons Xanthias, et beaucoup d'animaux pratiquent les petits cadeaux autour de la sexualité, allant chez certaines espèces jusqu'à s'auto-offrir en casse-croûte. Les petits cadeaux sont qualifiés de forme de prostitution ou de petits cadeaux selon l'humeur de la page.

L'effet dit de la reine rouge est cité; en très bref, l'existence des mâles, qui a priori réduisent l'efficacité de la propagation des gênes, s'expliquerait par le fait qu'ils limitent la disparition des gênes temporairement inutiles mais qui peuvent redevenir capitaux plus tard, après un retour d'un environnement antérieur. Le livre aurait pu faire plus clair (plus matheux ?) sur ce sujet.

Pourquoi la monogamie ? Au niveau diversité génétique c'est vraiment pas terrible. Un espèce de moyen pour la femelle d'assurer le fait qu'il y a un mâle pour s'occuper des enfants, et pour le mâle un mauvais choix parce qu'il se fait attraper (contrairement à son intérêt de quantité précédemment cité...) par la femelle (qui l'attire à répétition par stratégèmes cochons) ? La femelle étourneau multiplie les copulations, et est répudiée au premier ralentissement d'activités.

Les étourneaux mâles sont heureux selon ce livre (cf texte).
Repost 0
Published by teytaud - dans Recherche
commenter cet article
12 avril 2010 1 12 /04 /avril /2010 19:18

Quel rapport entre l'honneur de l'esprit humain et les mathématiques ?
M. Jean Dieudonné ouvre son livre par une citation du célèbre Jacobi écrivant au non moins célèbre Legendre pour lui dire "M. Fourier avait l'opinion que le but principale des mathématiques était l'utilité publique et l'explication des phénomènes naturels; mais un philosophe comme lui auriat dû savoir que le but unique de la science, c'est l'honneur de l'esprit humain, et que sous ce titre, une question de nombres vaut autant qu'une question de système du monde."

Alors, les mathématiques pour les mathématiques, c'est le saint des saints ?
C'est un peu le point qui me gêne chez Dieudonné: en effet, il considère que le top du top,
c'est de faire des mathématiques "pures", et sa conception des mathématiques pures est particulièrement rigide: au revoir probabilités, informatique même théorique. Quelque part, Gödel et Kolmogorov mettent une sacré claque à cette conception dieudonnéenne des sciences.

Et au niveau très philosophique, est-ce-que les mathématiques façon Dieudonné sont le top du top ?
Certes, l'honneur de l'esprit humain est une jolie chose, et comme beaucoup de scientifiques je trouve dans les mathématiques plus de beauté que dans la danse, la musique, et autant que dans la grandeur d'acte. Mais je trouve que résoudre P=NP ou autre conjecture mathématique est mille fois moins important que de guérir le sida ou le cancer, et, pour reste interne aux mathématiques, que l'incomplétude de Gödel ou les processus stochastiques sont aussi beaux que la conjecture de Poincaré, même s'ils ont le mauvais goût (pour une conception dieudonnéenne), d'être plus directement applicables. Et je suis pourtant, dans ces exemples, bien loin du productif direct - même au niveau philosophique, le point de vue de Dieudonné est bien limité. 

 

On a les priorités qu'on veut, et je sais que dans mes collègues il s'en trouverait pour trouver que je suis un dangereux vendu au productivisme d'avoir ces positions là. Et les réformes actuelles de la recherche en France ? et sans doute ailleurs dans le monde ? Remarquez que je ne suis pas d'accord quand on dit que les réformes actuelles sont orientées vers le fait de faire de la recherche à court terme; je dirais plutôt qu'elles sont orientées vers le fait de faire de la recherche pourrie en écrivant le plus vite possible tant l'évaluation se multiplie et se base de plus en plus sur l'impact politique ou la quantité de papier consommée que sur la profondeur de la recherche; mon avis sur le fait qu'une belle application innovante c'est bon n'est donc pas, et de beaucoup, un avis favorable à la politique de Sarkozy et Pécresse en matière de recherche; ces deux tristes individus me paraissent les plus incompétents, les plus dangereux, des politiques se mêlant à la recherche, au même titre qu'Allègre.


Revenons en à plus intéressant, avec le cas de M. Dieudonné, qui est loin au-dessus de ces petits politiciens. D'ailleurs, je l'ai un peu caricaturé ci-dessus, et il ne méprise pas tant que ça le reste des mathématiques (juste un peu de temps en temps).

Dieudonné commence par rappeler à quel point la vision du grand public, selon laquelle les mathématiciens ne créent pas et ne fond que transmettre les mathématiques héritées des siècles passés, est immensément fausse. Merci de le dire, ça fait toujours du bien. Les mathématiques progressent, qu'on se le dise!

Qui est fort en maths ? Dieudonné dit ensuite que le talent mathématique ne se transmet pas par hérédité et n'est pas une question de race ou de milieu d'origine; qu'il faut un milieu favorable ET des dispositions - il ne tombe donc pas dans l'extrême consistant à croire que n'importe qui peut faire un grand mathématicien. En bref, il dit que les pays où l'éducation ne permet pas un contact avec la recherche abstraite ne produit pas de grand chercheur en maths, et que le génie mathématique peut apparaitre dans tous les milieux sociaux, à part ceux où l'on assassine Mozart par manque d'accès à la culture. Ainsi, Gauss n'était pas de milieu riche, et les immenses progrès récents des maths sont liés notamment à l'existence d'emplois où l'on peut garder du temps pour la recherche autrement qu'en faisant partie d'une élite de riche - Gauss a d'autant plus mérité qu'il a du travaillé pour vivre en dehors du fait qu'il révolutionnait les maths. La non hérédité des maths serait sans doute contestée par des psychologues, mais partiellement seulement.

Critère pour reconnaître les grands mathématiciens: ceux qui ont la médaille Fields, et quelques uns qui ont eu la malchance de ne pas être là les années où il y avait de la place pour des médailles Fields - Dieudonné ne fait donc pas partie des Fields, mais fait peut-être partie des grands mathématiciens pour ses propres critères (il ne le dit pas :-) ).

Les grands matheux sont-ils toujours des gens bien ? Non, assurément. On trouve des gens de toute religion ou absence de religion, de tout parti politique. A mon avis, même si l'on cite de ci de là le cas d'un nazi, il faut quand même dire que les chercheurs sont essentiellement de gauche sans être staliniens, et ouverts - je vois rarement des chercheurs racistes, homophobes, ou votant pour Sarkozy ou Le Pen. On voit aussi pas mal de schizophrènes légers (voire lourds comme Nash) dans la profession, ou des paranoïaques (comme l'immense Gödel) - quoique je manque de chiffres (toujours difficiles à obtenir, tant savoir quels sont les grands mathématiciens est sans doute difficiles, tant il est difficile de différencier celui qui tire la couverture à lui de celui qui produit vraiment), cela me parait empiriquement vrai, et le livre http://0z.fr/0g6xB semble assez bien l'expliquer d'ailleurs (loin de moi l'idée de conclure trop vite...).

Rappelons que Gödel a tâché de démontrer mathématiquement l'existence de Dieu (mais le Dieu en question pourrait décevoir les fanatiques, pas mal d'athées seraient sans doute d'accord avec l'existence de définition comme celle de Gödel...).



Comment fait-on de grandes maths ? En travaillant beaucoup, et en s'isolant beaucoup. Poincaré, grand matheux s'il en est, le disait beaucoup; et selon Dieudonné il faut beaucoup s'isoler pour arriver à faire de grandes choses, même si la pratique (récente) du séminaire aide beaucoup, et si Dieudonné reconnait que fréquenter des grands aide beaucoup à se lancer, il cite néanmoins des mathématiciens réussissant dans un isolement quasi-total (Grassman, Cartan, Hensel); début 19ème, les publications scientifiques régulières permettent l'essort des mathématiques (témoin évident de l'impact du milieu), trop limité par la publication par lettres; l'essort de la pratique du séminaire, à partir du milieu du 19ème, est aussi un grand outil. L'explosion du principe du séminaire, en grandes conférences très chères et dont l'objectif essentiel est de donner une évaluation quantitative stupide mais compréhensible par des "décideurs" bornés est une dérive bien gênante de ce système, qui n'est pas citée par Dieudonné - ça n'était sans doute pas pareil à son époque.

Pourquoi y a-t-il plein de grands chercheurs en Russie et dans les pays de l'est ? Un système éducatif très performant sans doute, mais Dieudonné ne commente pas ce point et le cite en le laissant inexpliqué; il explique aussi que l'Allemagne a détruit la recherche polonaise (par massacre) et sa propre recherche (beaucoup de chercheurs, notamment juifs, ont fui). Les Etats-Unis ont décollé tardivement, tant la construction du pays a accaparé les énergie; mais en récupérant les scientifiques en fuite ou ayant besoin de financements, ils ont rattrapé leur retard.

Et en France ? Si l'Ecole Polytechnique fournissait autrement les grands mathématiciens, c'est aujourd'hui plutôt l'école normale supérieure qui s'en charge.
La première guerre mondiale a ravagé la France, qui s'est bien remise par la suite.

Y a-t-il des bons chercheurs parmi les vieux ? Plutôt non, quoiqu'il y ait des exceptions, selon Dieudonné. C'est sans doute beaucoup moins vrai sur des maths moins abstraites, moins "pures" (je n'aime pas ce mot) que les seules maths que Dieudonné considère comme étant vraiment des mathématiques. Pour Dieudonné, vers 60 ans, c'est un peu cuit.

En conclusion ?
Voilà! Des points de vue qui m'irritent (et que je revois trop encore aujourd'hui), mais une lecture sympa quand même. Peut-être n'est-il pas faux néanmoins de dire que l'influence de Dieudonné a étouffé l'informatique en France et que c'est bien dommage.
Enfin, ce livre me donne l'occasion d'écrire quelque chose que mes confrères vont mépriser peut-être; ça fait du bien, quand mon entourage est d'accord avec moi je finis par croire que j'ai tort, et quand j'ai dit que j'ai aimé le film Watchmen je n'ai pas réussi à tellement fâcher les gens :-)

Repost 0
Published by teytaud - dans Recherche
commenter cet article