Todo el mundo sabe que, al menos en C, utiliza la printf
familia de funciones para imprimir una cadena formateada. Y estas funciones usan un signo de porcentaje ( %
) para indicar el comienzo de un especificador de formato. Por ejemplo, %d
significa imprimir un int
y %u
significa imprimir un unsigned int
. Si no está familiarizado con el printf
funcionamiento de los marcadores de posición de función y formato, o simplemente necesita un repaso, el artículo de Wikipedia es un buen lugar para comenzar.
Mi pregunta es, ¿hay alguna razón particularmente convincente por la cual esto fue originalmente o debería elegirse en el futuro como el especificador de formato?
Obviamente, la decisión se tomó hace mucho tiempo (muy probablemente para un predecesor incluso del lenguaje C), y desde entonces ha sido más o menos "estándar" (no solo en C, sino también en una amplia gama de otros lenguajes que han adoptado su sintaxis en diversos grados), por lo que es demasiado tarde para cambiar. Pero todavía tengo curiosidad por saber si alguien tiene alguna idea de por qué esta elección podría haberse hecho en primer lugar, y si todavía tiene sentido como la elección si uno está diseñando un nuevo lenguaje con una funcionalidad similar.
Por ejemplo, con C # (y la otra familia de lenguajes .NET), Microsoft tomó una decisión ligeramente diferente con respecto al funcionamiento de las funciones de formato de cadena. Aunque se puede aplicar cierto grado de seguridad de tipo allí (a diferencia de la implementación de printf
en C), y por lo tanto no es necesario incluir una indicación del tipo del parámetro correspondiente, decidieron usar pares de llaves rizadas indexadas a cero ( {}
) como especificadores de formato, así:
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 documentación del String.Format
método contiene más información, al igual que este artículo sobre el formato compuesto en general , pero los detalles exactos no son importantes. El punto es simplemente que abandonaron la práctica de usar desde hace mucho tiempo %
para indicar el comienzo de un especificador de formato. El lenguaje C simplemente podría haber usado fácilmente {d}
y {u}
, pero no fue así. ¿Alguien tiene alguna idea sobre por qué, si esta decisión tiene sentido en retrospectiva, y si las nuevas implementaciones deberían seguirla?
Obviamente, no se puede elegir un personaje que no tenga que ser evitable para que pueda incluirse en la cadena en sí, pero ese problema ya está bastante bien resuelto con solo usar dos de ellos. ¿Qué otras consideraciones son relevantes?
{u}
lugar de, %u
pero ¿tendría alguna ventaja significativa? Parece una elección en gran medida arbitraria.
{}
sintaxis para que las personas que aprenden C # no comiencen a aprender nada más? Me resulta muy difícil creer que fue una parte importante, o incluso alguna, de su decisión de diseño. ¿Puedes respaldar tu declaración de alguna manera?
%
formato (una forma muy superior) en favor de algo similar al {}
formato de .NET porque este último ofrece más flexibilidad.