Перевод поста Стивена Вольфрама (Stephen Wolfram, CEO Wolfram Research).
Оригинал поста: Wolfram Programming Cloud Is Live!
Двадцать шесть лет назад в этот самый день мы выпустили Mathematica 1.0. И я очень рад, что сегодня тоже станет историческим днем: мы выпускаем Wolfram Programming Cloud (Облако программирования Wolfram) — первый объект в линейке продуктов, основанных на новом Wolfram Language (Языке программирования Wolfram).
Моей основной целью в работе с Wolfram Language, и Wolfram Programming Cloud в частности, было переопределение процесса программирования, максимально возможная автоматизация всего, что возможно, для того, чтобы человек мог выразить все, что он хочет сделать, с достаточной ясностью и простотой, а все тонкости того, как это выполнить делались автоматически.
Я работал над этой концепцией последние 30 лет, постепенно надстраивая необходимый набор технологий, сначала в Mathematica, затем в Wolfram|Alpha, а теперь все это представлено в законченном виде в Языке Wolfram. Язык Wolfram, как я рассказывал ранее, является новым типом языков программирования — это язык программирования, основанный на знаниях, философия которого заключается в том, чтобы включить в язык настолько много знаний, насколько это возможно, таким образом, чтобы при этом все была автоматизировано настолько, насколько это возможно.
Облако программирования Wolfram — это приложение Языка Wolfram, которое специализировано для программирования, разработки и развертывания облачных программ.
Как же оно работает? Вы можете выяснить это самостоятельно! Начать работу с ним крайне просто. Просто зайдите в Wolfram Programming Cloud из любого браузера под своим именем и нажмите New. Вы получите то, что мы называем блокнотом (ноутбуком) (да, мы ввели их уже более чем 25 лет назад для системы Mathematica). После этого вы можете просто начать вводить код.
Все в этом документе интерактивно. Когда вы ввели что-то, вы можете сразу же вычислить это и увидеть результат непосредственно в блокноте.
Скажем, вы хотите создать небольшую программу, которая берет текст и выясняет, на каком языке этот текст написан, затем показывает картинку в виде флага самой большой страны, жители которой говорят на этом языке.
Для начала, вам следует использовать встроенные возможности Языка Wolfram в области машинного обучения — применить функцию-классификатор языка:
OK. Это хорошее начало. Теперь нам требуется найти самую большую страну, которая говорит на этом языке:
Теперь мы можем получить её флаг:
Блокноты в Облаке программирования Wolfram могут содержать в себе смесь текста, кода и любых других вещей, скажем вы можете легко задокументировать все, что вы сделали:
Мы, очевидно, только что сильно использовали то, что Язык Wolfram основан на знаниях. Теперь давайте представим, что мы хотим сделать некий графический объект — картинку — в которой мы программно наложим код языка на флаг страны.
Мне потребовалось около 3 минут, чтобы написать небольшую функцию, использующую алгоритмы обработки изображений, которая решает эту задачу:
Теперь мы можем протестировать эту функцию:
Интересно посмотреть на то, что используется в этой маленькой функции. В ней есть немного машинного обучения, некоторые сведения о языках людей и странах, немного набора текста, и, наконец, немного алгоритмов обработки изображений. Вот что поистине потрясающе в Wolfram Language, так это то, что все это и много много больше — уже встроено в язык, который устроен так, что все эти элементы прекрасно работают вместе. (Конечно, эта концепция устройства языка — то, над чем я провел значительную часть последних трех десятилетий моей жизни.)
Итак, мы имеем функцию, которая что-то выполняет. Что мы можем сделать с ней теперь? Одна из самых больших особенностей Wolfram Programming Cloud заключается в том, что оно позволяет нам использовать Wolfram Language для того, чтобы сделать развертывание этой функции в облаке.
Один из способов, которыми мы можем сделать это — сделать Web API. И это очень просто в Языке Wolfram. Мы просто создадим символьную функцию API — после чего поместим её в облако:
Теперь если мы вызовем эту API функцию из любого места в Интернете перейдя по соответствующему URL, наш код на Языке Wolfram будет выполнен в Облаке Wolfram и мы получим результат в том месте, откуда мы вызывали API функцию, в данном случае в виде PNG-изображения:
Конечно, можно добавить к этой функции множество наворотов. Мы можем сделать картинку более красивой. Можем сделать код более эффективным, заранее вычислив некоторые вещи. И так далее. Но для меня весьма поразительно и чрезвычайно полезно то, что в считанные секунды я в состоянии развернуть что-то в облаке и могу затем использовать это на любом сайте, в любой веб-программе и т. д.
Ниже еще один пример. На этот раз я создам URL который, каждый раз, когда его посещают, будет выдавать текущее количество минут до заката в том месте, в котором сейчас находится пользователь:
Каждый раз, когда вы будете посещать этот URL, вы получите число в виде небольшого текстового фрагмента. (Вы можете также получить результат, скажем, в формате JSON или во множестве других форматов.)
Вы также можете создать, скажем, веб-страницу, на которой отображался бы обратный отсчет до заката, который автоматически обновлялся каждую секунду:
Вы спросите «Как насчет форм ввода?». Создавать их также очень просто. Скажем, код ниже создает форму, которая генерирует карту заданной локации с отмеченным на ней диском заданного радиуса:
Вот полученная форма ввода:
И результат, полученный после вычислений:
В этой форме использовано много замечательных технологий. Скажем, поля ввода в этой форме являются так называемыми «Интеллектуальными полями» (об этом говорят соответствующие иконки), потому что в них можно вводить не только конкретные запросы, но также сотни типов произвольных форм естественного языка, которые интерпретируются посредством той же самой Технологии Понимания Естественного Языка, которая является сердцем Wolfram|Alpha. И, кстати, если вам требуется, например, чтобы у пользователя была возможность задать цветовое значение в форме, Облако Программирования Wolfram автоматически создаст поле с выбором цвета с помощью палитры. Вы также можете добавлять всевозможные переключатели, слайдеры или любые другие элементы управления.
OK, но в этом месте профессиональные программисты могут задаться вопросом: “Это все замечательно, но как я могу использовать все это в своей среде?”. Ответ — мы приложили немало усилий, для того, чтобы это было просто. Например, скажем для форм, Язык Wolfram имеет крайне прозрачный механизм, позволяющий вам встраивать их в произвольные XML шаблоны, а также настраивать их внешний вид и функционал так, как вам это нужно.
Когда вы работаете с API, Облако Программирования Wolfram позволяет вам легко создавать “код встраивания” для вызова API из любого стандартного языка программирования:
Вскоре также просто будет развертывать объекты облака и в мобильных приложениях. В будущем появятся Embedded Wolfram Engines (Встраиваемые Движки Wolfram) и другие вещи.
Итак, что же все это означает? Я думаю, что это очень важно, потому что это действительно меняет весь процесс и экономику программирования. Я даже видел насколько сильно все меняется в нашей собственной компании. Так как Язык Wolfram и Облако Программирования Wolfram выходят вместе, то образовывалось все больше и больше мест, где нам приходилось использовать их внутри компании. И каждый раз было удивительно видеть задачи программирования, которые ранее решались несколько недель или месяцев, а теперь вдруг делались в дни или даже меньше.
Но гораздо более важным является то, что вся концепция Языка Wolfram, как я зыка основанного на знаниях, делает впервые возможными такие вещи в программировании, которые было бы абсурдным ранее даже рассматривать. Пример из нашей собственной компании — благодаря Языку Wolfram нам удалось создать Wolfram|Alpha, сервис, который сейчас состоит уже из миллионов строк кода на этом языке.
Но самая захватывающаяся вещь, которая происходит сегодня, так это то, что с запуском Облака Программирования Wolfram, все эти технологии теперь доступны каждому для реализации проектов от больших до самых маленьких.
Оно устроено так, что любой может просто зайти в веб-браузер и — бесплатно — начать писать коды на Языке Wolfram, и даже в небольших масштабах развертывать их в Облаке Wolfram. Для больших проектов также есть широкий диапазон возможностей — включая даже возможность получения своего собственного Wolfram Private Cloud (Частного Облака Wolfram) внутри своей организации.
Следует упомянуть, что вам нет нужды делать все в веб-браузере. Создание интерфейса блокнота для Облака Программирования Wolfram было очень не простой задачей и на сегодняшний день существуют определенные ограничения для этого, накладываемые современными веб-браузерами и инструментами. Но существует также и эквивалентная настольная версия Wolfram Programming Cloud — которая даст вам преимущества 25 с лишним лет интерфейсных разработок, проделанных нами для Mathematica и CDF
Это отлично — и часто удобно — иметь возможность использовать Облако Программирования Wolfram чисто в Интернете. Но, по крайней мере сейчас, вы получите наилучшие результаты и опыт от совмещения в своей работе настольного компьютера и облака, запуская родной Wolfram Desktop interface (Настольный Интерфейс Wolfram), соединенный с Облаком Wolfram. Что на самом деле потрясающе, так это то, насколько все вместе хорошо соединено, что вы можете без каких-либо усилий передавать блокноты между облаком и настольным компьютером.
Я создал в свое время несколько достаточно сложных программных систем. Но Wolfram Programming Cloud это самое сложное из того, что я когда-либо видел. Конечно, оно основано на огромном стеке технологий Языка Wolfram, но коллекция взаимодействий, которая происходит в Облаке Программирования Wolfram между ядром Языка Wolfram, Wolfram Knowledgebase (Базой Знаний Wolfram), Системой Понимания Естественного Языка Wolfram, Облаком Wolfram и всеми видами других подсистем является удивительно сложной.
Еще есть, конечно, шероховатости (и, пожалуйста, не стесняйтесь рассказывать нам о них!). Многие вещи будут, скажем, сделаны более эффективными и быстрыми. Но я очень доволен тем, что мы сегодня выпускаем под именем Wolfram Programming Cloud.
Итак, если вы захотите попробовать Облако Wolfram, что же вам следует сделать? Во-первых, зайдите в Wolfram Programming Cloud в Интернете:
Ниже приведены два видео для быстрого старта (на русском языке):
Вы также можете воспользоваться Галереей Примеров. Или перейти в блокнот Вещи, которые стоит попробовать — и начать запускать примеры кодов на Языке Woflram непосредственно в Облаке Программирования Wolfram. Если вы опытный программист, я настоятельно рекомендую вам перейти к Быстрому введению для программистов:
Это поможет вам быстро усвоить основные принципы и понятия Языка Wolfram, и быстро дойти до уровня, когда вы сможете легко читать большие программы на Языке Wolfram и просто начать «расширять свой словарный запас» среди его примерно 5000 встроенных функций:
Сегодня важный день не только для нашей компании и нашей технологии, но также, я надеюсь, для программирования в целом. Есть много такого, что появляется впервые в Wolfram Programming Cloud — что-то в том, насколько широко и глубоко он может работать с вещами, что-то в основных идеях и принципах. Вдобавок к тому, насколько сильно Облако Программирования Wolfram упрощает и автоматизирует многие вещи в существующем программировании, я думаю что оно способно создать совершенно новые классы программных приложений, а также, я подозреваю, способно породить волну новых стартапов, основанных на алгоритмах.
Для меня это было долгое путешествие. Но сегодня я невероятно взволнован, начиная новую главу в своей жизни, а также тем, что я имею возможность увидеть то, что люди смогут делать вместе с Языком Wolfram и Облаком Программирования Wolfram.