Хоча були і старші попередники, впливовий французький математик Рене Декарт, як правило, приписується за введення в математичну писемність надписаних експонентів ( b ), у своїй праці " Геометрія", яка була опублікована в 1637 р. Це позначення, яке досі широко використовується в математиці.
Fortran - найдавніша мова програмування, широко використовується для чисельних обчислень, що забезпечує оператор експоненції, вона датується 1954 р. Операція експоненції позначається подвійною зірочкою **
. Слід зазначити, що багато комп'ютерів у той час використовували 6-бітні кодування символів, які не надавали символу карети ^
. Згодом використання **
було прийнято творцями різних останніх мов програмування, які пропонують операцію експоненції, наприклад, Python.
Першим широко прийнятим набором символів, який містив карету, ^
було 7-бітове кодування ASCII, яке було вперше стандартизовано в 1963 році. Найдавнішою мовою програмування, яку я знаю, що використовувала карету для позначення експоненції, це BASIC, який датується 1964 р. Приблизно той самий Час IBM прийняла кодування символів EBCDIC , що також включає карету ^
.
Мова С з'явилася на світ у 1972 році. Вона не забезпечує оператора експоненції, скоріше підтримує експоненцію через функції бібліотеки, такі як pow()
. Тому жодного символу не потрібно відкладати для експоненції на C та інших, пізніших, мовах у сімействі C, таких як C ++ та CUDA.
З іншого боку, і нечасто для мов програмування до цього часу, C надає символи для побітових операцій. Кількість спеціальних символів, доступних у 7-розрядному ASCII, була обмежена, а оскільки існувала "природна спорідненість" інших операцій з певними спеціальними символами, наприклад, &
для AND і ~
NOT, для XOR було не так багато варіантів вибору символу .
Я не знаю опублікованого обґрунтування, наданого Річі або Керніган щодо того, чому вони вирішили ^
позначати XOR конкретно; Коротка історія С Рітчі про це мовчить. Подивіться на специфікації попередника С, мови B , показує , що у нього не було оператора XOR, але вже використовували всі спеціальні символи , крім ^
, $
, @
, #
.
[Оновлення] Я надіслав електронний лист Кену Томпсону, творцю компанії B та одному з співавторів C, розпитуючи про обґрунтування вибору ^
оператора XOR C, і просив дозволу поділитися відповіддю тут. Його відповідь (трохи переформатована для читання):
Від: Кен Томпсон
Надіслано: четвер, 29 вересня 2016 р. 4:50
до: Норберт Юффа
Тема: Re: Обґрунтування вибору карети як оператора XOR в C?
це був випадковий вибір залишених персонажів.
якби я мав це зробити ще раз (що я і робив), я би використовував той самий оператор для xor (^) та бітового доповнення (~).
оскільки ^ тепер більш відомий оператор, ^ ходить, ^ є xor і також доповнюють.
Використання ^
для експоненції в "математиці", на яку ви посилаєтесь, - це фактично використання, встановлене набагато пізнішої дати для систем набору тексту, таких як Teuth Knuth, який датується 1978 роком, інтерфейси командного рядка для систем алгебри, такі як Mathematica, який датується 1988 роком, та графіки калькулятори на початку 1990-х.
Чому ці продукти прийняли використання ^
для експоненції? Що стосується калькуляторів, я підозрюю вплив BASIC. Протягом 1980-х років вона була дуже популярною мовою програмування, а також була вбудована в інші програмні продукти. Таким чином, позначення були б знайомі багатьом покупцям калькуляторів. Моя пам’ять розпливчаста, але я вважаю, що навіть існували калькулятори, які насправді мали прості перекладачі BASIC.