LINUX.ORG.RU

История изменений

Исправление hateyoufeel, (текущая версия) :

Не знаю, может потому что c aliasing. Компилер не знает, *a содержит все еще то же значение или что-то другие и фетчит его из памяти каждый раз. Но в Си можно указать, что *a не будет меняться. minus_swap(restric *a, …). Как-то так.

Всё проще, анон. В первом варианте переменные просто загружаются в разные регистры, а потом сгружаются обратно, но адреса поменяны местами.

А ещё в варианте с минусом потенциальное переполнение, и от этого сишным компилятором рвёт жопу. А потом сишникам, ибо UB.

Скептически смотрю на раст, т.к. не уверен что он может быть первым яп.

Так и есть. Только Си им тоже быть не может. Люди, у которых си – первый язык, вырастают лютыми говнокодерами.

ИМО важнее, чтоб яп был простым.

Си не является простым языком. Даже близко.

Исходная версия hateyoufeel, :

Не знаю, может потому что c aliasing. Компилер не знает, *a содержит все еще то же значение или что-то другие и фетчит его из памяти каждый раз. Но в Си можно указать, что *a не будет меняться. minus_swap(restric *a, …). Как-то так.

Всё проще, анон. В первом варианте переменных просто загружаются в разные регистры, а потом сгружаются обратно, но адреса поменяны местами.

А ещё в варианте с минусом потенциальное переполнение, и от этого сишным компилятором рвёт жопу. А потом сишникам, ибо UB.

Скептически смотрю на раст, т.к. не уверен что он может быть первым яп.

Так и есть. Только Си им тоже быть не может. Люди, у которых си – первый язык, вырастают лютыми говнокодерами.

ИМО важнее, чтоб яп был простым.

Си не является простым языком. Даже близко.