Это не реализовано так, потому что математика не работает таким образом.
В математике:
note: the following is math on a blackboard, not a programming language
+ -5 = -5
- -5 = 5
Действовать любым другим способом будет запутать любого, кто когда-либо закончил Highschool.
Очевидно, что это довольно слабый ответ, так как вы действительно можете реализовать действие, принятое символом ASCII «+» в коде, чтобы работать иначе, чем математика. В Лиспе, например, оператор +
не работает как обычная лицейная математика:
;;; Adding two numbers:
+ 1 2
А на калькуляторах TI, это даже наоборот:
1 2 +
Можно утверждать, что реализация +
так, как вы описали в ваш язык программирования имеет смысл. Существует множество различных аргументов о том, почему это не должно быть сделано, включая принцип наименьшего удивления, язык должен моделировать проблемную область, это то, чему нас учили в школе и т. Д. Все они по сути являются слабыми аргументами, поскольку они не 't является основополагающей причиной для обработки машины +
так же, как математика.
Но вот что, люди - эмоциональные существа. Нам нравится то, что знакомо, и съеживается на что-то, что противоречит чему-то, чему нас учили. И программистам не нравится удивляться, что они ведут себя по-другому от обычного. И программисты - это те, кто создает языки программирования, поэтому имеет смысл, что они реализуют +
так, как они это делают.
Один программист может не так думать или небольшая группа, и они могут свободно создавать язык программирования, который реализует +
по-разному. Но им будет трудно убедить сообщество программирования в целом, что они сделали правильно.
Поэтому не имеет значения, что все аргументы, которые могут быть сделаны против +
, действующих как abs()
, по существу слабы. Пока большинство чувствует, что это правильно, +
будет вести себя так же, как обычная математика.
Ваше предложение не математически ...и унарный плюс фактически что-то делает на некоторых языках. Например, в Java он может выполнять преобразование типа. – assylias
Потому что это имеет другое значение, и с 1957 года оно имеет тот же смысл во всех языках программирования. Слишком поздно придумывать яркие идеи. Не конструктивный. – EJP