Todo mundo sabe que, pelo menos em C, você usa a printf
família de funções para imprimir uma string formatada. E essas funções usam um sinal de porcentagem ( %
) para indicar o início de um especificador de formato. Por exemplo, %d
significa imprimir um int
e %u
significa imprimir um unsigned int
. Se você não conhece o printf
funcionamento dos marcadores de função e formato, ou simplesmente precisa de uma atualização, o artigo da Wikipedia é um bom ponto de partida.
Minha pergunta é: existe uma razão particularmente convincente pela qual isso foi originalmente ou deveria ser escolhido no futuro como o especificador de formato?
Obviamente, a decisão foi tomada há muito tempo (muito provavelmente para um predecessor até da linguagem C), e tem sido mais ou menos "padrão" desde então (não apenas em C, mas também em uma vasta gama de outras linguagens que adotaram sua sintaxe em vários graus), então é tarde demais para mudar. Mas ainda estou curioso se alguém tem alguma idéia sobre por que essa escolha pode ter sido feita em primeiro lugar, e se ainda faz sentido como a escolha se alguém está projetando um novo idioma com funcionalidade semelhante.
Por exemplo, com C # (e a outra família de linguagens .NET), a Microsoft tomou uma decisão ligeiramente diferente em relação à operação das funções de formatação de seqüência de caracteres. Embora possa ser imposto algum grau de segurança de tipo (diferente da implementação printf
em C) e, portanto, não é necessário incluir uma indicação do tipo do parâmetro correspondente, eles decidiram usar pares de chaves com índice zero ( {}
) como especificadores de formato, assim:
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.
A documentação para o String.Format
método contém mais informações, assim como este artigo sobre formatação composta em geral , mas os detalhes exatos não são importantes. A questão é simplesmente que eles abandonaram a prática de longa data de usar %
para indicar o início de um especificador de formato. A linguagem C poderia ter sido facilmente usada {d}
e {u}
, mas não. Alguém tem alguma opinião sobre por que, se essa decisão faz sentido em retrospecto e se novas implementações devem segui-la?
Obviamente, não há nenhum personagem que possa ser escolhido que não precise ser escapável para que possa ser incluído na própria string, mas esse problema já está bem resolvido usando apenas dois deles. Que outras considerações são relevantes?
{u}
vez de, %u
mas teria alguma vantagem significativa? Parece uma escolha amplamente arbitrária.
{}
sintaxe para que as pessoas que aprendem C # não começassem a aprender mais nada? Acho muito difícil acreditar que essa foi uma parte importante, se é que alguma, da sua decisão de design. Você pode fazer backup de sua declaração de alguma forma?
%
formatação em favor de algo semelhante à {}
formatação do .NET, porque o último oferece mais flexibilidade.