30 April 2014

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

Wolfram Research corporate blog
From Sandbox
Перевод доклада Стивена Вольфрама, прочитанного им на фестивале 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 — мы знаем, что она работает — и используем её. WDF использует наши средства понимания естественного языка для того, чтобы импортировать неструктурированные данные и автоматически преобразовать их в нечто структурируемое и вычислимое. Скажем, наша Data Science Platform хорошо с этим справляется.

Ну хорошо. Вот нечто другое. Быстро растущим источником данных в мире являются так называемые подключенные устройства, которые представляют собой, по сути, разнообразные сенсоры и роботы, которые могут передавать информацию в сеть или делиться ней другими способами. Люди на самом деле все теснее связаны с ними. Одну вещь, которую я хотел недавно сделать, было просто узнать, какие же устройства такого типа сейчас существуют. Итак мы начали Connected Devices Project, чтобы курировать реально существующие на данный момент устройства, подобно тому, как мы курируем самые разные вещи в Wolfram|Alpha.

StephenWolfram-SXSW2014_107.gif

В нашей базе сейчас уже есть примерно 2500 устройств, и их количество растет с каждым днем. Конечно, мы используем WDF, чтобы организовать все это, и, конечно, вся эта информация доступна через Wolfram|Alpha.

StephenWolfram-SXSW2014_108.gif

Ок. Таким образом есть все эти устройства и они измеряют что-то и что-то делают. И все они как правило взаимодействуют с Интернетом. То, чем мы занимаемся — с нашей Data Science Platform и вообще со всем — это создание действительно бесперебойной и гибкой инфраструктуры для обработки данных с этих устройств или любых других, для того, чтобы визуализировать, анализировать и вычислять всё то, что доступно и приходит в “Интернете Вещей”.

Знаете, даже для тех устройств, которые еще не умеют отсылать данные в Интернет, у нас есть средства, которые помогают работать с ними. Например, вот акселерометр, присоединенный к Arduino:

StephenWolfram-SXSW2014_109.gif

Давайте посмотрим, сможем ли мы ввести данные с этого устройства в Wolfram Language. Это не так сложно:

StephenWolfram-SXSW2014_110.gif

StephenWolfram-SXSW2014_111.gif

Теперь визуализируем эти данные:

StephenWolfram-SXSW2014_112.gif

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

StephenWolfram-SXSW2014_113.gif

Это довольно удобно: иметь устройство за 25 долларов, которое работает с Языком Wolfram и подключается к сенсорам, датчикам и пр. И каждый такой небольшой компьютер представляется просто как еще один символьный объект в Языке Wolfram. При этом весьма просто, скажем, использовать возможности встроенных параллельных вычислений Языка Wolfram, чтобы извлекать данные из множества таких машин.

Заглядывая в будущее, вы можете вполне ожидать увидеть Язык Wolfram на большом количестве встроенных процессоров. Есть еще и другой вид встраивания, который нас тоже интересует. Это встраивание в программное обеспечение. Мы хотим, чтобы у нас была Universal Deployment System (Универсальная Система Разработки) для Языка Wolfram.

StephenWolfram-SXSW2014_114.gif

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

Вот, к примеру, возможность вызвать код на Языке Wolfram из других языков программирования.

У нас есть действительно простой способ сделать это. Обычно существует GUI, но в Языке Wolfram вы можете просто взять функцию по работе с API и сказать: создай код для вставки этой функции в код на языке Python или Java или любой другой.

StephenWolfram-SXSW2014_115.gif

StephenWolfram-SXSW2014_116.gif

StephenWolfram-SXSW2014_117.gif

Потом вы можете вставить этот код в вашу внешнюю программу, и она вызовет Wolfram Cloud для вычислений. На самом деле, существуют способы сделать это внутри IDE, например в Wolfram Workbench.

Такого рода вещи действительно легко создать и, как я уже говорил, они просто вызовут Wolfram Cloud для выполнения кода на Языке Wolfram. Но также есть и другая концепция. Существует Embedded Wolfram Engine (Встраиваемая Машина Wolfram) который вы можете использовать локально. При этом, по существу будет работать тот же самый код, но в этом случае он будет запущен на вашей локальной машине, а не в Облаке. Становится очень интересной возможность внедрения Встраиваемой Машины Wolfram во все виды программного обеспечения, которая сразу добавит все возможности алгоритмов, курируемых баз, понимания естественного языка, доступные в Языке Wolfram, в это программное обеспечение. Вот как, скажем, выглядит Встраиваемая Машина Wolfram внутри Unity Game Engine IDE:



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

В этой связи весьма удобно, что мы у нас есть продукт, способный работать с нашей системой Mathematica, который называется SystemModeler и выполняет крупномасштабное системное моделирование и симуляцию.

StephenWolfram-SXSW2014_119.gif

Сейчас он также интегрируется в Язык Wolfram.

Так, скажем, вот схема выпрямителя:

StephenWolfram-SXSW2014_120.gif

И это все, что потребуется, чтобы смоделировать это устройство.

StephenWolfram-SXSW2014_121.gif

И отобразить параметры этой модели:

StephenWolfram-SXSW2014_122.gif

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

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

StephenWolfram-SXSW2014_123.gif

Так же, для вас доступно свыше 100000 готовых примеров интересных кодов, которые есть в документации Языка Wolfram.

Wolfram Programming Cloud также выйдет уже очень скоро. Оно будет полностью бесплатным для начала работы в нем и реализации простейших готовых приложений.

Так что же это означает?

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

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

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

Например, мы можем просто написать следующее — draw a pink dodecahedron (построй розовый додекаэдр):

StephenWolfram-SXSW2014_124.gif

И вот мы уже имеем автоматически сгенерированный код

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

Знаете, каждое лето, вот уже десяток с лишним лет, мы устраиваем крайне успешную летнюю школу, посвященную Новому Виду Науки, над которой я сам долго работал.

StephenWolfram-SXSW2014_125.gif

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

StephenWolfram-SXSW2014_126.gif

Мы используем наш опыт, чтобы создать множество вариантов применения Языка Wolfram в обучении программированию. Вот уже более 25 лет мы тесно работаем в области образования. Здесь Mathematica находит невероятно широкое применение. И я счастлив, что Wolfram|Alpha стала своего рода универсальным инструментом для учащихся.

Грядет еще больше интересного.

Вот, например, уже почти готова версия Wolfram|Alpha на китайском языке.

StephenWolfram-SXSW2014_127.gif

А вот Problem Generator (Генератор Задач), созданный с помощью Языка Wolfram и доступный в Pro версии Wolfram|Alpha.

StephenWolfram-SXSW2014_128.gif

Мы собираемся добавить возможность осуществления всего спектра возможностей для анализа образовательного процесса, с применением нашей Облачной системы. Знаете, здесь есть так много возможностей. Как, например, с нашим форматом CDF — Computable Document Format (Форматом Вычисляемых Документов) — который используется уже несколько лет для создания интерактивных Демонстраций.

Кстати, вот наш сайт, содержащий около 10,000 готовых Демонстраций.

StephenWolfram-SXSW2014_129.gif

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

StephenWolfram-SXSW2014_130.gif

С другой стороны, с точки зрения других областей, помимо образования, многое происходит в корпоративной сфере. В течение нескольких лет мы разрабатываем полномасштабные сделанные на заказ комплексы на основе нашей платформы Wolfram|Alpha. Но сейчас с приходом Data Science Platform, мы получим, по сути, безгранично модифицируемую версию этих возможностей. И конечно же, все это интегрировано между настольной и облачной версиями. Мы также собираемся создать частные облачные сервисы.

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

Конечно, для нашей небольшой частной компании из примерно 700 талантливых человек, это большое испытание — справиться со всеми перспективами.

Мы начали раскручивать компании. Такие как Touch Press, которая делает электронные книги для iPad.

StephenWolfram-SXSW2014_131.gif

У нас в планах еще много всего, и нам нужно больше предпринимателей и инвесторов, работающих с нами.

Хорошо, что же можно сказать о более далеком будущем?

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

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

StephenWolfram-SXSW2014_132.gif

Дальше — больше. Мы собираемся сделать так, чтобы вычисления были предсказательными, и, с помощью Языка Wolfram, нами сделано многое, чтобы приблизиться к этому. Представьте себе возможность смоделировать целый мир, и предсказывать что случится в будущем. Говорить вам, что вы хотели бы сделать на своем следующем шаге. Сейчас, когда бы вы ни использовали Язык Wolfram, вы всегда видите эту маленькую панель Предложения Дальнейших Действий Предсказательного Интерфейса, которая использует довольно нетривиальные вычисления, чтобы предложить вам, что можно сделать дальше.

StephenWolfram-SXSW2014_133.gif

Но реальный способ заставить все это работать — использовать знания о самом себе. Длительное время я очень увлеченно занимался персональной аналитикой. Вот, например, 25-летняя история моей e-mail активности.

StephenWolfram-SXSW2014_134.gif

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

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

StephenWolfram-SXSW2014_135.gif

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

Биологи уже немного прониклись этой идеей. Но однажды не будет иметь смысла создавать что-либо из “глупых” материалов, вместо этого все будет сделано из полностью программируемых структур.

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

StephenWolfram-SXSW2014_136.gif

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

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

И что же произойдет дальше? Будет производиться множество вычислений. Из исследований, которые я провел, и, частично, из Принципа вычислительной эквивалентности — я думаю, что это все напоминает положение, в котором оказался Коперник. Мне кажется, что не существует серьезного различия между этими вычислениями и тем, что происходит во Вселенной, или даже в гораздо меньших программах.

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

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

Я должен сказать, что я очень рад тому, что я живу в то самое время, когда я могу что-то привнести в это дело. Это огромная честь и радость для меня. И я также очень рад тому, что сегодня имел возможность немного рассказать вам об этом.

Большое спасибо за ваше внимание!

ПРИМЕЧАНИЕ 1

Правило 30 — это по сути логическая функция от трех аргументов, которая имеет вид: p XOR (q OR r). Ее можно представить в виде 8 правил, по которым преобразуются тройки ячеек вернего яруса в нижний, (см. рис. ниже). Начальная строка — первая сверху — содержит один черный квадрат (True) и набор белых квадратов (False), бесконечный в обе стороны. Центральный столбец, порождает качественную последовательность псевдослучайных чисел и именно на этом правиле построен используемый по умолчанию метод генерации псевдослучайных чисел в системе Mathematica.

StephenWolfram-SXSW2014_137.gif

ПРИМЕЧАНИЕ 2

Само название Mathematica было придумано Стивом Джобсом. До этого Стивен думал назвать систему по-разному:

StephenWolfram-SXSW2014_138.gif

ПРИМЕЧАНИЕ 3

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

ПРИМЕЧАНИЕ 4

Видео-введение Стивена Вольфрама в язык Wolfram

Оригинал видео

ПРИМЕЧАНИЕ 5

Начало работы с облаком программирования Wolfram

Оригинал видео

Над переводом работали участники Русскоязычной поддержки Wolfram Mathematica: Егор Рукин, Владислав Глаголев, Сильвия Торосян, Алик Клименков, Осипов Роман.
Tags:стивен вольфрамwolframwolfram mathematicawolfram alphawolfram languagewolfram researchcdfwolfram cloudwolfram data frameworkwolfram data science platformwolfram connected deviceswolfram demonstrations project
Hubs: Wolfram Research corporate blog
+97
36.9k 307
Comments 56
Ads
Popular right now