Em vários idiomas (uma lista ampla, de C a JavaScript):
- vírgulas
,
separam argumentos (por exemplofunc(a, b, c)
), enquanto - ponto e vírgula
;
separam instruções seqüenciais (por exemploinstruction1; instruction2; instruction3
).
Então, por que esse mapeamento é revertido nos mesmos idiomas para loops for :
for ( init1, init2; condition; inc1, inc2 )
{
instruction1;
instruction2;
}
em vez de (o que me parece mais natural)
for ( init1; init2, condition, inc1; inc2 )
{
instruction1;
instruction2;
}
?
Claro, for
é (geralmente) não é uma função, mas os argumentos (ou seja init
, condition
, increment
) se comportam mais como argumentos de uma função do que uma seqüência de instruções.
Não é devido a razões históricas / uma convenção, ou é uma boa razão para a troca de ,
e ;
em loops?
;
não usamos |
?" (ou Por que usamos 'else', não 'caso contrário'? )), que não é o caso de um idioma, mas de um grande número deles. Uma resposta que, por exemplo, "foi feita em C como um atalho para o loop while (e várias declarações para inc foram pensadas apenas mais tarde), e as pessoas não quiseram alterá-lo para evitar a irritação dos programadores" seria perfeitamente aceitável.