На многих языках (широкий список, от C до JavaScript):
- запятые
,отдельные аргументы (напримерfunc(a, b, c)), в то время как - точки с запятой
;разделяют последовательные инструкции (напримерinstruction1; instruction2; instruction3).
Так почему же это отображение в тех же языках для циклов for :
for ( init1, init2; condition; inc1, inc2 )
{
instruction1;
instruction2;
}
вместо (что кажется мне более естественным)
for ( init1; init2, condition, inc1; inc2 )
{
instruction1;
instruction2;
}
?
Конечно, forэто ( как правило) не функция, но аргументы (то есть init, condition, increment) ведут себя скорее как аргументы функции , чем последовательность инструкций.
Это связано с историческими причинами / соглашением, или есть хорошее обоснование для обмена ,и ;в циклах?
;не используем |?» (или почему мы используем «иначе», а не «иначе»? )), что не относится к одному языку, но к большому количеству из них. Ответ, например, «это было сделано в C как сокращение для цикла while (а несколько операторов для inc были продуманы только позже), и люди не хотели менять его, чтобы избежать раздражения программистов», был бы совершенно нормальным.