Tutti sanno che, almeno in C, si utilizza la printf
famiglia di funzioni per stampare una stringa formattata. E queste funzioni usano un segno di percentuale ( %
) per indicare l'inizio di un identificatore di formato. Ad esempio, %d
significa stampare un int
e %u
significa stampare un unsigned int
. Se non hai familiarità con il printf
funzionamento della funzione e del formato dei segnaposto o hai semplicemente bisogno di un aggiornamento, l'articolo di Wikipedia è un buon punto di partenza.
La mia domanda è: esiste un motivo particolarmente convincente per cui questo è stato originariamente o dovrebbe essere scelto in futuro come identificatore del formato?
Ovviamente la decisione è stata presa molto tempo fa (molto probabilmente per un predecessore anche del linguaggio C), ed è stata più o meno "standard" da allora (non solo in C, ma anche in una vasta gamma di altre lingue che hanno adottato la sua sintassi a vari livelli), quindi è troppo tardi per cambiare mai. Ma sono ancora curioso di sapere se qualcuno ha qualche idea sul perché questa scelta potrebbe essere stata fatta in primo luogo e se ha ancora senso come scelta se si sta progettando un nuovo linguaggio con funzionalità simili.
Ad esempio, con C # (e l'altra famiglia di linguaggi .NET), Microsoft ha preso una decisione leggermente diversa per quanto riguarda il funzionamento delle funzioni di formattazione delle stringhe. Sebbene un certo grado di sicurezza del tipo possa essere applicato lì (diversamente dall'implementazione di printf
in C), e quindi non è necessario includere un'indicazione del tipo del parametro corrispondente, hanno deciso di utilizzare coppie di parentesi graffe a indice zero ( {}
) come identificatori di formato, in questo modo:
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 documentazione per il String.Format
metodo contiene ulteriori informazioni, così come questo articolo sulla formattazione composita in generale , ma i dettagli esatti sono piuttosto irrilevanti. Il punto è semplicemente che hanno abbandonato la pratica di lunga data dell'uso %
per indicare l'inizio di un identificatore di formato. Il linguaggio C avrebbe potuto facilmente essere usato {d}
e {u}
, ma non lo fece. Qualcuno ha qualche idea sul perché, se questa decisione ha un senso a posteriori e se le nuove implementazioni dovrebbero seguirla?
Ovviamente non c'è nessun personaggio che possa essere scelto che non debba essere evitato in modo che possa essere incluso nella stringa stessa, ma quel problema è già abbastanza ben risolto semplicemente usando due di essi. Quali altre considerazioni sono rilevanti?
{u}
invece di %u
ma avrebbe qualche vantaggio significativo? Sembra una scelta in gran parte arbitraria.
{}
sintassi in modo che le persone che imparano C # non inizino a imparare nient'altro? Trovo molto difficile credere che sia stata una parte importante, se non addirittura una, della loro decisione di progettazione. Puoi fare il backup della tua dichiarazione in qualche modo?
%
formattazione a favore di qualcosa di simile alla {}
formattazione di .NET perché quest'ultima offre maggiore flessibilità.