История изменений
Исправление
dzidzitop,
(текущая версия)
:
Каким боком язык с undefined behaviour на каждый чих с интегральными типами неопределённой длины и бинарного представления становится «переносимым», не говоря уже об «ассемблере»?
Низкоуровневые вещи на C можно делать почти всегда с потерей переносимости (или обмазаться по макушку макросами).
Часто ты учитываешь что int может быть 16 бит, и думаешь о том, что переполнение int - undefined behaviour?
Ну а то, что на нём можно писать программки и компилировать под разные процессорные архитектуры, в отличие от конкретного языка ассемблера, и оно даже кое-как будет работать - это скорее вопреки языку C как таковому. Но по сравнению с языками ассемблера это был большой шаг вперёд. В начале 70х.
А вообще - скомпилируй программу на системе с базовой кодировкой UTF16-LE, а потом запусти её на системе с UTF-8. И потом расскажешь о переносимости программ на великом и могучем C. Если что, то локаль можно поменять в рантайме на почти любой системе. Это не константное свойство операционной системы иметь ту или иную базовую кодировку.
Исправление
dzidzitop,
:
Каким боком язык с undefined behaviour на каждый чих с интегральными типами неопределённой длины и бинарного представления становится «переносимым», не говоря уже об «ассемблере»?
Низкоуровневые вещи на C можно делать почти всегда с потерей переносимости (или обмазаться по макушку макросами).
Часто ты учитываешь что int может быть 16 бит, и думаешь о том, что переполнение int - undefined behaviour?
Ну а то, что на нём можно писать программки и компилировать под разные процессорные архитектуры, в отличие от конкретного языка ассемблера, и оно даже кое-как будет работать - это скорее вопреки языку C как таковому. Но по сравнению с языками ассемблера это был большой шаг вперёд. В начале 70х.
А вообще - скомпилируй программу на системе с базовой кодировкой UTF16-LE, а потом запусти её на системе с UTF-8. И потом расскажешь о переносимости программ на великом и могучем C.
Исправление
dzidzitop,
:
Каким боком язык с undefined behaviour на каждый чих с интегральными типами неопределённой длины и бинарного представления становится «переносимым», не говоря уже об «ассемблере»?
Низкоуровневые вещи на C можно делать почти всегда с потерей переносимости (или обмазаться по макушку макросами).
Часто ты учитываешь что int может быть 16 бит, и думаешь о том, что переполнение int - undefined behaviour?
Ну а то, что на нём можно писать программки и компилировать под разные процессорные архитектуры, в отличие от конкретного языка ассемблера, и оно даже кое-как будет работать - это скорее вопреки языку C как таковому. Но по сравнению с языками ассемблера это был большой шаг вперёд. В начале 70х.
Исправление
dzidzitop,
:
Каким боком язык с undefined behaviour на каждый чих с интегральными типами неопределённой длины и бинарного представления становится «переносимым», не говоря уже об «ассемблере»?
Низкоуровневые вещи на C можно делать почти всегда с потерей переносимости (или обмазаться по макушку макросами).
Часто ты учитываешь что int может быть 16 бит, и думаешь о том, что переполнение int - undefined behaviour?
Ну а то, что на нём можно писать программки и компилировать под разные процессорные архитектуры, в отличие от конкретного языка ассемблера, и оно даже кое-как будет работать - это скорее вопреки языку C как таковому.
Исходная версия
dzidzitop,
:
Каким боком язык с undefined behaviour на каждый чих с интегральными типами неопределённой длины и бинарного представления становится «переносимым», не говоря уже об «ассемблере»?
Низкоуровневые вещи на C можно делать почти всегда с потерей переносимости (или обмазаться по макушку макросами).
Часто ты учитываешь что int может быть 16 бит, и думаешь о том, что переполнение int - undefined behaviour?