Випущена система Mathematica 10, що містить 700 + нових функцій і неймовірну кількість R&D

       
 Переклад статті Стівена Вольфрама, про систему Wolfram Mathematica 10, яка вийшла 9 липня 2014
Оригінальний текст ви можете знайти тут .
Висловлюю величезну подяку тим, хто допоміг мені перекласти цю статтю: Владіславe Глаголєву (Himura ), Сільвії Торосян і Руккі Наталії Самуиловна .

 
Цього літа ми випускаємо справді величезний спектр нових технологій. Два тижні тому ми запустили Wolfram Programming Cloud . А сьогодні, я радий представити вам в значній мірі оновлену версію Mathematica : Mathematica 10 .
 
 Wolfram Mathematica 10
 
Ми випустили Mathematica 1 трохи більше 26 років років тому, 23 червня 1988 З тих пір ми постійно і систематично робили Mathematica ще більше, могутніше, ширше, і глибше. Але Mathematica 10, випущена сьогодні, представляє собою мабуть самий великий перегонів у функціональності за всю історію Mathematica .
 
Особисто мені дуже приємно після стількох років бачити наскільки успішно себе проявили принципи , які я визначив в самому початку шляху з розробки Mathematica . І ще дуже приємно бачити, як далеко ми просунулися завдяки нашим талановитим співробітникам і тяжкого праці з розробки Mathematica протягом уже майже трьох десятиліть.
 
Напевно, нам ніколи не вдасться дізнатися, чи має чисто комерційний сенс наша відданість R & D (НДДКР) протягом стількох років. Але вона завжди мала сенс для мене — і успіх Mathematica , як і всієї нашої компанії, дозволяє нам будувати плани на далеке майбутнє, безперервно вкладаючись у побудову найпотужнішої технології шар за шаром.
 
Один з наших останніх проектів — створення Wolfram Language (Язика Wolfram), виникає з об'єднання Mathematica , Wolfram | Alpha і інших технологій. В результаті, Mathematica тепер стала основним додатком, створеним на основі Wolfram Language (Язика Wolfram).
 
Але Mathematica все ще, в чималому ступені, зберегла свою індивідуальність, як наш найстаріший флагманський продукт, а також, система, яка безперервно змінює уявлення про технічні обчисленнях вже майже чверть століття.
 
І сьогодні в Mathematica 10 ви можете побачити більше нового функціоналу, ніж у будь-якої з попередніх версій Mathematica . Приємно спостерігати таку довгу криву постійно прискорюється процесу розробки і усвідомлювати, що в Mathematica 10 було додано нових функцій більше, ніж їх було у всій Mathematica 1.
 
 Mathematica functions over time, by version
 
Так в чому ж полягають нові функціональні можливості Mathematica 10? Це суміш із зовсім нових областей і напрямів (наприклад, це — геометричні обчислення , машинне навчання і географічні обчислення ) — разом з обширним посиленням і розширенням існуючих областей . А також суміш всіляких об'єктів, які я вже давно запланував для вирішення нашою компанією, але реалізація яких вимагала розробки нами відповідних технологій, разом з тими об'єктами, розуміння можливості здійснення яких нашою компанією прийшло до мене лише недавно.
 
 New functionality in Mathematica 10
 
При першому запуску Mathematica 10 є деякі речі, які Ви помітите відразу. По-перше, Mathematica 10 відразу встановлює підключення безпосередньо до Wolfram Cloud (хмари Wolfram). На відміну від Wolfram Programming Cloud (Хмари Програмування Wolfram) — або скоро виходить Mathematica Online (Mathematica Онлайн) — Mathematica 10 Не запускає свій інтерфейс або обчислення в хмарі. Замість цього, вона підтримує всі переваги запуску безпосередньо на Вашому локальному комп'ютері — але вона підключається до Wolfram Cloud (хмари Wolfram), тому вона може мати файли, що зберігаються в хмарі, працювати з API хмари і іншими хмарними можливостями, а також вона має доступ до хмарним частинам Wolfram Knowledgebase (Бази Знань Wolfram).
 
Якщо Ви — «діючий» користувач Mathematica , то Ви помітите деякі зміни на початку роботи з документом (ноутбуком) Mathematica 10. Тепер скрізь є автозавершення вводяться команд — для значень опцій функцій, рядків — скрізь. Також є меню, що випадає допомоги, яке негайно видає шаблони функцій або документацію по них. Є також — за проханнями спільноти користувачів — можливість багаторазової скасування дій (Undo). Надзвичайно важко визначити, як і коли допустима коректна відміна обчислень та інших дій в Mathematica , однак, в Mathematica 10 ця проблема — багаторазової скасування дій — вирішена.
 
Інша помітна зміна в Mathematica 10 полягає в тому, що діаграми і графіки мають, за замовчуванням , новий, поліпшений вид (Ви, звичайно, можете повернутися до колишнього вигляду за допомогою відповідного значення опції PlotTheme ).
 
 Some new default styles in Mathematica 10
 
І для безлічі інших областей це тільки вершина айсберга. У невидимій частині айсберга знаходиться новий дуже потужний механізм зміни «графічних тем» — коли замість безлічі окремих опцій Вам треба тільки визначити загальну тему для графіка, наприклад, "web" (веб), "minimal" (мінімальний) або "scientific" (науковий ).
 
 Plot themes in Mathematica 10
 
А що щодо алгоритмів? У Mathematica 10 приголомшливу кількість нових алгоритмів. Безліч нових алгоритмів, багато з яких ми розробили для внутрішнього користування. Наприклад, алгоритм, що дозволяє Mathematica 10 в звичайному режимі вирішувати системи поліноміальних рівнянь з числовими коефіцієнтами, що мають більше 100000 рішень . Або кластер алгоритмів, вперше нами розроблений, який дає точні символьні рішення для всіх видів гібридних диференціальних рівнянь або диференціальних рівнянь із запізненням , перетворюючи такі рівняння в стандартні, звичайні диференціальні рівняння .
 
 Solving differential equations in Mathematica 10
 
Звичайно, в період розробки алгоритмів ми знаходимося у піднесеному настрої. Тому що наш багаторічний внесок в дизайн когерентних систем тепер означає, що при розробці будь-якого алгоритму ми легко можемо об'єднати алгоритмічні можливості всієї системи. Якщо, наприклад, ми розробляємо чисельний алгоритм, то легко можемо створити для цього складні алгебраїчні попередні викладки або застосувати теорію графів, або комбінаторну оптимізації або щось подібне. І ми можемо створювати нові типи алгоритмів, що об'єднують всі їх види, а також підходи, способами, які раніше були неможливі.
 
З самого початку, один з наших основних принципів полягав у тому, щоб автоматизувати все якомога більше — і створити не просто алгоритми, але закінчені мета-алгоритми, які автоматизують весь процес переходу від «мети обчислень» до того як і яким алгоритмом вироблятимуться обчислення, для досягнення цієї мети. Нами був розроблений метод подібної автоматизації, який дозволив нам протягом багатьох років «поглинати» все більше і більше областей обчислень, при цьому роблячи їх доступними не тільки для експертів, але також і для всіх бажаючих у вигляді звичайних будівельних блоків обчислень.
 
У Mathematica 10 однією з найважливіших областей в яких це відбувається — машинне навчання . У ядро ​​системи вбудовані всі види потужних фундаментальних алгоритмів: логістична регресія, випадкові лісу, методи опорних векторів (SVM), і т. д. А так же, всі види процедур предобработки даних та їх оцінки. Але для користувача, все це представлено двома максимально автоматизованими функціями: Classify і Predict . Тепер, маючи ці функції, привнести машинне навчання в будь-яку область простіше простого.
 
 Machine learning in Mathematica 10
 
У Mathematica 10 є величезний спектр нових алгоритмічних можливостей у галузі теорії графів , обробки зображень , теорії управління і у безлічі інших областей . Іноді комусь не здається дивним, що, принаймні, можна мати таку-то й таку-то функцію, навіть хоча насправді приємніше, щоб вона була такою ж досконалою, як у Mathematica 10. Однак, в інших випадках, спочатку здається неможливим, що функція могла б працювати.
 
Завдання бувають різними. Може бути завдання нерозв'язна в загальному вигляді або теоретично трудноразрешимая. Або ж вона погано обумовлена. Або в ній занадто багато варіантів. Або вона вимагає занадто багато даних. Примітно те, що зазвичай, при використанні механізмів, вбудованих в Mathematica і Wolfram Language (Мова Wolfram), стає можливим вирішення таких завдань, а так само, створення функцій, що покривають широкий спектр важливих прикладних проблем, пов'язаних з даною задачею.
 
Інша важлива задача — це те, як можна представляти самі різнопланові дані у відповідному форматі і робити над ними обчислення. Її рішення — це найсильніша сторона Wolfram Language (Язика Wolfram), яка постійно вдосконалюється, а всі доробки потрапляють відразу в Mathematica 10. Так, наприклад, в Mathematica 10 існує безпосередній символьна форма для наступних типів даних: дата і час , часові ряди , геолокації , годинне , і т. д.
 
 An example of geographic visualization in Mathematica 10
 
Wolfram Language (Мова Wolfram) має шляхи для символьного представлення неймовірно широкого спектру явищ реального світу. Але як щодо даних про ці явища? Багато з них є в Wolfram Knowledgebase (Базі Знань Wolfram) в хмарі. Скоро ми збираємося запустити Wolfram Discovery Platform , яка створена для великомасштабного доступу до даних із хмари. І так як це не є звичайним способом використання Mathematica (базові версії Mathematica 10 розраховані лише на невеликі обсяги запитуваних даних із хмари), то для розширення можливостей потрібно використання «валюти» — Wolfram Cloud Credits .
 
Тим не менш, в Mathematica 10 існує безліч приголомшливих нових речей, які можна буде зробити за допомогою всього лише невеликих обсягів даних з Wolfram Knowledgebase (Бази Знань Wolfram).
 
Деякий час тому я знайшов список того, що необхідно для Mathematica , який я написав ще в 1991 році. Деякі пункти з цього списку були зроблені протягом декількох років. Але більшість зажадало розробки величезного стека технологій, побудова якого зажадало багато років. При цьому принаймні пункту не було не вдавалося реалізувати всі ці роки, аж до теперішнього часу.
 
У цьому списку він значився просто як "PDEs" (Рівняння в приватних похідних). Але за цими чотирма літерами криються сотні років розвитку математики і величезна кількість потрібних алгоритмів і технологій. Так, звичайно Mathematica могла працювати з УрЧП (рівняннями в приватних похідних) вже протягом останніх 20 років. Але в Mathematica ми завжди прагнемо до якомога більшої спільності та надійності вбудованих алгоритмів і саме в цьому полягала найбільша трудність. Зокрема, ми хотіли, щоб система справлялася з УрЧП, заданими на областях довільної геометрії. І хоча існують стандартні методи, скажімо, метод кінцевих елементів, рішення УрЧП для різних областей і тіл, вони, тим не менш, не дають досить гарного способу описати відповідну геометрію областей і тіл в достатній спільності.
 
Протягом усіх років ми докладали величезних зусиль для розробки Mathematica і того, що зараз називається Wolfram Language (Мовою Wolfram). При цьому частина цього процесу розробки привела до розвитку обширних обчислювальних уявлень того, що традиційно розглядається, як математичні поняття. Це важке, але цікаве, інтелектуальна робота, яка полягає в тому, щоб, по суті, вивчити всю «таємницю» математики, для того щоб усвідомити нові, часто більш загальні, обчислювальні подання.
 
Кілька років тому ми виконали це для теорії ймовірностей і всього, що з нею тісно пов'язане, скажімо, статистичних розподілів і випадкових процесів . Тепер, в Mathematica 10, ми виконали це для іншої області: геометрії .
 
 Geometry examples in Mathematica 10
 
Те, що ми отримали насправді, є дійсно фундаментальним розширенням поняття «область», яке може бути представлене в обчислювальному вигляді, при цьому воно стає важливим будівельним блоком для багатьох речей, які з'являться в майбутньому. На основі цього в Mathematica 10 створені нові, дуже потужні, можливості, включаючи рішення УрЧП і роботу з кінцевими елементами.
 
Отже, що ж важкого в тому, щоб представити геометрію в обчислювальному вигляді? Проблема не в тому, що потрібно працювати з різними випадками — для цього існує безліч методів — а в тому, щоб отримати щось дійсно загальне, розширюване надалі, легке у застосуванні до всіляких частим і спеціальним випадків. Ми думали про те, як здійснити це протягом більш ніж 10 років і приголомшливо нарешті мати рішення.
 
Виявляється, що математика насправді робить за нас частина цієї роботи — оскільки з неї випливає, що існують різні види геометричних об'єктів, від точок до прямих, поверхонь і об'ємів, які, з точки зору математики, відрізняються лише розмірністю. У комп'ютерних системах, однак, ці об'єкти зазвичай представляється абсолютно по-різному. 3D-графічні системи, наприклад, як правило, працюють з точками, прямими і поверхнями, але при цьому, по суті, не мають поняття об'єму або тіла. CAD-системи (САПР), з іншого боку, працюють з обсягами і тілами, але зазвичай не працюють з точками, прямими і поверхнями. GIS-системи (ГІС) можуть працювати з межами і внутрішніми точками областей, але тільки в двовимірному просторі (на площині).
 
Отже, чому ж ми не можемо «просто використовувати математику»? Проблема полягає в тому, що спеціальні математичні теорії — і подання — дають, знову ж таки, можливість працювати, або, принаймні, придатні, тільки лише для спеціальних випадків. Так, наприклад, можна описати геометричні об'єкти в термінах рівнянь і нерівностей, по суті, використовуючи алгебраїчну геометрію в області реальних чисел — але насправді це зручно лише для простих «математичних» областей. Можна використовувати комбінаторну топологію, яка, по суті, заснована на сітковому поданні областей і є дійсно досить загальним методом, який вельми складно використовувати безпосередньо, а також він насилу працює з необмеженими областями. Або ж, можна використовувати диференціальну геометрію, яка добре працює з різноманіттям, але при цьому насилу застосовується до об'єктів змішаної розмірності і не є замкнутою щодо операцій булевої алгебри.
 
Те, що ми створили працює, по суті, «як математика»: це загальне символьне подання геометричних об'єктів, яке робить зручним застосування будь-яких з цих різних математичних або обчислювальних підходів. І замість того, щоб мати різні види всіляких понять, таких як, скажімо, «точка в многоугольнике», «точка в сітці», «точка на прямій» і пр., і функцій, що працюють з ними, в нашій системі все засновано на однієї загальної функції RegionMember . І точно також, такі поняття, як площа області (функція Area ), обсяг області (Volume ) або довжина дуги (ArcLength ), разом з усіма їх узагальненнями, грунтуються на одній функції RegionMeasure .
 
В результаті ми отримали дивно єдиний і потужний спосіб роботи з геометричними об'єктами, який легко працює як із шкільними завданнями на трикутники , так і з самими складними геометричними об'єктами з області фізики і техніки. Що також важливо — і є властивим для нашого підходу до всього — так це те, що всі ці геометричні можливості глибоко інтегровані з усією системою. Так, наприклад, Ви можете отримати рішення рівняння (або системи) усередині деякої області , знайти максимум функції в цій області або, скажімо, обчислити інтеграл по цій області , а можете, якщо на те пішло, вирішити диференціальне рівняння в приватних похідних , задане в цій області, з усіма різними видами граничних умов, які ви можете легко задати.
 
 Геометричний мову , який ми отримали, дуже простий і зрозумілий. Але він заснований на величезній кількості алгоритмічної функціональності, яка базується на великій кількості областей, розроблених нами за останню чверть століття. Для звичайного користувача є кілька показників складності пристрою цієї мови, хоча, мабуть, трактат, що займає кілька сотень сторінок , присвячений всіляким деталям ручного налаштування методів роботи з кінцевими елементами в Mathematica 10 покаже це з більшою наочністю.

Геометрія — це тільки одна з нових областей. Ми прагнемо до спільності і в інших областях теж. Так, скажімо в області обробки зображень , в якій тепер наша система підтримує роботу більшості операцій обробки зображень не тільки в 2D (для звичайних плоских зображень), але також і для 3D зображень. Або ж, в області всіляких обчислень на графах , де все тепер працює єдиним чином як для направлених графів, так і для ненапрямлених графів, змішаних графів, мультіграф і зважених графів. Як звичайно, потрібна розробка всіляких нових видів алгоритмів і методів, що дозволяють працювати з цими завданнями, які насправді є міждисциплінарними, а значить, вони не вивчалися раніше, хоча очевидно, що вони можуть зустрічатися на практиці.

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

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

Inactive functionality in Mathematica 10

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

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

Розвиток Wolfram Language (Язика Wolfram) має багато наслідків для Mathematica , які вперше можна побачити вже тепер в Mathematica 10. Крім усіляких нових варіантів взаємодії з даними про реальний світ і об'єктах в ньому, зовнішніми системами, є також деякі нові фундаментальні конструкції і в самій системі. Прикладом служить вбудована система ключ-значення , яка вводить "іменовані частини" об'єктів у всій системі, будучи, по суті, вбудованою базою даних для Wolfram Language (Язика Wolfram). Іншим прикладом є загальна система роботи з шаблонами , важлива для програмованої роботи з рядками, файлами або веб-сторінками.

Using associations in Mathematica 10

Wolfram Language (Мова Wolfram) відкриває величезні нові області функціональності: підтримка нових парадигм програмування, нових структур і нових типів даних, нових форм розгортання та нових шляхів інтеграції з іншими системами. З усіма цими розробками і всіма новими продуктами , можна почати турбуватися що традиційні фундаментальні принципи, на яких заснована система Mathematica можуть застаріти і змінитися. Але у всьому цьому немає ні краплі правди. Насправді, недавня розробка Wolfram Language (Язика Wolfram) ще сильніше зміцнила і розширила можливості традиційної парадигми Mathematica .

Частково це заслуга нових можливостей програмного забезпечення. Частково — результат усвідомлення того, що ми розробили шляхи для просування системи, заснованої на дуже великому масиві знань. І частково — результат постійної посилення та оптимізації нашого внутрішнього процесу R & D (НДДКР).

Ми все ще досить маленька компанія (близько 700 чоловік), але результати нашої діяльності неухильно збільшуються. Приголомшливо спостерігати чого ми змогли досягти в Mathematica 10. За 19 місяців (588 днів ) з моменту релізу Mathematica 9, ми розробили більше 700 нових функцій і всі вони доступні в Mathematica 10. Існуючі функції, так само постійно поліпшуються .

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

Для більшості людей з бізнесу з розробки програмного забезпечення здалося б божевільним то кількість R & D, яке було вироблено при розробці Mathematica 10. Багато могли б подумати, що продукт, якому вже 26 років, буде просто підтримуватися в робочому стані, при цьому він буде отримувати лише невеликі оновлення та покращення кожні кілька років. Але це абсолютно не відноситься до Mathematica . Замість цього, через 26 років після виходу своєї першої версії, вона весь час продовжує зростати з прискоренням. Незабаром в ній з'явиться ще більше нового.

Але сьогодні я вкрай радий оголосити, що плід «божевільного» кількість всіляких R & D розробок вже доступний для вас: Mathematica 10 .

Джерело: Хабрахабр

0 коментарів

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