« août 2008 | Accueil | octobre 2008 »
septembre 29, 2008
29 septembre 2008 - Italie - (lien permanent)
Portails de Sicile
Portes de palais, de cathédrales ou de maisons particulières. Toujours encadrées de colonnes droites ou torsadées, au moins de pilastres, surmontées d'un fronton (parfois coupé, à la mode baroque), d'un balcon en ferronnerie droit ou recourbé. Souvent démesurées par leur taille et leur ornementation par rapport à l'immeuble modeste auquel elles donnent accès. Portes vues à Palerme, Monreale, Agrigente, Piazza Armerina, Raguse, Syracuse...
Publié par thbz (septembre 29, 2008) | Commentaires (2)
septembre 28, 2008
28 septembre 2008 - Italie - (lien permanent)
Le batelier de Syracuse
Le centre historique de Syracuse, c'est Ortygie, île reliée au continent par plusieurs ponts. Pour une dizaine d'euros on peut faire le tour d'Ortygie en bateau. Le bateau est conduit par un pilote. C'était un homme solide, dans la force de l'âge, le visage marqué par le soleil. Je l'appellerai le batelier de Syracuse.
Le batelier de Syracuse fait ses commentaires en italien, en français, sans doute en anglais ou dans toute autre langue qui lui est demandée.
Il parle d'une voix agréable mais un peu mécanique. On devine qu'il a appris son texte par cœur.
Avec le batelier de Syracuse, que j'aimerais aussi appeler le timonier d'Ortygie bien qu'il n'ait rien de maoïste, l'architecture syracusaine devient limpide :
« Ici l'hôtel T..., de style Liberty... »
« Là-bas l'église M..., style baroque... »
« Maintenant une belle demeure, style baroque... »
« Vous pouvez voir un hôtel particulier, style Liberty. »
On apprend ainsi qu'à Syracuse, les bâtiments construits entre le 19e siècle et la seconde guerre mondiale sont tous de style Liberty. Auparavant, seul le style baroque était pratiqué.
Le batelier de Syracuse nous emmène un peu plus loin, jusqu'aux grottes creusées dans la falaise. En approchant il interpelle des adolescents qui attendent sur le sommet de la falaise. Juste après notre passage, l'un après l'autre ils sautent dans la mer :
Dans les grottes le batelier enthousiaste nous montre des formations géologiques plus ou moins curieuses, auxquelles sont attachées des légendes curieuses. Il arrête sa barque pour nous faire voir des sortes de coraux que l'appareil-photo apercevra mieux que moi :
Enfin le batelier nous ramène à Ortygie en nous montrant au passage les belles demeures du continent : « c'est pour les Syracusains qui ont des euros », dit-t-il à plusieurs reprises, « c'est pour les riches ». Un sourire au coin de la lèvre, il se frotte le pouce contre l'index et le majeur.
Publié par thbz (septembre 28, 2008) | Commentaires (0)
28 septembre 2008 - Divers - (lien permanent)
Entre les murs et les documentaires
Tous les journaux en parlent. Entre les murs montre en effet la vie d'un collège « difficile » comme aucun film avant lui. C'est un film passionnant et instructif. Le réalisme même du film, des situations et des personnages, pourrait faire croire qu'il s'agit d'un documentaire, alors qu'il s'agit d'une fiction qui prend la forme d'un documentaire.
Difficile, en effet, de savoir quelle est la limite entre la réalité et la fiction. Dans les films traditionnels (La Belle Personne de Christophe Honoré, par exemple), le jeu des jeunes gens est trop lisse, leurs visages trop beaux pour qu'on puisse y croire un instant. Dans Entre les murs, on finit bien par se dire qu'il doit être impossible de filmer un conseil de classe ; un conseil de discipline ; un entretien confidentiel entre deux profs. On remarque aussi qu'une scène au cours de laquelle un prof emmène un élève chez le directeur a été filmée avec au moins deux caméras et peut donc difficilement avoir été saisie sur le vif. On devine également que la présence de l'observateur, même habile (on ne voit jamais l'ombre des caméras), influe forcément sur le comportement des élèves et des profs. Les élèves, toutefois, ont l'air extrêmement naturel, plus encore que dans d'autres films tournés avec des non-professionnels (L'Esquive d'Abtellatif Kechiche). Les scènes se passent toutes dans l'école, on ne suit jamais les élèves ou le professeur dans la rue. Il n'y a pas d'histoire d'amour (indice important que l'on n'est pas dans une fiction française normale). Le spectateur naïf pourrait donc imaginer que, si certains épisodes ont été un peu scénarisés, dans l'ensemble il s'agit peut-être de scènes de classe réelles. Reste à savoir où est la limite.
Or la limite est très simple : tout est fiction, rien n'est réel. Ce qui ne veut pas dire que le film n'ait aucun rapport avec la réalité, mais que les faits eux-mêmes sont joués devant la caméra, écrits dans les grandes lignes par les scénaristes, orientés par le metteur en scène.
Le réalisateur le dit longuement : ce film est le résultat d'ateliers quasi-théâtraux auxquels les élèves participaient en dehors des heures de cours. Les scènes violentes sont inspirées de la vie d'un collège, mais inventées ; tel élève n'a pas été renvoyé, tel autre n'a pas blessé l'une de ses camarades.
Mais où le dit-il ? Dans les journaux, probablement à la télévision. Rien dans le film lui-même n'indique de quelle manière il a été tourné. La plupart des acteurs jouent un personnage qui porte le même prénom qu'eux. Les indices sont rares : le prof ne porte pas son vrai patronyme et le générique de fin permet de constater que l'élève le plus turbulent a un nom entièrement différent. Ces détails sont minimes : la plupart des spectateurs croient sans doute voir, pour l'essentiel, un documentaire.
Et ils ont un peu raison, car les documentaires ne sont pas une simple transcription de la réalité. Si Être et avoir filmait des scènes de classe réelles (contrairement à Entre les murs), si Depardon montre également des procès non fictifs (10e chambre, instants d'audience), si Michael Moore montre des personnages vrais et des faits exacts, il ne s'ensuit pas que ces documentaires donnent une vision objective de la réalité. Ils choisissent les éléments qui servent leur discours, les montent, raccourcissent le temps.
Tous ces films proposent ainsi non pas la réalité mais un regard sur la réalité, celui du réalisateur. Dans En construcción, formidable film de José Luis Guerin sur la destruction et la reconstruction d'un quartier de Barcelone, les images affichent une telle recherche esthétique que le film se place sans ambigüité possible du côté de l'essai subjectif : le spectateur ne peut s'y tromper. C'est en revanche sous une forme apparemment réaliste que 10e chambre, instants d'audience condensait en 105 minutes des dizaines d'heures d'audiences en retenant ce que le réalisateur jugeait pertinent, c'est à dire peut-être ce qu'il jugeait pittoresque, conforme à ses idées ou en tout cas ce qui était filmable, ce qui allait passer bien à l'écran. L'instituteur de Être et avoir avait pris acte de l'aspect créatif du film en exigeant d'être payé en tant que participant à l'œuvre. Les films de Michael Moore, lui aussi palmé à Cannes, sont évidemment des partis pris qui utilisent le montage, l'allusion, le rapprochement de faits et l'omission de tout argument opposé afin de construire un discours brillant dans une forme cinématographique excitante.
Ces films sont généralement passionnants, l'attention du spectateur est retenue en permanence. Après les avoir vus nous savons sûrement beaucoup plus de choses sur le milieu qu'ils nous montrent : la vie dans une classe, le fonctionnement de la justice. La difficulté est que nous ne savons pas vraiment ce que nous savons : car nous avons vu des éléments vrais, des éléments scénarisés qui correspondent à la réalité, des éléments montés et interprétés dans le sens voulu par le réalisateur. Rien ne permet, en fin de compte, de savoir vraiment ce qui relève de la simplification inhérente à la forme cinématographique, qui sait mieux transmettre les émotions et les points de vue que les informations.
Dès lors ces films sont un commencement, un encouragement à un débat. Ils valent pour tout ce qui est fait autour autour d'eux sur la place publique : pour les enquêtes des journalistes, pour les analyses de spécialistes. Et pour les commentaires des enseignants qui, dans Libération il y a quelques jours, confrontaient ce film, ce regard à leur réalité.
Publié par thbz (septembre 28, 2008) | Commentaires (0)
septembre 26, 2008
26 septembre 2008 - Divers - (lien permanent)
Le programmeur et les objets
Le programme informatique correspond concrètement à des instructions qui, une fois exécutées par la machine, ont un effet sur la réalité : affichage de fenêtres colorées sur l'écran de l'ordinateur, entrée dans la mémoire de données saisies par l'utilisateur, calcul de la paie des employés...
- Les instructions peuvent être simples : « affiche un rectangle rouge de 100 pixels par 150 au milieu de l'écran », « copie le fichier X dans le fichier Y ». Ces instructions nécessitent seulement, pour le programmeur, la connaissance de certaines fonctions à appeler. Elles ne demandent aucun effort conceptuel pour organiser des données.
- Les instructions peuvent également, c'est le cas le plus courant, être complexes. On demande à l'ordinateur d'exécuter une instruction sous certaines conditions, dans un contexte particulier, lorsque survient un événement donné. Par exemple : « fais un lien hypertexte rouge si la page distante n'existe pas, en bleu si elle existe » (sur Wikipédia), « lorsqu'un CD est chargé, cherche sur Internet les informations le concernant » (lecteurs multimédias), « à partir d'une base de données sur les individus, calcule si X et Y ont un ancêtre commun » (logiciels généalogiques)...
Ces instructions complexes demandent au programmeur, avant d'écrire le code de manipulation des données, d'organiser ces données sous une forme qui permette au code informatique de les manipuler ainsi.
Programmation fonctionnelle, programmation par objets
La programmation fonctionnelle fait les délices de nombreux étudiants et universitaires par l'économie de moyens avec laquelle elle permet de réaliser n'importe quelle tâche. (Par exemple, un programme Lisp se présente comme une série d'instructions entre parenthèses (imbriquées les unes dans les autres (avec un nombre arbitraire de niveaux (comme dans certains textes de Raymond Roussel))).)
En entreprise, comme dans le domaine des logiciels libres, on utilise plutôt la programmation par objets. La programmation par objets paraît plus proche du monde réel car elle se base sur une représentation analogique, dans le vocabulaire et la syntaxe du langage informatique, des concepts manipulés par les utilisateurs du logiciel dans leur travail ou dans leur vie de tous les jours.
Un « objet » informatique est une abstraction avec deux faces :
- dans le programme, c'est une « variable », c'est à dire un mot défini par l'utilisateur et utilisé à différents endroits du programme.
- dans la réalité, c'est un concept qui peut être une idée ou une chose matérielle.
Voyons comment cela se passe. Un programmeur qui réalise un logiciel généalogique sera amené, tout naturellement, à créer un objet de type « Personne ». Cet objet aura des attributs tels que le « nom », le « prénom », le « père » et la « mère ». Ces attributs seront, dans le programme, des variables, donc des mots manipulables selon les règles du langage. Certains de ces attributs seront eux-mêmes des attributs et pourront entrer dans des relations complexes. Ainsi le « père » et la « mère » d'une « Personne » seront eux-mêmes des objets de type « Personne », pourvus chacun d'un « nom », d'un « prénom » et... d'un « père » et d'une « mère ».
Sur ces objets seront définis des actions particulières. Ainsi l'objet « Personne » pourra être pourvu d'une action « trouver les enfants ». Cette action sera définie dans le programme informatique avec le vocabulaire et la syntaxe du langage ; elle consistera concrètement en une suite d'instructions telles que : « regarde tous les objets Personne qui existent », « extrais ceux dont l'attribut « père » correspond à la personne dont je recherche les enfants ».
Le code d'un programme à objets ressemble à ceci (dans le langage Java) :
Personne x = new Personne(); x.nom = "Watson"; x.prénom = "Bobby"; print(x.getEnfants()); // Affiche la liste des enfants
Le programmeur et la réalité
Dans les langages informatiques comme dans la communication humaine,
Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément
La rédaction d'un programme informatique, comme celle d'un discours ou d'une dissertation, n'est pas une activité de transcription automatique du monde dans des symboles. Le programmeur ne peut se contenter d'une connaissance purement technique : il doit d'abord comprendre le monde, les liens entre les choses, les besoins des personnes qui utiliseront son logiciel, leur manière de travailler (ou de s'amuser, selon le logiciel), les règles officielles et les pratiques officieuses. Bien souvent, même, il amène les utilisateurs à mieux se comprendre eux-mêmes : c'est que, confronté à la rigueur du langage informatique, il ne peut se contenter d'approximations ou de non-dits. Avant de coder le programme, il faut décoder les pratiques.
Puis le programmeur traduit ces idées, ces choses, ces normes, ces personnes même dans le vocabulaire et la syntaxe d'un langage informatique, les réduit à des « objets » en retirant tout ce qui n'est pas nécessaire aux traitements informatiques. Le talent du programmeur est alors de concevoir et de réaliser des « objets » qui sont propres à représenter l'activité des utilisateurs tout en restant manipulables efficacement (rapidement et sans « bug ») par l'ordinateur.
L'informaticien écrit : il est mi-auteur. Mais il n'écrit pas pour décrire le monde, il écrit pour produire un outil : il est donc, aussi, mi-artisan.
Ceci était le dernier article de cette série.
Précédent : la double articulation des langages informatiques .
Publié par thbz (septembre 26, 2008) | Commentaires (1)
26 septembre 2008 - Divers - (lien permanent)
Le style du programmeur
Un programme informatique, c'est d'abord un texte. On a vu que ce texte était rédigé dans un langage qui partage de nombreux points communs avec les langues humaines : double articulation, fonctions diverses. Cette diversité de moyens donne aux programmes plusieurs caractéristiques qui sortent de l'utilitarisme pur. On verra les points suivants :
- Il y a plusieurs manières de le faire ;
- Les programmeurs ont du style ;
- Les programmes informatiques peuvent être élégants.
1. Il y a plusieurs manières de le faire.
On a montré précédemment comment écrire en Perl une instruction qui vérifie qu'une variable contient un numéro de téléphone français valide, c'est à dire une série de 10 chiffres séparés éventuellement par des espaces ou des tirets :
Version 1 :
// vérifie si la ligne est à peu près de la forme nn-nn-nn-nn-nn // où nn est un nombre de deux chiffres die "$_ n'est pas un numéro de téléphone valide !" unless /^((\d){2}[ \.-]?){4}(\d){2}$/;
Or il y a de nombreuses manières de réaliser cette vérification. C'est particulièrement vrai avec le langage Perl, dont la devise est TIMTOWTDI, ce qui signifie : « There is more than one way to do it ». Ainsi le code suivant est exactement équivalent :
Version 2 :
my $nb_tel = $_; unless($nb_tel =~ /^ ( (\d){2} # deux chiffres... [ \.-]? # suivis peut-être d'un tiret, point ou espace ){4} # le tout répété 4 fois... (\d){2} # avec ensuite deux chiffres $/x) { # Si $nb_tel ne respecte pas les règles des numéros de # téléphone français, on renvoit une erreur die "$nb_tel n'est pas un numéro de téléphone valide !"; }
L'algorithme utilisé est exactement le même. La seconde rédaction est plus claire : le second programmeur a pris soin de structurer son code et de le commenter afin de le rendre plus aisément compréhensible pour tout informaticien (y compris lui-même quelques mois plus tard) qui serait amené à intervenir sur ce programme ultérieurement.
On pourrait envisager d'autres écritures qui modifient non seulement l'apparence immédiate du programme, mais également l'algorithme qu'il utilise. L'algorithme, c'est l'ensemble des étapes et calculs internes par lesquels passe l'ordinateur, guidé par le programme, afin de vérifier que le numéro de téléphone est bien composé de cinq paires consécutives de chiffres.
Version 3 :
my $nb_tel = $_; my $state = 0; my $nbpaires = 0; eval { for my $c (split //, $nb_tel) { if($state == 0) { $nbpaires++; die if $nbpaires > 5; die unless $c =~ /\d/; $state = 1; } elsif($state == 1) { die unless $c =~ /\d/; $state = 2; } else { die unless $nbpaires <= 4; die unless $c =~ /[ \.-\d]/; $state = 0 if $c =~ /[ \.-]/; $state = 1, $nbpaires++ if $c =~ /\d/; } }; }; die "n'est pas un numéro de téléphone valide !" if $@;
Cette version est beaucoup plus longue que la première.
2. Les programmeurs ont du style.
Il y a donc plusieurs manières d'atteindre le même but. Cette possibilité de choix conduit chaque programmeur à adopter, plus ou moins consciemment, un « style » propre. Deux programmeurs différents n'écriront pas le même programme. C'est que les langages informatiques sont bien des langages : deux faits de langages par deux énonciateurs différents ne seront jamais identiques.
Or le langage informatique a deux cibles :
- une cible principale, l'ordinateur à qui le programme donne des instructions ;
- une cible secondaire, les autres programmeurs (ou le même programmeur plusieurs mois plus tard) qui auront peut-être besoin de comprendre le fonctionnement interne du programme.
Le style du programmeur joue sur ces deux cibles. D'une part le choix de l'algorithme peut avoir un effet sur les performances du programme : la version 2 et la version 3 du programme ci-dessus utilisent des algorithmes différents, donc l'ordinateur exécutera des tâches distinctes, de sorte que le temps d'exécution sera sans doute légèrement différent.
D'autre part le choix de la ponctuation et de la mise en forme a un effet sur la lisibilité du programme. La version 2 du programme comporte plus d'espaces et de commentaires que la version 1 et devrait être plus facilement compréhensible.
3. Les programmes informatiques peuvent être élégants.
Un professeur de Maths Spé, homme d'une grande valeur avec lequel les élèves passaient quatre heures tous les jours sans jamais se lasser de lui, arrivait parfois le matin en disant : « Tiens, hier soir j'ai repensé au théorème que je vous ai démontré hier et j'ai trouvé une nouvelle preuve... » La nouvelle démonstration n'était pas « meilleure » que la précédente : l'une comme l'autre suffisait à établir la validité du théorème. Sans doute atteignait-elle ce but d'une manière plus simple, ou plus concise : cela satisfaisait le sens esthétique du professeur.
De la même manière, les programmeurs sont sensibles à la dimension esthétique des programmes. Face aux trois exemples présentés ici, chacun selon son expérience, sa sensibilité, ses critères de qualité, trouvera certainement qu'une version est plus « élégante ».
Un hacker préférera peut-être la version 1, parce qu'elle remplit sa mission avec une grande économie de moyens grâce à une utilisation de fonctionnalités avancées du langage Perl. Un programmeur moins habitué au langage trouvera au contraire cette version horrible et préférera la deuxième (s'il connaît un peu les « expressions régulières ») ou la troisième (s'il a déjà réalisé des « machines d'état »). Dans un environnement où le travail en commun prime, les versions les plus lisibles et les mieux commentées auront la préférence de l'équipe, tandis que les versions concises seront présentées comme exemple sur les forums spécialisés de passionnés.
Précédent :
Fin : le programmeur et les objets.
Publié par thbz (septembre 26, 2008) | Commentaires (0)
septembre 25, 2008
25 septembre 2008 - Divers - (lien permanent)
La double articulation des langages informatiques
La double articulation est le phénomène qui explique comment le langage, avec quelques dizaines de signes différents seulement, peut décrire le monde entier et exprimer une infinité d'idées différentes.
On verra ici :
- la double articulation en linguistique
- la double articulation dans les langages informatiques
On se posera à la fin une question à laquelle, par paresse, on n'essaiera même pas d'apporter une réponse.
La double articulation en linguistique
D'après André Martinet, un discours peut se découper en éléments plus petits à deux niveaux différents :
- d'abord, une phrase est une succession d'unités de signification minimales ou monèmes. Un monème a un son et un sens. Il s'agit le plus souvent de mots ou de parties de mots. Par exemple, footballeur contient deux monèmes : football et la terminaison -eur.
Les mots ont un sens mais ils n'apportent aucune information. Les mots Web, chaise, récent évoquent une invention, un type d'objet, un qualificatif, mais personne n'apprend quoi que ce soit en les entendant prononcer séparément. Pour transmettre une information et amorcer une communication, il faut combiner (articuler) les unités minimales de sens et produire une phrase, qui est une unité minimale de transmission de l'information : Le Web est plus récent que les chaises. On peut être d'accord ou pas avec une phrase.
- ensuite, le monème lui-même se décompose en unités phonologiques minimales ou phonèmes. Les phonèmes ont un son mais pas de sens. Ils correspondent souvent à une lettre dans la langue écrite. Le monème lettre contient 6 lettres mais seulement 4 phonèmes, car tt correspond à un seul phonème et le dernier e est muet. Au contraire, axe contient plus de phonèmes que de lettres à cause de la lettre x ([ks]). Certains, comme Mallarmé pour la langue anglaise, ont tenté d'associer des significations partielles, en tout cas des connotations, aux sons ou aux syllabes, mais d'une manière générale Saussure a raison : « le signe est arbitraire », le mot est formé de phonèmes qui n'ont pas de rapport avec le sens du mot.
La puissance d'un tel système lui permet d'exprimer toutes les nuances imaginables de la pensée à partir d'une quarantaine de sons élémentaires.
Tous les systèmes de codes ne sont pas pourvus de la double articulation. En vérité, la double articulation est une qualité rare dans le monde des symboles.
Ainsi dans le code de la route, le nombre de messages possibles est non pas infini, mais limité au nombre de panneaux définis dans le « langage ». Le panneau est, comme la phrase dans les langues humaines, l'unité minimale de transmission de l'information. En l'occurrence, il possède une fonction conative ou référentielle : « arrêtez-vous », « cette rue est une impasse », « des cervidés traversent souvent cette route ». Ce code n'a qu'une articulation embryonnaire. Les couleurs du panneau, sa forme, les symboles qui occupent sa partie centrale ont un certain sens minimal et s'assemblent entre eux d'un panneau à l'autre, mais ces combinaisons sont très limitées et le code de la route a un pouvoir expressif très limité.
Certaines langues, sous leur forme écrite, ne possèdent pas la double articulation. La langue française écrite articule les lettres en mots et les mots en phrases, de même que la langue française parlée articule les phonèmes en monèmes et les monèmes en discours. En chinois et en japonais, la langue parlée utilise comme chez nous la double articulation (phonèmes, mots, discours). Dans la langue écrite, en revanche, la situation est plus ambigüe. À première vue, les idéogrammes seraient les unités minimales porteuses de sens et n'auraient pas d'articulation interne : d'où la nécessité de milliers et de milliers de signes, afin de représenter les milliers et les milliers de mots. En réalité, les mots sont souvent écrits avec deux ou plusieurs idéogrammes ; et les idéogrammes eux-mêmes, comme l'atome de Thomson, s'analysent graphiquement en éléments tels que la « clé », pourvue d'un peu de sens qui peut concourir au sens de l'idéogramme. L'unité minimale de sens est, dans ces langues, particulièrement difficile à isoler.
Le système hangeul utilisé pour écrire la langue coréenne est un cas encore plus particulier. Non seulement le hangeul, contrairement à ses voisins, adopte résolument la double articulation (lettres, mots, phrases), mais il va plus loin et propose une sorte de troisième articulation. Les 24 jamo (lettres) sont construits par application de règles logiques et visuelles (certains imitent la position de la langue et de la bouche), en partant d'un tout petit nombre d'éléments graphiques disposés à l'intérieur du caractère : segments, cercles qui sont les véritables unités graphiques minimales. Ces trois ou quatre traits de base, par une combinaison de combinaisons de combinaisons, suffisent à exprimer toute la richesse du monde et des concepts humains.
La double articulation dans les langages informatiques
Les langages informatiques, je ne l'ai vu nulle part exprimé clairement jusqu'à présent (cela serait-il trop évident ?), sont pourvus de la double articulation. Soit l'exemple suivant :
printf("Hello, world");
Humains comme ordinateurs vont, consciemment ou pas, lire ce programme en suivant une procédure à deux niveaux :
1. l'analyse lexicale.
L'analyse lexicale est une étape de l'interprétation des programmes par les ordinateurs. Elle peut être réalisée par un outil tel que lex.
L'analyse lexicale regroupe les lettres en « mots », c'est à dire en unités minimales dotées d'une signification ou d'un rôle dans le langage considéré. Les « lettres » sont définies par le langage ; il s'agit des caractères (A à Z) mais également des chiffres et des signes de ponctuation. Les mots sont pour certains définis dans le langage ou (variables) par le programmeur lui-même à l'intérieur du programme. Les signes de ponctuation peuvent être considérés comme des mots, car ils jouent un rôle sémantique déterminant dans les langages informatiques. Les mots du programme ci-dessus seront donc les suivants :
printf
(
"
Hello, world
"
)
;
Par exemple :
- printf est une fonction : ce mot sert à l'affichage d'un message sur l'écran ;
- les guillemets (") indiquent le début ou la fin d'une chaîne de caractères.
2. L'analyse syntaxique.
Isolés, ces mots ne produiraient aucune action. Le code printf n'est pas suffisant, il ne serait même pas accepté tel quel par l'ordinateur.
Il faut combiner les mots entre eux afin de produire des instructions, équivalents des phrases. L'instruction printf("Bonjour"); aura un effet concret : elle affichera un message sur l'écran de l'ordinateur.
Cette seconde étape est l'analyse syntaxique, qu'un ordinateur peut réaliser à l'aide d'un outil tel que yacc.
Pour les langages informatiques sont-ils pourvus de la double articulation ?
Les concepteurs de langages informatiques ont peut-être, directement ou indirectement (via des ouvrages théoriques sur l'informatique), entendu parler du principe de double articulation des langues humaines.
Plus probablement, ils se sont trouvés face à des ordinateurs pourvus de claviers. Ces claviers, qui servaient également à saisir du texte classique (noms de personne, chiffres comptables, voire œuvres littéraires), avaient des touches correspondant à des lettres, chiffres, signes de ponctuation. Ils ont donc, par facilité, conçu des langages qui utilisaient ces signes. Le nombre de programmes a réaliser était très supérieur au nombre de touches du clavier (contrairement à une cabine de pilotage d'avion, où il y a à peu près autant de touches que de commandes possibles) et l'utilisation des lettres du clavier encourageait à comparer les « textes » informatiques aux productions des langues humaines : dès lors la double articulation a dû s'imposer naturellement.
Cela a fonctionné tellement bien que personne n'a jamais trouvé une meilleure manière de fournir des instructions à un ordinateur. Des premiers langages des années 50 (Fortran, Lisp) aux plus récents et répandus aujourd'hui (C, Java, C#), jusqu'aux codes descriptifs tels que HTML et XML, la quasi-totalité des langages utiles et utilisés reposent sur ce principe.
Il faut toutefois s'interroger : si la programmation informatique avait été inventée non aux États-Unis, mais en Chine ou au Japon, qui sait à quoi auraient ressemblé les langages informatiques ? Des informaticiens habitués à des langues écrites où le rapport entre le sens et la forme est radicalement différent du quasi-mimétisme qui existe chez nous entre l'écrit et l'oral n'auraient-il pas, sans doute, mis au point des langages informatiques dont nous n'avons pas même idée ?
Précédent : les six fonctions du langage ;
Suivant : le style du programmeur.
Publié par thbz (septembre 25, 2008) | Commentaires (0)
25 septembre 2008 - Divers - (lien permanent)
Les six fonctions des langages informatiques
Roman Jacobson a identifié six fonctions pour les langages humains. Une page du site de l'Université du Québec à Montréal les définit comme ceci :
La fonction expressive : elle est centrée sur le sujet qui parle : sentiments, émotions, mimiques, etc.
La fonction conative : cette fonction permet au destinateur d'agir sur le destinataire (inciter à écouter, à agir, à émouvoir).
La fonction phatique : cette fonction est relative au contact. Elle permet de provoquer et de maintenir le contact.
La fonction métalinguistique : cette fonction s'exerce lorsque l'échange porte sur le code lui-même et que les partenaires vérifient qu'ils utilisent bien le même code. Cette fonction consiste donc à utiliser un langage pour expliquer un autre langage.
La fonction référentielle : cette fonction permet de dénoter le monde qui nous entoure, c'est le référent, c'est-à-dire «de quoi il s'agit».
La fonction poétique : elle ne se limite pas à la poésie seulement, car tout message est expressif. Cette fonction se rapporte à la forme du message dans la mesure où elle a une valeur expressive propre.
Il me semble que les langages informatiques utilisent d'abord la fonction conative, celle qui tente d'obtenir une action de la part du destinataire du message : un programme informatique, c'est tout d'abord une série d'ordres adressés par un programmeur (humain) à une machine (informatique). Par exemple, le programme suivant ordonne à la machine d'afficher un message :
print("Bonjour");
La fonction référentielle, qui constitue la fonction principale (souvent la seule à laquelle on prête attention) des langages humains, n'occupe qu'une place résiduelle dans les programmes informatiques. On peut la localiser dans les commentaires, qui sont des morceaux de code destinés non pas à donner des ordres à la machine, mais à apporter des informations aux humains (programmeurs) qui seraient amenés à lire le programme. Ainsi dans le programme Perl vu précédemment, un programmeur bien élevé ajouterait un commentaire pour indiquer ce que fait le code à ses collègues dont la langue maternelle n'est pas le Perl :
# vérifie si la ligne est à peu près de la forme nn-nn-nn-nn-nn # où nn est un nombre de deux chiffres die "$_ n'est pas un numéro de téléphone valide !" unless /^((\d){2}[ \.-]?){4}(\d){2}$/;
La fonction référentielle est en revanche la fonction majeure dans des langages qui ne sont pas des langages de programmation, mais des langages de description. Ainsi le langage HTML décrit une page Web, le langage XML décrit un ensemble de données. Ces langages n'ont aucune action par eux-mêmes, ils ne « servent » à quelque chose que lorsque des programmes écrits à l'aide de ces langages sont lus et interprétés par des programmes écrits dans des langages de programmation : ainsi Internet Explorer ou Firefox, écrits en langage C ou C++, lisent des fichiers écrits en HTML.
De nombreuses instructions ont également un rôle métalinguistique. Il s'agit alors d'ajouter au langage, en utilisant sa syntaxe, de nouveaux éléments de vocabulaire :
(define (redimensionner largeur hauteur) (let* ((largeur-courante (get-largeur-courante)) (hauteur-courante (get-hauteur-courante))) ... )
Ce code écrit en Scheme (dialecte du langage Lisp) définit de nouveaux « mots » de plusieurs natures : redimensionner
est une fonction ; largeur
, hauteur
, largeur-courante
et hauteur-courante
sont des variables. Ces variables sont des mots très particuliers car elles sont locales, c'est à dire qu'elles ne seront reconnues que dans une partie du texte que constitue le programme. Dans les langages humains, l'invention d'un nouveau mot est exceptionnelle ; lorsqu'un auteur s'y risque, il ne limite pas la validité de ce mot à une partie de son livre (une page, un chapitre), mais espère au contraire que d'autres auteurs, convaincus de son utilité, reprendront ce mot dans leurs écrits.
La fonction phatique n'a guère lieu d'être : la machine est là pour écouter les programmes qu'on lui fait exécuter et il n'y a guère besoin, une fois que le programme a été lancé, de maintenir le lien avec elle. La fonction phatique est toutefois présente en négatif, dans l'instruction qui met fin à l'exécution du programme et rompt la communication :
exit();
Quant à la fonction expressive, elle paraît difficile à remplir pour un programme informatique puisqu'elle suppose que le même énoncé peut être exprimé de plusieurs manières, qui dénotent des émotions propres à l'émetteur du message. On verra qu'on peut, en informatique, atteindre le même but au moyen de plusieurs programmes différents, mais, une fois le programme écrit en suivant les règles du langage, il n'y a guère qu'une manière de l'« énoncer » : c'est de le faire exécuter par la machine.
La fonction poétique fera l'objet d'une note ultérieure sur le style dans l'écriture d'un programme informatique.
Précédent : la poésie informatique ;
Suivant : la double articulation des langages informatiques.
Publié par thbz (septembre 25, 2008) | Commentaires (3)
25 septembre 2008 - Divers - (lien permanent)
Poésie informatique
Larry Wall, après une formation de linguiste, a créé le langage Perl en 1987. Perl est le langage informatique qui ressemble le plus à un langage naturel. À tel point que certains écrivent de la poésie en Perl. Le texte suivant est le début d'un poème de Sharon Hopkins écrit en respectant les règles syntaxiques de Perl ; c'est donc un programme informatique, qui ne fait toutefois rien de vraiment utile (voir la version complète) :
#!/usr/bin/perlAPPEAL:
listen (please, please);
open yourself, wide;
join (you, me),
connect (us,together),tell me.
do something if distressed;
(...)
Le même langage est pourtant célèbre auprès des informaticiens non pour son élégance, mais pour sa complexité qui peut le rendre illisible. Le code suivant, qu'un programmeur Perl expérimenté trouvera clair et lumineux, paraîtra bien abscons à tout autre informaticien :
die "$_ n'est pas un numéro de téléphone valide !" unless /^((\d){2}[ \.-]?){4}(\d){2}$/;
La poésie Perl est est un détournement des langages informatiques, qui ne sont pas faits pour ça : purs outils en principe, voilà qu'ils font l'objet d'une contemplation esthétique. On verra par la suite d'autres preuves que les langages informatiques ne sont pas de simples codes impersonnels.
Quant au caractère poétique de ces poèmes, tous n'y seront peut-être pas sensibles. Ces tentatives ont pourtant quelque chose de l'Oulipo dans les contraintes énormes qu'elles se posent, et d'E.E. Cummings dans leur résultat :
t.h;r:u;s,h;e:sare
silent
now.in silverly
notqu
-it-
enessdre(is)ams
a
the
of moon
E.E. Cummings, 73 poems, n° 48
Introduction : l'adieu à l'informatique.
Suivant : les six fonctions des langages informatiques.
Publié par thbz (septembre 25, 2008) | Commentaires (2)
25 septembre 2008 - Divers - (lien permanent)
L'adieu à l'informatique
Comme l'indique l'avertissement qui précède chaque page de ce bloc-notes, j'écris sur des sujets dont je ne suis pas spécialiste. C'est donc le moment de commencer à parler ici d'informatique, car je vais dans les jours à venir (la vie est la vie) commencer à perdre ma compétence dans ce domaine.
Les langages informatiques sont des langages. Certes, mais jusqu'à quel point ?
- la poésie informatique ;
- les six fonctions des langages informatiques ;
- la double articulation des langages informatiques ;
- le style du programmeur ;
- le programmeur et les objets.
Publié par thbz (septembre 25, 2008) | Commentaires (3)
septembre 14, 2008
14 septembre 2008 - Arts, architecture... - Italie - (lien permanent)
Mosaïques de Sicile
L'art majeur en Sicile, lorsqu'il s'agit de recouvrir un mur, un sol ou un plafond, ce n'est pas la peinture, c'est la mosaïque. Certes l'île a vu apparaître de nombreux peintres au long des siècles : parmi eux le grand Antonello da Messina, artiste qui réunit l'intime au monumental ; mais il n'est guère sicilien que de naissance, son art est italien ou flamand. J'ai vu quelques-unes de ses œuvres de San Gimignano à Bucarest. La mosaïque, en revanche, est l'art dans lequel la Sicile a atteint la perfection et s'est distinguée des autres régions d'Europe : d'abord au temps des Romains, ensuite lors de la période normande.
La ville romaine du Casale, près de Piazza Armerina, répertorie au fil de ses nombreuses salles l'imaginaire et les jeux de la Rome impériale : mythologie, scènes de chasse, animaux locaux ou exotiques, « filles en bikini », avec une expressivité toujours fascinante :
Au Moyen-Âge, qui n'a ici rien de moyenâgeux, l'influence arabe répand des motifs géographiques complexes et de grand goût sur le sol de la petite église romane normande de San Cataldo, à Palerme :
Ces pavements de céramiques se retrouvent à la Martorana et à la chapelle Palatine. Dans ces églises, toutefois, c'est par les murs et les plafonds que l'œil est d'abord attiré. La Martorana est construite par un grand seigneur du temps de Roger II, à l'apogée du royaume normand :
À la chapelle Palatine (1131), Roger II lui-même, grand roi qui a réuni les influences catholiques, byzantines, arabes, illumine les murs de mosaïques dorées :
Puis à Monreale (1176), Guillaume II imite sur une échelle plus vaste et plus magnifique encore la chapelle Palatine de son grand-père Roger II. Le chevet lui-même affiche à la baie de Palerme ses murs ornés de motifs géométriques bicolores qui me rappellent les églises romanes d'Auvergne :
À l'intérieur enfin, comme à la Palatine mais en plus grandiose encore, tout le cycle de la Bible est raconté en mosaïque :
Tandis que les mosaïques géométriques qui recouvrent les sols et les murs sont toujours aussi belles et inventives :
En 1194, la période normande s'achève et la Sicile n'est plus qu'une partie de l'Empire. L'art de la mosaïque semble s'effacer alors. La Sicile refleurira avec l'architecture baroque, cinq siècles plus tard.
Publié par thbz (septembre 14, 2008) | Commentaires (4)
septembre 13, 2008
13 septembre 2008 - Arts, architecture... - Italie - (lien permanent)
Baroque en Sicile
D'après Heinrich Wölfflin dans Renaissance et Baroque, le style baroque se caractérise par la recherche de masses larges et lourdes ; par des angles arrondis, rognés par la multiplication des colonnes, jusqu'à les faire disparaître ; par des façades incurvées ou au contraire bombées, où le second étage est beaucoup moins large que le premier, auquel il est lié par des consoles ; par des frontons rompus (j'expliquerai plus bas tout cela par des photos) ; par l'accumulation sur les parois de colonnes redoublées ou torsadées, de pilastres, de statues, de médaillons et autres motifs décoratifs, jusqu'à faire perdre de vue la paroi elle-même. Ainsi s'exclame-t-il devant Saint-Pierre de Rome :
Devant toute cette abondance de motifs superposés et enchevêtrés, on ne sait presque plus où se trouve réellement le mur qui clôt l'espace. Et c'est justement cette aversion pour toute délimitation précise qui est peut-être le trait le plus marquant de ce style.
Je ne rapporte ici que ses remarques relatives aux façades d'églises. Il ne prétend décrire que la première période du baroque à Rome, seule qui l'intéresse dans ce livre (il l'écrit à l'âge de 24 ans après un voyage en Italie). Voyons ce qu'il en est de la Sicile.
En Sicile, le baroque a été introduit par les Espagnols, qui dominent l'île jusqu'au début du XVIIIe siècle. Il est présent à Palerme dans de nombreuses églises et se généralise dans tout le sud-est de l'île après le tremblement de terre de 1693. Cette catastrophe détruit la plupart des villes de la région de Noto et de Syracuse, qui perdent presque tout leur patrimoine architectural antérieur. Elles seront reconstruites, sur place ou à quelque distance. Le baroque n'est pas né en Sicile, mais nulle part ailleurs, peut-être, il n'est aussi présent.
Un exemple de façade sur deux niveaux, avec consoles (les trucs arrondis au second niveau de part et d'autre), façade bombée au centre, colonnes redoublées mais pas partout, décoration assez sobre avec quelques œils-de-bœufs et médaillons (Modica, église San Giorgio) :
Des colonnes torsadées à l'église San Francesco Saverio de Palerme (les plus célèvres colonnes torsadées sont celles du baldaquin du Bernin à Saint-Pierre de Rome) :
À Noto, une façade très convexe à l'église de Montevergine :
À Syracuse, la très belle façade du Duomo, avec deux frontons rompus (les triangles auxquels manquent la partie centrale) au-dessus du portail et tout au sommet de la façade :
Le Duomo de Catane, au blanc et gris élégant...
... et à la façade agitée de vagues, les chapiteaux de colonnes semblant s'orienter chacun dans une direction différente :
Le joyau absolu, le Duomo de Noto face au soleil couchant, pour le plaisir de voir une cathédrale baroque neuve (détruit par un effondrement en 1996, il a été entièrement reconstruit) :
Enfin, dans la ville idéale de Raguse, le sublime Duomo qu'on ne peut voir qu'en levant les yeux, perché au sommet de la place principale où nul arbre ne peut lui faire ombre :
Triples colonnes, consoles augmentées de sculptures aériennes, façade bombée, toute claire, matinale, au-delà de laquelle même le dôme rajouté au XIXe siècle est élégant :
Voilà, on a retrouvé à peu près tous les éléments de Wölfflin sur les façades. Quant aux intérieurs, cela sera peut-être pour une autre fois...
Publié par thbz (septembre 13, 2008) | Commentaires (2)
septembre 11, 2008
11 septembre 2008 - Arts, architecture... - Italie - (lien permanent)
Villes verticales de Sicile
Pour une surprise, c'en fut une. À travers la brume, c’était tellement étonnant ce qu'on découvrait soudain que nous nous refusâmes d'abord à y croire et puis tout de même quand nous fûmes en plein devant les choses, tout galérien qu'on était on s'est mis à bien rigoler, en voyant ça, droit devant nous...Figurez-vous qu’elle était debout leur ville, absolument droite. New York c'est une ville debout. On en avait déjà vu nous des villes bien sûr, et des belles encore, et des ports et des fameux mêmes. Mais chez nous, n'est-ce pas, elles sont couchées les villes, au bord de la mer ou sur les fleuves, elles s’allongent sur le paysage, elles attendent le voyageur, tandis que celle-là l’Américaine, elle ne se pâmait pas, non, elle se tenait bien raide, là, pas baisante du tout, raide à faire peur.
La photo ne représente pas New York mais Raguse, en Sicile. Toutes deux se présentent d'un seul coup, dans leur ensemble, de toute leur hauteur, au voyageur fatigué qui les atteint enfin. À Raguse, c'est depuis la via Risorgimento, qui serpente sur la colline d'en face, à la même hauteur, que l'on découvre peu à peu le manteau de maisons qui recouvre les plis et les replis, les courbes et les étirements de l'éperon rocheux sur lequel la ville a été construite. Au cœur d'une île où l'art majeur est la mosaïque et non la peinture, les maisons sont les carreaux d'une œuvre gigantesque. Rues, places, carrefours restent invisibles.
Aucune photographie ne peut faire partager cette vision qui se déploie au fur et à mesure que l'on avance sur la route. Ce panoramique mal fait n'en présente qu'une partie réduite.
Raguse n'est pas isolée. La Sicile a créé de nombreuses autres falaises urbaines. Ainsi à Enna, à Modica, à Piazza Armerina :
Souvent ces villes sont composées de deux parties, l'une ancienne, l'autre récente, reconstruite après le tremblement de terre de 1693. Les deux centres sont alors reliés par un escalier. Celui de Raguse passe là où il peut entre les maisons, celui de Modica se pare de magnifiques massifs floraux. Le plus monumental, le plus effrayant à cause de sa régularité absolue et de l'absence de palier est toutefois le grand escalier de Caltagirone, unique par les céramiques qui ornent chacune de ses marches :
Et pour une autre vision verticale de ville, celle de Paris dans le 13e arrondissement :
Publié par thbz (septembre 11, 2008) | Commentaires (1)
septembre 09, 2008
09 septembre 2008 - Italie - (lien permanent)
Sicile
Sicile, août-septembre 2008. On pourrait, dans les jours à venir, parler de motifs arabo-normands et de façades baroques, de portails et de mosaïques, d'escaliers tortueux, de villes verticales...
Publié par thbz (septembre 09, 2008) | Commentaires (0)