Tout le monde sait qu'au moins en C, vous utilisez la printf
famille de fonctions pour imprimer une chaîne formatée. Et ces fonctions utilisent un signe de pourcentage ( %
) pour indiquer le début d'un spécificateur de format. Par exemple, %d
signifie imprimer un int
et %u
signifie imprimer un unsigned int
. Si vous n'êtes pas familier avec le printf
fonctionnement des espaces réservés de fonction et de format, ou si vous avez simplement besoin d'un rafraîchissement, l'article Wikipedia est un bon point de départ.
Ma question est la suivante: y a-t-il une raison particulièrement convaincante pour laquelle cela a été initialement ou devrait être choisi à l'avenir comme spécificateur de format?
De toute évidence, la décision a été prise il y a longtemps (très probablement pour un prédécesseur même du langage C), et elle a été plus ou moins "standard" depuis lors (non seulement en C, mais aussi dans une vaste gamme d'autres langages qui ont adopté sa syntaxe à des degrés divers), il est donc beaucoup trop tard pour changer. Mais je suis toujours curieux de savoir si quelqu'un a une idée de la raison pour laquelle ce choix a pu être fait en premier lieu, et s'il est toujours logique de choisir si l'on conçoit un nouveau langage avec des fonctionnalités similaires.
Par exemple, avec C # (et l'autre famille de langages .NET), Microsoft a pris une décision légèrement différente concernant le fonctionnement des fonctions de formatage de chaînes. Bien qu'un certain degré de sécurité de type puisse y être appliqué (contrairement à l'implémentation de printf
en C), et qu'il n'est donc pas nécessaire d'inclure une indication du type du paramètre correspondant, ils ont décidé d'utiliser des paires d'accolades bouclées à index zéro ( {}
) comme spécificateurs de format, comme ceci:
string output = String.Format("In {0}, the temperature is {1} degrees Celsius.",
"Texas", 37);
Console.WriteLine(output);
// Output:
// In Texas, the temperature is 37 degrees Celsius.
La documentation de la String.Format
méthode contient plus d'informations, tout comme cet article sur la mise en forme composite en général , mais les détails exacts sont plutôt sans importance. Le fait est simplement qu'ils ont abandonné la pratique de longue date d'utiliser %
pour indiquer le début d'un spécificateur de format. Le langage C aurait pu facilement être utilisé {d}
et {u}
, mais il ne l'a pas fait. Quelqu'un a-t-il une idée de pourquoi, si cette décision a un sens rétrospectivement et si de nouvelles implémentations devraient la suivre?
Évidemment, il n'y a aucun caractère qui pourrait être choisi qui ne devrait pas être échappable pour qu'il puisse être inclus dans la chaîne elle-même, mais ce problème est déjà assez bien résolu en utilisant simplement deux d'entre eux. Quelles autres considérations sont pertinentes?
{u}
place %u
mais aurait-il un avantage significatif? Cela semble être un choix largement arbitraire.
{}
syntaxe pour que les gens qui apprennent le C # ne commencent pas à apprendre autre chose? Je trouve très difficile de croire que c'était une partie importante, voire aucune, de leur décision de conception. Pouvez-vous sauvegarder votre relevé d'une manière ou d'une autre?
%
formatage au profit de quelque chose qui s'apparente au {}
formatage de .NET car ce dernier offre plus de flexibilité.