[Перевод] Стивен Вольфрам: Рубежи вычислительного мышления (отчёт с фестиваля SXSW)

3dc4c7ea585649ddaff4c59e6fa8bbd9.png Перевод поста Стивена Вольфрама (Stephen Wolfram) «Frontiers of Computational Thinking: A SXSW Report».Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.На прошлой неделе я выступал на SXSW Interactive 2015 в Остине, штат Техас. Вот несколько отредактированная стенограмма моего выступления: a9764e162eff4264921f97fdb5e9c116.png Содержание Наиболее продуктивный годЯзык Wolfram LanguageЯзык для реального мираФилософия Wolfram LanguageПрограммы размером в один твитВычислительное мышление для детейВвод запросов на естественном языкеМасштабная идея: Символьное программированиеЯзык для развёртыванияАвтоматизация программированияМасштабные программыИнтернет вещейМашинное обучениеИсследования Вычисляемой ВселеннойВычислять, подобно тому, как это делает мозгЯзык как символьное представлениеПост-лингвистические понятияДревняя историяЧем будет заниматься искусственный интеллект? Бессмертие и за его пределамиКоробка триллиона душОбратно в 2015 годНаиболее продуктивный год Снова здравствуйте! Я, вообще-то, говорил о вычислениях трижды («Внедряя вычисления повсюду» (Статья на Хабрахабре), «Talking about the Computational Future at SXSW 2013», «Computation and Its Impact on the Future») здесь, на фестивале SXSW. И я должен сказать, что когда я впервые согласился выступить с речью, я волновался, что я не смогу сказать ничего нового. Но, на самом деле, есть огромное количество новых и интересных вещей. Этот год, вероятно, стал самым продуктивным в моей жизни. И я рад, что у меня есть возможность поговорить с вами сегодня здесь о некоторых вещах, которые я понял за последнее время.Это будет увлекательное путешествие, в котором мы будем перемещаться от концептов и чисто практических вещей к тысячелетним вопросам философии, а оттуда к облачным технологиям и повседневным применениям.

В принципе, последние 40 лет я занимаюсь созданием «небоскреба» из идей и технологий, работающих попеременно на фундаментальную науку и технологии. Мы применяем фундаментальную науку для того, чтобы построить новые технологии, и технологии, для того, чтобы дальше продвинуться в науке.

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

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

c98f386af0a599bfce3439140a2cfc7b.png

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

Я работал над созданием Wolfram Language около тридцати лет. Как в системе Mathematica, так и в Wolfram|Alpha множество людей уже использовали множество прототипов тех вещей, которые у нас сейчас появились.

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

Итак, давайте посмотрим его в действии. Начнем с небольшого знакомства с языком в документе системы Mathematica, называемом нами блокнотом (ноутбуком), который мы изобрели 26 лет назад. Давайте сделаем что-нибудь простое.

a53cb65fbc723f4d2c6ed97fd2ba3799.png

Хорошо. Давайте попробуем что-то другое. Вы знаете, что в эту субботу был международный день числа Пи: 3/14/15 (статья на Хабрахабре »3/14/15 9:26:53 Празднование «Дня числа Пи» века, а также рассказ о том, как получить свою очень личную частичку числа пи»). И поскольку мы являемся компанией, которая, как я думаю, выдала число Пи по запросам больше, чем любая другая в истории, мы устроили небольшое празднование в честь дня Пи. Так пускай Wolfram Language вычислит число Пи, допустим, с точностью до 1000-го знака после запятой:

758f0ab0c37348dba0939978e88eb137.png

Готово. Зачем останавливаться на малом — давайте посчитаем с точностью до миллиона знаков. Это займёт немного больше времени…

282124c4105efd10b7baa1bafd56c04b.png

…, но ненамного. А вот и результат. Он все идёт и идет вниз… справа вы можете видеть полосу прокрутки.

В качестве другого примера можем взять статью из Википедии о числе Пи:

1d76bc5863a8c1ddf60c90ca133a8b43.png

И сделать из неё облако слов:

174b3e2bcf00c9398f98fa6d5f6f266e.png

Само собой разумеется, в статье про число Пи, число Пи само занимает видное место.

Или давайте получим изображение. Вот я:

8701160d980c5e92dabf49d4ba567c1a.png

Давайте пойдём дальше и сделаем что-нибудь с этим изображением. К примеру, применим функцию поиска границ (EdgeDetect). Знак процента % всегда означает использование предыдущего результата вычисления, так что…

3701051615fdd138d9a302c037ef9d15.png

…вот результат поиска краёв на этом изображении. Или давайте сделаем, скажем, морфологический граф (MorphologicalGraph) из этого изображения, так что теперь у нас есть нечто вроде сети:

da374eb64030d9f0ee321b509cb44ab0.png

О, вот это вот уже интереснее. Или давайте автоматически создадим небольшой пользовательский интерфейс, в котором слайдером можно контролировать чувствительность алгоритма поиска границ. Вот, что мы получим:

fd93447e27542a08392840688a55b958.png

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

5de42faed6960db2564b9dfb0a598d56.png

А сейчас, для примера, можем сложить все эти изображения в стопку и получить 3D изображение:

dfc5758879224dfce49d8ca7443a9153.png

Язык для реального мира The Wolfram Language имеет огромное количество встроенных алгоритмов. В нём так же есть большое количество фактической информации из реального мира. Так что, к примеру, я могу сказать просто «планеты (PlanetData)»: 8a53950c3772625870ac99908fe02b40.png

Запрос, который мы дали на естественном языке, был понят и обработан. Давайте выведем список планет:

f9ff78e97135f54c34f9aeb71ff9722e.png

Вот, собственно, он. Теперь можно получить изображения:

0df7276ac83fc0c173b078e6f9fd6536.png

А теперь узнаем их массы:

19315dd600b4ae21f7646ada8a7bd26c.png

Теперь сделаем инфографику, отображая изображения планеты соразмерно их массе:

b0f2afeb79e8fcd141314bf66868e4af.png

Думаю, это просто потрясающе, что одна строчка кода может выдавать подобное.

Пойдём дальше. Это координаты того места (Here), где, как «полагает» интернет, находится мой компьютер в данный момент (GeoIP):

8faa6f3fbcd94b838f55ed3140babdb9.png

Можно сделать запрос — во сколько сегодня в этом месте будет закат (Sunset)?

9f1318397784eeca949d54ef605ede5f.png

И сколько до него осталось c текущего момента времени (Now)?

76bfb08f6d26292b9e148aaecda316a8.png

Хорошо. Давайте сделаем карту (GeoGraphics) окрестности в 10 миль вокруг центра (GeoDisk) Остина:

e90080a3ce14ad4d7bcce536137455f0.png

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

0fc4234db547fba09926381c5e3414dd.png

Или давайте сделаем то же самое, но в масштабах планеты. Запросим место посадки Apollo 11 на Луне и построим область с радиусом в тысячу миль вокруг:

dc26977db03ab4ad7a9857dc878d9e85.png

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

8f5957a1ba6d17495773a7f1b49290d4.png

И получим изображения первых 20-ти из них:

8c221630faef5aa2d64c639b1a3c14c7.png

А теперь, к примеру, можем узнать доминирующие цвета (DominantColors) на этих картинах:

a356a10f666283c9a29a7cb8aa8fc974.png

И построим эти цвета на цветовой диаграмме (ChromaticityPlot3D) в 3D:

836b0a392b87554e5396cb5aab1d801b.png

Философия Wolfram Language Весьма удивительно то, как много можно сделать, используя такой крохотный код на Wolfram Language.Это действительно нечто новое в программировании. Я имею ввиду кардинальные изменения. Традиционная идея заключается в создании относительно небольшого языка программирования для написания относительно больших программ для каких-то нужд. Идея Wolfram Language — сделать язык как можно большим; встроить в него всё, что только можно; автоматизировать все процессы в программировании, до которых доберутся руки.

Ниже представлены области, с которыми Wolfram Language имеет дело:

5ec62d986b8f7dfb9e3010e72d77eae2.png

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

Я потратил почти 30 лет своей жизни сохраняя концепцию языка ясной и последовательной.

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

Программы размером в один твит Недавно нами ради развлечения было создано нечто под названием программы-твиты (статья на Хабрахабре «Компания Wolfram Research открыла сервис Tweet-a-Program: интересных программ на языке Wolfram Language, длина которых не превышает 140 символов»).bb67e8db1122321ce15014ad270a03aa.png

Идея заключается в отправке программы как твита и получения результата её выполнения. На нашем стенде на выставке (имеется ввиду на фестивале SXSW — прим. пер.) Вы можете увидеть галерею программ-твитов. А тут представлена online коллекция самых разнообразных программ-твитов. И самое главное — все они содержат не более чем 140 символов и делают самые разные вещи:

7b79b5fed7a4bf632eda7910131295e1.png

Мы решили отметить это дело и выпустить игральные карты с кодами, каждая из которых содержит программу-твит:

e5d41a8d0d3e84b7732953640206e6ba.png

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

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

Скоро должен выйти сервис Wolfram Programming Lab — это бесплатный интернет-проект. Это нечто вроде промежуточного языка для изучения Wolfram Language, где у Вас есть множество маленьких работающих фрагментов кода Wolfram Language. Эти фрагменты можно как-то модифицировать, а затем запускать.

a842610cfb0e94dedd01ff28584dd4d0.png

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

Давайте рассмотрим несколько примеров. Не так давно был день числа Пи, так что давайте взглянем на урок «Ожерелье из знаков числа Пи»:

eaa670996f26da9bb5cd60f690b6ab7a.png

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

Можно рассмотреть ещё один пример. Давайте сделаем что-то, что более сопряжено с реальным миром. Скажем, как далеко можно пустить свой взор с конкретного небоскрёба?

808396c020b9a92f17a414c674d2d97c.png

Программа выдаёт область видимости с Эмпайр-стейт-билдинг. Мы можем пойти дальше, менять параметры и смотреть, что будет меняться, или же вернуться назад и разобраться с другими задачами.

4f5f8eb5e420ca5dfff0b185990fb8a9.png

Я надеюсь что дети (да и не только дети) получат удовольствие от того, что мы сделали. Думаю, это здорово для обучения: некая смесь точного математического и художественно-творческого. И, кстати, в Programming Lab мы можем смотреть на программы, которые пытаются написать пользователи, и проводить разного рода аналитику.

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

994e088a35d1504cb1ed1be58c2c0f01.png

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

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

Мы используем все наши знания и вычислительные мощности для создания автоматических отчётов по запросам пользователей.

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

6ecf97e78d6d496bcb004d40b18bddb3.png

Или о самолётах — код ниже показывает самолёты, находящиеся надо мной (то есть над тем местом, где интернет определил нахождение моего компьютера):

959ac9016c288f58f0f8658755dd3bb3.png

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

8510f3a0cc2673bf0a32c48a2eff059e.png

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

581ca1ad9c4c3ead05d8a9471ea1d382.png

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

Знаете, возможность использовать естественный язык — одна из центральных идей и в Wolfram Language. Потому что, когда Вы хотите сослаться на что-то из реального мира, скажем, на город (CityData) — Вы же не можете каждый раз обращаться к документации, чтобы записать его название. Вы хотите просто ввести его на естественном языке и получить некоторую вычисляемую интерпретацию.

И это именно то, что мы сейчас сделаем. Введём, к примеру, что-то вроде:

de97e0ebf751a91122c5f3d0883923e1.png

И получим:

00bd3d0d2995fa9e3214aaa7089e6fa8.png

Система интерпретирует это как «New York City». И теперь мы можем, к примеру, поинтересоваться населением города:

159fef915248d35cd0812e8c528d4741.png

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

Вот основная концепция: в Wolfram Language, абсолютно всё — символьно. И речь идёт не только об объектах с каким-то конкретным значением. Это может быть какая-то вещь, понятие.

Если я просто ввиду x в большинстве языков программирования, они выдадут что-то вроде: «Помогите, я не знаю, что это за x ». А Wolfram Language просто выдаст «Oкей, x это x; всё символьно».

519b9b6c0299513d035871b156b1aafb.png

И суть в том, что практически всё может быть представлено в подобном виде. Если я ввиду «Jupiter», это просто что-то символьное:

02a1c4b1eed57658de2b45d031e37194.png

Или, к примеру, если я добавлю картинку, то это тоже будет символьный объект:

841c8ddf59b450e327fde4b25e208ddc.png

У меня может быть какой-нибудь слайдер (Slider) — элемент пользовательского интерфейса — опять таки, он будет восприниматься как нечто символьное:

ca1e7de5e1091f51a3322d8c22c94bdd.png

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

4f940e7858d9e8a5878ed43e89a03aa4.png

Или с изображением Юпитера:

3adcddeaca09f32de04e895340f6a02b.png

Или со слайдерами:

e08d6f20da4582b119f2d40e910ce10e.png

Или с чем угодно.

Мне потребовалось очень много времени для понимания того, насколько мощная на самом деле эта идея — идея символьного программирования. Из года в год я понимаю это всё больше.

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

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

6716ab1cbb760efe84235cf80de42d71.png

32cf934a0954ffa617c5b8c5280df372.png

40a9c8417b4eb35d481252ab56c0a167.png

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

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

Скажем, например, фотографии с кошками — они очень популярны в интернете, так что давайте сделаем приложение про кошек. Давайте определим форму, в которой есть поле, в которое нужно будет ввести породу кошки, а потом мы должны будем получить фотографию кошки этой породы. А затем давайте выложим всё это дело в облако.

af1605a778d42a172931db0fa1430c04.png

Теперь у нас есть облачный объект с URL. Мы просто перейдем по ссылке и увидим форму. Форма содержит «умное поле», которое распознаёт естественный язык. В нашем конкретном случае — описание кошачьих пород. Напечатаем теперь, к примеру, «сиамский». Код выполнится, и мы получим фотографию кота.

1ac5aae84ecb6a3abb53e8137f4e59dc.png

Мы можем сделать наше приложение немного более сложным. Давайте добавим ещё одно поле:

b1628832393993575a819f0bf613ef6d.png

Как и в прошлый раз, мы выкладываем всё это дело в облако, и получаем фотографию кота под углом:

c7e42abcece9ac0ff94dfaddd3f9ce8e.png

Вот, собственно, так мы можем сделать веб приложение, которым сможем пользоваться на мобильных платформах. Мы так же можем сделать для этого API. Используем тот же кусок кода. На самом деле нужно просто изменить в этом коде FormFunction на APIFunction:

67de418f2c7ed7bf117187867c35c4e4.png

То, что мы получили есть готовый API, в который мы можем передавать параметры; можем задать «cat=manx», «angle=300», запустить это и получить другой результат.

c824378034a157f881b044728e24eb28.png

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

187c6e299066f283545b778913b9f4e3.png

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

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

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

Есть множество различных технических приложений всего этого. И ведь действительно здорово, как много Wolfram Language может упростить и автоматизировать.

Автоматизация программирования Знаете, наша компания имеет дело с вопросами автоматизации каждый день. Все эти наши проекты, все те вещи, что мы создаём, огромное количество всего… можно подумать, что у нас тысячи сотрудников делают всё это. Однако мы автоматизируем нашу деятельность, а то, что получаем, автоматизируем снова, и так из раза в раз вот уже четверть века. Таким образом, мы до сих пор небольшая частная компания с персоналом около 700 человек и с большим объёмом автоматизированного.Довольно захватывающе наблюдать это: вот, автоматизируем мы что-то — скажем, какой-то проект, связанный с веб-разработкой. И этот трудоёмкий проект, который раньше бы потребовал нескольких месяцев, реализуется теперь всего за один день. С управленческой точки зрения это сильно повышает уровень инновационности того, что Вы делаете!

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

Да, это не особо важная для компании задача. Но если это совсем несложно, то почему бы это не сделать? С нашим уровнем автоматизации это лёгкая задача. Ниже приведён код, который был написан для создания этого сайта:

b47a4537deed835e62aa45fdf2fdeb32.png

Код получился не очень большой. Где-то тут идёт выгрузка в облако, которая здесь называется Zazzle API, ну и так далее. Позвольте показать сайт, который у нас получился:

mypiday.com website

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

6f8ecc64ed454c2f03f5688bc3b5b2c7.png

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

Масштабные программы Разработка масштабных программ на Wolfram Language — весьма интересное зрелище. Тут представлена IDE, основанная на Eclipse, а в скором времени мы собираемся выпустить множество элементов интеграции с Git, которые пока что используются только внутри компании. Но одна вещь, которая сильно отличается от других языков, заключается в том, что люди склонны писать код в блокнотах.1735d838270074d9c24ea62f299ae3a2.png

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

52a5034c3bb37fce3391349942fccc7d.png

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

Кстати, одно из замечательных свойств всей этой экосистемы заключается в том, что если Вы видите конечный результат — скажем, инфографику — у вас есть стандартный способ включить отсылку к вычислениям, которая будет вести к нужному месту в том блокноте, в котором она была сделана. Так что у Вас есть доступ «под капот», где Вы можете самостоятельно работать с данными. Это весьма полезно для работы с исследовательскими/журналистскими данными.

Интернет вещей Собственно, если говорить о данных, то пару недель назад мы выпустили то, что получило название Data Drop (статья на Хабрахабре «Wolfram Data Drop — новый сервис Wolfram Research»).9f0c704acd32da9afae1fd4d393824e4.png

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

Вот, к примеру, устройство, которое измеряет какие-то различные параметры… хотя, как мне кажется, эта штука измеряет только уровень освещённости… скучновато.

060a79e3b46d70f5b4bd28ffb84667aa.jpg

Однако, в любом случае, оно подключено через wifi к нашему облаку. И все измеренные данные направляются в Data Drop, в определённый databin, поставленный в соответствие этому устройству.

cff1a3633b1fbb7bfa073daa69f99936.png

Мы используем нечто под названием WDF — Wolfram Data Framework — для того, чтобы объяснять, что значат поступаемые из устройства голые цифры. И теперь мы можем выполнять все виды вычислений.

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

9c5341ab065be9e5b37f2b6fb0606be3.png

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

c0a806a8c17790858d11527c1af6f0b1.png

Знаете, у нас есть все эти данные о мире из нашей базы знаний, интегрированной прямо в наш язык. И теперь с Data Drop Вы можете интегрировать данные с любого устройства, с какого только захотите. У нас есть целый список всяких разнообразных устройств, которые интегрированы с Wolfram Language за последние пару лет.

b7b487d9e2a4daa8dfb606019e1aa1b1.png

Как только Вы поместите данные в Data Drop, Вы сможете использовать их везде, где используется Wolfram Language: в Wolfram|Alpha, в Siri или в чём бы то ни было.

Это на самом деле важно, что Wolfram Language может представлять различные типы данных стандартным способом, потому что это означает, что вы можете немедленно начать проводить вычисления, работать с databin — всё что угодно. Я должен сказать, что возможность загружать данные через Wolfram Data Drop — это действительно удобно.

Так, к примеру, мы выгружаем данные с сайта о дне числа Пи в databin. Это означает, что нам нужна всего лишь одна строка кода, чтобы увидеть, откуда в мире люди заходили на этот сайт и заказали себе футболки с числом Пи.

ea8776efce4c048fa3471e21d3d24d11.png

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

4e5bdff13b8a575899fd4f752dc0684a.png

Но сейчас — с Data Drop — я начинаю собирать ещё больше данных. Я думаю, количество моих databins исчисляется уже двузначными числами. Из этого databin можно узнать мой пульс в день числа Пи. Я думаю, что этот пик приходится именно на момент Пи.

a759959118d882fdcaea99a007f3eb0f.png

Машинное обучение Так что же нам делать со всеми этими поступающими данными? Ну, у нас есть вся мощь визуализации, классификации и анализа данных в Wolfram Language. Одна из наших целей — производить анализ данных автоматически (наука о данных), не отнимая времени у специалистов. И одна из областей, в которой мы хорошо поработали для решения этих задач — машинное обучение.Скажем, Вы хотите отсортировать картинки по критерию день/ночь. Хорошо, вот у меня есть маленький обучающий набор картинок, на которых изображены либо день, либо ночь. У меня есть также одна маленькая встроенная функция Classify, которая выдаст классификатор, определяющий время суток на картинке.

ebaec8da141421e6400087404cc862d2.png

Классификатор получен. Теперь я просто могу применить этот классификатор к картинкам, и он скажет мне, где он видит день, а где ночь.

d63561b0da658cf9cfa22988f5fbb978.png

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

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

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

© Habrahabr.ru