W wielu językach (szeroka lista, od C do JavaScript):
- przecinki
,
oddzielne argumenty (np.func(a, b, c)
), natomiast - średniki
;
oddzielne instrukcje sekwencyjne (npinstruction1; instruction2; instruction3
.).
Dlaczego więc odwzorowanie odwrócono w tych samych językach dla pętli :
for ( init1, init2; condition; inc1, inc2 )
{
instruction1;
instruction2;
}
zamiast (co wydaje mi się bardziej naturalne)
for ( init1; init2, condition, inc1; inc2 )
{
instruction1;
instruction2;
}
?
Jasne, for
jest (zazwyczaj) nie jest funkcją, ale argumenty (czyli init
, condition
, increment
) zachowują się bardziej jak argumenty funkcji niż sekwencji instrukcji.
Czy jest to spowodowane względami historycznymi / konwencją, czy też istnieje uzasadnienie dla wymiany ,
i ;
pętli?
;
nie |
?” (lub Dlaczego używamy „inny” nie „inaczej”? )), która nie jest sprawa dla jednego języka, ale duża ich liczba. Odpowiedź, że np. „Został napisany w C jako skrót dla pętli while (i wiele instrukcji dla inc było rozważanych dopiero później), a ludzie nie chcieli jej zmieniać, aby uniknąć irytacji programistów”, byłby w porządku.