Математичні позначення: Минуле і майбутнє



Переклад поста Стівена Вольфраму (Stephen Wolfram) "Mathematical Notation: Past and Future (2000)".
Висловлюю величезну подяку Кирилу Гузенко KirillGuzenko за допомогу в перекладі і підготовці публікації

Зміст
Резюме
Введення
Історія
Комп'ютери
Майбутнє
Примітки
Емпіричні закони для математичних позначень
Друковані позначення проти екранних
Письмові позначення
Шрифти та символи
Пошук математичних формул
Невізуальні позначення
Докази
Відбір символів
Частотний розподіл символів
Частини мови в математичній нотації
Стенограма промови, представленої на секції «MathML і математика в мережі» першої Міжнародної Конференції MathML в 2000-му році.
Резюме
Більшість математичних позначень існують вже більше п'ятисот років. Я розгляну, як вони розроблялися, що було в античні та середньовічні часи, які позначення вводили Лейбніц, Ейлер, Пеано і інші, як вони одержали поширення в 19 і 20 століттях. Буде розглянуто питання про схожість математичних позначень з тим, що об'єднує звичайні людські мови. Я розповім про основні принципи, які були виявлені для звичайних людських мов, які з них застосовуються в математичних позначеннях і які ні.

Згідно історичним тенденціям, математична нотація, як і природна мова, могла б виявитися неймовірно складною для розуміння комп'ютером. Але за останні п'ять років ми впровадили в Mathematica можливості до розуміння чогось дуже близького до стандартної математичної нотації. Я розповім про ключових ідеях, які зробили це можливим, а також про ті особливості математичних позначеннях, які ми попутно виявили.

Великі математичні вирази — на відміну від фрагментів звичайного тексту — часто являють собою результати обчислень і створюються автоматично. Я розповім про обробці подібних виразів і про те, що ми зробили для того, щоб зробити їх більш зрозумілими для людей.

Традиційна математична нотація являє математичні об'єкти, а не математичні процеси. Я розповім про спроби розробити позначення для алгоритмів, про досвід реалізації цього APL, Mathematica, в програмах для автоматичних доказів та інших системах.

Звичайний мова складається з рядків тексту; математична нотація часто також містить двовимірні структури. Буде обговорено питання про застосування математичної нотації більш загальних структур і як вони співвідносяться з межею пізнавальних можливостей людей.

Сфера застосування конкретного природної мови зазвичай обмежує сферу мислення тих, хто його використовує. Я розгляну те, як традиційна математична нотація обмежує можливості математики, а також те, на що можуть бути схожі узагальнення математики.

Введення
Коли збиралася ця конференція, люди подумали, що було б добре запросити когось для виступу з промовою про підстави та загальні принципи математичної нотації. І був очевидний кандидат — Флоріан Каджори — автор класичної книги під назвою «Історія математичних позначень». Але після невеликого розслідування виявилося, що є технічна проблема у запрошенні доктора Каджори — він помер як мінімум сімдесят років тому.

Так що мені доведеться його міняти.

Вважаю, інших варіантів особливо-то і не було. Оскільки виявляється, що немає майже нікого, хто живий на даний момент і хто займався фундаментальними дослідженнями математичної нотації.

У минулому математичної нотацією займалися зазвичай у контексті систематизації математики. Так, Лейбніц і деякі інші люди цікавилися подібними речами в середині 17 століття. Беббідж написав великоваговий працю з цієї теми в 1821 році. І на рубежі 19 і 20 століть, в період серйозного розвитку абстрактної алгебри і математичної логіки, відбувається черговий сплеск інтересу і діяльності в цій темі. Але після цього не було майже нічого.

Однак не дивно, що я став цікавитися подібними речами. Тому що Mathematica однією з моїх головних цілей було зробити ще один великий крок в області систематизації математики. А більш загальної моєю метою в відношенні Mathematica поширити обчислювальну потужність на всі види технічної та математичної роботи. Ця задача має дві частини: те, як обчислення відбуваються всередині, і те, як люди направляють ці обчислення для отримання того, що вони хочуть.

Одне з найбільших досягнень Mathematica, про який, ймовірно, більшість з вас знає, полягає в поєднанні високої спільності обчислень зсередини і збереження практичності, заснованої на перетворення символьних виразів, де символьні вирази можуть представляти дані, графіку, документи, формули — та що завгодно.

Проте недостатньо просто проводити обчислення. Необхідно, щоб люди якимось чином повідомляли Mathematica про те, які обчислення вони хочуть зробити. І основний спосіб дати людям взаємодіяти з чимось настільки складним — використовувати щось на кшталт мови.

Зазвичай мови з'являються в ході деякого поетапного історичного процесу. Але комп'ютерні мови в історичному плані сильно відрізняються. Багато були створені практично повністю разом, часто однією людиною.

Так що включає в себе ця робота?

Ну, ось у чому полягала для мене ця робота щодо Mathematica: я спробував уявити, які взагалі обчислення люди будуть виробляти, які фрагменти в цій роботі обчислювальної повторюються знову і знову. А потім, власне, я дав імена цих фрагментів і впровадив в якості вбудованих функцій в Mathematica.

В основному ми відштовхувалися від англійської мови, так як імена цих фрагментів засновані на простих англійських словах. Тобто це означає, що людина, яка знає англійську, вже зможе дещо зрозуміти з написаного в Mathematica.

Однак, зрозуміло, мова Mathematica — не англійська. Це скоріше сильно адаптований фрагмент англійської мови, оптимізований для передачі інформації про обчисленнях Mathematica.

Можна було б думати, що, мабуть, було б непогано пояснюватися Mathematica на звичайному англійською мовою. Зрештою, ми вже знаємо англійську мову, так що нам було б необов'язково вивчати щось нове, щоб пояснюватися Mathematica.

Однак я вважаю, що є досить вагомі причини того, чому краще думати на мові Mathematica, ніж англійською, коли ми розмірковуємо про різного роду обчислень, які виробляє Mathematica.

Проте ми так само знаємо, змусити комп'ютер повністю розуміти природну мову — завдання вкрай складне.

Добре, так що щодо математичної нотації?

Більшість людей, які працюють в Mathematica, знайомі принаймні з деякими математичними знаками, так що, здавалося б, було б дуже зручно пояснюватися Mathematica в рамках звичної математичної нотації.

Але можна було б подумати, що це не буде працювати. Можна було б подумати, що ситуація виллється в щось, що нагадує ситуацію з природними мовами.

Однак є один дивовижний факт — він дуже здивував мене. На відміну від природних людських мов, для звичайної математичної нотації можна зробити дуже хороше наближення, яке комп'ютер зможе розуміти. Це одна з найбільш серйозних речей, яку ми розробили для третьої версії Mathematica у 1997 році [поточна версія Wolfram Mathematica — 10.4.1 — вийшла в квітні 2016 р. — прим. ред.]. І як мінімум деяка частина того, що у нас вийшло, увійшла в специфікацію MathML.

Сьогодні я хочу поговорити про деякі загальні принципи в математичній нотації, які мені довелося виявити, і те, що це означає в контексті сьогодення і майбутнього.

Насправді, це не математична проблема. Це куди ближче до лінгвістики. Мова не про те, якою б могла бути математична нотація, а про те, яка використовується математична нотація в дійсності — як вона розвивалася в ході історії і пов'язана з обмеженнями людського пізнання.

Я думаю, математична нотація — дуже цікаве поле для дослідження лінгвістики.

Як можна було помітити, лінгвістика в основному вивчала розмовні мови. Навіть пунктуація залишилася практично без уваги. І, наскільки мені відомо, ніяких серйозних досліджень математичної нотації з точки зору лінгвістики ніколи не проводилося.

Зазвичай у лінгвістиці виділяють кілька напрямків. В одному займаються питаннями історичних змін у мовах. В іншому вивчається те, як впливає вивчення мови на окремих людей. У третьому створюються емпіричні моделі якихось мовних структур.

Історія
Давайте спершу поговоримо про історію.

Звідки походять всі ті математичні позначення, які ми зараз використовуємо?

Це тісно пов'язано з історією самої математики, так що нам доведеться трохи торкнутися цього питання. Часто можна почути думку, що сьогоднішня математика є єдина гадана її реалізація. Те, якими б могли бути довільні абстрактні побудови.

І за останні дев'ять років, що я займався одним великим науковим проектом, я ясно зрозумів, що такий погляд на математику не є вірним. Математика в тому вигляді, в якому вона використовується — це вчення не про довільних абстрактних системах. Це вчення про конкретну абстрактною системою, яка історично виникла в математиці. І якщо заглянути в минуле, то можна побачити, що є три основні напрямки, з яких з'явилася математика в тому вигляді, в якому ми її знаємо — це арифметика, геометрія логіка.

Всі ці традиції досить старі. Арифметика бере свій початок з часів стародавнього Вавилона. Можливо, і геометрія теж приходить з тих часів, але точно вже була відома в древньому Єгипті. Логіка приходить із стародавньої Греції.

І ми можемо спостерігати, що розвиток математичної нотації мови математики — сильно пов'язане з цими напрямками, особливо з арифметикою і логікою.

Слід розуміти, що всі три напрямки з'являлися в різних сферах людського буття, і це сильно вплинуло на використовувані в них позначення.

Арифметика, ймовірно, виникла з потреб торгівлі, для таких речей, як, наприклад, рахунок грошей, а потім арифметику підхопили астрологія астрономія. Геометрія, по всій видимості, виникла землемерческих і подібних завдань. А логіка, як відомо, народилася з спроби систематизувати аргументи, наведені на природній мові.

Примітно, до речі, що інша, дуже стара галузь знань, про яку я згадаю пізніше — граматика — по суті ніколи не інтегрувалася з математикою, принаймні до зовсім недавнього часу.

Отже, давайте поговоримо про ранніх традиціях у позначеннях в математиці.

По-перше, є арифметика. Та сама базова річ для арифметики . Так які позначення використовувалися для чисел?

Що ж, перше подання чисел, про який достеменно відомо — висічки на кістках, зроблені 25 тисяч років тому. Це була унарная система: щоб представити число 7, потрібно було зробити 7 висічок, ну і так далі.

Звичайно, ми не можемо точно знати, що саме це подання чисел було найпершим. Я маю на увазі, що ми могли і не знайти свідоцтв якихось інших, більш ранніх уявлень чисел. Однак, якщо хто-то в ті часи винайшов якийсь незвичайний для подання чисел, і розмістив їх, наприклад, у наскельного живопису, то ми можемо ніколи не дізнатися, що це було представлення чисел — ми можемо сприймати це просто як якісь фрагменти прикрас.

Таким чином, числа можна подавати унарной формі. І таке враження, що ця ідея була відроджена безліч разів і в різних частинах світу.

Але якщо подивитися на те, що сталося окрім цього, то можна виявити досить багато відмінностей. Це трохи нагадує те, як різні види конструкцій для речень, дієслів та інше реалізовані в різних природних мовах.

І, фактично, один з найбільш важливих питань щодо чисел, який, як я вважаю, буде спливати ще багато разів — наскільки сильним має бути відповідність між звичайним природним мовою та мовою математики?

Або ось питання: він пов'язаний з позиційної нотацією і повторним використанням цифр.

Як можна помітити, у природних мовах зазвичай є такі слова, як "десять", "сто", "тисяча", "мільйон" і так далі. Однак в математиці ми можемо уявити десять як "один нуль" (10), як сто "один нуль нуль" (100), тисячу як "один нуль нуль нуль" (1000) і так далі. Ми можемо використовувати цю одну цифру і отримувати щось нове, в залежності від того, де в числі вона буде з'являтися.

Що ж, це складна ідея, і людям потрібні були тисячі років, щоб її прийняти і усвідомити. А їх нездатність прийняти її раніше мала великі наслідки у використовуваних ними позначеннях як чисел, так і для інших речей.

Як це часто буває в історії, вірні ідеї з'являються дуже рано і довгий час залишаються в забутті. Більше п'яти тисяч років тому вавілоняни, і можливо навіть до них ще й шумери розробили ідею про позиційному поданні чисел. Їх система числення була шестидесятеричная, а не десяткова, як у нас. Від них ми успадкували подання секунд, хвилин і годин в існуючій нині формі. Але у них була ідея використання одних і тих же цифр для позначення множників різних ступенів шістдесяти.

Ось приклад їх позначень.

image

З цієї картинки можна зрозуміти, чому археологія настільки важка. Це дуже маленький шматок обпаленої глини. Було знайдено близько півмільйона подібних вавилонських табличок. І приблизно одна з тисячі — тобто всього близько 400 — містять якісь математичні записи. Що, до речі, вище відносини математичних текстів до звичайних в сучасному інтернеті. Взагалі, поки MathML не одержав достатнього поширення, це є досить складним питанням.

Але, в будь-якому випадку, маленькі позначення на цій табличці виглядають злегка схожими на відбитки лапок крихітних птахів. Але майже 50 років тому в кінці кінців дослідники визначили, що ця клинописна табличка часів Хаммурапі — близько 1750 року до н. е. — фактично є таблицею того, що ми зараз називаємо пифагорейскими трійками.

Що ж, ці вавилонські знання були втрачені для людства майже на 3000 років. І замість цього використовувалися схеми, засновані на природних мовах, з окремими символами для десяти, ста і так далі.

Так, наприклад, у єгиптян для позначення тисячі використовувався символ квітки лотоса, сотні тисяч — птиця, ну і так далі. Кожна ступінь десяти для її позначення мала окремий символ.

А потім з'явилася інша дуже важлива ідея, до якої не додумалися ні вавілоняни, ні єгиптяни. Вона полягала в позначенні чисел цифрами — тобто не позначати число сім сім'ю одиницями чогось, а лише одним символом.

Однак, у греків, можливо, як і у фінікійців раніше, ця ідея вже була. Ну, насправді, вона була дещо відмінною. Вона полягала в тому, щоб позначати послідовність чисел через послідовність букв в їх алфавіті. Тобто альфі відповідала одиниця, бете — двійка і так далі.

Ось як виглядає список чисел в грецькому позначенні [ви можете завантажити Wolfram Language Package, що дозволяє представити числа у різних стародавніх нотаціях тут — прим. ред.].



(Думаю, саме так сисадміни з Академії Платона адаптували свою версію Mathematica; їх уявну -600-ю (або близько того) версію Mathematica.)

З цією системою числення, що пов'язано безліч проблем. Наприклад, є серйозна проблема управління версіями: навіть якщо ви вирішите видалити якісь літери зі свого алфавіту, то ви повинні залишити їх в числах, інакше усі ваші попередньо записані числа будуть некоректними.

Тобто це означає, що є різні застарілі грецькі літери, залишилися в системі числення — як коппа для позначення числа 90 і сампи для позначення числа 900. Однак я включив їх у набір символів для Mathematica, бо тут прекрасно працює грецька форма запису чисел.

Через деякий час римляни розробили свою форму запису чисел, з якою ми добре знайомі.

Нехай зараз і не зовсім ясно, що їх цифри спочатку задумувалися як букви, однак про це слід пам'ятати.

Отже, давайте спробуємо римську форму запису чисел.



Це теж досить незручний спосіб запису, особливо для великих чисел.



Тут є кілька цікавих моментів. Наприклад, довжина представляється числа рекурсивно зростає з розміром числа.

І в цілому, така вистава для великих чисел повно неприємних моментів. Приміром, коли Архімед писав свою роботу про кількість піщинок, обсяг яких еквівалентний об'єму всесвіту (Архімед оцінив їх кількість в 1051, проте, вважаю, правильна відповідь буде близько 1090), то він використовував звичайні слова замість позначень, щоб описати настільки велике число.

Але насправді є більш серйозна понятійна проблема з ідеєю про представлення цифр як букв: стає важко придумати представлення символьних змінних — якихось символьних об'єктів, за якими стоять числа. Тому що будь-яку букву, яку можна було б використовувати для цього символьного об'єкта, можна буде сплутати з цифрою або фрагментом числа.

Загальна ідея про символьному позначенні яких об'єктів через букви відома досить давно. Евклід, по суті, використав цю ідею в своїх працях з геометрії.

На жаль, не збереглося оригіналів робіт Евкліда. Проте є на кілька сот років молодші версії його робіт. Ось одна, написана грецькою мовою.

image

І на цих геометричних фігурах можна побачити точки, які мають символьне уявлення у вигляді грецьких літер. І в описі теорем є безліч моментів, в яких точки, лінії і кути мають символьне уявлення у вигляді літер. Так що ідея про символьному представленні якихось об'єктів у вигляді букв бере свій початок як мінімум від Евкліда.

Однак ця ідея могла з'явитися й раніше. Якби я вмів читати на вавілонському, я б, мабуть, зміг би сказати вам точно. Ось вавилонська табличка, в якій представляється квадратний корінь з двох, і яка використовує вавилонські літери для позначень.

image

Вважаю, обпалена глина більш довговічна, ніж папірус, і виходить, що ми знаємо про те, що писали вавілоняни більше, ніж про те, що писали люди начебто Евкліда.

Взагалі, ця нездатність побачити можливість вводити імена для числових змінних є цікавий випадок, коли мови або позначення обмежують наше мислення. Це те, що безсумнівно обговорюється у звичайній лінгвістиці. У найбільш поширеною формулюванні ця ідея звучить як гіпотеза Сепіра-Уорфа (гіпотеза лінгвістичної відносності).

Зрозуміло, для тих з нас, хто витратив деяку частину свого життя на розробку комп'ютерних мов, ця ідея представляється дуже важливою. Тобто я точно знаю, що якщо я буду думати мовою Mathematica, то багато концепції будуть досить прості для мого розуміння, і вони будуть зовсім не такими простими, якщо я буду думати будь-якою іншою мовою.

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

Ну, Діофант — той самий, що придумав діофантові рівняння — стикався з проблемою подання багаточленів в середині 2 століття н. е. В результаті він прийшов до використання певних заснованих на буквах імен для квадратів, кубів і іншого. Ось як це працювало.



Принаймні зараз нам здалося б надзвичайно важким зрозуміти позначення Діофанту для поліномів. Це приклад не дуже хороших позначень. Думаю, головна причина, крім обмеженою розширюваності, полягає в тому, що ці позначення роблять математичні зв'язки між поліномами неочевидними і не виділяють найбільш цікаві нам моменти.

Є й інші схеми завдання поліномів без змінних, як, наприклад, китайська схема, яка включала створення двовимірного масиву коефіцієнтів.

Проблема тут, знову-таки, розширюваності. І ця проблема з заснованими на графіку позначеннями спливає знову і знову: аркуш паперу, папірус або що б то ні було — вони всі обмежені двома вимірами.

Добре, так що щодо буквеного позначення змінних?

Вважаю, що вони могли б з'явитися лише після появи чогось схожого на нашу сучасну нотацію. І вона до певного часу не з'являлася. Були якісь натяки в індо-арабських позначеннях у середині першого тисячоліття, однак встановилося лише до його кінця. А на захід ця ідея прийшла лише з роботою Фібоначчі про обчисленнях в 13 столітті.

Фібоначчі, зрозуміло, був тим, хто говорив про числа Фібоначчі стосовно до задачі про кроликів, однак у дійсності ці числа були відомі вже більше тисячі років, і вони служили для опису форм індійської поезії. І я завжди знаходив випадок з числами Фібоначчі дивним і протверезним епізодом в історії математики: виникнувши на зорі західної математики, такі звичні й фундаментальні, вони почали ставати популярними лише в 80-е.

У будь-якому випадку, також цікаво зауважити, що ідея розбивки цифр в групи по три, щоб зробити великі числа більш читабельними, є вже в книзі Фібоначчі 1202 року, хоча я думаю, що він говорив про використання дужок над числами, а не про поділяють ком.

Після Фібоначчі наше сучасне уявлення чисел поступово стає все популярнішим, і до часу початку книгодрукування в 15 столітті воно вже було універсальним, хоча ще й залишалися кілька дивних моментів.

Але алгебраїчних змінних в повному їх розумінні тоді ще не було. Вони з'явилися лише після Вієта в кінці 16 століття й здобули популярність лише в 17 столітті. Тобто у Коперника та його сучасників їх ще не було. Як здебільшого і в Кеплера. Ці вчені для опису якихось математичних концепцій використовували звичайний текст, іноді структурований як у Евкліда.

До речі, навіть незважаючи на те, що математична нотація в ті часи була не дуже добре опрацьована, системи символьних позначень в алхімії, астрології і музиці були досить розвинені. Так, наприклад, Кеплер початку 17 століття використовував щось, схоже на сучасну музичну позначення, пояснюючи свою «музику сфер» для відносин планетарних орбіт.

З часів Вієта літерні позначення для змінних стали звичною справою. Зазвичай, до речі, він використовував голосні для невідомих і приголосні — для відомих.

Ось як вієта які були введені записував многочлен у формі, яку він називав "zetetics", а зараз ми б це назвали просто символьної алгеброю:



Можна побачити, що він використовує слова для позначення операцій, в основному так, щоб їх можна було сплутати з змінними.

Так як раніше представляли операції, в якому вигляді?

Ідея про те, що операції є щось, що можна в якійсь формі уявити, добиралася до розуму людей досить довго. Вавілоняни зазвичай не використовували символи для операцій — для додавання вони просто записували доданки один за одним. І в цілому вони були схильні записувати все у вигляді таблиць, так що їм не потрібно було якось позначати операції.

У єгиптян були деякі позначення для операцій: для додавання вони використовували пару йдуть вперед ніг, а для вирахування йдуть назад.

А сучасний знак +, який, ймовірно, є скороченням від "і" на латині (означає «та»), з'явився лише в кінці 15 століття.

А ось дещо з 1579 року, що виглядає дуже сучасним, написане в основному англійською, поки не почнеш розуміти, що ті кумедні закарлюки — це не ікси, а спеціальні нелітерні символи, які представляють різні ступені для змінних.

image

У першій половині 17 століття відбулася своєрідна революція в математичній нотації, після якої вона практично знайшла свій сучасний вигляд. Було створено сучасне позначення квадратного кореня, який раніше позначався як Rx — це позначення зараз використовується в медичних рецептах. І в основному алгебраїчна нотація придбала свій сучасний вигляд.

Вільям Отред був одним з тих людей, хто серйозно займався цим питанням. Винахід логарифмічної лінійки — одна з речей, яка зробила його відомим. Насправді про нього практично нічого невідомо. Він не був великим математиком, однак зробив багато корисного в галузі викладання, з такими людьми, як Крістофер Рен і його учнями. Дивно, що я нічого не чув про нього в школі, особливо якщо врахувати, що ми вчилися в одній школі, тільки він на 400 років раніше. Однак винахід логарифмічної лінійки було недостатнім для того, щоб увічнити своє ім'я в історії математики.

Але, в будь-якому випадку, він серйозно займався нотацією. Він придумав позначати множення хрестиком, і він просунув ідею про представлення алгебри допомогою позначень замість слів — так, як це робив вієта які були введені. І, фактично, він винайшов досить багато інших позначень, подібно тільді для таких предикатів, як IntegerQ.

image

Після Отреда і його співтоваришів ці позначення швидко встановилися. Були й альтернативні позначення, як зображення спадної і зростаючої лун для позначення арифметичних операцій — прекрасний приклад поганого і нерасширяемого дизайну. Однак в основному використовувалися сучасні позначення.

Ось приклад.

image

Це фрагмент рукопису Ньютона Початок, з якої ясно, що він в основному використовував сучасні алгебраїчні позначення. Думаю, саме Ньютон придумав використовувати негативні ступеня замість дробів для обернених величин та іншого. Початок містить дуже мало позначень, за винятком цих алгебраїчних речей і подання різного матеріалу в стилі Евкліда. І насправді Ньютон не особливо цікавився позначеннями. Він навіть хотів використовувати точкові позначення для своїх флюксий.

Чого не скажеш про Лейбнице. Лейбніц багато уваги приділяв питанням нотації. Насправді, він вважав, що правильні позначення є ключ до багатьох людських питань. Він був свого роду дипломат-аналітик, який курсує між різними країнами, з усіма їх різними мовами, і т. д. У нього була ідея, що якщо створити якийсь універсальний логічний мова, то тоді всі люди змогли б розуміти один одного і мали б можливість пояснити все що завгодно.

Були й інші люди, які міркували про подібне, переважно з позиції звичайних природних мов та логіки. Один з прикладів — досить специфічний персонаж на ім'я Раймонд Лул, жив у 14 столітті, який заявляв, що винайшов якісь логічні колеса, що дають відповіді на всі питання світу.

Але так чи інакше, Лейбніц розробив ті речі, які були цікаві і з позицій математики. Те, що він хотів зробити, повинно було так чи інакше об'єднати всі види позначень математики в певний точний природний мову з подібним математики способом опису і рішення різних проблем, або навіть більше — об'єднати ще й усі використовувані природні мови.

Ну, як і багато інші свої проекти, Лейбніц так і не втілив в життя. Однак він займався найрізноманітнішими напрямками математики і серйозно ставився до розробки позначень для них. Найбільш відомі його позначення були введені ним в 1675 році. Для позначення інтегралів він використовував "omn.", можливо, як скорочення від omnium. Але в п'ятницю 29 жовтня 1675 року він написав наступне.

image

На цьому фрагменті папери можна побачити знак інтеграла. Він задумував його як витягнуту S. Безсумнівно, це і є сучасне позначення інтеграла. Ну, між позначеннями інтегралів тоді і зараз майже немає жодної різниці.

Потім в четвер 11 листопада того ж року він позначив диференціал як "d". Насправді, Лейбніц вважав це позначення не найкращим і планував придумати йому якусь заміну. Але, як ми всі знаємо, цього не сталося.

Що ж, Лейбніц вів листування щодо позначень із самими різними людьми. Він бачив себе кимось на кшталт голови комітету стандартів математичних позначень — так би ми сказали зараз. Він вважав, що позначення повинні бути максимально короткими. Наприклад, Лейбніц говорив: "Навіщо використовувати дві точки для позначення ділення, коли можна використовувати лише одну?".

Деякі з пропонованих їм ідей так і не отримали поширення. Приміром, використовуючи букви для позначення змінних, він використовував астрономічні знаки для позначення виразів. Досить цікава ідея, насправді.

Так він позначав функції.



Крім цих моментів і деяких винятків зразок символу перетину квадратів, який Лейбніц використав для позначення рівності, його позначення практично незмінними дійшли до наших днів.

У 18 столітті Ейлера активно користувався позначеннями. Однак, по суті, він слідував по шляху Лейбніца. Гадаю, він був першим, хто всерйоз почав використовувати грецькі літери нарівні з латинськими для позначення змінних.

Є і деякі інші позначення, які з'явилися незабаром після Лейбніца. Наступний приклад з книги, що вийшла через кілька років після смерті Ньютона. Це підручник алгебри, і він містить досить традиційні алгебраїчні позначення, вже в друкованому вигляді.

image

А ось книга Лопіталя, надрукована приблизно в той же час, у якої вже практично сучасна алгебраїчна нотація.

image

І, нарешті, ось приклад Ейлера, що містить сучасні позначення для інтегралів та іншого.

image

Ейлер — популяризував сучасне позначення числа пі, яке спочатку було запропоновано Вільямом Джонсом, який розглядав його як скорочення від слова периметр.

Запропонована Лейбніцем і побратимами нотація досить довго залишалася незмінною. Відбувалися невеликі зміни, як, наприклад квадрат x отримав написання x2. Проте практично нічого нового не з'явилося.

Проте в кінці 19 століття спостерігається новий сплеск інтересу до математичної нотації, пов'язаний з розвитком математичної логіки. Були деякі нововведення, зроблені фізиками, такими як Максвелл і Гіббс, в основному для векторів і векторного аналізу, як наслідок розвитку абстрактної алгебри. Однак найбільш значущі зміни були зроблені людьми, починаючи з Фреге і приблизно з 1879 року, які займалися математичною логікою.

Ці люди у своїх устремліннях були близькі до Лейбницу. Вони хотіли розробити нотацію, яка представляла б не лише математичні формули, але і математичні висновки і докази. В середині 19 століття Буль показав, що основи логіки висловлювань можна представляти у термінах математики. Однак Фреге і його однодумці хотіли піти далі і представити так як логіку висловлювань, так і будь-які математичні судження у відповідних математичних термінах і позначеннях.

Фреге вирішив, що для вирішення цього завдання потрібні графічні позначення. Ось фрагмент його так званої "концептуальної нотації".

image

На жаль, у ній важко розібратися. І насправді, якщо подивитися на історію позначень в цілому, то часто можна зустріти спроби винаходу графічних позначень, які виявлялися важкими для розуміння. Але в будь-якому випадку, позначення Фреге вже точно не стали популярними.

Потім був Пеано, самий головний ентузіаст в області математичної нотації. Він робив ставку на лінійне уявлення позначень. Ось приклад:

image

Взагалі кажучи, у 80-х роках 19 століття Пеано розробив те, що дуже близько до позначень, які використовуються в більшості сучасних теоретико-множинних концепцій.

Однак, як і Лейбніц, Пеано не бажав зупинятися лише на універсальній нотації для математики. Він хотів розробити універсальну мову для всього. Ця ідея реалізувалася у нього в те, що він назвав інтерлінгва — мову на основі спрощеної латині. Потім він написав щось на зразок короткого викладення математики, назвавши це Formulario Математико, яке було засноване на його позначеннях для формул, та праця цей був написав на цій похідною від латини — на інтерлінгвою.

Інтерлінгва, подібно есперанто, який з'явився приблизно в це ж час, так і не отримав широкого розповсюдження. Однак цього не можна сказати про позначення Пеано. Спершу про них ніхто нічого толком і не чув. Але потім Уайтхед і Рассел написали свою працю Principia Mathematica, в якому використовувалися позначення Пеано.

Думаю, Уайтхед і Рассел виграли б приз в номінації "найбільш насичена математичними позначеннями робота, яка коли-небудь була зроблена без допомоги обчислювальних пристроїв". Ось приклад типової сторінки Principia Mathematica.

image

У них були всі мислимі види позначень. Часта історія, коли автори попереду своїх видавців: Рассел сам розробляв шрифти для багатьох використовуваних їм позначень.

І, зрозуміло, тоді мова йшла не про шрифти TrueType або про Type 1, а про самих справжніх шматках свинцю. Я про те, що Рассела можна було зустріти з візком, повним свинцевих відбитків, катящему її у видавництво Кембриджського університету для забезпечення коректної верстки його книг.

Але, незважаючи на всі ці зусилля, результати були досить гротескними і малозрозумілими. Я думаю, це досить ясно, що Рассел і Уайтхед зайшли занадто далеко зі своїми позначеннями.

І хоча область математичної логіки трохи прояснилася в результаті діяльності Рассела і Уайтхед, вона все ще залишається найменш стандартизованої і містить найскладнішу нотацію.

Але що щодо більш поширених складових математики?

Якийсь час на початку 20 століття те, що було зроблено в математичній логіці, ще не справило ніякого ефекту. Однак ситуація різко почала змінюватися з рухом Бурбак, яке почало розростатися у Франції в приблизне сорокові роки.

Бурбак надавали особливого значення набагато більш абстрактного, логіко-орієнтованого підходу до математики. Зокрема, вони акцентували увагу на використанні позначень там, де це тільки можливо, будь-яким способом зводячи використання потенційно неточного тексту до мінімуму.

Десь із сорокових роботи в галузі чистої математики зазнали серйозні зміни, що можна помітити у відповідних журналах, в роботах міжнародного математичного співтовариства та інших джерелах подібного роду. Зміни полягали у переході від робіт, повних тексту і лише з основними алгебраїчними і обчислювальними викладками до робіт, насиченими позначеннями.

Звичайно, ця тенденція торкнулася не всіх областей математики. Це в деякому роді те, чим займаються в лінгвістиці звичайних природних мов. За застарілим використовуваних математичних позначень можна помітити, як різні галузі, які їх використовують, відстають від основної магістралі математичного розвитку. Так, наприклад, можна сказати, що фізика залишилася десь в кінці 19 століття, використовуючи вже застарілу математичні позначення тих часів.

Є один момент, який постійно виявляється в цій галузі — нотація, як і звичайні мови, сильно розділяє людей. Я маю на увазі, що між тими, хто розуміє конкретні позначення, і тими, хто не розуміє, є великий бар'єр. Це здається досить містичним, нагадуючи ситуацію з алхіміками і окультистами — математична нотація сповнена знаків і символів, які люди в звичайному житті не використовують, і більшість людей не розуміють їх.

Насправді, досить цікаво, що з недавніх пір в рекламі з'явився тренд на використання математичних позначень. Думаю, з якоїсь причини математична нотація стала чимось на зразок шику. Ось один актуальний приклад реклами.

image

Ставлення до математичних позначень, наприклад, у шкільній освіті, часто нагадує мені ставлення до символів секретних спільнот тощо.

Що ж, це був короткий конспект деяких найбільш важливих епізодів історії математичної нотації.

У ході історичних процесів деякі позначення перестали використовуватися. Крім деяких областей, таких як математична логіка, вона стала дуже стандартизованої. Різниця у використовуваних різними людьми позначеннях мінімальна. Як і в ситуації з будь-яким звичайним мовою, математичні записи практично завжди виглядають однаково.

Комп'ютери
Ось питання: чи можна зробити так, щоб комп'ютери розуміли ці позначення?

Це залежить від того, наскільки вони систематизовані і як багато сенсу можна витягти з деякого заданого фрагмента математичної запису.

Ну, сподіваюся, мені вдалося донести думку про те, що нотація розвивалася в результаті непродуманих випадкових історичних процесів. Було кілька людей, таких як Лейбніц та Пеано, які намагалися підійти до цього питання системно. Але в основному позначення з'являлися по ходу вирішення якихось конкретних завдань — подібно до того, як це відбувається у звичайних розмовних мовах.

І одна з речей, яка мене здивувала, полягає в тому, що по суті ніколи не проводилося интроспективного вивчення структури математичної нотації.

Граматика звичайних розмовних мов розвивалася століттями. Без сумніву, багато римські і грецькі філософи і оратори приділяли їй багато уваги. І, по суті, вже приблизно в 500 року до н. е. Паніні дивно докладно і ясно розписав граматику для санскриту. Фактично, граматика Паніні була дивно схожа за структурою на специфікацію правил створення комп'ютерних мов формі Бекуса-Наура, яка використовується в даний час.

І були граматики не тільки для мов — в останнє сторіччя з'явилося нескінченну кількість наукових робіт по правильному використанню мови тощо.

Але, незважаючи на всю цю активність відносно звичайних мов, по суті, абсолютно нічого не було зроблено для мови математики і математичної нотації. Це справді досить дивно.

Були навіть математики, які працювали над граматиками звичайних мов. Раннім прикладом був Джон Валліс, який придумав формулу твори Уолліса для числа пі, і ось він писав роботи з граматики англійської мови в 1658 році. Уолліс був тим самим чоловіком, який почав всю цю метушню з правильним використанням "will" або "shall".

На початку 20 століття в математичній логіці говорили про різних шарах правильно сформованого математичного виразу: змінні всередині функцій всередині предикатів всередині функцій всередині сполучних слів всередині кванторов. Але не про те, що ж це все означало для позначень виразів.

Деяка визначеність з'явилася в 50-е роки 20 століття, коли Хомський і Бакус, незалежно розробили ідею контекстно-вільних мов. Ідея прийшла походу роботи над правилами підстановки в математичній логіці, в основному завдяки Емілю Посаді в 20-х роках 20 століття. Але, цікаво, що і Хомського, і у Бакуса виникла одна і та ж ідея саме в 1950-е.

Бакус застосував її до комп'ютерних мов: спершу до Fortran, потім ALGOL. І він помітив, що алгебраїчні вирази можуть бути представлені у контекстно-вільній граматиці.

Хомський застосував цю ідею до звичайної людської мови. І він зазначав, що з деяким ступенем точності звичайні людські мови так само можуть бути представлені контекстно-вільними граматиками.

Звичайно, лінгвісти включаючи Хомського, витратили роки на демонстрацію того, наскільки все ж ця ідея не відповідає дійсності. Але річ, яку я завжди зазначав, а з наукової точки зору вважав найважливішою, полягає в тому, що у першому наближенні це все-таки істина — те, що звичайні природні мови контекстно-вільні.

Отже, Хомський вивчав звичайну мову, а Бакус вивчав такі речі, як ALGOL. Однак ніхто з них не розглядав питання розробки більш просунутою математики, ніж простий алгебраїчний мову. І, наскільки я можу судити, практично ніхто з тих часів не займався цим питанням.

Але, якщо ви хочете подивитися, чи зможете ви інтерпретувати деякі математичні позначення, ви повинні знати, граматику якого типу вони використовують.

Зараз я повинен сказати вам, що вважав математичні позначення чимось занадто випадковим для того, щоб її міг коректно інтерпретувати комп'ютер. На початку дев'яностих ми горіли ідеєю надати можливість Mathematica працювати з математичної нотацією. І по ходу реалізації цієї ідеї нам довелося розібратися з тим, що відбувається з математичної нотацією.

Ніл Сойффер витратив багато років, працюючи над редагуванням і інтерпретацією математичної нотації, і коли він приєднався до нас у 1991, він намагатиметься переконати мене, що з математичної нотацією цілком можна працювати як з введенням, так і з виведенням.

Частина з виведенням даних була досить простою: в кінці кінців, TROFF і TEX вже виконали велику роботу в цьому напрямку.

Питання полягало у введенні даних.

Насправді, ми вже дещо з'ясували для себе щодо виведення. Ми зрозуміли, що хоча б на деякому рівні багато математичні позначення можуть бути представлені в деякій контекстно-вільній формі. Оскільки багато знають подібний принцип, скажімо, TEX, то можна було б все налаштувати через роботу з вкладеними структурами.

Але що щодо вхідних даних? Один з найважливіших моментів полягав у тому, з чим завжди стикаються при парсингу: якщо у вас є рядок тексту з операторами і операндами, то як визначити, що і з чим групується?

Отже, припустимо, у вас є подібне математичний вираз.

Sin[x+1]^2+ArcSin[x+1]+c(x+1)+f[x+1]

Що воно означає? Щоб це зрозуміти, треба знати пріоритети операторів — які діють сильніше, а які слабкіше щодо операндів.

Я підозрював, що для цього немає якогось серйозного обгрунтування ні в яких статтях, присвячених математики. І я вирішив дослідити це. Я пройшовся по найрізноманітнішої математичної літератури, показував різним людям якісь випадкові фрагменти математичної нотації і запитував у них, як би вони їх інтерпретували. І я виявив дуже цікаву річ: була дивовижна злагодженість думок людей у визначенні пріоритетів операторів. Таким чином, можна стверджувати: є певна послідовність пріоритетів математичних операторів.

Можна з певною впевненістю сказати, що люди представляють саме цю послідовність пріоритетів, коли дивляться на фрагменти математичної нотації.

Виявивши цей факт, я став значно більш оптимістично оцінювати можливість інтерпретації вводяться математичних позначень. Один із способів, за допомогою якого завжди можна це реалізувати — використовувати шаблони. Тобто достатньо мати просто шаблон для інтеграла і заповнювати комірки подынтегрального вирази, змінної і так далі. І коли шаблон вставляється в документ, то все виглядає як треба, однак все ще міститься інформація про те, що це за шаблон, і програма розуміє, як це інтерпретувати. І багато програми дійсно так і працюють.

Але в цілому це вкрай незручно. Тому що якщо ви спробуєте швидко вводити дані або редагувати, ви будете виявляти, що комп'ютер вам бикает (beeping) і не дає робити ті речі, які, очевидно, повинні бути доступними для реалізації.

Дати людям можливість введення у вільній формі — значно більш складна задача. Але це те, що ми хочемо реалізувати.

Отже, що це тягне?

Насамперед, математичний синтаксис повинен бути ретельно продуманим і однозначним. Очевидно, отримати подібний синтаксис можна, якщо використовувати звичайну мову програмування з заснованим на рядках синтаксисом. Але тоді ви не отримаєте знайому математичні позначення.

Ось ключова проблема: традиційна математична нотація містить неоднозначності. Принаймні, якщо ви захочете уявити її в досить загальному вигляді. Візьмемо, наприклад, "i". Що це — Sqrt[-1] або змінна "i"?

У звичайному текстовому InputForm Mathematica всі подібні неоднозначності вирішені простим шляхом: всі вбудовані об'єкти Mathematica починаються з великої літери.

Але заголовна "I" не дуже схожа на те, що позначається Sqrt[-1] у математичних текстах. І що з цим робити? І ось ключова ідея: можна зробити інший символ, який начебто теж прописна «i», однак це буде не звичайна прописна «i», а квадратний корінь з -1.

Можна було б подумати: Ну, а чому б просто не використовувати дві «i», які б виглядали однаково, — прям як у математичних текстах — проте з них буде особливої? Ну, це б точно збивало з пантелику. Ви повинні будете знати, яку саме «i» ви друкуєте, а якщо ви її кудись пересунеться або зробите щось подібне, то вийде плутанина.

Отже, значить, повинно бути два "i". Як повинна виглядати особлива версія цього символу?

У нас була ідея — використовувати подвійне накреслення для символу. Ми перепробували найрізноманітніші графічні уявлення. Але ідея з подвійним накресленням виявилася кращою. У деякому роді вона відповідає традиції в математиці позначати специфічні об'єкти подвійним накресленням.

Так, наприклад, прописна R могла б бути змінною в математичних записів. А ось R з подвійним накресленням — вже специфічний об'єкт, яким позначають безліч цілих чисел.

Таким чином, "i" з подвійним накресленням є специфічний об'єкт, який ми називаємо ImaginaryI. Ось як це працює:



Ідея з подвійним накресленням вирішує безліч проблем.

В тому числі і найбільшу — інтеграли. Припустимо, ви намагаєтеся розробити синтаксис для інтегралів. Одне з ключових питань — що може означати "d" в інтегралі? Що, якщо це параметр в подынтегральном вираженні? Або змінна? Виходить жахлива плутанина.

Все стає дуже просто, якщо використовувати DifferentialD або "d" з подвійним накресленням. І виходить добре визначений синтаксис.

Можна проінтегрувати x в ступені d, поділена на квадратний корінь від x+1. Ось як це працює:



Виявляється, що потрібно всього лише кілька маленьких змін на підставі математичного позначення, щоб зробити його однозначним. Це дивно. І дуже здорово. Тому що ви можете просто ввести щось, що складається з математичних позначень, у вільній формі, і воно буде прекрасно зрозуміло системою. І це те, що ми реалізували Mathematica 3.

Звичайно, щоб все працювало так, як треба, потрібно розібратися з деякими нюансами. Наприклад, мати можливість вводити що б то ні було ефективним і легко запам'ятовується шляхом. Ми довго думали над цим. І ми придумали кілька гарних і загальних схем для реалізації подібного.

Одна з них — введення таких речей, як мірою, як верхніх індексів. У звичайному текстовому введення для позначення ступеня використовується символ ^. Ідея полягає у використанні control — ^, з допомогою якої можна вводити явний верхній індекс. Та ж ідея для поєднання control — /, за допомогою якого можна вводити «двоповерхову» дріб.

Наявність ясного набору принципів подібних цьому важливо для того, щоб змусити всі разом працювати на практиці. І воно працює. Ось як міг би виглядати enter досить складного виразу:



Але ми можемо брати фрагменти з цього результату і працювати з ними.



І сенс в тому, що цей вираз цілком зрозуміло для Mathematica, тобто воно може бути обчислено. З цього випливає, що результати виконання (Out) — об'єкти тієї ж природи, що і вхідні дані (In), тобто їх можна редагувати, використати їх частини окремо, використовувати їх фрагменти у якості вхідних даних і так далі.

Щоб змусити все це працювати, нам довелося узагальнити звичайні мови програмування і дещо проаналізувати. Перш була впроваджена можливість працювати з цілим «зоопарком» спеціальних символів в якості операторів. Проте, ймовірно, більш важливо те, що ми впровадили підтримку двовимірних структур. Так, крім префиксных операторів, є підтримка оверфиксных операторів та іншого.

Якщо ви подивіться на це вираз, ви можете сказати, що воно не зовсім схоже на традиційну математичні позначення. Але воно дуже близько. І воно безсумнівно містить всі особливості структури і форм запису звичайної математичної нотації. І важлива річ полягає в тому, що ні у кого, які володіють звичайної математичної нотацією, не виникне труднощів в інтерпретації цього виразу.

Звичайно, є деякі косметичні відмінності від того, що можна було б побачити в звичайному підручнику з математики. Приміром, як записуються тригонометричні функції, ну і тому подібне.

Однак я готовий посперечатися, що StandardForm Mathematica краще і ясніше для подання цього виразу. І в книзі, яку я писав багато років про науковому проекті, яким я займався, для представлення чого б то не було я використовував тільки StandardForm.

Однак якщо потрібно повна відповідність із звичайними підручниками, то знадобиться вже щось інше. І ось інша важлива ідея, реалізована в Mathematica 3: розділити StandardForm TraditionalForm.

Будь-який вираз я завжди можу сконвертувати в TraditionalForm.



І насправді TraditionalForm завжди містить достатньо інформації, щоб бути однозначно сконвертированным назад в StandardForm.

Але TraditionalForm виглядає практично як звичайні математичні позначення. Зі всіма цими дивними речами в традиційній математичної нотації, як запис синус в квадраті x замість синус x в квадраті і так далі.

Так що щодо введення TraditionalForm?

Ви могли помітити пунктир праворуч від клітинки [в інших висновках осередки були приховані для спрощення картинок — прим. ред.]. Вони означають, що є якийсь небезпечний момент. Однак давайте спробуємо дещо відредагувати.



Ми прекрасно можемо все змінити. Давайте подивимося, що станеться, якщо ми спробуємо обчислити.



Ось, виникло попередження. У будь-якому випадку, все одно продовжимо.



Що ж, система зрозуміла, що ми хочемо.

Фактично, у нас є кілька сотень евристичних правил інтерпретації виразів у традиційній формі. І вони працюють дуже добре. Досить добре, щоб пройти через великі обсяги застарілих математичних позначень, визначених, скажімо, в TEX, і автоматично і однозначно перетворити їх в осмислені дані Mathematica.

І ця можливість дуже надихає. Бо для того ж застарілого тексту на природній мові немає ніякого способу перетворити його у щось значуще. Однак в математиці є така можливість.

Звичайно, є деякі речі, пов'язані з математикою, в основному на стороні виходу, з якими істотно більше труднощів, ніж зі звичайним текстом. Частина проблеми в тому, що від математики часто очікують автоматичної роботи. Не можна автоматично згенерувати багато тексту, який буде досить осмисленим. Однак в математиці виробляються обчислення, які можуть видавати великі вираження.

Так що вам потрібно вигадувати, як розбивати вираз по рядкам так, щоб все виглядало досить акуратно, і в Mathematica ми добре попрацювали над цим завданням. І з нею пов'язано кілька цікавих питань, як, наприклад, те, що під час редагування вираження оптимальне розбиття на рядки постійно може змінюватися по ходу роботи.

І це значить, що будуть виникати такі противні моменти, як ви друкуєте, і раптом курсор перескакує тому. Що ж, цю проблему, думаю, ми вирішили досить витонченим чином. Давайте розглянемо приклад.

image

Ви бачили це? Була забавна анімація, яка з'являється на мить, коли курсор повинен пересунутися тому. Можливо, ви її помітили. Однак якщо б ви друкували, ви б, мабуть, і не помітили б, що курсор пересунувся тому, хоча ви могли б її помітити, тому що ця анімація змушує ваші очі автоматично подивитися на це місце. З точки зору фізіології, вважаю, це працює за рахунок нервових імпульсів, які надходять не в зорову кору, а прямо в мозковий стовбур, який контролює рухи очей. Отже, ця анімація змушує вас підсвідомо перемістити свій погляд в потрібне місце.

Таким чином, ми змогли знайти спосіб інтерпретувати стандартну математичну нотацію. Чи означає це, що тепер вся робота в Mathematica тепер повинна проводитися в рамках традиційних математичних позначень? Ми повинні ввести спеціальні символи для всіх представлених операцій Mathematica? Таким чином можна отримати досить компактну нотацію. Але наскільки це розумно? Чи буде це читаемо?

Мабуть, відповіддю буде ні.

Думаю, тут криється фундаментальний принцип: хтось хоче всі представляти в позначеннях, і не використовувати нічого іншого.

А комусь не потрібні спеціальні позначення. А хтось користується Mathematica FullForm. Проте з цією формою дуже виснажливо працювати. Можливо, саме тому синтаксис мов на кшталт LISP здається настільки важким — по суті це синтаксис FullForm Mathematica.

Інша можливість полягає в тому, що всьому можна присвоїти спеціальні позначення. Вийде щось на зразок APL або якихось фрагментів математичної логіки. Ось приклад цього.

image

Досить важко читати.

Ось інший приклад з оригінальної статті Тюрінга, в якій містяться позначення для універсальної машини Тюрінга, знову-таки — приклад не найкращою нотації.

image

Вона теж відносно нечитабельная.

Питання полягає в тому, що ж знаходиться між двома такими крайнощами, як LISP і APL. Думаю, ця проблема дуже близька до тієї, що виникала при використанні дуже коротких імен для команд.

Наприклад, Unix. Ранні версії Unix дуже здорово виглядали, коли там була невелика кількість коротких для набору команд. Але система розросталася. І через якийсь час було вже велика кількість команд, що складаються з невеликої кількості символів. І більшість простих смертних не змогли б їх запам'ятати. І все стало виглядати абсолютно незрозумілим.

Та ж ситуація, що і з математичної або інший нотацією, якщо на те пішло. Люди можуть працювати лише з невеликою кількістю спеціальних форм і символів. Можливо, з кількома десятками. Порівняним з довжиною алфавіту. Але не більше. А якщо дати їм більше, особливо все і відразу, в голові у них буде повна плутанина.

Це слід дещо конкретизувати. Ось, наприклад, безліч різних операторів відносин.



Але більшість з них, по суті, складаються з невеликої кількості елементів, так що з ними проблем бути не повинно.

Звичайно, принципово люди можуть вивчити дуже велика кількість символів. Тому що в мовах кшталт китайського або японського є тисячі ієрогліфів. Однак людям потрібно кілька додаткових років для навчання читання на цих мовах у порівнянні з тими, які використовують звичайний алфавіт.

Якщо говорити про символи, до речі, вважаю, що людям набагато легше впорається з якимись новими символами в якості змінних, ніж в якості операторів. І дуже цікаво розглянути це питання з точки зору історії.

Один з найбільш цікавих моментів — у всі часи і практично без винятку в якості перемінних використовувались лише латинські і грецькі символи. Ну, Кантор ввів алеф, взятий з івриту, для своїх кардинальних чисел нескінченних множин. І деякі люди стверджують, що символ приватної похідною — російська д, хоча я думаю, що насправді це не так. Однак немає ніяких інших символів, які були запозичені з інших мов та отримали поширення.

До речі, напевно, вам відомо, що в англійській мові літера "e" — найпопулярніша, потім іде "t", ну і так далі. І мені стало цікаво, як розподіл за частотою використання літер в математиці. Тому я досліджував сайт MathWorld, в якому міститься велика кількість математичної інформації — більше 13 500 записів, і подивився, як розподіл для різних літер [на жаль, цю картинку, зроблену Стівеном, не вдалося осучаснити — прим. ред.].

image

Можна побачити, що "e" — найпопулярніша. І дуже дивно, що "a" займає друге місце. Це дуже незвично. Можна побачити, що мала π — найбільш популярна, за якою йдуть θ, α, φ, μ, β і так далі. А серед великих найпопулярніші — Γ і Δ.

Добре. Я трохи розповів про позначення, які в принципі можна використовувати в математиці. Так яка нотація краще всього підходить для використання?

Більшість людей, що використовують математичні позначення, напевно задавалися цим питанням. Однак для математики немає ніякого аналога, подібного "Сучасному використання англійської мови" Фаулера для англійської мови. Була невелика книжка під назвою Математика в друку, видана AMS, проте вона в основному про типографських прийомах.

В результаті ми не маємо добре розписаних принципів, аналогічним речам на зразок инфинитивов з окремими частками в англійській мові.

Якщо ви використовуєте StandardForm Mathematica, вам це більше не потрібно. Тому що все, що ви введете, буде однозначно інтерпретовано. Однак для TraditionalForm слід дотримуватися деяких принципів. Наприклад, не писати , тому що не зовсім зрозуміло, що це означає.

Майбутнє
Щоб закінчити, дозвольте мені розповісти трохи про майбутнє математичної нотації.

Який, наприклад, мала б бути нова нотація?

В якій-небудь книзі символів буде міститися близько 2500 символів, популярних в тих чи інших областях і не є літерами мов. І з правильним написанням символів, багато з них могли б ідеально поєднуватися з математичними символами.

Для чого їх використовувати?

Перше що приходить на розум можливість — нотація для представлення програм і математичних операцій. В Mathematica, наприклад, представлено досить багато текстових операторів, що використовуються в програмах. І я довгий час вважав, що було б здорово мати можливість використовувати для них якісь спеціальні символи замість комбінацій звичайних символів ASCII [останні версії Mathematica повністю підтримують Unicode — прим. ред.].

Виявляється, іноді це можна реалізувати досить просто. Оскільки ми вибрали символи ASCII, то часто можна отримати деякі символи, дуже близькі за написанням, але більш витончені. Приміром, якщо в Mathematica набрати ->, то ця стрілочка автоматично перетворитися в більш витончену . І це все реалізовується за рахунок того, що парсер Mathematica може працювати в тому числі і зі спеціальними символами.

Я часто думав про те, як би розширити все це. І ось, поступово з'являються нові ідеї. Зверніть увагу на знак решітки #, або номерний знак, або, як його ще іноді називають, октоторп, який ми використовуємо в тих місцях, на які передається параметр чистої функції. Він нагадує квадрат з щупальцями. І в майбутньому, можливо, він буде позначатися симпатичним квадратиком з маленькими зарубками, і буде означати місце для передачі параметра в функцію. І він буде більш гладким, не схожим на фрагмент звичайного коду, чимось на зразок піктограми.

Наскільки далеко можна зайти у цьому напрямку — поданні речей у візуальній формі або у вигляді піктограм? Ясно, що такі речі, як блок-схеми в інженерії, коммутативные діаграми в чистій математиці, технологічні схеми — все добре справляються зі своїми завданнями. Принаймні до цього моменту. Але як довго це може тривати?

Не думаю, що вже дуже довго. Думаю, деякі наближаються до деяких фундаментальних обмеженням людей в опрацюванні лінгвістичної інформації.

Коли мови більш або менш контекстно-вільні, мають деревоподібну структуру, з ними можна багато чого зробити. Наша буферна пам'ять з п'яти елементів пам'яті і що б то ні було спокійно зможе їх розібрати. Звичайно, якщо у нас буде дуже багато допоміжних пропозицій навіть на контекстно-вільній мовою, то буде ймовірність вичерпати стековое простір і потрапити в халепу. Але, якщо стек не буде заходити занадто глибоко, то все буде працювати як треба.

Але що щодо мереж? Чи можемо ми розуміти довільні мережі? Я маю на увазі — чому у нас повинні бути тільки префіксні, інфіксние, оверфиксные оператори? Чому б операторам не отримувати свої аргументи через якісь зв'язки всередині мережі?

Мене особливо цікавило це питання в контексті того, що я займався деякими науковими питаннями щодо мереж. І мені дійсно хотілося б отримати деякий мовне подання для мереж. Але не дивлячись на те, що я приділив цьому питанню досить багато часу — не думаю, що мій мозок зміг би працювати з подібними мережами так само, як зі звичайними мовними або математичними конструкціями, що мають одновимірну або двовимірну контекстно-вільну структуру. Так що я думаю, що це, можливо, те місце, до якого нотація не зможе дістатися.

Взагалі, як я згадував вище, це частий випадок, коли мова або нотація обмежують наш простір мислимого.

Отже, що це означає для математики?

У своєму науковому проекті я розробляв деякі основні узагальнення того, що люди зазвичай відносять до математики. І питання в тому, які позначення не можуть бути використані для абстрактного подання подібних речей.

Що ж, я не зміг поки що повністю відповісти на це питання. Однак я виявив, що, принаймні в більшості випадків, графічне подання або подання у вигляді піктограм набагато ефективніше позначень у вигляді конструкцій на звичайних мовах.

Повертаючись до самого початку цієї розмови, ситуація нагадує те, що відбувалося тисячі років в геометрії. В геометрії ми знаємо, як представити що-то в графічному вигляді. Ще з часів стародавнього Вавилона. І трохи більше ста років тому стало ясно, як можна формулювати геометричні задачі з точки зору алгебри.

Однак ми все ще не знаємо простого і ясного способу представляти геометричні схеми в позначеннях на природній мові. І моя думка полягає в тому, що практично всі ці математичні речі лише в невеликій кількості можуть бути представлені в позначеннях на природній мові.

Однак ми — люди — легко сприймаємо лише ці позначення на природній мові. Так що ми схильні вивчати ті речі, які можуть бути представлені цим способом. Звичайно, подібні речі не можуть бути тим, що відбувається в природі та всесвіту.

Але це вже зовсім інша історія. Так що я краще закінчу на цьому.

Велике спасибі.
Примітки
В ході обговорення після виступу і під час спілкування з іншими людьми на конференції виникло кілька моментів, які варто було б обговорити.

Емпіричні закони для математичних позначень
При вивченні звичайного природної мови були виявлені різні історико-емпіричні закони. Приклад — Закон Грімма, які описує переноси в згодних на індоєвропейських мовах. Мені було цікаво, чи можна знайти подібні історико-емпіричні закони для математичного позначення.

Дана Скотт запропонувала такий варіант: тенденція до видалення явних параметрів.

Як приклад, в 60 роках 19 століття часто кожен компонент вектора іменувався окремо. Але потім компоненти стали позначати індексами — як aі. І незабаром після цього — в основному після робіт Гіббса — вектори стали представляти як один об'єкт, що позначається, скажімо, як imageабо a.

З тензорами все не так просто. Позначення, избегающую явних індексів, зазвичай називають координатно-вільної. І така нотація — часте явище в чистій математиці. Однак у фізиці цей підхід вважається занадто абстрактним, тому явні індекси використовуються повсюдно.

Щодо функцій так само є тенденція явно не згадувати параметри. У чистій математиці, коли функції розглядаються через зіставлення, вони часто згадуються лише по своєму імені — просто f, без будь-яких параметрів.

Однак це буде добре тільки тоді, коли у функції тільки один параметр. Коли кілька параметрів, зазвичай стає незрозуміло, як будуть працювати ті потоки даних, які асоційовані з параметрами.

Однак, ще у 20-х роках 20 століття було показано, що можна використовувати так звані комбінатори для визначення подібних потоків даних без будь-якої явної вказівки параметрів.

Комбінатори не використовувалися в основних течіях математики, однак час від часу ставали популярними в теорії обчислень, хоча їх популярність помітно зменшилася з-за несумісності з ідеєю про типи даних.

Комбінатори досить легко поставити в Mathematica через завдання функції з складовим заголовком. Ось як можна визначити стандартні комбінатори:

k[x_][y_]:=i x
s[x_][y_][z_]:= x[z][y[z]]


Якщо визначити ціле число n, по суті, в унарной систему, використовуючи Nest[s[s[k[s]][k]],k[s[k][k]],n], тоді додавання можна буде визначити як s[k[s]][s[k[s[k[s]]]][s[k[k]]]], множення s[k[s]][k], а ступінь — s[k[s[s[k][k]]]][k]. Ніякі змінні не потрібні.

Проблема полягає в тому, що вирази виходять незрозумілими, і з цим нічого не поробиш. Я намагався знайти якісь способи для більш ясного подання їх і пов'язаних з ними обчислень. Я домігся невеликого прогресу, проте не можна сказати, що задача була вирішена.

Друковані позначення проти екранних
Деякі запитували про різницю у можливостях друкованих та екранних позначень.

Щоб можна було розуміти позначення, вони повинні бути схожими, і різниця між ними не повинна бути дуже великою.

Але є деякі очевидні можливості.

По-перше, на екрані легко можна використовувати колір. Можна було б подумати, що було якимось чином зручно використовувати різні кольори для змінних. Мій досвід говорить про те, що це зручно для роз'яснення формули. Проте все стане досить заплутаним, якщо, наприклад, червоного x і зеленому x будуть відповідати різні змінні.

Інша можливість полягає в тому, щоб мати у формулі якісь анімовані елементи. Вважаю, що вони будуть настільки ж дратівливими, як і миготливий текст, і не будуть особливо корисними.

Мабуть, краща ідея — мати можливість приховувати і розгортати певні частини виразу — як групи клітинок в ноутбуці Mathematica. Тоді буде можливість відразу отримати уявлення про все вираженні, а якщо цікаві деталі, то його розгортати далі і далі.

Письмові позначення
Деякі могли б подумати, що я занадто багато часу приділив графічним позначенням.

Хотілося б прояснити, що я знаходжу досить скрутним графічні позначення звичайних математичних дій та операцій. У своїй книзі A New Kind of Science я повсюдно використовую графіком, і мені не видається жодного іншого способу робити те, що я роблю.

І в традиційній науці, і в математиці є безліч графічних позначень, які чудово працюють, нехай і в основному для статичних конструкцій.

Теорія графів — це очевидний приклад використання графічного подання.

До них близькі структурні діаграми з хімії та діаграми Фейнмана з фізики.

В математиці є методи для групових теоретичних обчислень, представлені почасти завдяки Предрагу Цвитановицу, і ось вони засновані на графічному позначенні.

І в лінгвістиці, наприклад, поширені діаграми для пропозицій, що показують дерево лінгвістичних компонентів і способи їх угрупування для освіти пропозиції.

Всі ці позначення, проте, стають малопридатними у випадках дослідження якихось дуже великих об'єктів. Однак у діаграм Фейнмана зазвичай використовується дві петлі, а п'ять петель — максимум, для якого коли-небудь були зроблені явні загальні обчислення.

Шрифти та символи
Я обіцяв розповісти дещо про символи і шрифтах.

В Mathematica 3 нам довелося виконати велику роботу, щоб розробити шрифти для більш ніж 1100 символів, що мають відношення до математичної і технічної нотації.

Одержання правильної форми — навіть для грецьких літер — часто було досить складним. З одного боку, ми хотіли зберегти певну традиційність у написанні, а з іншого — зробити грецькі літери максимально несхожими на англійські і які б то не було інші.

В кінці кінців я зробив ескізи для більшості символів. Ось до чого ми прийшли для грецьких літер. Ми розробили Times-подібний шрифт, моноширинний зразок Courier, а зараз розробляємо sans serif. Розробити шрифт Courier було непростим завданням. Потрібно, наприклад, було придумати, як зробити так, щоб йота займала весь слот під символ.

image

Так само були складнощі з скриптовими і готичними (фактурними) шрифтами. Часто у цих шрифтах букви настільки несхожі на звичайні англійські, що стають абсолютно нечитабельним. Ми хотіли, щоб ці шрифти вписувалися у відповідну тему їм, і, тим не менш, мали б тими ж габаритами, що і звичайні англійські літери.

Ось що у нас вийшло:

image

Веб сайт fonts.wolfram.com, в якому зібрана вся детальна інформація про символи і шрифтах, зрозуміло, якщо вони мають відношення до Mathematica та її шрифтів.

Пошук математичних формул
Деякі люди запитували про пошуку математичних формул [після створення Wolfram|Alpha з'явився гігантський обсяг баз даних, доступних в мові Wolfram Language, тепер можна отримати величезний масив інформації про будь формулах з допомогою функції MathematicalFunctionData — прим. ред.].

Очевидно легко сказати, що ж таке пошук звичайного тексту. Єдина питання полягає в еквівалентності рядкових і прописних букв.

Для математичних формул все складніше, тому що є ще багато різних эквивалентностей. Якщо питати про всіх можливих эквивалентностях, то все стане занадто складним. Але, якщо спитати про эквивалентностях, які просто мають на увазі заміну однієї змінної інший, то завжди можна визначити, чи еквівалентні два вирази.

Однак, для цього буде потрібно потужність візерунок однакових патернів Mathematica.

Ми плануємо інтегрувати можливості пошуку формул у наш сайт functions.wolfram.com, однак тут я не буду зупинятися на подробицях.

Невізуальні позначення
Хтось питав про невізуальні позначеннях.

Перша думка, яка в мене виникла, полягала в тому, що людський зір дає набагато більше інформації, ніж, скажімо, слух. Зрештою, з нашими очима з'єднаний мільйон нервових закінчень, а з вухами лише 50 000.

В Mathematica вбудовані можливості генерації звуків починаючи з другої версії, яка була випущена в 1991 році. І були деякі моменти, коли ця функція виявлялася корисною для розуміння якихось даних.

Однак я ніколи не знаходив подібну функцію корисною для чогось, пов'язаного з позначеннями.

Докази
Хтось питав про подання доказів.

Найбільша проблема полягає в поданні довгих доказів, які були автоматично знайдені за допомогою комп'ютера.

Велика кількість роботи було зроблено для подання доказів Mathematica. Прикладом є проект Theorema.

Найскладніші для подання доказу — скажімо, в логіці — представляють з себе деяку послідовність перетворень. Ось приклад такого доказу:

Дані аксіоми Шеффера для логіки (f це NAND):

{f[f[a,a],f[a,a]]==a,f[a,f[b,f[b,b]]]==f[a,a], f[f[a,f[b,c]],f[a,f[b,c]]]==f[f[f[b,b],a],f[f[c,c],a]]}

Довести комутативність, тобто що f[a,b]==f[b,a]:

image

Зауваження (a b) Nand[a,b]. В цьому доказі L == лемма, A == аксіома та T == теорема.

Відбір символів
Я хотів би дещо розповісти про вибір символів для використання в математичній нотації.

Існує близько 2500 часто використовуваних символів, які не зустрічаються в звичайному тексті.

Деякі з них занадто картинны — скажімо, позначення для крихких предметів. Деякі занадто вигадливі. Деякі повні чорної заливки, так що вони будуть занадто сильно виділятися на сторінці (символ радіації, наприклад).

Але деякі можуть бути цілком прийнятними.

Якщо зазирнути в історію, часто можна спостерігати картину, як із часом написання деяких символів спрощується.

Особливою проблемою, з якою я не так давно зіткнувся, був вибір хорошого для позначення таких логічних операцій, як NAND, NOR, XOR.

В літературі по логіці NAND позначається по-різному:

image

Жодне з цих позначень мені особливо не подобалося. В основному вони наповнені тонкими лініями і недостатньо цільні для того, щоб представляти бінарні оператори. Однак вони передають своє утримання.

Я прийшов до наступного позначення для оператора NAND, який заснований на стандартному, однак мають поліпшену візуальну форму. Ось поточна версія того, до чого я прийшов:

image

Частотний розподіл символів
Я згадував про частотному розподілі грецьких літер у MathWorld.

В додаток до цього я також порахував кількість різних об'єктів, іменованих з допомогою букв, що з'являються в словнику фізичних термінів та математичних скорочень. Ось результати.

image

У більш ранніх зразках математичної нотації, скажімо, в 17 столітті, звичайні слова йшли вперемішку з різними символами.

Проте все більше в таких сферах, як математика і фізика, проявлялася тенденція до виключення слів з позначень та іменування змінних однією або двома літерами.

У деяких областях інженерії і соціальних наук, куди математика дійшла не так давно і не є дуже абстрактною, звичайні слова набагато частіше можна зустріти в якості імен змінних.

Та ж історія з сучасними тенденціями в програмуванні. І все працює добре, поки формули досить прості. Однак по мірі ускладнення формул порушується їх візуальний баланс, і стає вже важко розгледіти їх загальну структуру.

Частини мови в математичній нотації
У розмові про відповідність мови математики і звичайного мови я хотів згадати питання частин мови.

Наскільки я знаю, у всіх звичайних мовах є дієслова та іменники, і в більшості з них є прикметники, прислівники та ін

В математичній нотації можна представляти змінні як іменники і дієслова як оператори.

А щодо інших частин мови?

Речі на зразок іноді грають роль спілок, як і в звичайних мовах (примітно, що у всіх мовах є окремі слова для AND і OR, проте ні в одному немає слова для NAND). А як префиксного оператора може розглядатися як прикметник.

Однак не до кінця ясно, якою мірою різні види лінгвістичних структур, пов'язані з частинами мови на звичайну мову, відображені в математичному позначенні.

З питань про технології Wolfram пишіть на info-russia@wolfram.com
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.