+
1
|
skin
|
login
|
edit
αwiki++
::
stocks_others_notime
user:anonymous
_h1 notime _p A propos de temps qui n'existe pas, et donc qui ne peut avoir de sens (avant-après), qui ne peut pas s'écouler, qui ne peut pas être remonté, etc.. je voudrais faire remarquer qu'il existe dans les langages informatiques (au moins) deux types d'approches, impérative et fonctionnelle. La première fait appel au temps, la seconde non. En voici deux exemples dans la langage du web, le javascript. _p Dans l'approche impérative on écrit des séquences d'instructions dans un ordre bien précis et agissant sur des variables en perpétuelle modification. Par exemple pour calculer le produit des nombres de 1 à 6 on peut définir ainsi une fonction "produit": {pre function produit(n) '{ var p = 1; for (var i=1; i<=n; i=i+1) p = p * i; return p; } } _p et on l'appelle avec la valeur 6: {pre produit( 6 ); // 720 } _p Suivons dans la boucle les valeurs successives des variables i et p: {pre i p*i p ============= 1 1*1 = 1 2 1*2 = 2 3 2*3 = 6 4 6*4 = 24 5 24*5 = 120 6 120*6 = 720 } _p On voit bien que les variables p et i sont modifiées dans une boucle et c'est l'état final de la variable p qui constitue le résultat. Le programme se déroule dans le temps. _p Dans l'approche fonctionnelle on définit la fonction "produit" de façon récursive: {pre function produit(n) '{ if (n == 1) return 1 else return n * produit( n-1 ) } } _p et on l'appelle de même avec la valeur 6: {pre produit(6); // 720 } _p Afin d'en comprendre le fonctionnement, appliquons "mot à mot" ce qui est écrit dans la définition de la fonction produit: {pre produit(6) == 6 * produit(5) == 6 * 5 * produit(4) == 6 * 5 4 * produit(3) == 6 * 5 * 4 * 3 * produit(2) == 6 * 5 * 4 * 3 * 2 * produit(1) == 6 * 5 * 4 * 3 * 2 * 1 == 6 * 5 * 4 * 3 * 2 == 6 * 5 * 4 * 6 == 6 * 5 * 24 == 6 * 120 == 7 } _p Le signe == signifie égalité et non affectation. Il s'agit d'une même valeur sous des formes de complexité différente, croissante d'abord puis décroissante. Il n'y a pas de boucle. Le programme ne se déroule pas dans le temps. On pourrait dire qu'il s'étale dans l'espace. _p Un exemple bien connu d'application de l'approche fonctionnelle est le simple tableur (Excel, OpenOffice.calc,...) Les relations sont écrites dans une grille bi-dimensionnelle dans un ordre quelconque. Une expression en haut et à gauche du tableau peut faire appel à des valeurs en bas et à droite. Quand le tableau est écrit, les valeurs sont disponibles dans un ordre quelconque. _p Et aujourd'hui les grilles de calcul réparties dans le "cloud" ou dans de multiples processeurs font massivement appel à l'approche fonctionnelle. Et tout ceci a démarré dans les années 50 avec le {b LISP} (1958) et les recherches sur l' {b intelligence artificielle}, le deuxième langage de haut niveau après le {b Fortran} (1957), langage de type impératif. _p Tout ceci pour dire qu'en informatique on peut se passer du temps (à peu près). De même en Intelligence Artificielle. _p {b Et qu'il en est peut-être de même dans notre cerveau!} Quand nous communiquons par les mots ou les livres, l'information nous parvient séquentiellement. Mais elle est immédiatement restructurée dans le cerveau sous une forme arborescente. Et les associations d'idées, la création de nouvelles informations passent par le contact a-temporel, purement spatial entre les feuilles des arbres qui le peuplent. C'est probablement ainsi que nous rêvons, en dehors du temps, de son écoulement. C'est aussi ainsi qu'on contemple une image, un paysage, déployés en deux (ou trois) dimensions devant nos yeux. Et mémorisés tels quels dans notre cerveau. Google ne fait rien d'autre en mémorisant dans ses bases de données arborescentes les données laborieusement récoltées par ses robots. Ce qui nous permet d'obtenir en un quart de seconde la réponse à une recherche d'un mot distribué sur des millions de pages. _p Chercher un mot perdu au milieu d'une séquence de 4 milliards de mots placés au hasard sur un long ruban suppose en moyenne {b 2 milliards de tests}. Même les plus rapides des ordinateurs auront de la peine. Si les 4 milliards de mots ont été soigneusement placés dans une structure d'arbre, il suffit de {b 32 tests} en moyenne (2{sup 32} = {pow 2 32}) pour accéder à un mot. Et là tout devient instantané ! _p Voir aussi : [[YAW|?view=syntax_others_yaw]]. {hr} _h5 un échange d'idées sur [[Agoravox|http://www.agoravox.fr/tribune-libre/article/l-univers-est-il-unique-ou-non-et-160727]]. _h6 Par Hervé Hum (---.---.---.192) 15 décembre 13:32 _p Je ne vois pas où vous avez éliminez le temps dans l’approche fonctionnelle ? Vous avez changez de méthode, mais pas éliminé le temps. que ce soit la méthode impérative ou fonctionnelle, nous sommes toujours face à une relation de causalité, ici une question -> réponse. _p Dans les deux cas vous avez un calcul à effectuer, seulement la méthode fonctionnelle est plus efficace car elle fait en une seule opération de multiplication ce que l’autre fait en 6 opérations de multiplications successives. Autrement dit, vous avez gagnez du temps pour trouver la réponse à la question, mais vous n’avez pas éliminé le temps, pour cela, il faudrait que la question ne soit pas posé, que vous n’ayez que la réponse... En d’autres termes, pour qu’il n’y ait pas de temps il faut qu’il n’y ait pas de question posé, de relation causale ou pour moi d’itération de sens. _p Toutefois, votre remarque sur l’étalement dans l’espace de la méthode fonctionnelle par rapport à la méthode impérative est pertinente, la difficulté est d’en tirer « l’huile essentielle » ! _h6 Par riemann66 (---.---.---.17) 15 décembre 14:31 _p Dans le programme impératif suivant i=0 ; i=i+1 ; il y a un avant et un après pour la variable i, et surtout pour le registre de la mémoire associé. Dans un programme fonctionnel du genre Lisp, l’expression (+ 1 2) est équivalent à 3 qu’on peut voir comme étant sa valeur en fin de calcul. Mais en fait il n’y a pas d’avant et d’après, il y a équivalence. Autre exemple, l’expression ax2+bx+c=0 est équivalente à (x-x0)*(x-x1) où x0 et x1 sont les racines bien connues d’une équation du second degré. Libre à nous de préférer l’une à l’autre et de dire qu’on a résolu l’équation au bout d’un calcul dans le temps. C’est le cas en math de façon générale, le temps n’existe pas. Et à nouveau, pensez à l’exemple du tableur qui illustre parfaitement l’a-temporatlité des relations entre les cellules et qui est présenté comme l’exemple abouti et utile de l’approche fonctionnelle. Un petit détour par le lambda-calcul est assez instructif sur le sujet. _p A une époque où les données et les outils qui agissent sur elles sont distribués dans une grille sans centre, il est devenu urgent de remplacer les langages séquentiels remplis d’effets de bord difficiles à régler (accès concurrents, sémaphores) par des langages où les valeurs sont immutables et étalées dans l’espace. Pour ma part, j’y vois une grille de lecture intéressante pour le fonctionnement du cerveau. En mode moins centralisé et moins lié à des processus de cause à effet. Les informations arrivent séquentiellement dans le cerveau, comme un train de wagons dans une gare, mais les wagons sont stockés sur des voies parallèles, comme dans une gare de triage. Les relations se feront entre wagons contigus sans aucune relation avec leur ordre d’arrivée. Est-ce bien sûr ? Je n’en sais rien mais ça peut servir de grille de lecture pour aborder certaines choses dans le fonctionnement du cerveau. Sans trop se croire au sérieux bien sûr :) :)