История изменений
Исправление Sm0ke85, (текущая версия) :
Всё ещё не понимаю, что такое «близко к асму», но пусть будет, например, C– (Си минус минус). А если ещё ближе, то LLVM IR. Съел?
Я уверен что простых ЯП море, но то что ты перечислил работает в некоей среде (по-умолчанию, медленнее, сложнее, больше ресурсов требует), но победил Си: из-за практически прямого преобразования в машинный код (буквально 1 команда С бывает = просто 1 команде асм), а также понятный стандарт (ты можешь сегодня скомпилировать иходники 20-летней давности), прямое обращение к памяти, возможность напрямую использовать асм, легковесный компилятор, практически отсутствующий рантайм по сравнению с остальными ЯП - это все делает Си самым близким к асму, по сути «надстройкой над асм с небольшим рантаймом»…
Там нет никакой «анамольности». Всё происходит ровно так, как написано в стандарте.
Вот интересно, а почему по твоему в стандарте вдруг появился volatile, вот не было его и вроде все ок было (и прерывания и многое другое, а volatile не было)…?
И вот дополнение для понимания «аномальности»:
https://en.wikipedia.org/wiki/Volatile_(computer_programming)
Standards defects While intended by both C and C++, the current C standard fails to express that the volatile semantics refer to the lvalue, not the referenced object. The respective defect report DR 476 (to C11) is still under review with C17.[7]
Compiler defects Unlike other language features of C and C++, the volatile keyword is not well supported by most C/C++ implementations - even for portable uses according to the C and C++ standards. Most C/C++ implementations are buggy regarding the behavior of the volatile keyword.[8][9] Programmers should take great care whenever using the volatile keyword in C and C++.
Кстати, попробуй перевести слово с англиского, чтоб увидеть какой смысл в него закладывали создатели…
Исходная версия Sm0ke85, :
Всё ещё не понимаю, что такое «близко к асму», но пусть будет, например, C– (Си минус минус). А если ещё ближе, то LLVM IR. Съел?
Я уверен что простых ЯП море, но то что ты перечислил работает в некоей среде (по-умолчанию, медленнее, сложнее, больше ресурсов требует), но победил Си: из-за практически прямого преобразования в машинный код (буквально 1 команда С бывает = просто 1 команде асм), а также понятный стандарт (ты можешь сегодня скомпилировать иходники 20-летней давности), прямое обращение к памяти, возможность напрямую использовать асм, легковесный компилятор, практически отсутствующий рантайм по сравнению с остальными ЯП - это все делает Си самым близким к асму, по сути «надстройкой над асм с небольшим рантаймом»…
Там нет никакой «анамольности». Всё происходит ровно так, как написано в стандарте.
Вот интересно, а почему по твоему в стандарте вдруг появился volatile, вот не было его и вроде все ок было (и прерывания и многое другое, а volatile не было)…?
И вот дополнение для понимания «аномальности»:
https://en.wikipedia.org/wiki/Volatile_(computer_programming)
Standards defects While intended by both C and C++, the current C standard fails to express that the volatile semantics refer to the lvalue, not the referenced object. The respective defect report DR 476 (to C11) is still under review with C17.[7]
Compiler defects Unlike other language features of C and C++, the volatile keyword is not well supported by most C/C++ implementations - even for portable uses according to the C and C++ standards. Most C/C++ implementations are buggy regarding the behavior of the volatile keyword.[8][9] Programmers should take great care whenever using the volatile keyword in C and C++.