Tutti sanno che, almeno in C, si utilizza la famiglia di funzioni printf
per stampare una stringa formattata. E queste funzioni utilizzano un simbolo 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 funzionamento e la formattazione di printf
dei segnaposto, o se hai semplicemente bisogno di un aggiornamento, l'articolo di Wikipedia è un buon punto di partenza.
La mia domanda è, c'è una ragione particolarmente convincente per cui questo è stato originariamente o dovrebbe essere scelto in futuro come identificatore di formato?
Ovviamente la decisione è stata presa molto tempo fa (molto probabilmente per un predecessore anche del linguaggio C), ed è stato 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. Ma sono comunque curioso di sapere se qualcuno abbia qualche idea sul perché questa scelta possa essere stata fatta in primo luogo e se abbia ancora senso come scelta se si sta progettando una nuova lingua con funzionalità simili.
Ad esempio, con C # (e l'altra famiglia di linguaggi .NET), Microsoft prese una decisione leggermente diversa riguardo al 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 ricci a indice zero parentesi graffe ( {}
) come specificatori di formato, ad esempio:
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 metodo String.Format
contiene ulteriori informazioni, come questo articolo sulla formattazione composita in generale , ma i dettagli esatti non sono importanti. Il punto è semplicemente che hanno abbandonato la prassi consolidata di usare %
per indicare l'inizio di un identificatore di formato. Il linguaggio C avrebbe potuto facilmente usare {d}
e {u}
, ma non lo fece. Qualcuno ha qualche idea sul perché, se questa decisione ha senso in retrospettiva, e se le nuove implementazioni dovrebbero seguirla?
Ovviamente non è possibile scegliere un personaggio che non debba essere sfuggito in modo che possa essere incluso nella stringa stessa, ma quel problema è già abbastanza risolto usando semplicemente due di loro. Quali altre considerazioni sono rilevanti?