История изменений
Исправление
MOPKOBKA,
(текущая версия)
:
за низкоуровневой абстракцией if скрывается высокоуровневая абстракция match.
одинаковый у них уровень абстракции, вообщем-то if это частный случай match
Если взять определение из википедии, то match явно более высокоуровневая абстракция.
Только жалоба
Ygor мне кажется необоснованной, это zero-cost абстракция. Сам С многое вносит, пусть Ygor подумает как компилируется деление uint64_t на 32 битных платформах. Еще С не только скрывает сложные операции, но и не дает доступа к низкоуровневым, вот как в «переносимом ассемблере» записать без нестандартных расширений этот простейший код?
int64_t mul(int64_t a, int64_t b)
{
return ((__int128)a * b) >> 32;
}
mul:
mov rax, rdi
imul rsi
shrd rax, rdx, 32
ret
Исходная версия
MOPKOBKA,
:
за низкоуровневой абстракцией if скрывается высокоуровневая абстракция match.
одинаковый у них уровень абстракции, вообщем-то if это частный случай match
Если взять определение из википедии, то match явно более высокоуровневая абстракция.
Только жалоба
Ygor мне кажется необоснованной, это zero-cost абстракция. Сам С многое вносит, пусть Ygor подумает как компилируется деление uint64_t на 32 битных платформах. Еще С не только скрывает сложные операции, но и не дает доступа к низкоуровневым, вот как в «переносимом ассемблере» записать без нестандартных расширений этот простейший код?
int64_t mul(int64_t a, int64_t b)
{
return ((__int128)a * b) >> 32;
}
mul:
mov rax, rdi
imul rsi
shrd rax, rdx, 32
ret