[Из песочницы] Стивен Вольфрам: “Внедряя вычисления повсюду”

Перевод доклада Стивена Вольфрама, прочитанного им на фестивале SXSW 2014.Оригинальный текст вы можете найти здесь.sw-sxsw.png

Две недели назад я выступал с речью на конференции SXSW в Остине, Техас. Эта статья является немного доработанными тезисами доклада (это конспект текста, включающий демонстрации, от которых пришлось отказаться в процессе выступления):

Итак, на этот час запланировано довольно много.

В целом, мне бы хотелось рассказать историю, происходящую со мной в течение последних 40 лет, которая начинает приносить удивительные результаты только сейчас. Я имею ввиду что мы практически можем наблюдать эти результаты сегодня. Я хотел бы впервые представить вам весь спектр технологий, являющийся довольно-таки значительным результатом этих сорокалетних трудов. И я думаю что это достаточно важно.

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

Итак, основная задача в том чтобы начать относиться к вычислениям серьезно. Понять идею вычислений как таковых, а затем создать технологию, которая позволит внедрить их повсюду — после чего посмотреть к чему это приведет.

Можно сказать, я гонялся за этой идеей 40 лет. Я уже давно балансирую на стыке науки и технологий — создаю все более масштабные строительные блоки и строю из них все более высокую башню. И каждые несколько лет мне удается увидеть куда она будет расти дальше. По-моему, получается здорово. Однако, в последние несколько лет случилось нечто удивительное — своего рода великая унификация, которая ведет к технологическому Кембрийскому взрыву. И сегодня я впервые вам частично её представлю.

Но, для начала, немного истории. 40 лет назад я был 14-летним юнцом, который впервые прикоснулся к компьютеру (он тогда еще был размером со стол). Я не часто использовал его как нечто фундаментальное, но пытался с его помощью понять некоторые вещи из физики, которая меня по-настоящему интересовала. В тот момент я открыл для себя некоторые важные вещи, которыми пользуюсь до сих пор. Но сейчас я понимаю что самая важная вещь, которую я понял тогда относилась вовсе не к физике: чем лучше инструменты, которые мы используем, тем глубже мы сможем копнуть. Мне не очень хорошо давалась «математика на бумаге», а в то время это было серьезной проблемой для тех, кто хотел заниматься физикой. Однако, я осознавал, что расчеты можно делать на компьютере и начал создавать инструменты для этого. Очень скоро я с моими программами был лучше всех в математических расчетах для физики.

Вернемся в 1981-й год. В этом году случилось нечто восхитительное для 21-летнего ученого — я превратил все это в свой первый продукт и свою первую компанию. Важно то, что это заставило меня осознать — программные продукты могут стимулировать интеллектуальное мышление. Предстояло выяснить как создать язык для математических расчетов на компьютере, и мне потребовалось многое понять о вычислениях чтобы достигнуть цели. А потом я снова погрузился в основы науки уже с использованием созданных инструментов.

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

StephenWolfram-SXSW2014_2.gif

Эта — моя любимая программа, потому что ее я увидел первой в данном классе программ. Она называется правило 30, и 30 лет спустя она все еще на обороте моих визиток. (См. примечание 1 в конце.)

StephenWolfram-SXSW2014_3.gif

Простейшая программа. Простейшее начальное условие. Но она делает нечто безумное. Она создает сложные структуры из ничего, что является довольно интересным феноменом. Мне кажется, она отражает великий секрет того как работает природа. И да, я потратил много лет на изучение этого — безумно интересное занятие.

Но в процессе изучения этих вещей я понял, что мне необходимы более совершенные инструменты, чем те, которые были у меня. И, в основном поэтому, я создал Mathematica. Немного иронично, что названием программы является слово «математика». Потому что она изначально задумывалась чтобы расширить границы классической математики. Основная сверхидея в том, чтобы докопаться до самой сути математики и отыскать ее вычислительный фундамент, на котором все будет строиться. Мне удалось это сделать в языке системы Mathematica. За многие годы он отлично себя показал, а мы постоянно его дополняли и дорабатывали. (См. примечание 2 в конце.)

StephenWolfram-SXSW2014_4.gif

На самом деле, Mathematica в прошлом году праздновала свою 25-летнюю годовщину. За 25 лет ее использовали для изобретения, открытия и изучения бесчисленного количества вещей в огромном количестве университетов, больших компаний и подобных организаций по всему миру. Мне самому удалось около 10 лет поработать с Mathematica для собственных научных исследований. Я открыл много интересного в области науки, технологий и философии и написал об этом книгу, которая называется «Новый вид науки» (A New Kind of Science). (См. примечание 3 в конце.)

StephenWolfram-SXSW2014_5.gif

Но давайте снова вернемся в прошлое: когда я был подростком, меня по-настоящему интересовала одна вещь — систематизация информации. И мне казалось, что наступит день, когда человек сможет создать систему, способную автоматически отвечать на вопросы практически обо всем. К тому моменту я выяснил многое о том, как автоматизировать процесс ответа на вопросы, связанные с математикой. Но мне хотелось как-нибудь обобщить эту возможность для ответа на любые вопросы. Нашему миру необходимо что-то вроде универсального искусственного интеллекта подобного мозгу человека. И вот эта задача уже казалась очень сложной.

Каждые 10 лет или около того, я возвращаюсь к этой идее и прихожу к выводу, что, да — это все еще очень сложно. Но пока я проводил свои исследования, я понял кое-что важное: иногда исполнение даже очень простой программы может производить структуры, схожие по сложности с человеческим мозгом.

StephenWolfram-SXSW2014_6.gif

На самом деле нет большой разницы между мозго-подобным интеллектом и этими структурами. Последствиями такого мышления являются дилемма между свободой воли и предопределенностью, а так же, поиск внеземного разума. Однако, такие программы заставили меня осознать что для ответа на многие различные вопросы не обязательно создавать искусственный интеллект подобный мозгу. Может быть хватит обычных вычислений, наподобие тех, которые лежат в основе системы Mathematica.

Я не был уверен что сейчас подходящее десятилетие и даже подходящий век для этого, но преимущества владения небольшой компанией позволили мне провести эксперимент. Теперь я счастлив констатировать, что, как выяснилось, задача оказалась не настолько сложной — мы создали Wolfram|Alpha.

StephenWolfram-SXSW2014_7.gif

Вы вводите что-нибудь туда на естественном языке, а система использует всю мощь вложенных в нее данных, знаний, методов и алгоритмов чтобы просто сгенерировать отчет о том что вы спросили. Да, кстати, если вы пользуетесь Wolfram|Alpha, вы должно быть заметили, что вчера веб-интерфейс Wolfram|Alpha приобрел новый элегантный вид. Wolfram|Alpha знает очень о многом. Тысячи областей знаний и квинтильоны частичек данных покрывают по истине огромную область имеющихся у человечества знаний.

StephenWolfram-SXSW2014_8.gif

И на самом деле, каждый день много миллионов людей спрашивают систему о самых разных вещих — напрямую на сайте, через мобильные приложения и через такие технологии как Siri, которая тоже умеет обращаться к Wolfram|Alpha.

Итак, что мы имеем: Mathematica, ставшая фундаментом для языка описания и выполнения любых технических вычислений. А еще у нас есть Wolfram|Alpha, которая знает все о нашем мире и взаимодействие с которой происходит с помощью крайне неоднозначного естественного языка. Ну, Mathematica росла более 25 лет, а Wolfram|Alpha всего 5. Мы непрерывно изобретаем новые пути для расширения основных направлений этих систем все дальше и дальше. Но сейчас случилось нечто поистине глобальное и невероятное. И лично для меня катализатором этого стала совсем другая область: облачные технологии.

Тогда мне казалось, что Облако не несет чего-то качественно нового — я думал, что это просто практично. Но я ошибся. Теперь я, наконец, понимаю, что это та самая деталь, позволяющая объединить два глобальных подхода к вычислениям (Mathematica и Wolfram|Alpha), чтобы сделать из этого нечто значительно более глобальное.

Сейчас я должен признаться, что результат всего этого обладает немалой интеллектуальной сложностью. Однако, он крайне практичен. Мне всегда нравились ситуации, когда большие идеи ведут к по-настоящему полезным инновационным продуктам, как это и происходит в Wolfram Research. Мы взяли одну сверхидею и делаем множество (надеюсь, полезных) продуктов. На каком-то уровне описать каждый продукт довольно просто, однако самое захватывающее — то, что они представляют из себя вместе. И вот об этом мне хотелось бы поговорить сегодня. Но, скажу наперед — хотя мне эта история кажется крайне важной, ее совсем не просто рассказать.

Но, главное — начать. В основе всего лежит то, что мы называем Языком Wolfram. Мы только сейчас начинаем понемногу его выпускать. (См. примечание 4 в конце.)

StephenWolfram-SXSW2014_9.gif

Ядро Языка Wolfram «выращивалось» в Mathematica более 25 лет. Там оно было отлично испытано, а теперь мы добавляем туда все новые идеи и технологии из Wolfram|Alpha и из Облака. Это позволяет нам перейти на новый качественный уровень. Я в полном восторге от этого.

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

Но наша идея Языка Wolfram прямо противоположна — создать язык, в который встроено столько, сколько возможно. Где язык сам может выполнить столько, сколько возможно. Где все автоматизировано настолько, насколько это возможно.

Ок, давайте посмотрим на то как он работает.

Вы можете использовать язык Wolfram полностью в интерактивном режиме используя интерфейс ноутбука который мы создали для Mathematica.

StephenWolfram-SXSW2014_10.gif

Ок, здесь все понятно. Давайте сделаем что-нибудь немного посложнее:

StephenWolfram-SXSW2014_11.gif

Да… это большое число. Выглядит почти как куча случайных цифр, подобная, скажем, 60 тысячам точек, взятых с некоторого сенсора.

StephenWolfram-SXSW2014_12.gif

Каким образом мы можем проанализировать их? Всё, что может потребоваться уже встроено в язык Wolfram.

Так, скажем, мы можем вычислить среднее значение точно и приближенно:

StephenWolfram-SXSW2014_13.gif

StephenWolfram-SXSW2014_14.gif

Можем вычислить коэффициент асимметрии:

StephenWolfram-SXSW2014_15.gif

Или сотни других статистических величин, тестов или визуализаций.

StephenWolfram-SXSW2014_16.gif

Эта зависимость выглядит немного странно на самом деле. Но позвольте мне сейчас не вдаваться в подробности, объясняя этот эффект.

Хорошо. Вот нечто совсем другое. Давайте позволим языку Wolfram обратиться к учётной записи некоторого пользователя Facebook и извлечь граф его друзей:

StephenWolfram-SXSW2014_17.gif

Хорошо, мы получили граф, что дальше? Язык Wolfram знает как работать с графами и сетями. Скажем, давайте вычислим его разбиение на сообщества:

StephenWolfram-SXSW2014_18.gif

Давайте попробуем что-то иное. Сейчас мы получим изображение с моей маленькой камеры:

StephenWolfram-SXSW2014_19.gif

Итак, мы его получили. Теперь давайте сделаем что-нибудь с ним. Мы можем просто взять это изображение и поместить его в некоторую функцию:

StephenWolfram-SXSW2014_20.gif

Мы получили изображение, разбитое на мелкие кусочки. Давайте сделаем это же интерактивным:

StephenWolfram-SXSW2014_21.gif

Теперь повернем каждый из фрагментов на некий угол:

StephenWolfram-SXSW2014_22.gif

Теперь, давайте ещё отсортируем их по цвету. Мы можем сделать таким образом некоторое забавное приложение, на выходе выдающее таблицу фрагментов:

StephenWolfram-SXSW2014_23.gif

StephenWolfram-SXSW2014_24.gif

Ок, это весьма забавно. Почему бы нам не написать об этом в нашем Твиттере?

StephenWolfram-SXSW2014_25.gif

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

StephenWolfram-SXSW2014_26.gif

Или время между восходом и закатом сегодня:

StephenWolfram-SXSW2014_27.gif

Или мы могли бы получить текущую температуру воздуха там, где мы сейчас:

StephenWolfram-SXSW2014_28.gif

Или график зависимости температуры от времени за прошедший день:

StephenWolfram-SXSW2014_29.gif

StephenWolfram-SXSW2014_30.gif

Этот язык на самом деле очень большой объект и на основе того, что мы сделали для Wolfram|Alpha, он также может отвечать на многие вопросы в форме естественного языка. И что действительно мощно, это то что мы можем использовать его для обозначения предметов в реальном мире.

Давайте просто введём «Ctrl» + «Shift» + »=» + «nyc» (первые три клавиши нужны просто для запуска интерфейса свободного ввода):

StephenWolfram-SXSW2014_31.gif

И эта конструкция преобразуется в объект «город Нью-Йорк». Так что, теперь мы можем найти разницу температур там где мы находимся и в Нью-Йорке:

StephenWolfram-SXSW2014_32.gif

Ок. Давайте сделаем что-нибудь более сложное, найдем страны, граничащие с Украиной:

StephenWolfram-SXSW2014_33.gif

Теперь найдем длины границ этих стран:

StephenWolfram-SXSW2014_34.gif

И создадим из полученных данных таблицу:

StephenWolfram-SXSW2014_35.gif

Или, может быть сделаем облако названий стран, причем свяжем размер каждого из названий с длиной соответствующей границы:

StephenWolfram-SXSW2014_36.gif

Или мы можем найти все бывшие республики СССР:

StephenWolfram-SXSW2014_37.gif

И отобразить их флаги:

StephenWolfram-SXSW2014_38.gif

Теперь давайте найдем флаг какой из стран наиболее близок к французскому:

StephenWolfram-SXSW2014_39.gif

Довольно просто, не так ли?

Или давайте возьмем первые несколько бывших советских республик и создадим карты их столиц, на которых отметим круг с радиусом 10 миль:

StephenWolfram-SXSW2014_40.gif

StephenWolfram-SXSW2014_41.gif

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

И, вы знаете, есть огромное количество областей знаний, встроенных в язык Wolfram. Мы создавали все это более чем четверть века.

StephenWolfram-SXSW2014_42.gif

В языке есть знания как о алгоритмах, так и о мире.

В нем существует два больших принципа. Во-первых, максимальная автоматизация — автоматизировать как можно больше. Вы задаёте то, что вы хотите, чтобы язык сделал, и он сам выясняет, как это сделать. Могут быть сотни алгоритмов для выполнения чего-то в различных случаях. Но то, что мы хотим сделать — это мета-алгоритм, который сам выбирает наилучший способ сделать это. Таким образом, все что человек должен сделать — определить свои цели, после этого дело за системой, которая будет стремиться решить задачу наиболее быстрым, точным и красивым способом.

Например, есть функция Classify которая классифицирует данные, осуществляя классическую задачу машинного обучения. Вы просто набираете Classify и помещаете в нее небольшой обучающий набор прописных цифр (изображений) и значений, им соответствующих:

StephenWolfram-SXSW2014_43.gif

На выходе вы получаете классификатор.

Мы можем применить его к тому, что мы только что нарисовали:

StephenWolfram-SXSW2014_44.gif

Хорошо, ну вот еще одна важная вещь о языке Wolfram: это согласованность и единообразие всего. Мы стремимся, чтобы всё в языке сочеталось друг с другом. Даже при том, что это огромная система, если вы делаете в ней что-то с географическими данными, мы делаем так, чтобы она идеально подходила и тому, что вы делаете с графами и сетями.

Я потратил приличную часть последних 25 лет моей жизни, создавая строгий дизайн системы, который требуется для реализации этих концепций. Это было увлекательно, но это была тяжелая работа. Тратить все это время на то, чтобы сделать вещи очевидными, такими, чтобы язык был легким для изучения, запоминания и того, чтобы догадаться о какой-то функции, если вы даже не знаете, есть ли она. Но знаете, благодаря тому, что все имеющиеся строительные блоки языка так хорошо подходят друг к другу, мы наблюдаем появление новых мощных алгоритмов. И мы прекрасно провели время, изобретая тысячи и тысячи новых алгоритмов, которые стали возможны только в нашем языке, в котором мы имеем все эти различные области соединенными друг с другом.

И на самом деле существует одна действительно фундаментальная идея, благодаря которой мы смогли осуществить такого рода интеграцию. Она заключается в том, что язык Wolfram имеет главную фундаментальную особенность — он является символьным языком. Если вы просто введёте х в язык, он не выдаст ошибки, что x не определен. x — это просто что-то, символ x — то с чем язык может работать. Конечно, это очень хорошо для математики.

StephenWolfram-SXSW2014_45.gif

Но, к моему удивлению, одним из больших открытий идеи символьного языка является то, что эта же концепция может применяться к бесчисленному множеству других объектов и областей знаний. Все в нашем языке является символьным объектом. Будь то математические выражения:

StephenWolfram-SXSW2014_46.gif

или объекты, такие как Austin, TX (Остин, штат Техас):

StephenWolfram-SXSW2014_47.gif

StephenWolfram-SXSW2014_48.gif

Или же, скажем графические примитивы, скажем вот сфера:

StephenWolfram-SXSW2014_49.gif

А вот коллекция цилиндров:

StephenWolfram-SXSW2014_50.gif

StephenWolfram-SXSW2014_51.gif

Так как все это является просто символьными выражениями, то мы можем взять любое из них и сделать, если хотим, некоторую морфологическую обработку изображения, например — поиск границ объектов:

StephenWolfram-SXSW2014_52.gif

Вы знаете, все является просто символьным выражением. Еще один пример — это графические интерфейсы. Вот символьный слайдер:

StephenWolfram-SXSW2014_53.gif

Вот коллекция слайдеров:

StephenWolfram-SXSW2014_54.gif

Знаете, так как всё является символьным выражением, то это дает вам огромную свободу. Вот последовательное применение функции f к выражению:

StephenWolfram-SXSW2014_55.gif

Вот последовательное применение функции под названием Framed, которая на выходе обрамляет выражение рамкой:

StephenWolfram-SXSW2014_56.gif

А вот уже полностью аналогичная символьная конструкция уже на основе простейшего графического интерфейса:

StephenWolfram-SXSW2014_57.gif

Ах… Боже мой… это фрактальный интерфейс!

Вы знаете, раз все объекты являются символьными, то действительно легко сделать все что угодно. Скажем, вот трехмерный график параметрически заданной функции:

StephenWolfram-SXSW2014_58.gif

Теперь, в одно движение, сделаем его интерактивным:

StephenWolfram-SXSW2014_59.gif

Вы можете сделать то же самое с чем угодно:

StephenWolfram-SXSW2014_60.gif

Ок. Еще одним класс объектов, которые являются символьными — документы.

Документ, в котором я сейчас набираю текст — это еще одно символьное выражение. И вы можете создать в нём все, что вы хотите символьно.

StephenWolfram-SXSW2014_61.gif

Скажем, вот некоторый текст. Если мы хотим, можем вращать его на произвольный угол:

StephenWolfram-SXSW2014_62.gif

Все является просто символьным выражением.

Ок. Есть ещё одна вещь, которая является символьным выражением — это код. Каждый фрагмент кода в языке Wolfram является просто символьным выражением, которое можно взять и работать с ним как угодно и где угодно. Это чрезвычайно важно для программирования, так как это означает, что вы можете в создавать вещи модульным способом.

Это также важно и по другой причине: это отличный способ работы с Облаком, которое можно рассматривать как своего рода гигантское активное хранилище для частей символьных вычислений. Фактически мы уже создали всю эту инфраструктуру, которую я собираюсь здесь сегодня впервые демонстрировать. (См. примечание 5 в конце.)

Скажем, у нас есть символьное выражение:

StephenWolfram-SXSW2014_63.gif

Теперь мы можем просто поместить его в Облако:

StephenWolfram-SXSW2014_64.gif

StephenWolfram-SXSW2014_65.gif

Мы получили символьный объект CloudObject с адресом URL по которому мы можем перейти к этому объекту из любой точки мира. Мы перешли по ней и вот мы получили наш объект.

Теперь давайте сделаем вместо этого неизменного объекта некоторую программу. В интернете к ней будет удобно обращаться с помощью API. Благодаря нашей символьной концепции всего, эта операция тоже может быть легко представлена таким образом.

StephenWolfram-SXSW2014_66.gif

Теперь мы можем поместить эту программу в Облако:

StephenWolfram-SXSW2014_67.gif

Таким образом мы получили прямой API. Теперь мы можем просто дописать в конце ссылки параметр API, скажем, ? size=150 и получим ответ, причем совершенно не важно из какого места в Интернете мы посылали запрос:

StephenWolfram-SXSW2014_68.gif

И каждый раз, когда вы будете делать это, вы будете на самом деле вызывать этот небольшой код на Языке Wolfram в Wolfram Cloud и получать в ответ результат вычислений.

Есть еще кое-что, что можно сделать — создать форму для ввода пользователем. Просто измените APIFunction на FormFunction:

StephenWolfram-SXSW2014_69.gif

Теперь то что мы получили является уже формой ввода:

StephenWolfram-SXSW2014_70.gif

Давайте добавим еще одно поле ввода, которое позволит поворачивать введенный текст на произвольный угол:

StephenWolfram-SXSW2014_71.gif

Теперь давайте введём некоторые значения в форму ввода:

StephenWolfram-SXSW2014_72.gif

Когда мы нажмем на кнопку Submit (Отправить), мы получим результат:

StephenWolfram-SXSW2014_73.gif

Ок. Давайте попробуем другой пример. Вот форма, которая берёт названия двух городов, и рисует карту с отображением кратчайшего пути между ними:

StephenWolfram-SXSW2014_74.gif

Давайте поместим эту функцию в Облако:

StephenWolfram-SXSW2014_75.gif

Теперь заполним форму:

StephenWolfram-SXSW2014_76.gif

И когда мы нажимаем на Submit (Отправить), вот что мы получим:

StephenWolfram-SXSW2014_77.gif

Всего одна строка кода и мы фактически получили готовое небольшое, но мощное, веб-приложение! Внутри него скрыта весьма мощная новая технология. Вы видите эти поля ввода — они то, что мы называем «умными полями ввода», так как они способны понимать естественный язык:

StephenWolfram-SXSW2014_78.gif

Если вы указываете то, что не является городом, то вот что произойдет:

StephenWolfram-SXSW2014_79.gif

Когда вы вводите название города, система автоматически интерпретирует ввод как объект из множества городов. Позвольте я покажу вам, что происходит внутри. Давайте зададим форму, которая просто возвращает список введенных объектов:

StephenWolfram-SXSW2014_80.gif

Теперь, если мы вводим названия городов, то просто получаем символьные объекты Языка Wolfram, которые, конечно, могут затем участвовать в вычислениях:

StephenWolfram-SXSW2014_81.gif

Ладно, давайте попробуем что-нибудь другое.

Давайте я вам покажу пример популярного сегодня типа программирования. Давайте сделаем забавное приложение, которое показывает нам изображения глазами кошки или собаки. Ок, давайте создадим простейшую основу кода:

StephenWolfram-SXSW2014_82.gif

StephenWolfram-SXSW2014_83.gif

StephenWolfram-SXSW2014_84.gif

StephenWolfram-SXSW2014_85.gif

Теперь давайте создадим алгоритм, который преобразует изображение в соответствии с тем, как его видела бы собака, преобразуем цветовые каналы и учтем остроту зрения.

StephenWolfram-SXSW2014_86.gif

StephenWolfram-SXSW2014_87.gif

StephenWolfram-SXSW2014_88.gif

Хорошо, давайте теперь создадим приложение на основе этого кода:

StephenWolfram-SXSW2014_89.gif

StephenWolfram-SXSW2014_90.gif

Теперь мы можем распространять это приложение. Но сперва создадим для него иконку:

StephenWolfram-SXSW2014_91.gif

А сейчас давайте сделаем из него публичное приложение:

StephenWolfram-SXSW2014_92.gif

Теперь перейдем в приложение Wolfram Cloud для iPad:

StephenWolfram-SXSW2014_93.gif

И в нем мы уже видим приложение, которое только что опубликовали:

StephenWolfram-SXSW2014_94.gif

Нажмем на иконку приложения. То что мы увидим — уже готовое мобильное приложение, созданное с помощью Языка Wolfram в Облаке.

StephenWolfram-SXSW2014_95.gif

Мы можем использовать камеру iPad для того, чтобы сделать фото и затем посмотреть на результат его обработки нашим приложением:

StephenWolfram-SXSW2014_96.gif

Довольно неплохо, не правда ли?

Ок, но это еще не все. Позвольте я расскажу вам о первом продукте, выходящем из нашего стека технологий Языка Wolfram. Он будет доступен в ближайшее время. Мы называем его Wolfram Programming Cloud (Облако Программирования Wolfram)

StephenWolfram-SXSW2014_97.gif

Все вещи, которые я вам сейчас показываю, происходят в Облаке. В том числе и программирование. Конечно существует также и настольная версия — система Wolfram Mathematica.

Ок, итак вот Облако Программирования Wolfram:

StephenWolfram-SXSW2014_98.gif

Вы можете создавать приложения непосредственно в Облаке. Создадим функцию и просто используем CloudDeploy[]:

StephenWolfram-SXSW2014_99.gif

Или используем GUI (графический интерфейс пользователя):

StephenWolfram-SXSW2014_100.gif

Еще можно взять CDF и поместить его в Облако.

Давайте возьмем некоторый код с сайта Wolfram Demonstrations Project. На самом деле, так получилось, что это была самая первая Демонстрация, которую я сделал, когда сайт еще создавался.

StephenWolfram-SXSW2014_101.gif

Вот готовое приложение Cloud CDF.

StephenWolfram-SXSW2014_102.gif

Для него потребуется лишь браузер и, поскольку он работает с помощью Wolfram Engine в Облаке, оно обладает произвольной интерактивностью.

Ок, используя эту технологию, мы создаем другой продукт — Data Science Platform.

StephenWolfram-SXSW2014_103.gif

Идея заключается в следующем: информация поступает из разнообразных источников, а мы имеем все способы ее автоматизированного анализа, используя своего рода гигантский мета-алгоритм, равно как и знания о современном мире, которые у нас имеются.

Таким образом, вы можете запрограммировать что угодно с помощью Языка Wolfram и в конечном счете вы можете создать отчет. По вашему требованию, как от API или приложения. Или просто по расписанию. Вы также можете использовать символьные документы CDF для создания этих отчетов.

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

StephenWolfram-SXSW2014_104.gif

А потом программно генерировать отчеты с его помощью:

StephenWolfram-SXSW2014_105.gif

Знаете, есть действительно захватывающие вещи, которые мы можем сделать с информацией, используя весь наш стек технологий символьного языка. Мы совсем недавно осознали, что мы можем его использовать для создания объединения и обобщения SQL и NoSQL баз данных. И мы реализовали это на четырех различных, взаимно прозрачных друг для друга, уровнях: памяти, файлах, базах данных и рассредоточенной информации.

Ок. С другой стороны у нас есть действительно хороший способ представления отдельных фрагментов данных. Мы называем его WDF — Wolfram Data Framework (Структура Данных Wolfram).

StephenWolfram-SXSW2014_106.gif

В основном WDF — это своего рода алгоритмическая онтология, которую мы создали для Wolfram|Alpha — мы знаем, что он

© Habrahabr.ru