воскресенье, 7 февраля 2021 г.

Добавил интегральные типы и конвертеры литералов

 Прежде, чем заняться массивами, я решил добавить интегральные типы и конвертеры литералов, чем сегодня и занимался. Добавил.

Интегральные типы и конвертеры литералов

Попутно исправил пару небольших багов в старом коде.

На заре своего занятия программированием, я обнаружил, что мыслю иначе, нежели программисты с хорошим знанием теории. Алгоритм, которому я посвятил бы десять минут, они досконально разбирали - как он работает, в чём могут быть подводные камни и т.д.

В итоге выяснилось, что я и в самом деле не заметил ошибку, которая подстерегала программиста в этой задаче.

Но ведь эта ошибка сразу вылезет, как только попробуешь этот алгоритм протестировать, - заметил я тогда самому себе.

Тем не менее, вопрос этот не оставлял меня несколько лет. Пока я не познакомился с концепцией ассертов. Тогда со мной случился инсайт в этом вопросе.

Программа не работает сама по себе. Её использует оператор. Если оператор пытается сделать что-то нестандартное, а программа падает, то ситуация сводится к вопросу: есть ли у оператора права выполнить эту операцию или такие права ему давать нельзя.

Если таких прав нет, то получается, что программа правильно поступила, что упала.

Причудливость этой логики не оставляла меня ещё несколько лет, пока не случился другой инсайт.

Самое важное - это данные пользователя. Программа не должна падать и в ней не должно возникать ситуаций, когда пользователь вдруг не может сохранить данные, чтобы её перезапустить.

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

Если бы такие программы могли существовать, то люди бы внимательно следили, чтобы преступник не получил к такому компьютеру доступа.

Я попробовал обсудить этот вопрос с другими программистами, но они не поняли, о чём я пытаюсь с ними общаться.

Если в твоей программе ошибка, - сказал мне один коллега. - То твоя задача её исправить. Программа просто технически не сможет помешать преступнику совершить преступление.

Тогда я подумал: и в самом деле - никто не оснащает пистолет искусственным интеллектом, чтобы тот принимал решение, может ли человек стрелять в свою мишень, или нет.

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