Je speak C#
Une grande question, difficile à répondre; dans quelle langue doit-on déclarer ses variables, méthodes et classes? Dans quelle langue devrait-on écrire ses commentaires?
Premièrement, il faut noter que je suis un francophone aguerri, prêt à bondir pour défendre sa langue. Mais, car il y a un mais, un problème survient; lorsqu’on développe une application, on utilise un langage de programmation. Ce langage est en quelque sorte une langue à part, dans la plupart des cas un sous-ensemble de l’anglais. Sa structure et ses mots correspondent à l’anglais. Quels sont les impacts de cette homogénéité? Une lecture naturelle. Par exemple:
if( serverConnection.IsOpened )
{
—Close( serverConnection );
}
on peut facilement lire, vous me pardonnerez l’expression, en changeant notre mode lecture pour l’anglais. En effet, la lecture prend tout son sens:
If the server connection is opened, close the server connection.
Si on utilise la syntaxe francophone, on se retrouve avec certaines inversions:
Si la connexion serveur est ouverte, fermer la connexion serveur.
La lecture
Maintenant, prenons un framework. Celui-ci contient déjà son lot de phrases partielles (opérations) et de noms (types et propriétés). Le mélange est quelque fois dur à avaler:
foreach( Courriel courriel in listeDeCourriels.ToArray( typeof(Courriel) ) )
—if( courriel is CourrielPerdu )
——listeDeCourriels.Remove( courrielPerdu );
Et ça empire lorsque les termes utilisés se croisent, comme dans:
emails.Add(courriel);
Le glossaire
On doit aussi prendre en compte les termes utilisés tout au long du projet. Prenez l’exemple suivant:
//La connection à la base de données utilise la chaîne de connection définie par CléChaîneDeConfiguration.
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationSettings.AppSettings[CléChaîneDeConfiguration];
Premièrement, il est clair que le cerveau n’associera pas instinctivement les termes à leur contexte. Il faut lire l’un, et traduire l’autre. Ceci ralentit substantiellement la lecture du code - quoique je n’ai aucune donnée pour appuyer mon point… il me faudra acquérir une copie de Code Switching in Conversation, de Peter Auer.
Ensuite, le développeur se retrouve avec une tâche supplémentaire: traduire le framework. En effet, lorsqu’il voudra commenter son propre code, il devra inclure des termes dans une autre langue, ou les traduire pour rendre la documentation cohérente.
Et s’il veut hériter de TextEditor pour intégrer le HTML, comment devra-t-il l’appeler? HtmlTextEditor, et y aller avec l’anglais? EditeurHtmlTexte et perdre la référence au parent? Et HTML, c’est en anglais!
Conclusion
Le mélange de plusieurs langues cause de nombreux problèmes légers qui, je crois, peuvent être mitigés en utilisant un jargon unifié.
Je considère par contre qu’un jargon francophone doit être édifié, et qu’une discussion technique puisse se faire dans notre langue natale de manière naturelle et transparente. Comme une application doit être fonctionnelle en plusieurs langues, pourquoi pas un langage? Le CLR de .NET permettrait d’édifier un langage utilisant des mots clés différents, qui resteraient toutefois compatible avec le reste du monde.
Qu’en pensez-vous?
Christian Rondeau