[Squeak-fr] relecture traduction squeak par l'exemple

Martial Boniou Martial.Boniou at ifrance.com
Lun 11 Fév 15:47:11 UTC 2008


Bonjour à tous,

Je viens de faire une mise à jour suite au courriel de JF Lefevre. Les
lignes à suivre sont destinées à Jean-Francois et aux traducteurs
(chaque remarque commence par [
[X]: remarque positive
[O]: remarque litigieuse
[-]: remarque non résolue
le premier paragraphe est la question, le second est ma réponse. ):

= Correction de SBE d'après les remarques de JF Lefevre
[2008-02-11 11:32] 
[X] ne faudrait-il pas rappeler dans le titre que c'est une traduction 
de SBE ?
(surtout pour expliquer le nom SBE alors qu'on s'attendrait à SPE ou SPLE)

Effectivement, il faudrait signaler le titre original. Normalement
cela se fait au dos de la page de garde. J'ai ajouté un mot en entête
de la page ii. (dans SBE.tex)

[X] p xi : "... construit au-dessus de Squeak mais pour qui les enseignants
d'écoles élémentaires sont le public visé)"
mélange pluriel-singulier bizarre
->construit au-dessus de Squeak mais visant plutôt un public d'enseignants
d'écoles élémentaires.

C'est lourd donc j'accepte la proposition. (dans Preface/Preface.tex)

[X] p4 : le fichier image est un cliché...
"Il est composé de deux fichiers"
ça fait bizarre de lire qu'un fichier est constitué de deux fichiers !!!
Apparemment "il" fait référence au cliché mais il vaut peut-être mieux
insister en écrivant : "Ce cliché est composé de deux fichiers : ..."

Oui! Mais ce n'est pas un "fichier image" mais le "système
image". J'ai remplacé l'erreur de traduction. (dans QuickTour/QuickTour.tex)

[X] p4 : "l’état de tous les objets du système ainsi que les classes et les méthodes
puisque ce sont aussi des objets"
un peu "lourd", je propose :
"l’état de tous les objets du système, dont les classes et les méthodes"
Pour la phrase suivante, je propose de la tourner sous la forme :
"Le second avec l'extension .changes contient le journal de toutes les
modifications apportées au système"

J'ai mis:
"Il est composé de deux fichiers: le premier nommé avec l'extension
.image contient l'état de tous les objets du système
dont les classes et les méthodes (qui sont aussi des
objets). Le second avec l'extension .changes contient
le journal de toutes les modifications apportées au code source du
système (contenu dans le fichier source)."

[X] p 4 : "Dans ce livre, nous avons utilisé pour développer tous les 
exemples"
manque des virgules.
La phrase me semble moins lourde si on l'écrit :
"Dans ce livre, nous avons utilisé la version Squeak-dev de Squeak pour
développer tous les examples. Cette image est disponible sur ..."

Effectivement!

[X] p 6 : Une fois lancé, Squeak vous présente une large fenêtre qui 
contient
des espaces de travail"
Dans la mesure où les fenêtres ne sont pas traduites, il serait 
préférable de
toujours rappeler le terme qui apparait en plus de la traduction.
Je propose : "... une large fenêtre qui contient des "espaces de travail"
(les fenêtres "Workspace" de la figure 1.2)."

Je suis d'accord. (les chapitres n'ont pas été traduits dans l'ordre
et certains termes sont mieux définis plus loin dans le texte; comme
c'est la première fois que l'on rencontre ces mots (espace de travail,
Workspace), il faut clairement les définir). J'ai donc mis:
"Une fois lancé, Squeak vous présente une large fenêtre qui contient des
espaces de travail nommés Workspace (voir la figure ...).
Notez qu'il n'y a pas de barre de menu; Squeak la remplace par des menus contextuels."

[O] P 6 : "Première interaction." ... Cliquez à l'aide de la souris ...
Les explications sur les boutons de la souris devrait être avant 
l'invitation à
cliquer.
Il serait utile de rappeler les touches qui permettent de simuler les 
boutons
manquant de la souris
Une des explications que j'ai toujours utilisées pour présenter les 
différents
boutons de Smalltalk est que le bouton rouge est manipulé avec l'index 
(pour les
droitiers).
L'index sert à montrer, désigner, éventuellement prendre et déplacer
(par drag&drop).
Le bouton jaune sert en général à activer les menus contextuels.
Le bouton bleu sert à activer le menus de la fenêtre (ou le halo du morph en
squeak).
Une des choses qui est assez déroutante en squeak est que le rouge et le 
jaune
sur le world ouvre tout deux un menu World (différent en plus), ce qui 
détruit
cette logique.

Ici, je ne suis pas d'accord. Par défaut, "cliquer" c'est cliquer avec
le premier (ou l'unique) bouton de la souris. Avant "Première
interaction", on propose dejà de clic à l'utilisateur (sur Mac ou
Windows, double-clic sur l'icône, clic sur les boutons de la
fenêtre). Pour ce qui est des clics avec les différents boutons (ou
les touches de complément), tout est expliqué juste après (page 8). Si
l'on demande à un utilisateur débutant de cliquer pour ouvrir le menu
World, il cliquera avec le bouton gauche (donc inutile d'alourdir
ici). Au sujet de la "confusion" avec les menus: en fait, il n'y a pas
deux menus World mais, un menu World accessible par le bouton rouge
(gauche par défaut) et un menu contextuel accessible par le bouton
jaune (droit par défaut). Ce dernier est le menu de la fenêtre globale
nommé 'world'. Ainsi, il n'y a pas deux 'World' mais un 'World' en un
'world' (offrant l'inspection-exploration de l'objet de classe MorphicModel).

[X] p 7 : Saisissez Time now (expression retournant le temps présent) ...
je suggère de remplacer "le temps présent" par "l'heure actuelle" ou 
"l'heure
courante"

Effectivement, c'est mieux.

[O] p 8 : ah bah oui, voilà la description des méta-touches !!!
ça arrive trop tard

Pas vraiment: à la page 6, on dit que Squeak a été concu pour du trois
boutons et qu'il existe des touches pour une souris avec des boutons
manquants. La page 7 se consacre donc à la souris standard puis la
page 8 explique le cas particulier.

[X] p 8 : "nous recommandons aux personnes gauchères de configurer leur 
souris
et d'affecter le button rouge à la gauche de leur souris, ..."
- "button rouge" n'est pas traduit (button est resté en anglais)
- le rouge à gauche pour les gaucher ? c'est sûr ça ? je leur aurais plutôt
conseillé de le mettre à droite (justement pour qu'ils le manipulent avec
l'index)
La gestion de la souris restera le premier problème fondamental pour les
débutants, quel que soit le smalltalk choisi. C'est tellement compliqué 
(1,2 ou
3 boutons, gaucher droitier, configurable dans le système hôte, configurable
dans le Smalltalk, modifiable au niveau du code)
Peut-être qu'une image smalltalk devrait s'ouvrir sur une fenêtre d'aide 
à la
configuration de sa souris et permettant de valider ses 3 boutons.

Merci pour le "button" et pour "gauchère": le premier est "bouton", le
second est "droitière". J'ai mis: "Nous recommandons aux droitiers, ..."
(je vais tirer les oreilles du traducteur et aussi celles de tous les
relecteurs qui n'ont pas pointés cette erreur (à commencer par moi)).
C'est vrai que les premiers pas sous Squeak sont parfois délicats; je
préfère le démarrage des images de Damien Cassou (squeak-dev) où on
accède directement sur le Preference Browser. Il reste encore des
choses à faire...

[O] p 9 : "La plupart des menus de Squeak ne sont pas modaux, ..."
J'ai vu que l'explicatino a été simplifié (suite à un post récent)
Je ne suis pas complètement convaincu du bien fondé de cette 
affirmation. J'ai
plutôt l'impression qu'ils sont modaux par défaut et que c'est seulement 
quand
on l'épingle qu'un menu devient non modal.

Pas du tout. Avoir des menus (contextuels ou non), ne t'empèches pas
de cliquer sur une autre fenètre. Il n'y a pas de concept de panel
comme sous Mac, NeXT, Windows où une sous-fenètre peut venir bloquer.

[O] p 13 : "Faites un glisser-déposer"
peut-être faut-il expliquer l'action (je ne suis pas sûr qu'un non
informaticien connaisse le terme, surtout en français)

Je ne suis pas sûr qu'il s'adresse à pur débutant en interface
graphique. La préface dit explicitement que le lecteur doit avoir des
notions de programmation (donc je suppose qu'il doit avoir des notions
de micro-informatiques).

[X] p 15 : "Vous avez seulement envoyé..." (é et non er à envoyé)

Bien vu!

[O] p 15 : je n'ai jamais compris pourquoi certains disent 
"Smalltalkien". Je
suppose que ça vient des Lispiens mais j'ai toujours utilisé Smalltalker
(Smalltalkeur en français).
J'ai tendance à traduire Smalltalk par "babillage" (même si ce n'est pas la
traduction qu'on trouve dans les dicos anglais-français) et du coup ça 
devient
"babilleur". "Talk" c'est "parler", et "talker" c'est "parleur".
Ce qui me console, c'est que dans le monde Smalltalk on a deux possibilités
tandis qu'en java il n'y en a aucune de satisfaisante et qu'on se retrouve à
dire un "programmeur java" ( wooaaa !!! y ont même pas de noms les 
pauvres ;-)

programmeur java = accroc à la caféine (dans les faits, c'est
certain). "Smalltalkien", ça fait plus joli que "Smalltalkeur",
"Smalltalkois', "Smalltalkiste"... En pur traduction, je dirais
"bavardeur" (ou clavardeur, vu la longueur de cet email).

[X] p 16 : "c'est l'objet, et non vous, qui choisissez la méthode appropriée
pour répondre à votre message"
"C'est l'objet .. qui choisissez" me fait bizarre
Je suggère de mettre :
"C'est l'objet qui choisit la méthode appropriée pour répondre à votre
message et non vous.
éventuellement le "et non vous" entre parenthèses)

Oui. c'est bien lourd, ça aussi. J'ai mis:
"Ce n'est pas vous mais l'objet qui choisit la méthode appropriée
pour répondre à votre message.

[X] page 20 "après avoir installé ce paquetage" (et non "installer")

Merci!

[-] page 22 : "qui ont [quelquechose ?] à voir entre elles"

Je n'ai pas encore changé. Il faut que je trouve une meilleur
formule. J'ai utilisé "connexe" au départ mais ça a été corrigé.


[X] page 31 : "le fenêtre qui s'ouvre" (la fenêtre)

Oui.

[X] page 31 : "comme[nt] répondre"

Exact.

[X] page 34 : "vous vous retrouvez exactement dans le même état ... que vous
l'avez laissé..."
la phrase est bizarre. Le "que vous l'avez laissé" s'applique à l'image ou à
l'environnement mais le début de la phrase concerne "vous".
au choix : dans le même état ... où vous l'étiez
ou alors dans le même état ... qu'au moment de la dernière sauvegarde ...

J'ai mis (avec "ée" parce que c'est l'image): 
"... que lorsque vous l'avez laissée au moment de votre dernière
    sauvegarde de cette image."

[X] page 35 : "que Smalltalk est [un] langage très simple"

Oui. (dans FirstApp/FirstApp.tex)

[O] page 39 : "la philosophie est plutôt d'avoir un code qui parle de 
lui-même."
Pas tout à fait vrai : la philosophie de départ de smalltalk était plutôt
d'avoir une à deux lignes de commentaire pour chaque méthode.
Cette habitude s'est perdue (et c'est bien dommage car c'était le 
meilleur moyen
d'apprendre). On trouve maintenant beaucoup trop de méthodes 
essentielles sans
le moindre commentaire.
qq chiffres :
vw25 30000 méthodes dont 20000 commentées
vw75 40000 méthodes dont 20000 commentées (et je ne charge pas de parcelles)
Squeak 3.9 45000 dont 22000 commentées
malheureusement, une bonne partie des méthodes de la 7.5 étaient déjà en 2.5
=> la plupart des développeurs ne commentent plus leur développement
alors que les premières versions étaient commentées au 2/3
il est vraissemblable que le phénomène soit identique pour squeak (qui 
doit lui
aussi avoir un bon historique commun avec VisualWorks).

Je suis d'accord qu'il y a un gros problème avec le manque de
commentaires. Mais la philosophie de Smalltalk reste la lisibilité. Le
reste de l'ouvrage signale la bonne (l'essentielle) pratique du commentaire.

[-] page 41 : Par convention, si une classe définit une méthode 
initialize, elle
sera appelée dès que l'objet aura été créé.
Il y a plusieurs ambiguïtés dans la phrase :
- "elle" peut faire référence à la classe ou à la méthode initialize
- "l'objet" peut laisser croire qu'on parle de la classe
- Je ne suis pas tout à fait d'accord sur le "Par convention", Je dirais 
plutôt
que c'est par construction (on hérite du mécanisme défini dans Behavior et
ProtoObject (mécanisme qui n'est d'ailleur pas commun à tous les smalltalk).
Je suggère : Par construction, lorsqu'une instance est créée, le message
initialize est automatiquement envoyé (il est encore trop tôt pour vous
expliquer comment cet "automatisme" est réalisé). La méthode initialize
peut-être redéfinie dans n'importe quelle classe pour répondre 
spécifiquement à
ce message.

C'est bien vu mais 'Par convention' reste vrai puisque c'est une
convention pour Squeak. J'ai remplacé "elle" par "la méthode". Je
reviendrais sur cette phrase plus tard.

[X] Page 43 : "La cellule doit apparaître à l'angle haut à gauche de 
l'écran"
"l'angle haut à gauche" me gène.
On dit pas plutôt "le coin haut gauche" ou le coin en haut à gauche" ?

Oui. Le "coin" où les traducteurs sont actuellement. J'ai mis "en haut
à gauche..." tout simplement.

[O] page 45 : les deux dernières lignes (7 et 8) ne sont pas indentées de la
même manière que les précédentes.
Remarque : il n'est pas nécessaire de décomposer width et height, ça donne :
self bounds: (5 at 5 extent: sampleCell extent * n + (2 * self borderWidth).
Attention cependant aux impacts sur les paragraphes suivants (variables
temporaires citées plus loin). C'est peut-être compliqué de changer ça.

Je suis d'accord: on peut faire mieux mais je ne peux que me réferer à
la version originale du code (Oscar a préferé cette version pour la
clarté). Il faudra que tu en parles sur la liste de diffusion SBE.

[X] page 45 : "...,et vous suggère un certain nombre de proposition..."
=> en général pas de virgule devant un "et"
de toutes façons, il manque un espace entre la virgule et le "et"
Répétition de Squeak dans la phrase précédente

Exact. La répétition n'est plus dans:
"Il vous indique alors .... et vous suggère ..."

[O] page 49 : "Une convention typographique."
En fait il ne manque pas grand-chose pour que ça devienne syntaxique.
La convention pour noter les noms des méthodes est d'utiliser le # des 
symboles.
Ainsi on parle plus volontier de la méthode #initialize.
Il suffit d'ajouter une méthode #>> dans Behavior (recherchant et 
retournant la
méthode compilée présente dans le dictionaire de méthode) pour autoriser :
SBEGame>>#cellsPerSide
Naturellement, on notera Object class>>#initialize pour faire référence à la
méthode de classe.

C'est déjà le cas. GST utilise cette méthode de classe.


[O] page 50 :
c position: ((i - 1) * c width) @ ((j - 1) * c height) + origin.
On pourrait écrire : (pas nécessairement moins lisible)
c position: (i @ j) - 1 * c + origin.

Même motif que tout à l'heure; c'est sur la version originale qu'il
faut changer. Tel quel, c'est bien aussi.

[X] page 51 : Afin de compléter...
Deux fois "Afin" dans la même phrase. On peut remplacer le deuxième par 
"pour".
Ou alors faire deux phrases courtes.

Oui!

[X] page 52 : en fait on s'attend plutôt à getMouseAction et setMouseAction
(avec le M majuscule).
Dans le cas présent, la méthode est atypique (car c'est un setter qui 
retourne
la valeur affectée. Je pense que c'est suffisamment rare pour signaler 
que ça
n'est pas habituel.

C'est juste. J'ai donc changé les getter/setter mais comme c'est une
perspective purement imaginaire, ce n'est pas important (ça peut être
dans un autre langage que Java/C#). C'est vrai qu'en plus, ce n'est
pas un vrai setter au sens C++/Java.

--
Martial



Plus d'informations sur la liste de diffusion Squeak-fr