четверг, 26 сентября 2013 г.

"Хранить" или "Являться"? О непонимании.

Сегодня столкнулся с довольно интересной ситуацией, , из которой вырос этот философский пост.

Для начала мне задали вопрос, по поводу одного тестового вопроса, который формировался таким образом - "В каких из заданных типов можно хранить число?". Вопрос этот был в рамках языка C++ и это довольно таки простой вопрос с простой формулировкой. Вариантами ответа были int, char, char[], float и еще пара других типов. Так вот, парень задавший мне вопрос выбрал, среди прочих, вариант char[]  и аргументировал это тем, что в принципе в массиве можно хранить число.

Дело в том, что тест больше касался синтаксиса языка, и под "хранить" подразумевалась возможность написать нечто вида "X a = 22;", где X  - имя типа (ну в общем случае, конечно). Очевидно, в рамках такого понятия - char[] полностью не подходит.
Однако, это приводит к самому вопросу о том, насколько размыто понятие "хранить" в голове программистов.

К примеру, я с позиций практика, который не так давно занимался оптимизацией недавно скажу что можно сделать memcpy  числа в массив, взяв от числа адрес и сохранить там число. Неважно зачем я делаю это глупое действие  - главное можно.

С более простой позиции обратится к первому элементу. и если число влезает - можно и записать число и хранить его.  А можно так и сохранить в указатель. И при должном извращении то и в указатель на функцию. И вообще как угодно.
Обобщить обе эти позиции довольно легко. Понятие "хранить" в них означает, что для данных двух типов есть прямое сюръективное отображение и обратное отображение (биекция не обязательна).

А вот с синтаксической позицией - все просто. Подразумевается, что данный тип должен описывать число. Указатели с точки зрения семантики не описывают числа, массивы - тоже.

А теперь самое интересное - однозначна ли фраза "должен описывать число"? И да, как можно переформулировать данный вопрос, чтобы его понял студент-младшекурсник? Можно сказать, что он должен описывать "множество чисел" или "подмножество чисел", но насколько это понятие популярно в среде младшекурсников - это остается для меня вопросом.

Комментариев нет:

Отправить комментарий