В большинстве ранних книг по алгоритмам <-
упоминается назначение и =
сравнение. Но в настоящее время единственными языками, которые не используются =
для присваивания, являются Pascal ( :=
) и игрушечные языки, такие как COOL . Что привело к тому, что современные языки программирования превратились =
в присвоение значения вместо его математического значения равенства?
programming-languages
history
Сики Лин
источник
источник
===
...←
остается распространенным в работе алгоритмов; это один из трех общих обозначений для назначения при написании алгоритма (другие:=
и=
). То, что все программисты используют=
, не означает, что математики все отбросили←
.===
в порядке.Ответы:
Согласно Википедии , использование equals для назначения восходит к языковому суперплану Хайнца Рутисхаузера, разработанному с 1949 по 1951 год, и особенно популяризировался Fortran:
Конрад Цузе также использовал знак равенства для Планкалкула , который вдохновил Суперплан Рутишосера, хотя для него так и не был разработан компилятор. Почему он выбрал знак равенства? Я думаю, вы должны спросить его.
источник
=
как предикат, так и для определения переменных, например, в «Пусть x = 4. Тогда √ (x - y) равно нулю, если y = 4». Это работает, потому что математические обозначения следует понимать декларативно, а не обязательно. Функциональные языки программирования (например, семейство ML) по умолчанию имеют неизменяемые переменные и поэтому могут продолжать использовать их=
в своей двойной роли без каких-либо проблем. Точнее,=
является одновременно оператором и частьюlet
синтаксиса.=
затем является просто предикатом, как и везде, где он используется. Обратите внимание, что в зависимости от контекста «Пусть x = 4» также могло означать «Пусть x ∈ ℝ и x = 4».Но когда я сделал математику в школе "пусть х = 123"
была обычная формулировка. Ранние версии Basic настаивали на ключевом слове «let» перед равным. Таким образом, это в основном кипит, чтобы "позволить" это понять.
Ключевой драйвер, обычно не рассматриваемый, но очень важный в то время, когда вы печатали.
Было два возможных устройства ввода,
Телетайпы, как правило, использовались в академических и военных магазинах, карточные удары в более коммерческих магазинах. Следовательно, академические языки, такие как Pascal, поддерживают строчные идентификаторы и «разумные» нотации, такие как «: =» для назначения. Языки, нацеленные на более коммерческую аудиторию, предполагали, что перфокарты будут основной формой ввода, поэтому языки только в верхнем регистре, такие как FORTRAN и COBOL, с ограниченной поддержкой символов ":;> <", которые были недоступны при стандартном нажатии клавиш.
Между прочим, не было никакой двусмысленности относительно того, что "=" использовалось для назначения в раннем FORTRAN, поскольку сравнение было сделано с использованием ".LT.", ".LE.", ".EQ.", ".GE." и ".GT." синтаксис.
источник
let x = 123
более аналогичным,assert(x == 123)
чем любое другое назначение, хотя.