About this blog

Ce blog est principalement une archive publique d'un mlog privé(mailed log). Les réponses, les réactions et les commentaires ne sont pas toutes publiés ici.

translate into English
  • 44 posts
  • 5 566 visits
September 2009
  Sun Mon Tue Wed Thu Fri Sat  
      1 2 3 4 5  
  6 7 8 9 10 11 12  
  13 14 15 16 17 18 19  
  20 21 22 23 24 25 26  
  27 28 29 30        

Archives

September 3rd, 2009

Musicalités

Il y a quelques temps, lors d'une discussion sur la musique, un ami d'un ami(1) : "Non j'aime pas l'electro, c'est trop répétitif, tout le temps pareil." Alors là je dis non !

"Non"

La musique répétitive et la musique électronique sont deux choses différentes. Même si Laurie Anderson et tout ces héritiers font croire, sinon à une égalité, au moins à une inclusion, les deux concept sont fondamentalement différents. D'ailleurs "répétitive" qualifie la musique telle quelle est pensée par le compositeur (la musique dans l'absolu, la musique idéale (au sens platonicien)) alors que "électronique" qualifie la musique telle quelle est joué par l'interprète (la musique concrète, la musique projetée (au sens platonicien toujours)).

Dans la différence symétrique de ces deux ensembles artistiques on peut trouver des hommes, des femmes et d'autres nuances de genre tels Wendy Carlos, Pierre Henry et Philip Glass.

(1) la relation d'amitié n'est évidemment pas transitive(2)... Si l'adage était vrai, l'amitié partitionnerait naturellement l'humanité avec un nombre de classe extrêmement faible ! Si l'adage était vrai John Lenon aurait écrit Look au lieu de Imagine ! Si l'adage était vrai Edmond Dantès serait devenu fou à tenter de distinguer ses amis de ses ennemis ! Si l'adage était vrai...
(2) en l'occurrence, l'ami de cet ami est, à défaut d'un proche, d'une compagnie agréable

Published at 18:03 ( 0 comments / 33 visits )
This post is public

July 25, 2009

Oldy old web...

Qui se souvient des sites internet du siècle dernier ? Qui se rappel du web quand il ne contenait que du texte (et quelques images) ? De quand une animation cachait systématiquement un GIF animé ? Quand toute les pages utilisaient la même police ? Quand XUL n'existait pas ? De l'époque des modem 56K qui émettaient d'étrange sons et occupaient la ligne ? Des balises <u> <i> et <b> ? De AOL, AIM et caramail ? Des câbles séries ? Des disquettes ? Quand on utilisait des <table> pour faire de la mise en page ? De "Va chercher Lycos !" et de "Vous avez un message" ? Des navigateur sans onglets ? De Altavista ? Des "pages persos" ? Des échanges de musique par CD gravé interposé ?



PS : "Internet" et "le web" sont deux choses bien distinctes qui sont ici mélangés. Le propos n'est pas ici de parler de vocabulaire, juste d'évoquer des souvenirs visuels (et peut-être aussi auditif). Peut-être une prochaine fois...

Published at 09:00 ( 0 comments / 190 visits )
This post is public

July 18, 2009

Mad

On ne remarque que rarement les tabous. On remarque plus aisément les entorses qui leurs sont faits. En regardant Mad Men, on est forcément choqué. Les personnages (à de rares exceptions près) fument - aussi incroyable que cela puisse paraître - devant la caméra.

Ils ne se contente pas d'écraser leur clope au début d'une scène, d'allumer une cigarette discrètement, de s'en griller une toute les heures. Ils fument, dans les restaurants, devant les enfants, dans le train, à l'hopital (patients ET médecins confondus), en voiture, entre deux verre de scotch, dans la rue, dans l'ascenseur, chez le psy, au bureau, en regardant Nixon et Kennedy faire la course aux suffrage. C'est effectivement aux alentours de cet évènement que se déroule l'histoire des publicitaires de Madison avenue.

Mais le souci de précision historique est parfois plus fort que le télévisuellement correct. C'est une des caractéristiques agréables de cette série.

Tout ça pour vous encourager à regarder cette excellente série à la réalisation assez inhabituelle. Have fun !

Published at 20:22 ( 1 comment / 34 visits )
This post is public

June 11, 2009

Une question de point de vue

La première fois qu'on entend parler de "la vitesse de la lumière" (en regardant Star Wars ?), ça ne correspond à rien. C'est une grandeur pour laquelle on a pas d'idée. Quand on entend le "chiffre" (en fait c'est un nombre...) (300 000 000 mètres/seconde) associé, on ne progresse pas beaucoup vers l'appréhension du concept. C'est à force d'exemple et de comparaison qu'on peut réussir à apprécier le concept.

read more
Published at 20:43 ( 0 comments / 111 visits )
This post is public

March 29, 2009

Get a smarter-er browser...

Dans un millet précédent, j'avais parler des smart bookmarks. Ces petits marques pages spéciaux permettent d'étendre les fonctionnalité de votre Awsome bar. Il existe une technique un peu plus avancée que Lifehacker a abordé dans un post récent. Il faut parler couramment le JavaScript (aka JS) pour l'inventer, mais on peut le comprendre et l'imiter très facilement.

read more
Published at 09:32 ( 0 comments / 254 visits )
This post is public

March 18, 2009

Les palindromes...

La sortie du flim aidant, je me suis mis à lire le comic. Les douze tomes composant "The Watchmen" ne sont pas encore terminés, mais le début est prometteur ET plaisant. Les personnages, le mode de narration et l'intrigue sont originaux et bien développés.

Le tome 5, intitulé "Fearful Symmetry", join la forme au fond en proposant une disposition palindromique des cases. La composition est d'une symétrie parfaite : la première page est l'image renversée de la dernière, la deuxième de l'avant première, etc. La page centrale est la clé de voute de cette œuvre dessinée. La narration est centrée, dans ce volume, sur le personnage surnommé "Rorschach" qui utilise les taches du même nom pour son costume.

J'avais entendu parlé d'un livre constitué d'un unique palindrome, de propriété mathématiques des nombres palindromiques, mais c'est la première fois que je lis une BD adoptant cette contrainte...
Wikipedia est assez prolixe concernant ce comic !

Published at 20:27 ( 0 comments / 93 visits )
This post is public

March 12, 2009

Command-fu, let's get geeky...

Il y a quelques mois, je me suis trouvé plongé dans un milieu où il ne fait pas bon d'utiliser une souris pour copier, déplacer, créer, modifier des fichiers. Un monde où les outils disponible en ligne de commande sont puissants et nombreux. Un peu poussé, un peu tiré, j'ai appris avec plaisir les bases du command-fu. Bien sur cette discipline n'a pas de sens sous MSWindows (est-ce qu'un chirurgien utilise un marteau ?(1)) et heureusement, j'ai changé d'OS.

Il peut sembler difficile et pénible de changer de système d'exploitation et de modifier toute ses habitudes. Dans un premier temps c'est déstabilisant en effet. Mais on voit vite apparaitre des avantages dont on ne rêvait même pas (on s'habitue vite au chocolat sans moutarde)...

read more
Published at 21:22 ( 0 comments / 87 visits )
This post is public

February 27, 2009

The big scary Google

Au fil de mes pérégrinations réticulaires quotidiennes je suis tombé (ouch !) récemment sur quelques articles s'offusquant de, commentant, discutant, relativisant ou au moins constatant l'immensité de Google. Cette société qui a révolutionné le fonctionnement des moteurs de recherche (qui ont tous adopté un classement par pertinence) est maintenant dans une position dominante sur la quasi-totalité des secteurs du web. En effet les service proposés par Google sont nombreux (Gmail, YouTube, Google code, Blogger, Google news, Google reader, Picasa, Google maps, FeedBurner, Knol, Google Health, Google Apps, Google Sites, iGoogle, Google docs...) et très souvent de bonne qualité.

Le Géant du web inquiète ceux qui lui trouvent des ressemblances avec Big Brother mais aussi ceux qui s'effraient des monopoles. N'oublions pas qu'aux USA, les monopoles sont interdits par la loi anti-trust (n'étant pas expert en législation américaine...) car le capitalisme n'existe que par la concurrence (comme disait l'autre). Mes préoccupations sont différentes.

read more
Published at 18:40 ( 0 comments / 70 visits )
This post is public

February 20, 2009

Some music...

Pas de nouveautés musicales ces temps ci, je me contente de replonger dans des sons anciens qui m'ont déjà bercés auparavant. Mes trajets de RER sont embelli par une sélection relativement (comme disait Einstein) éclectique de séquences précises de 0 et de 1 (des fichiers !)

Les transitions juste assez brutales de mon baladeur me font passer de Léonard Cohen au Brassen's not dead pour enchainer sur Le peuple de l'herbe, The Smahsing pumpkins et The rolling stones.

J'en profite à la fois pour rappeler l'existence des merveilleux groupes/individus sus-cités et pour transmettre un lien vers mon profile Lastfm.

Pour ce qui ne connaitrait pas ce formidable outil du Social Web, Lastfm est un site qui permet de rendre public vos statistiques d'écoutes (en nombre d'écoute par chanson, par artiste, par album, par genre...) de vos streaming sur le site ou bien de vos lectures locales. A partir de vos habitudes, une liste de voisins (personnes partageant vos goûts), des conseils, des informations sur les concerts et autres évènements qui devraient vous intéresser... Et bien sûr il ne saurait être question de Social Web sans la possibilité d'avoir des "amis" et de mettre des "tags" un peu partout.

A bon écouteur salut !



Published at 18:11 ( 0 comments / 112 visits )
This post is public

February 7, 2009

L'évolution d'internet...

Après réception d'un mail (ça fait plaisir) d'un lecteur et lecture du lien associé. Je me suis décidé à transmettre, résumer (pour ceux qui n'ont pas le temps/l'envie de lire) et commenter cet article.

L'email :
Tiens, un article qui si tu ne l'as pas encore lu devrait t'intéresser, moi en tous cas il m'a plutôt plus car il met la lumière sur des domaines que je cerne finalement peu.

http://www.ecrans.fr/Tout-le-monde-a-interet-a,5762.html

Bonne lecture !

Le résumé :

Un journaliste de libération interview Benjamin Bayart, un illustre inconnu, qui s'y connait dans le domaine d'intersection de la législation, de l'histoire et d'internet. Il commence d'abord par expliquer ce qui fait la spécificité d'internet (notamment par opposition au Minitel) i.e l'acentralisation. Il enchâine(grace aux questions du journaliste) sur les dévellopements techniques et legislatifs qui remettent en cause cet aspect tout en rappelant les bénéfices de cette acentralisation à savoir la multiplicité des sauvegardes(par exemple, le noyau linux est copier sur des centaines de serveurs différents à travers le monde), l'indépendance de publication (on peut créer un site/blog/serveur-mail sans demander à Google/Google/Google de l'héberger).

Le commentaire :

Le sujet fait évidemment parti de mes centres d'intérêt et l'interviewé soulève des points important des développements économiques actuels.

Les évolutions législatives expliquées sont à la fois inquiétantes et un peu ridicules (elles montrent la méconnaissance technique et le populisme des législateurs). Heureusement tout de même que le ton paranoïaque-conspirationniste du début s'efface rapidement.

Il y a aussi quelques exagérations. Notamment sur le fait que "ce qui empêche [que chacun possède son serveur], ce sont des problèmes très mineurs". Quand l'eau, l'électricité, les transports, le logement et les autres services publiques seront gratuit, on pourra en reparler.

Dans l'ensemble, un bon article intéressant, assez complet sans être trop technique.

Published at 10:30 ( 0 comments / 107 visits )
This post is public

January 26, 2009

Du groupe et des individus...

Récemment replonger dans l'univers de "Fondation"(1) à la suite d'une discussion littéraire (ça m'arrive) il m'est revenu en mémoire les principes même de la fiction délivrée par Asimov avec une plume extraordinaire (bien qu'à mon avis il s'agissait au moins en partie d'une machine à écrire). Dans cet univers des plus futuriste, l'Homme a conquis la galaxie dans son intégralité et règne sur tous les systèmes naturellement habitables ou terra-formés.

L'élément central de l'oeuvre est une science - inventée pour l'occasion par l'auteur - qui permet de prédire les évolutions sociales future. La psychohistoire (c'est le nom de la science sus-citée) ne fonctionne que pour des nombres d'individu très important (ici la population galactique (rien que ça !)) car elle repose sur le principe qu'un unique individu a un impact sur la collectivité inversement proportionnel à la taille de cette collectivité (plus il y a de monde dans un groupe, moins un individu seul peut modifier le comportement de ce groupe) ; une sorte d'inertie du groupe.

Sa science est tout de même très limitée - d'abord par la taille minimum du groupe étudié, mais aussi - par l'influence de l'observation/la mesure sur l'observé/le mesuré. Le comportement de la collectivité est modifié par les prévisions des psychohistoriens.

Enfin bref, je ne saurais résumé dans un email ni le contenu ni la forme des livres de "Fondation". Au bout de quelques minutes de réflexion, je me suis demandé : "Un groupe est-il vraiment plus prévisible qu'un individu ? Est-ce que l'orientation actuelle de nos connaissances et de nos sciences favorise les prévisions pour des comportements collectifs ou individuels ?" Dans les sciences "dures" (qui sont parfois plus faciles) on trouve des problèmes relativement proches : le fonctionnement d'un neurone isolé est beaucoup mieux compris que celui du cerveau dans son ensemble ; on sait prévoir le comportement d'une casserole d'eau beaucoup mieux que celui d'une molécule d'eau. Pour les neurones il y a de nombreuses interactions qui rendent les choses plus complexe à grande échelle alors que pour l'eau on moyenne les comportements. Tout dépend de la manière de passer du niveau de l'élément isolé à celui du groupe.

Une question parmi beaucoup d'autres qui aurait put surgir de ma tête...


(1)Fondation est un cycle de roman non moins réputé que le cycle de Dune (par Frank Herbert) dont la lecture peu être assez difficile en une fois - mais qui par son découpage se prête bien à une lecture étalée. Asimov très connu pour son aspect hard-science (science fiction ultra réaliste du point de vue scientifique) s'éloigne ici un peu de cette catégorie dans laquelle l'ont placés de nombreux critiques littéraires.

PS : je viens de m'apercevoir que mes millets commencent souvent par "Récemment", "M'ayant récemment", "Étant récemment",...

Published at 10:52 ( 0 comments / 90 visits )
This post is public

January 15, 2009

La limite du possible.

Dans les années 1930 (avant internet, le téléphone portable, et même avant l'ordinateur (tel qu'on le connais aujourd'hui (puissant, personnel, courant, ergonomique))) quelques mathématiciens tripotaient allègrement des concepts relevant à l'époque de la science fiction. Les avancées théorique de cette époque influence aujourd'hui encore le développement de l'informatique.


Alan et Alonzo :
Les deux prénoms des mathématiciens qui ont laissés leurs noms sur les mathématiques de l'informatique tout comme Euclide l'a fait sur la géométrie. Avec des motifs très différents, ils ont tout deux découvert (on n'invente pas les mathématiques, on se contente d'exposer des vérités qui n'attendaient que ça) des modèles de calcul qui porte leur nom (de famille).

La Turing-calculabilité (ou T-calculabilité) :
Alan Turing cherchait à découvrir les limites du faisable. Il a donc inventer les machines de Turing, concept théorique cruellement proche des ordinateurs actuels. Il existe plusieurs modèle pour les MTs (machines de Turing) le plus simple étant de considérer un ruban (potentiellement infini(1)) sur lequel se promène une tête de lecture/écriture capable de lire et d'écrire un certain nombre (au moins 2) de symbole et dont le comportement est déterminé par un ensemble de règles (du type : si la machine est dans l'état 42 et que le symbole sous la tête de lecture est '0' alors, se placer dans l'état 24, écrire un symbole '1' et bouger la tête de lecture vers la gauche). A partir de ce modèle, Alan Turing défini un ensemble de fonctions dont on peut calculer les valeurs en un temps prévisible, un ensemble de fonctions dont on peut calculer les valeurs en un temps imprévisible (on lance la machine (au sens figuré) mais on ne sait pas quand ni même si elle va s'arrêter), un ensemble de fonction dont on ne peut pas calculer les valeurs (on lance la machine et elle ne s'arrêtera jamais).
Les machines de Turing ont une influence sur la conception des ordinateurs. Bien que la lente transition vers la mémoire en SSD fasse pencher de plus en plus les ordinateurs actuels dans le camp des machines RAM (cousines proche des MTs). L'influence de ce modèle ne s'arrête pas au Hardware, en effet les langages impératifs sont directement inspirés des fonctions de transition des MTs (avec un niveau d'abstraction plus élevé).

La LAMBDA-calculabilité :
Alonzo Church voulait développer une syntaxe permettant d'exprimer des fonctions mathématiques. Cette syntaxe est d'une simplicité effarante :

les symboles autorisés sont LAMBDA, que j'abrégerai L, des parenthèses et (éventuellement) un point
les règles sont : un terme est soit une variable : v , soit une fonction associant un terme à un autre : Lt1.t2 (où t1 et t2 sont des termes), soit une fonction appliquée à un terme (f)t (ou f est une fonction et t un terme).

A partir de cette syntaxe, Church défini des méthodes de calculs de ses fonctions (appelées réductions) et tout les objets mathématiques courants et notamment les entiers de Church(2). Il montre que certaines fonctions sont exprimables en LAMBDA-calcul et calculable, que d'autres sont exprimables mais difficile à calculer (selon la méthode choisie, le calcul n'aboutit pas forcément), que d'autres encore ne sont pas exprimables du tout.
Oh! surprise, ces catégories coïncident avec celles d'Alan Turing et de sa machine. Les fonctions calculables dans un modèle, le sont dans l'autre ! Il en est de même pour tout les autres modèles étudiés à ce jours.


C et Haskell :
Aujourd'hui encore naissent des langages de programmation si bien que leur nombre est élevé. On peut les distingués de plusieurs manières : paradigmes (la définition est assez difficile), niveaux (ou niveaux d'abstractions), verbosité, typage...

C
Titre court s'il en est, C est, en plus de la troisième lettre de l'alphabet, le nom d'un des langages (de programmation) les plus utilisés actuellement dans le monde. Ce qui le rend intéressant pour nous (en tout cas pour tout ceux qui ont lu jusqu'ici) est qu'il est très proche du modèle des machines de Turing. Dans un pur style impératif/procédural et avec un niveau d'abstraction très bas, il est possible de travailler octet par octet (même si on préfèrera utiliser les quelques raffinement disponibles tel les entiers, les flottants, les structures...) à la manière des cases mémoire des MTs.

Haskell
Le mathématicien américain Haskell B. Curry a beaucoup influencé le LAMBDA-calcul et il a joué un rôle majeur dans l'équivalence de Curry-Howard, c'est donc tout naturellement que son prénom fut donné à un langage de programmation purement fonctionnelle (qui est inspirée du LAMBDA-calcul). Haskell a en plus un typage fort et une évaluation paresseuse tout deux liés à la théorie d'Alonzo Church.

Du faisable et du possible :
Les mathématiques sont la science du possible. Elles sont capables de décrire l'univers tel qu'il est ou tel qu'il serait si <ajouter ici une condition farfelue de votre choix>. Pour s'en convaincre, je conseil la lecture de Flatland(3) (de toute façon je la conseille même si ce n'est pas pour se convaincre de la puissance des mathématiques). Dans la même optique, on peut définir l'informatique comme la science du faisable. Le fait que tout les modèles de calculabilité découvert à ce jour coïncident poussa Alonzo (on fini par être assez intime avec les mathématiciens (et on veut surtout éviter des répétitions trop nombreuses)) à énoncer ce qui deviendra la "thèse de Church". Elle stipule que la notion de Turing calculabilité et celle de LAMBDA calculabilité sont toutes deux équivalentes à la notion intuitive de calculabilité. Il en existe une version "physique" qui dit que les deux modèles ont le même pouvoir que la nature (ils peuvent calculer les même choses).





(1) il existe plusieurs infini, des grands et des petits, des actuels et des potentiels. Un ensemble est potentiellement infini si il est toujours assez grand pour les besoins qu'on en a. Les grecs qui à cause de Zénon avait des problèmes avec l'infini voyaient les entiers comme un ensemble infini potentiel.
(2) par exemple les entiers sont représentés par des itérateurs :
0 <-> (f->id) <-> Lf.Lx.x <-> "0 est la fonction qui a une fonction f associe la fonction f itérée 0 fois"
1 <-> (f->f) <-> Lf.Lx.(f)x <-> "1 est la fonction qui a une fonction f associe la fonction f itérée 1 fois"
2 <-> (f->fof) <-> Lf.Lx.(f)(f)x <-> "2 est la fonction qui a une fonction f associe la fonction f itérée 2 fois"
etc.
(3)
Flatland est un livre d'Edwin Abbott Abbott mettant en scène un univers ne possédant que deux dimension. L'auteur critique de manière virulente la société victorienne (dans laquelle il a grandi) en prétextant de l'exercice de pensée philosophique bien plus que mathématique.

Published at 15:11 ( 0 comments / 143 visits )
This post is public

January 9, 2009

root sous Windows...

Les utilisateurs d'Unix et d'OS assimilés ont l'habitude d'avoir des frontières claires en matière de sécurité. Il y a un super-utilisateur (su) nommé root (pour des raisons historiques) qui a tout les droits. Et il y a les autres utilisateurs qui ont moins de droits (il ne peuvent pas installer de programme ni modifier les fichiers qui ne leur appartiennent pas sans autorisation préalable). Sous Windows les règles sont moins claires et bien souvent méconnues. Essayons de faire simple :

  • S'il n'y a qu'un utilisateur, il se trouve être administrateur. Il a donc tout les droits sauf ceux qui pourrait "rendre le système instable" (pun intended).
  • S'il y a plusieurs utilisateurs, le premier sur la liste (à l'installation de Windows) est administrateur. Les autres ont donc moins de droits (pas d'installation, pas de désinstallation, pas de changement des icones du bureau partagé...) avec quelques choix contestables (pas de modification des paramètres de veille (sur un laptop c'est utile), droit de supprimer des entrées du "menu démarrer" partagé...). Bien sur, l'administrateur peut transmettre ses droits d'administrations à d'autres usagers.
  • Dans tout les cas, il y a un vrai administrateur (précédemment il s'agissait d'un faux administrateur) dont le compte est très peu sécurisé. Sous WindowsXP lors du démarage passez en mode sans échec(1), dans le champ "utilisateur" tapez "administrateur" (sans les guillements) et laissez le mot de passe vide et entrez. Voilà ! Vous pouvez a ce moment changer votre mot de passe pour éviter que quelqu'un ne profite de cette faiblesse bien connue. Sous Vista il faut un accès à un terminal en mode administrateur (faux administrateur) pour activer le compte.


Une commande utile sous Unix, consiste a passez en root temporairement. il suffit de taper " su " puis le mot de passe pour obtenir les droits absolus. Une fois le terminal fermé, ces droits disparaissent. Il est possible d'obtenir un comportement similaire sous Windows sans trop se fatiguer. Imaginons qu'il faille installer/désinstaller un nouveau programme et que pour des soucis de sécurité on ait choisi (avec sagesse) de ne pas utiliser son ordinateur en mode administrateur constamment. Deux choix s'offre à nous :



  1. Se déconnecter, se reconnecter en administrateur, (dés)installer, se déconnecter, se reconnecter en utilisateur normal.
  2. Cliquer droit sur un raccourci vers commande, choisir "éxecuter en temps que...", en tant qu'administrateur, (dés)installer, fermer la console.

La deuxième méthode est plus rapide et permet en outre de ne pas nécessiter l'arrêt des programmes en cours.





(1) : deux solutions pour ça, la plus simple est d'appuyer sur F7 durant le boot, l'autre est de passer par éxecuter->msconfig->boot.

Published at 17:10 ( 0 comments / 97 visits )
This post is public

December 7, 2008

Programming languages. Second part.

In the introduction of first part I listed some way to differentiate programming languages (PLs for power-users). In this list was one of the most important distinction : the typing ! But what is the typing ? It has been underestimated for a very long time (in computer science, a very long time is way shorter than in history...) but it is the first step to make to approach secure programs (secure generally means bugproof).

For a turing-machine, speaking of typing has no sense (it only knows symbols we fill the alphabet with) ; the reason for that is not the "imperative" aspect of the machine but the programming language (ie the state transition function) being low-level (you actually read/write in memory blocks and moves the reading/writing part of the machine). In the other hand the lambda calculus being high level it has naturally been typed.

In real programming languages, there are different typing types (OK, this one's not really good...). It can be strong/weak, dynamic/static, eexxtteennssiibbllee/not, ...
The strength of a typing indicates if coder is really restricted or just guided by it. For those not used to it, strong typing can be seen as a very rigid restriction. It just force you to be explicit. In strong typing you have to change the type of variables/values (we'll get to this distinction later) explicitly
(in OCaml : let bool_of_int = function |0 -> false |_ -> true ;; makes the transition between an integer and a boolean, OCaml is strongly typed ;
in C char a='a' ; if(a){printf "%d"; atoi(a+2);} the typing is weaker, the variable a is used as a boolean value(if...), an integer (a+2) and a character (atoi))
.

At the beginning, when there was no typing, bugs where awfully powerful. With dynamic typing bugs are often (but not always) a cause of program interruption, type is checked when executing the program avoiding inconsistencies such as adding a character to a integer array. The static typing on the other hand is a typing that is checked while compiling (making a program out of a source code). It allow an early bug detection and rare interruption while running. It also is quicker when running.

Published at 11:34 ( 0 comments / 111 visits )
This post is public

November 24, 2008

Programming languages. First part.

In the history of computer science (both as a branch of mathematics and a way of doing things with a computer) there has always been several paradigm (for now : way of doing things) that were proven to have the same power (whatever is possible in a paradigm is possible in the other). In the practical world, programming requires a language to be expressed (as in non-computer world, ideas can be spoken in any language but needs can't be expressed without a language)(1). Languages (in programming) can be distinguished by there level (close to the hardware or up in the software sphere), there typing (the control they impose to the programmer), there verbosity (the concision it brings), there speed, the paradigm(s) implemented and many other thing.


The three dominant paradigms.

What is a paradigm ? It's an ensemble of principles, a way of doing thing and a general concept of methodology. It's rather difficult to explain it and very easy to show so here are some examples.

The first paradigm that appeared was the one called "imperative". It correspond to the well known Turing-machine and Babbage-programmable-computer (see Wikipedia for further information). Programs in imperative paradigm consist of a succession of order given to the machine.
Something like

  1. "read content of memory block 1"
  2. "add content of memory block 2"
  3. "put the result in memory block 3"
  4. "move the content of memory block 2 to memory block 1"
  5. "move the content of memory block 3 to memory block 2"

in a loop would be an implementation of Fibbonaci sequence computing.



The second paradigm to appear was the one called "functional". It derives from the Lambda-calculus discovered by Alonzo Church (see Wikipedia). It consist of a world where functions are standard values (just like numbers), the advantage is to be able to manipulate functions easily
eg : compose f g = (function x -> f (g (x))) is difficult to implement with such concision in non-functional programming style).

The other paradigm is the one called "Object Oriented". It appeared very recently and consist of a world were everything is an "object" of a certain "class" that "inherits" properties (such as "methods" and "variables") from other classes. It's not easy to use at first but after diving into it, it reveals unexpected strength.

It exists other programming paradigms but with fewer user (ie coder). The three presented above are ruling IT for now. However it is not to be excluded for a new contestant to appear.

(1) Some may argue that because of bootstrap problem, or according to some theory, or that there are exemples of non-linguistic communication (art ?)... The parenthesis made in introduction is just here to clarify ideas about programming and computer science in general.

Published at 21:00 ( 0 comments / 82 visits )
This post is public

October 29, 2008

Comment ne pas devenir pauvre.

Ayant récemment été invité à contempler un site internet qui, soit dit en passant, semble avoir un score de SEO plutôt faible (quand on n'apparait pas avant le premier résultat non pertinent de google...) et qui recensait quelques méthodes pour "devenir riche sans risque" (évidement google référence beaucoup beaucoup de site correspondant) il me parait intéressant de vous en présenter brièvement une partie du contenu.

La technique de la roullette (pas russe heureusement !) qui permetrait, soit disant, de gagner 1 euro à coup sûr à chaque partie. Voilà la méthode :
parier 1 euro sur rouge

->si le rouge tombe vous gagnez 2 euros (-1 euro de mise) (gain total = 1 euro ; bravo !)
->si le noir tombe, parier 2 euros sur le rouge
'---->si le rouge tombe vous gagnez 4 euros (-3 euros de mise) (gain total = 1 euro ; bravo !)
'---->si le noir tombe, parier 4 euros sur le rouge
'-------->si le rouge tombe vous gagnez 8 euros (-7 euros de mise) (gain total = 1 euro ; bravo !)
'-------->si le noir tombe, parier 8 euros sur le rouge
'---------------->etc.

Prenez un moment, réflechissez...

N'allez pas au casino !

A tout les coûts, soit vous gagnez, soit vous remettez votre gain a plus tard, non ?

Qu'est-ce qui cloche ?

(faîtes des tests avec un dé à 25 faces)

Où est le truc ?

Réflechissez encore un peu.

A ce stade,
-les plus "économistes" d'entre vous pensent que la roulette aurait été retirée des casinos si cette technique fonctionnait réellement.
-les plus "matheux-probabilistes" d'entre vous sont en train de calculer l'espérence d'un tel jeu (pour les feignants (SIGMA(n=0,infini,[(13/37) *((14/37)^n) ]) ))
-les plus "matheux-probabilistes-fans-de-convergence" sont perdus (si si, je le sait... soit par les calculs, soit par les résultats des calculs).

Alors ? Des idées ?

...

Vous avez mijoté assez longtemps !

Petite considération d'abord qui nous permet de nous convaincre que ça ne marche pas (sans pouvoir en déterminer la raison). Autant être honnête, cette technique ne sert qu'à gagner des sous. Pourquoi alors s'arrêter à 1euro de gain ? On peut commencer par parier 2euros -doubler sa mise en cas d'échec jusqu'à la victoire- et empocher 2euros de gain à chaque fois. En fait c'est équivalent à jouer deux parties en même temps. Pourquoi s'arrêter à 2euros ? Allons jusqu'au bout de nos envies et entrons dans un milliard de jeux simultanés (ou alors dans un jeu avec une mise de départ d'un milliard d'euros) qui nous permettra de gagner à coup sûr un milliard d'euro. Seulement voilà, il n'y a que quatorze personnes en France qui peuvent encore jouer. On voit bien que jouer une partie, ou plusieurs parties ce n'est pas tout à fait la même chose. Et puisque on gagne autant à faire des parties simultanément ou successivement(1), il y a bien quelque chose qui cloche !
Si votre banquier ne veux pas vous prêter de l'argent même après que vous lui ayez exposé votre technique pour gagner un milliard d'euro, c'est qu'il paye (sûrement assez chèrement) les service de matheux pas trop mauvais.

Et pourtant on ne voit pas vraiment ce qui cloche... même si on commence à être convaincu que quelque chose cloche. (j'adore placer des "on" ou des "nous" dans ce genre de texte, je faisais toute mes dissertations comme ça !)
Le "truc" est assez simple, vos chances de gagnez 1euro sont très grande effectivement, et il ne semble pas possible de perdre. Seulement, la confiance de votre banquier est proportionnelle au nombre de zéro de votre compte bancaire (et au carré du nombre d'année d'étude, et au prix des vêtements que vous portez en lui demandant un prêt...) : vos ressources sont limitées. Vous ne pourrez pas suivre le croupier indéfiniment ! Pour un limite de l'ordre de 1000 euros vous avez (une probabilité de (14/37)^9 soit) un peu plus d'une chance sur 1000 de perdre toute votre mise. Pour toute limite, le raisonnement est le même et le résultat aussi.

Ce qui rend cette technique trompeuse c'est que les chances de perdre sont très faibles (a peine plus élevé que 1/1000 pour toute personne qui peut poser 1000euros sur la table) et en faisant quelques essais (dans sa tête ou pas) on peut vite se persuader (quelques essais ne représentent pas un échantillon représentatif des possibilités du jeu) que le gain est garanti !

Vous savez maintenant comment devenir riche : soyez du bon côté de la banque !

(1):Attention ceci n'est vrai que pour un nombre fini de pari.

Published at 20:43 ( 0 comments / 130 visits )
This post is public

October 18, 2008

Les côtes bretonnes et les nombres complexes.

Voici l'histoire (simplifiée) d'une découverte (ces jours-ci je suis dans le clan des inventeurs et non des découvreurs, mais je change assez souvent) majeure des mathématiques moderne : les fractales. Les applications découlant de cette idée relativement abstraite sont nombreuses et d'une importance non négligeable. Mais n'étant pas partisan de regardez-,-les-math-c-'-est-bien-parce-que-ça-sert-à-quelque-chose je ne m'étendrais pas sur les catalyseurs en poudre, les pots d'échappements, les serpillères, les analyseurs d'image et autres peintures mates.


En 1967 le mathématicien français (il à depuis acquis la double nationalité franco-américaine) Benoit Mandelbrot s'intéresse à la longueur des côtes bretonnes (bretonnes étant selon les sources une références aux limites aqueuse entourant les anglophones d'outre-Manche ou aux belles et ensoleillées plages de Bretagne). La première mesure effectuée, il est temps de se posée la question de la pertinence des résultats. En effet la carte utilisée pour la tache est grossière et d'une échelle peu satisfaisante. La deuxième mesure donne un résultat plus important. C'est tout à fait normal car avec une carte plus précise, on prend en compte certaines pointes, certaines criques, certaines presqu'îles et autres baies, anses, ports, péninsules et rochers supplémentaires.


Une question surgit alors : "quand s'arrêter ?" s'il il faut être vraiment précis, il faudrait prendre en compte chaque grain de sable. Sans compter le problème de la marée qui vient posée un cheveux vachement concret sur une soupe délicieusement abstraite. Il n'est pas besoin d'aller très loin dans les mesures, on peut se rendre rapidement compte que la suite des mesures tends vers une valeur limite (non infinie)(1).


Après cette introduction aux fractales (elles commencent à porter ce nom à ce moment là), une étude plus générale commence. Et Mandelbrot donne quelques exemples de fractales qui deviennent rapidement célèbres dont l'ensemble de Mandelbrot. Petite définition mathématique :

Pour tout nombre complexe(2) c on associe une suite de nombre complexe c0=c ; cn+1= c + cn*cn
L'ensemble de Mandelbrot est l'ensemble des nombre complexe dont la suite de Mandelbrot ne diverge pas en module.

En simple, on prend un nombre complexe, on fait une série d'opérations dessus, et on voit s'il devient de plus en plus "grand". Si ce n'est pas le cas alors c'est que le nombre considéré est dans l'ensemble de Mandelbrot.



Il existe des tas de générateurs de courbe de Mandelbrot, sur internet. Néanmoins, les professeurs de programmation fonctionnelle de licence 3 de l'UFR d'informatique de l'université Pairs Diderot on pensé qu'il serait intéressant pour leur élèves d'en faire un eux même. Voici donc un petit bout de code (pas très propre) qui permet le zoom à la souris (clic dans le coin inférieur droit puis dans le coin supérieur gauche) et la modification de la précision de la courbe (a-- ; z- ; e+ ; r++) et l'interruption utilisateur (q).



Et pour les gens ne pouvant pas faire tourner les programmes CAML, voici en lot de consolation quelques images. Quand je saurais compiler des programmes qui utilisent des modules externe, je ferais une version exécutable.


Pour ceux que ça n'intéresse pas particulièrement : oh vous, qui ne vous êtes jamais arrêté devant un chou-fleur, un romanesco, un paysage montagneux, un spot d'escalade granitique, un nuage, une éponge, levez les yeux, le monde est beau ! (je me sent des envies déclamatoires ces temps ci). Vous pouvez regardez l'excellent flim "The promotion" protraitant (aussi bien dans le fond que dans la forme) l'amérique de l'emploi et du stress, de la morale et de l'ascention sociale, de l'Homme et de l'entreprise...




(1) certains lecteurs mathématiciens peuvent avoir pensé : "la suite est strictement croissante et elle est bornée. Elle devait bien converger" (qu'on traduira pour les non-initiés par "les valeures successives des mesures sont de plus en plus grande, comme elle ne peuvent pas être infini, il va bien falloir qu'elle s'arrêtent un jour !") Effectivement la courbe considérée est contenue dans une surface finie et on peut penser que sa longueur doit donc être finie. Mais tout cela est discutable et peut être facilement contre-exempler par une courbe de Von Koch.
(2) tout les mondes connait les nombres entiers (0, 1, -1, 2, -2 ...) et les nombres rationnels (on ajoute 1/2, 1/3, 1/4, 4/5 ... à l'ensemble précédent) et la majorité des gens connaissent les nombres réels (la plupart du temps sans connaitre la définition) (on ajoute Pi, racine de 2, e, le nombre d'or, racine de 3, racine de 5 ... à l'ensemble précédent). Les nombres complexes sont une extension des nombres réels qui à successivement été : une méthode de simplification des calculs ; l'objet d'une théorie mathématique ; un apport indispensable à la physique moderne.

Published at 08:39 ( 0 comments / 131 visits )
This post is public

September 29, 2008

AutoHotKey for coders.

Thanks to Lifehacker.com website, I recently discovered AutoHotKey, a keyboard and mouse macro creator. It allows, by running small scripts, to automate some tasks, to create or change your keyboard shortcuts and more.

First thing first : HOWTO use AutoHotKey ?

Download it from the official web site ; install it ; create a new text file ; rename it with a ".ahk" extension. There, you have your first AutoHotKey script... Yes it's empty, but it's a script ! Continue the reading for a code example (or scroll down and stop wasting time correcting poor English and typos).

So far I use AHK (that's both AutoHotKey acronym and scripts extensions) for two purposes. The first thing I've done after downloading and installing was to change my CAPSLOCK behavior. Honestly, does anyone use it ? And if I really had to enter a long CAPITALIZED text I would use notepad++ command ! The previously mentioned useless key is now a shortcut launcher : CAPSLOCK+a launches Firefox ; CAPSLOCK+z launches Firefox (with special arguments) ; CAPSLOCK+e launches the explorer and so on. The script is still evolving and I'm not used to it yet, but I've never hit the CAPSLOCK button like I did last week.

The second script I've written was to simplify coding in my favorite language : OCAML (I'll will create Java, Python and C versions latter... maybe). But how could it be helping a coder ? An simple example is when you want to insert comments in your program you have to enter the starting sequence "(*" ("/*" in C and Java) type your human destined text and enter the closing sequence "*)" ("*/" in C and Java). With the ocaml.ahk script you can just hit the CAPSLOCK+c combination to have a full "(**)" as if you've typed it and guess what. Your caret is right in the middle, where you can right your comments. An other example is function declaration, CAPSLOCK+; create the function declaration frame and position your caret at the function name place.

Here's my script but beware, it's intended to be used for AZERTY (frenchy) keyboards with OCAML language. Well, to be honest ot's intended to show that AHK is cool, it's not a definitive version and will get more and more usefull.

; this is a script intended to empower productivity when coding in OCAML language

SetCapsLockState AlwaysOff
CapsLock & c::Send, (**){LEFT}{LEFT} ;create commentary field
CapsLock & 3::Send, ""{LEFT} ;create a pair of quote (or string field)
CapsLock & 4::Send, {{}{}}{LEFT} ;create {}
CapsLock & 5::Send, (){LEFT} ;create ()
CapsLock & 6::Send, {CTRLDOWN}{ALTDOWN}(){CTRLUP}{ALTUP}{LEFT} ;create []
;CapsLock & {LEFT}:: ;will jump to the previous (,[ or {
;CapsLock & {RIGHT}:: ;will jump to the next ), ] or }
CapsLock & i::Send, let{SPACE}{SPACE}={ENTER}{TAB}{ENTER}{BACKSPACE}in{UP}{UP}{END}{LEFT}{LEFT}
CapsLock & .::Send, let{SPACE}{SPACE}={ENTER}{TAB}{ENTER}{BACKSPACE}`;`;{LEFT}{LEFT}{LEFT}{LEFT}{LEFT}{LEFT}{LEFT}
CapsLock & ENTER::Send, {ENTER}{TAB}

I think the Scheme (or every LISP based language) version would be even more power-full. It would, when well used, avoid parenthesis problems. In Java it'll simplify all the "public synchronized void whatever () {}" boring thing...

Updates will be posted as comments.

Published at 17:59 ( 0 comments / 214 visits )
This post is public


← previous 1 2 3 next →

( 44 posts )

rss Latest posts - Subscribe to the latest posts of Black and White Rainbow

 

Català | Čeština nové | 中文 | Deutsch | English | Español | Esperanto | Ελληνικά | Français | Galego | Italiano | Nederlands | Português | More...