Подробный обзор Wolfram Programming Cloud (Облака Программирования Wolfram)

23 июня 2014 г., менее недели назад, после долгой разработки, вышел в свет новый продукт от компании Wolfram Research, который называется Wolfram Programming Cloud (Облако Программирования Wolfram). Об этом своем блоге написал Стивен Вольфрам и его пост был переведен на Хабрахабре.
Wolfram Programming Cloud позволяет вам программировать на языке Wolfram в любом браузере и с любого устройства, а также создавать готовые приложения (веб-формы ввода и скоро мобильные приложения), работать с прямым API, создавать автоматически генерируемые отчеты, отсроченные задания, веб-страницы, CDF и многое другое. При этом у всех желающих есть возможность попробовать и использовать Wolfram Programming Cloud бесплатно.
Мне бы хотелось поделиться с вами первым подробным видео-обзором на русском языке этого продукта, а также его реализации для обычного рабочего стола — Wolfram Desktop.
Из обзора вы узнаете о том, как работать с Wolfram Programming Cloud, создавать формы ввода и API, использовать Wolfram Desktop и пр.
В видео рассмотрены конкретные примеры работы в Облаке с географическими данными, API ВКонтакте, отправкой сообщений на e-mail из Облака, обработкой и подгрузкой изображений (как с устройств пользователя, так и из сети Интернет), применение встроенных функций Wolfram Language и др.
Основные коды на языке Wolfram, использованные в видео-обзоре:
График рельефа местности
CloudDeploy@FormFunction[ "ComputedCity">, Module[, data = GeoElevationData[GeoBoundingBox[GeoDisk[#city, Quantity[10, "Kilometers"]]]]; Grid[, , Mesh -> >, MeshStyle -> Thick, ColorFunction -> ColorData["HypsometricTints"], ColorFunctionScaling -> False,ImageSize -> 600]>>, Alignment -> ]]&, "HTML"]
Приложение для обработки изображений
im1=Import["путь к файлу или веб-ссылка"]; im2=Import["путь к файлу или веб-ссылка"]; images =RemoveAlphaChannel[ColorConvert[#, "RGB"] ,White]&/@; webString[str_]:=StringReplace[ExportString[Cell[str], "HTML", "FullDocument" -> False],""|"" -> ""] CloudDeploy[ FormFunction[ -> "Image", -> "Image">, Module[, images = RemoveAlphaChannel[ColorConvert[#, "RGB"] ,White]&/@; imDims = ImageDimensions /@ images; minX = Min[imDims[[;; , 1]]]; images = ImageResize[#, minX] & /@ images; imDims = ImageDimensions /@ images; minY = Min[imDims[[;; , 2]]]; Table[image[i] = ImageData[ImageCrop[images[[i]], ]], ]; head = 1; Image@Table[head = Replace[head, 2, 2 -> 1>];image[head][[i, j]], , ]]&, "PNG", AppearanceRules -> <|"Title" ->webString@"СМЕШИВАТЕЛЬ ИЗОБРАЖЕНИЙ", "Description" -> webString@ "Выберите два изображения, смесь которых вы хотите получить.", "SubmitLabel" -> webString@"Готово"|>]]
Работа с API ВКонтакте
$VkAPIAccessToken ="ваш accesstoken"; VkAPIMethod[method_, ] := Module[, "response" /.ImportString[URLFetch["https://api.vk.com/method/" <> method, "Parameters" -> $VkAPIAccessToken, options>], "JSON"]]; message := Module[, = /.VkAPIMethod["wall.get", "-1172233", "offset" -> "0","count" -> "1">][[2]]; Body = ToString[TableForm@ ToString@fromId>], DateString[AbsoluteTime[] + date, ], text>]; Subject ="Новое сообщение в группе Русскоязычной поддержки Wolfram Mathematica ВКонтакте"; password = CloudSymbol["pass"]; If[currentId === lastId, Null, SendMail["To" -> "r.a.osipov@gmail.com", "Subject" -> Subject,"Body" -> Body, "Password" -> password]; lastId = currentId]] message;
Надеюсь, что этот видео-обзор заинтересует вас и позволит вам быстрее начать работать с Wolfram Programming Cloud!
- wolfram programming cloud
- wolfram cloud
- wolfram
- wolfram desktop
- wolfram mathematica
- Блог компании Wolfram Research
- Программирование
- Математика
Wolfram Language (Mathematica) — это просто игрушка
Хочу поговорить о Wolfram Language (далее WL). Прошу прощения за сумбурность изложения, пост вырос из попытки ответить на этот коммент от Nilis.
WL — это всё-таки узкоспециальный язык. Просто Wolfram решил подзаработать денег, и для этого стал продвигать свой WL ещё и как язык общего назначения. Если вам понравился именно WL — значит, вы просто ещё не познали другие языки. Также замечу, что WL — это не свободное ПО, в отличие от кучи других языков, включая тот же питон.
Лет 6-10 назад, когда я учился в школе, я знал лишь BASIC, Pascal/Delphi, C/C++ и WL. Из ОС имел дело лишь с Windows. Не знал, что такое скриптовые языки (perl, python, bash), не знал самого понятия «скрипт». Думал, что командный интерфейс — это устаревший интерфейс и что единственный правильный интерфейс программы — это графический. Программировал я на Delphi и WL. Программы на Delphi всегда были графическими. За исключением олимпиадного программирования, там в требованиях к программам было, что они должны быть текстовыми, я их писал на Delphi и C++. Когда я узнал о WL, я был им очарован, также как и вы. Потому что код на WL был гораздо короче, чем на Delphi/C++. И вообще, потому что WL был совершенно не похож на Delphi и C++. Потому что там была возможность программировать функционально. Я познакомился с функциональным программированием на примере WL, я не знал, что существуют «стандартные» функциональные языки — Haskell, Lisp и ML.
Когда мне нужно было написать программу для каких-нибудь манипуляций с файлами, я писал её на Delphi. Причём с гуём. Писал окошки, кнопочки. Поля «введите папку, с которой будете работать» и т. д. Я не понимал, что это можно было сделать однострочником на баше.
Например, меня попросили написать программу для конвертации имён файлов в папке с латиницы на кириллицу. Я написал программу с гуём на Delphi. «Введите папку, где нужно сконвертировать». Код, наверное, был на 100 строк как минимум, если не тысячу. Сейчас я понимаю, что это делается одной командой в GNU/Linux типа такой: prename ‘y/abc. /абц. /’ *.avi .
У меня появилась идея написать файловый менеджер для Windows (разумеется, для Windows, других ОС я не знал), в котором была бы возможность скриптинга на WL (при этом слова «скриптинг» я не знал). Чтобы там, скажем, была функция Flatten из WL, которая бы делала Flatten для папок, т. е. уничтожала всю иерархию папок внутри данной папки и просто сваливала бы все файлы в кучу.
Потом, 6 лет назад я поступил в университет, познакомился с GNU/Linux, начал программировать на C/C++ и bash под GNU/Linux. Я понял, что всё моё программирование на Delphi и WL (кроме математики) — ерунда. Что все мои программы на Delphi можно было реализовать однострочниками на баше. А WL нужно использовать только для математических задач. Я понял, что командный интерфейс — не устаревший. И понял, что та идея файлового менеджера — ерунда. Потому что весь GNU/Linux в целом представляет собой такой файловый менеджер (а заодно и IDE) с возможностью скриптинга на всех скриптовых языках.
- Mathematica и её язык — это просто сборная солянка. Если нравится WL, используйте языки, от которых он произошёл, например, Lisp. Сам пакет Mathematica содержит кучу математических функций, но никакая из них не развита так, как она развита в узкоспециализированных математических пакетах. Например, если вам нужно быстро и точно обратить большую матрицу (например, 1000 x 1000), то WL использовать нельзя (т. к. могут быть ошибки, неоптимизировано, низкая точность, не предназначено для реальных применений). Пишите свою реализацию или используйте узкоспециализированные пакеты, скажем, для C, C++ или Fortran
- В WL могут быть ошибки. Вероятность ошибок, скажем, в компиляторе C гораздо ниже, т. к., во-первых, есть полно свободных компиляторов C, во-вторых, эти компиляторы по-настоящему широко используются для реальных задач, и ошибки в них сразу становятся заметны
- WL имеет куда меньшее быстродействие, чем, скажем, C++
- WL не является математически правильным. Например:
In[9]:= Simplify[(x^2 + x) / x /. x -> 0] 1 Power::infy: Infinite expression - encountered. 0 Infinity::indet: Indeterminate expression 0 ComplexInfinity encountered. Out[9]= Indeterminate In[10]:= Simplify[(x^2 + x) / x] /. x -> 0 Out[10]= 1
Богачёв помимо своей преподавательской деятельности работает в одной фирме техническим директором, и я там у него работал. Мы там делали симулятор месторождения нефти, я думаю, не нужно пояснять, что деньги в этой области крутятся огромные. Так вот, симулятор написан на C++, в том числе код, выполняющий расчёты (решение диффуров и систем линейных уравнений). И разумеется, не на WL, потому что нет нужного быстродействия, нет должного доверия к этому WL, и вообще WL здесь было бы использовать несерьёзно.
Затем я познакомился с формальной математикой, в том числе с системой Isabelle. Так вот, я вам скажу, что формальная математика — это единственный способ проводить математические манипуляции на компьютере так, чтобы быть уверенным в их математической правильности. И всех этих косяков с Simplify, Solve и т. д. в формальной математике нет.
Но такие системы (т. е. системы для работы с формальной математикой) не похожи на WL. Работа с ними происходит так: вы вводите в систему формальное доказательство, а она вам говорит, правильное оно, или нет. Возникает вопрос: можно ли смешать способ работы WL с правильностью формальной математики? Да, можно.
Mathematica, Maple и т. д. относятся к так называемым системам компьютерной алгебры. Так вот, все такие системы грешат отсутствием математической строгости. В связи с этим существует идея написания по-настоящему правильной системы компьютерной алгебры, основанной на формальной математике. Вот здесь специалисты в формальной математике показывают результаты первых экспериментов в этом направлении: www.cs.ru.nl/~freek/pubs/holcas.pdf, прочитайте, пожалуйста, хотя бы первые две страницы.
Итак, по поводу математики на WL: если нужно по-быстрому построить график, вычислить производную и т. д. — юзайте WL. Если серьёзные математические вычисления — пишите код сами на языках общего назначения (типа C++), как это делает Богачёв, либо используйте профессиональные библиотеки, опять-таки для языков общего назначения. Если нужно проводить математические манипуляции, которые не являются вычислением, т. е. не являются численными — то делайте ваши манипуляции вручную, либо с использованием формальной математики (например, Isabelle), либо с использованием формальных систем компьютерной алгебры, например, представленной в статье выше (правда, такие системы на данный момент находятся на начальной стадии развития).
Для нематематических задач WL использовать вообще нельзя. Используйте любой другой язык, в том числе скриптовый. Если вам нравится WL, то посмотрите на функциональные языки. В частности, посмотрите на Lisp, именно на него WL больше всего похож.
Итог. WL — это просто игрушка. Это инструмент студента, но не учёного. Вряд ли, скажем, данные с Большого андронного коллайдера обсчитываются на WL. WL как 1С: плохой, узкоспециализированный, коммерческий, несвободный язык.
Если что-то заинтересовало в этом посте (формальная математика, функциональное программирование, и т. д.), спрашивайте, я отвечу.
UPD от 20 июля 2015 г. Почему WL похож на Lisp: habrahabr.ru/post/263015/#comment_8506383.
UPD от 22 июля 2015 г. Ещё немного про схожесть WL и Lisp, а именно про принцип «программа — это данные»: habrahabr.ru/post/263015/#comment_8506389.
Немного про области, где можно применять WL и про заголовок этого поста. Мне не нравится, что есть много людей, которые серьёзно воспринимают WL. Т. е. которые воспринимают его как инструмент, который может играть главную роль в научном исследовании, или, того хуже, как язык общего назначения. Людей, которые очарованы достоинствами WL (как я в своё время), и не знают, что, скажем, WL — это далеко не единственный функциональный язык программирования. Которые не знают, что вообще-то есть скриптовые языки программирования (Perl, Python, Bash) и что есть функциональные, с которых этот WL содран (Lisp, Haskell, ML). Так вот, чтобы раскрыть этим людям глаза, я и написал свой пост. И чтобы быть максимально убедительным, я использовал кричащий заголовок («WL — игрушка»). Я, конечно, понимаю, что WL всё-таки имеет свою область применения. Он нужен для создания прототипов, для того чтобы по-быстрому найти производную и т. д., для того, чтобы провести некие расчёты там, где ошибки не критичны (скажем, при выполнении домашних заданий в вузе и написании курсовых), для того, чтобы провести некие расчёты, которые будут потом проверены другим, более надёжным способом. Мой коммент на эту тему: habrahabr.ru/post/263015/#comment_8506387.
Мой коммент про численные и аналитические задачи: habrahabr.ru/post/263015/#comment_8507849.
Про кучу подробностей из моей жизни и Windows vs GNU/Linux. Я написал про GNU/Linux и т. д. не потому, что я хотел сказать, что GNU/Linux лучше Windows, а гуй лучше текстового интерфейса. И про Богачёва я написал не для того, чтобы его пропиарить. Просто я хотел немного рассказать о своей жизни, чтобы сделать мой рассказ более убедительным, чтобы было понятно, как менялись мои представления. И я не считаю, что GNU/Linux сильно превосходит Windows в техническом плане. И я понимаю, что GUI и CLI — это просто два разных интерфейса со своими применениями.
Про свободное ПО. Конкретно в случае WL его несвободность является существенным минусом, т. к. понижает доверие к полученным результатам.
UPD от 26 июля 2015 г. Пример с Simplify и другие примеры. Я немного неудачно рассказал тот пример с Simplify. Я имел в виду следующее: Simplify[(x^2 + x) / x] — это x + 1 , и это неправильно, т. к. не учитывается случай, когда x равен нулю. Далее, x/x схлопывается просто в 1, хотя, опять-таки не учитывается, что x может быть равен нулю. Далее, очень показательный, на мой взгляд, пример прямо из документации WL ( reference.wolfram.com/language/ref/Simplify.html ):
In[5]:= hiddenzero = x^2 + 2 x + 1 - (x + 1)^2; anotherhiddenzero = Sin[x]^2 + Cos[x]^2 - 1; betterhiddenzero = Gamma[x + 1] - x Gamma[x]; In[6]:= Syntax::sntxf: "hiddenzero/anotherhiddenzero" cannot be followed by ", anotherhiddenzero/hiddenzero, ". Syntax::sntxf: "" cannot be followed by "hiddenzero/anotherhiddenzero, anotherhiddenzero/hiddenzero, ". In[8]:= Map[Simplify, ] 2 2 -1 + Cos[x] + Sin[x] Simplify::infd: Expression ----------------------- simplified to Indeterminate. 2 2 1 + 2 x + x - (1 + x) -(x Gamma[x]) + Gamma[1 + x] Simplify::infd: Expression ---------------------------- simplified to ComplexInfinity. 2 2 1 + 2 x + x - (1 + x) Out[8]= In[9]:= Map[FullSimplify, ] 2 2 -1 + Cos[x] + Sin[x] FullSimplify::infd: Expression ----------------------- simplified to Indeterminate. 2 2 1 + 2 x + x - (1 + x) -(x Gamma[x]) + Gamma[1 + x] FullSimplify::infd: Expression ---------------------------- simplified to ComplexInfinity. 2 2 1 + 2 x + x - (1 + x) Out[9]=
Пример был приведён в разделе Possible Issues, вообще, я вам скажу, это отличное место, где можно искать всякие нелогичности WL. Далее, берём пример из статьи выше (про формальную математику) и переносим его из Maple в WL, немного изменив:
In[11]:= N[Integrate[E^(-(x-1)^2)/Sqrt[x], ]] Out[11]= 0. + 0.411862 I In[12]:= NIntegrate[E^(-(x-1)^2)/Sqrt[x], ] Out[12]= 1.97373
У меня сильное подозрение, что ответ, полученный NIntegrate[. ], правильный, а N[Integrate[. ]] — нет. Т. к. NIntegrate выполнил внутри себя простой тупой алгоритм численного дифференцирования. В отличие от Integrate, который представляет собой неведомого монстра алгебраических манипуляций без формальной строгости, подверженного ошибкам. Окончательно я поверю, что один из этих результатов правильный, только если самостоятельно напишу программу на C/C++, которая будет численно интегрировать. Либо если найду (или, как минимум, проверю) этот интеграл на бумажке. (А ещё этот интеграл, очевидно, должен быть действительным.)
И, наконец, я засомневался в своей позиции, вы на меня повлияли, господа комментаторы. Возможно (возможно!), WL действительно качественный продукт, пригодный для серьёзных научных и прочих применений. При этом я не меняю своё мнение на противоположное, окончательно решить для себя, хороший WL или нет, я смогу только хорошенько его поиспользовав, но этого я делать сейчас не хочу.
И всё же добавлю: если вы хотите получать достоверные результаты на WL, вам нужно уметь его использовать (впрочем, то же самое относится к любой другой технологии). Например, понимать, как на WL происходит работа со всякими частными случаями вроде нулевого знаменателя (см. примеры в этом посте выше). Далее, важно понимать, что WL — это высокоуровневый язык, что работать с математикой на компьютере можно и с помощью низкоуровневых языков (вроде C++) тоже. И наконец, важно знать, что WL — это не единственный язык, позволяющий писать относительно сжатый код, что существуют скриптовые языки (Perl, Python, Bash). И что WL — не единственный язык, поддерживающий функциональное программирование, что существуют Lisp, ML и Haskell.
Я люблю Хабр, Хабр покажет тебе, насколько ты не прав! 🙂
Приведённые примеры были на Mathematica 10.0.2.
UPD от 26 июля 2015 г. Как правильно заметили тут, «почти вся ценность этого поста в комментариях». 🙂
- wolfram language
- mathematica
- формальная математика
- пост ненависти
Курс «Основы эффективной работы с технологиями Wolfram»: более 13 часов видеолекций, теория и задачи

Этот курс я прочел пару лет назад для довольно обширной аудитории. Он содержит очень много информации о том, как устроена система Mathematica, Wolfram Cloud и язык Wolfram Language.
Однако, конечно, время не стоит на месте и за последнее время появилось очень много нового: от продвинутых возможностей работы с нейросетями до всевозможных веб-операций; теперь есть Wolfram Engine, который можно поставить на свой сервер и обращаться к нему, как к Python; можно строить всяческие географические визуализации или химические; есть огромные хранилища всевозможных данных, в том числе по машинному обучению; можно подключаться ко всевозможным базам данных; решать сложнейшие математические задачи и пр.
Все возможности технологий Wolfram трудно перечислить за пару абзацев или несколько минут.
Все это сподвигло меня сделать новый курс, на который сейчас идет регистрация.
Уверен, открыв для себя возможности языка Wolfram Language, вы станете его использовать все чаще и чаще, решая свои задачи быстро и эффективно в самых разных областых: от науки до автоматизации дизайна или парсинга сайтов, от нейросетей до обработки иллюстраций, от визуализации молекул до построения мощных интерактивов.
1 | Обзор систем Wolfram Mathematica и Wolfram Cloud
Содержание урока
Что такое Wolfram Mathematica?
— Создатель — Стивен Вольфрам
—— Некоторые недавние статьи Стивена Вольфрама в переводе на русский язык
— Список встроенных функций и символов
—— Количество встроенных функциий в зависимости от версии
—— Объем, занимаемый на жестком диске
— Подробнее о Mathematica вообще
— Все продукты Wolfram Research
Новые и обновленные функции
— Код получения этих списков
Новое во фронт-энде
Новый геометрический язык
— Базовые геометрический объекты
— Функции для геометрических вычислений
—— Мера области
—— Расстояние до области
—— Работа с областями
— Функции задания областей
— Работа с сетками
— Полная интеграция с другими функциями
Аналитическое и численное решение дифференциальных уравнений
— WhenEvent для аналитических задач
— Аналитическое решение ДУ с запаздыванием
— Метод конечных элементов
Machine Learning — Машинное обучение
— Classify
— Predict
— Пример
«Язык Entity» — новый язык работы с базами данных + Огромное количество новых баз данных
Новый язык работы с географической информацией
Что ещё нового?
— Расширение базового языка
—— Association — индексированные массивы
—— Dataset — встроенный формат баз данных
— PlotTheme
— Вычисления, связанные со временем
— Анализ случайных процессов
— Временные ряды
— Интеграция с Wolfram Cloud
— Интеграция с устройствами
— Продвинутые шаблоны документов, HTML
Wolfram Programming Cloud
2.1 | Введение в язык, его особенности. Основные сложности начинающих пользователей. Работа с интерфейсом Mathematica и его возможностями — предсказательным интерфейсом, свободной формой ввода и пр.
Содержание урока
Wolfram Language
Принципы Wolfram Language
Что важно помнить при работе с Wolfram Language?
Начало работы в Mathematica
Важные сочетания клавиш
— Shift+Enter или Enter на цифровой клавиатуре
— Ctrl+Shift+Enter
— F1
— F2
Получение информации о символах
—? — функция Definition
— ?? — функция Information
— Нажать на F1
— Предсказательный интерфейс
Работа с палитрами
— Basic Math Assistant
— Classroom Assistant
— Writing Assistant
— Chart Element Schemes
— Color Schemes
— Special Characters
— Работа с графиками и рисунками
—— Drawing Tools
—— Get Coordinates
—— Первичная обработка изображений
— Работа с графaми
Wolfram Language & System | Documentation Center
Predictive Interface — Предсказательный интерфейс
— Контекстно-чувствительное автодополнение вводимых команд
—— Работа со встроенными функциями и синтаксическими шаблонами
—— Работа с пользовательскими переменными
— Вычисляемый предсказательный интерфейс — панель предложения дальнейших действий
Интеграция с Wolfram|Alpha
— Сайт Wolfram|Alpha
— Интеграция между Wolfram|Alpha и Mathematica
—— Поиск представлений в замкнутой форме десятичных дробей
—— Информация об артериальном давлении
—— Пошаговое решение матричного уравнения методом Гаусса
2.2 | Задание функций, работа со списками, шаблонными выражениями и ассоциациями
Содержание урока
Списки
— Список <. >и функция List[. ]
— «Естественное» отображение списков
— Способы генерирования списков
— Индексация элементов и некоторые числовые характеристики списка. Функции Length и Depth
— Вычленение элементов, занимающих определенные места в списке, с помощью функции Part([[. ]])
— Переобозначение элементов списка
— Генерирование списка с помощью функции Table
— Генерирование списка чисел с помощью функции Range
Ассоциации
— Задание ассоциации и работа с ней
— Dataset — формат баз данных в Wolfram Language
Шаблонные выражения
— Введение в шаблоны
— Базовые шаблоны объектов: Blank (_), BlankSequence (__), BlankNullSequence (___)
— Что можно сделать с помощью шаблонов? Функция Cases
— Определение типа выражения в шаблоне
— Наложение ограничений на шаблоны с помощью функций Condition (/;), PatternTest (?), Except, а также применение тестовых функций
— Создание шаблонов, имеющих возможность альтернативного выбора с помощью функции Alternatives (|)
Функции
— Применение отсроченного присваивания SetDelayed (:=)
— Применение абсолютного присваивания Set (=)
— Задание функции, которая помнит значения, которые она уже находила и рекуррентной функции
— Атрибуты функций и функции Attributes, SetAttributes, ClearAttributes, Protect, Unprotect для работы с ними
Чистые функции
— Применение функции Function (&)
— Где используются чистые функции?
2.3 | Создание визуализаций
Содержание урока
2.4 | Создание интерактивных объектов, работа с элементами управления, создание пользовательских интерфейсов
Содержание урока
2.5 | Импорт, экспорт, обработка данных, файлов, изображений, звука, веб-страниц. Работа с API веб-ресурсов на примере API ВКонтакте, а также работа со встроенными способами работы с API Facebook, Twitter, Instagram и др.
Содержание урока
Работа с файлами и их именами
— Поиск файлов и смежные задачи
—— $InstallationDirectory, $BaseDirectory
—— NotebookDirectory
—— FileExistsQ
—— FileNames
— Создание имен файлов
—— DirectoryName
—— FileNameJoin
—— FileNameSplit
—— FileNameTake
—— FileBaseName
—— FileExtension
Функции Import и Export
— Форматы импорта и экспорта
— Import
—— Примеры
— Export
—— Примеры
Обработка данных
— Импорт и обработка данных из TXT
— Импорт и обработка данных из MS Excel
Работа с изображениями
— Что можно делать?
— Обработка коллекции изображений
Работа со звуком
— Пример
Импорт и обработка данных с веб-страниц
— Импорт информации с сайта Центрального Банка РФ
—— Решение
—— Обобщение
— Импорт информации с сайта Яндекс.Словари
Работа с API
— API ВКонтакте
—— Первые шаги
—— AccessToken
—— Пример работы с API ВКонтакте
— Встроенный API Facebook, Twitter, Instagram
2.6 | Работа со встроенными курируемыми базами данных Wolfram, интеграция с Wolfram|Alpha
Содержание урока
Общесистемная поддержка единиц измерения
— Первое применение
— Пример использования в расчетах
—— Решение систем уравнений с величинами, обладающими размерностью:
—— Анализ размерности (Pi-теорема):
на примере задачи о гравитационной неустойчивости среды
——— Вспомогательный код
——— Решение
——— Выводы
Встроенные базы данных
— Все функции для работы с курируемыми базами данных Wolfram Research
— Примеры
—— Создание карты мира, раскрашенной в соответствии с уровнем ВВП
—— Периодическая система химических элементов им. Д. И. Менделеева
— Как сохранять курируемые базы данных Wolfram Research для мгновенного обращения?
—— Решение Леонида Шифрина…
——— Код
——— Пример работы
Язык Entity
— (Ctrl + =) — получение модуля для локального преобразования запроса в свободной форме в формат Wolfram Language
— Entity
— EntityValue
— EntityClass
— EntityProperties, EntityPropertyty
— Дифференциация Entity по внешнему виду
Интерпретатор Interpreter
— Список типов интерпретации
— Функция Interpreter
— Функция SemanticInterpretation
— Функция SemanticImport
Интеграция с Wolfram|Alpha
— Свободная форма ввода (= в начале ячейки Input)
—— Примеры
— Локальный ввод в свободной форме (Ctrl + = в любом месте ячейки Input
—— Пример
— Полноценный результат запроса Wolfram|Alpha (== в начале ячейки Input)
—— Некоторые примеры использования Wolfram|Alpha
——— Математика
——— Физика
——— Химия
——— Теория вероятностей, статистика и анализ данных
——— Погода и смежные вопросы
——— Интернет и компьютерные системы
——— Музыка
——— Еда, питание, здоровье
— Функция WolframAlpha
—— Пример 1: Диаграммы Эйлера-Венна и логические схемы для функций булевой алгебры от трёх переменных.
—— Пример 2: Поиск ближайших именованных цветов к данному
3 | Работа с Wolfram Cloud: создание прямого API, форм ввода, CloudCDF и др.
Содержание урока
Что такое Wolfram Cloud?
— Из чего состоит Wolfram Cloud?
— Что можно делать с помощью Wolfram Cloud?
Wolfram Programming Cloud
— Типы аккаунтов Wolfram Programming CloudТипы аккаунтов Wolfram Programming Cloud
— Облачные кредиты
Облачные функции в Mathematica и Wolfram Desktop
— Функции для непосредственной работы с облаком, а так же те, которые способны работать и с облачными обектами.
— Информационные функции облака
—— CloudAccountData — информация о вашем аккаунте в Облаке
—— CloudConnect, CloudDisconnect — подключение к Облаку или отключение от него
—— CloudObjects — ваши облачные объекты
—— $CloudCreditsAvailable — количество доступных облачных кредитов
Интерфейс облака, первые шаги
— Основное окно
— Окно информации о вашем аккаунте
— Окно с информацией о использовании ваших объектов Облака и Облачных кредитов
— Окно нового документа
Функция FormFunction
— Назначение и синтаксис
— Простейший пример
— CloudDeploy
— Типы переменных
— Работа с переменными
—— Параметр «Interpreter»
—— Параметр «Default»
—— Параметр «Input»
—— Параметр «Label»
—— Параметр «Help»
—— Параметр «Hint»
— Настройка внешнего вида формы
—— AppearenceRules
—— FormTheme
— Возможные форматы результата
— Вставка русского текста
—— Пример
— Примеры
—— Создание приложения для решения уравнения
—— Создание приложения для обработки изображения
—— Создание географического приложения с «умными полями»
Функция APIFunction
— Примеры
—— Создание приложения для решения уравнения
—— Создание географического приложения с «умными полями»
4 | Технология CDF — мгновенное встраивание интерактивных объектов, созданных в Mathematica в веб-страницы, тонкости. Использование готовых интерактивных объектов с сайта Wolfram Demonstrations Project в своих проектах и их изменение. Реальные примеры и бизнес-приложения
Содержание урока
CDF — Computable Document Format — Формат вычисляемых документов
— Технология CDF
— Краткое сравнение с другими форматами
— Этапы создания CDF
—— Иллюстрированные шаги
— Реальные примеры
— Wolfram Demonstrations Project
Создание CDF на основе Manipulate
— Шаг 1. Создание приложения
— Шаг 2. Сохранение его в формате CDF
— Шаг 3. Вставка в веб-страницу
Создание CDF на основе DynamicModule
— Шаг 1. Создание приложения
— Шаг 2. Сохранение его в CDF
— Шаг 3. Вставка в веб-страницу
— Еще один пример сложного CDF
Создание готовых веб-страниц на основе CDF
— Пример
EnterpriseCDF
— Отличия CDF и EnterpriseCDF
— Базовое сравнение CDF и EnterpriseCDF
— Детальное сравнение CDF, EnterpriseCDF, Wolfram Player Pro и Mathematica
CloudCDF
— Что такое CloudCDF?
— Пример создания CloudCDF
—— Пример 1
—— Пример 2
5 | Работа с Wolfram Language и Mathematica, предустановленных и бесплатных на Raspberry Pi (с операционной системой Raspbian)
Содержание урока
Raspberry Pi, первое знакомство
— Что это такое?
— Где можно купить?
— Где и как установить ОС, с поддержкой Wolfram Language
Raspberry Pi и Wolfram Language
— Страница проекта
— Страница документации
— Как выглядит Raspberry Pi после установки
— Идея программирования на Wolfram Language на Raspberry Pi
Производительность Raspberry Pi
— Вычисление некоторого кода
— Стандартный встроенный тест производительности Wolfram
— Сравнение с производительностью Python на Raspberry Pi
Пример почтового робота, который работает на Raspberry Pi
Примеры работы с Raspberry Pi
— Создание GPS-трекера
—— Вам потребуются
—— Вид после сборки
—— Программа для Mathematica на Raspberry Pi
— Снимаем фото
—— Вам потребуются
—— Вид после сборки
—— Программа для Mathematica на Raspberry Pi
— Использование GPIO
—— Вам потребуются
—— Вид после сборки
—— Программа для Mathematica на Raspberry Pi
— Другие примеры
Где найти дополнительную информацию о интеграции Wolfram Language и Raspberry Pi?
Прошу прощения за качество звука, в некоторых роликах он не так хорош, как хотелось бы.
В новых роликах и вебинарах все хорошо со звуком и видео в 2K. Присоединяйтесь: каждую неделю на канале идут прямые эфиры.
Выпущена система Mathematica 10, содержащая 700+ новых функций и невероятное количество R&D

Перевод статьи Стивена Вольфрама, о системе Wolfram Mathematica 10, которая вышла 9 июля 2014 г.
Оригинальный текст вы можете найти здесь.
Выражаю огромную благодарность тем, кто помог мне перевести эту статью: Владиславe Глаголеву (Himura), Сильвии Торосян и Рукк Наталии Самуиловне.
Этим летом мы выпускаем поистине огромный спектр новых технологий. Две недели назад мы запустили Wolfram Programming Cloud. А сегодня, я рад представить вам в значительной степени обновленную версию Mathematica: Mathematica 10.

Мы выпустили Mathematica 1 чуть более 26 лет лет назад, 23 июня 1988 г. С тех пор мы постоянно и систематично делали Mathematica еще больше, мощнее, шире, и глубже. Но Mathematica 10, выпущенная сегодня, представляет собой пожалуй самый большой скачок в функциональности за всю историю Mathematica.
Лично мне очень приятно после стольких лет видеть насколько успешно себя проявили принципы, которые я определил в самом начале пути по разработке Mathematica. И еще очень приятно видеть, как далеко мы продвинулись благодаря нашим талантливым сотрудникам и тяжкому труду по разработке Mathematica на протяжении уже почти трёх десятилетий.
Наверное, нам никогда не удастся узнать, имеет ли чисто коммерческий смысл наша преданность R&D (НИОКР) в течение стольких лет. Но она всегда имела смысл для меня — и успех Mathematica, как и всей нашей компании, позволяет нам строить планы на далёкое будущее, непрерывно вкладываясь в построение мощнейшей технологии слой за слоем.
Один из наших последних проектов — создание Wolfram Language (Языка Wolfram), проистекает из объединения Mathematica, Wolfram|Alpha и других технологий. В результате, Mathematica теперь стала основным приложением, созданным на основе Wolfram Language (Языка Wolfram).
Но Mathematica всё ещё, в немалой степени, сохранила свою индивидуальность, как наш самый старый флагманский продукт, а также, система, которая непрерывно меняет представление о технических вычислениях уже почти четверть века.
И сегодня в Mathematica 10 вы можете увидеть больше нового функционала, чем в какой-либо из предыдущих версий Mathematica. Приятно наблюдать столь длинную кривую постоянно ускоряющегося процесса разработки и осознавать, что в Mathematica 10 было добавлено новых функций больше, чем их было во всей Mathematica 1.

Так в чём же заключаются новые функциональные возможности Mathematica 10? Это смесь из совершенно новых областей и направлений (например, это — геометрические вычисления, машинное обучение и географические вычисления) — вместе с обширным усилением и расширением существующих областей. А также смесь всевозможных объектов, которые я уже давно запланировал для решения нашей компанией, но реализация которых требовала разработки нами соответствующих технологий, вместе с теми объектами, понимание возможности осуществления которых нашей компанией пришло ко мне лишь недавно.

При первом запуске Mathematica 10 есть некоторые вещи, которые Вы заметите сразу. Во-первых, Mathematica 10 сразу устанавливает подключение непосредственно к Wolfram Cloud (Облаку Wolfram). В отличие от Wolfram Programming Cloud (Облака Программирования Wolfram) — или скоро выходящей Mathematica Online (Mathematica Онлайн) — Mathematica 10 не запускает свой интерфейс или вычисления в облаке. Вместо этого, она поддерживает все преимущества запуска непосредственно на Вашем локальном компьютере — но она подключается к Wolfram Cloud (Облаку Wolfram), поэтому она может иметь файлы, хранящиеся в облаке, работать с API облака и другими облачными возможностями, а также она имеет доступ к облачным частям Wolfram Knowledgebase (Базы Знаний Wolfram).
Если Вы — «действующий» пользователь Mathematica, то Вы заметите некоторые изменения в начале работы с документом (ноутбуком) Mathematica 10. Теперь везде есть автозавершение вводимых команд — для значений опций функций, строк — везде. Также имеется выпадающее меню помощи, которое немедленно выдает шаблоны функций или документацию по ним. Имеется также — по просьбам сообщества пользователей — возможность многократной отмены действий (Undo). Чрезвычайно трудно определить, как и когда допустима корректная отмена вычислений и других действий в Mathematica, однако, в Mathematica 10 эта проблема — многократной отмены действий — решена.
Другое заметное изменение в Mathematica 10 заключается в том, что диаграммы и графики имеют, по умолчанию, новый, улучшенный вид (Вы, конечно, можете вернуться к прежнему виду с помощью соответствующего значения опции PlotTheme).

И для множества других областей это только вершина айсберга. В невидимой части айсберга находится новый очень мощный механизм изменения «графических тем» — когда вместо множества отдельных опций Вам надо только определить общую тему для графика, например, ”web” (веб), ”minimal” (минимальный) или ”scientific” (научный).

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

Конечно, в период разработки алгоритмов мы находимся в приподнятом настроении. Потому что наш многолетний вклад в дизайн когерентных систем теперь означает, что при разработке любого алгоритма мы легко можем объединить алгоритмические возможности всей системы. Если, например, мы разрабатываем численный алгоритм, то легко можем создать для этого сложные алгебраические предварительные выкладки или применить теорию графов, или комбинаторную оптимизации или что-то подобное. И мы можем создавать новые типы алгоритмов, объединяющие все их виды, а также подходы, способами, которые ранее были невозможны.
С самого начала, один из наших основных принципов заключался в том, чтобы автоматизировать всё как можно больше — и создать не просто алгоритмы, но законченные мета-алгоритмы, которые автоматизируют весь процесс перехода от «цели вычислений» к тому как и каким алгоритмом будут производиться вычисления, для достижения этой цели. Нами был разработан метод подобной автоматизации, который позволил нам на протяжении многих лет «поглощать» всё больше и больше областей вычислений, при этом делая их доступными не только для экспертов, но также и для всех желающих в виде обычных строительных блоков вычислений.
В Mathematica 10 одной из важнейших областей в которых это происходит — машинное обучение. В ядро системы встроены все виды мощных фундаментальных алгоритмов: логистическая регрессия, случайные леса, методы опорных векторов (SVM), и т. д. А так же, все виды процедур предобработки данных и их оценки. Но для пользователя, все это представлено двумя максимально автоматизированными функциями: Classify и Predict. Теперь, имея эти функции, привнести машинное обучение в любую область проще простого.

В Mathematica 10 имеется огромный спектр новых алгоритмических возможностей в области теории графов, обработки изображений, теории управления и во множестве других областей. Иногда кому-то не кажется удивительным, что, по крайней мере, можно иметь такую-то и такую-то функцию, даже хотя на самом деле приятнее, чтобы она была такой же совершенной, как в Mathematica 10. Однако, в других случаях, сначала кажется невозможным, что функция могла бы работать.
Задачи бывают разными. Может быть задача неразрешима в общем виде или теоретически трудноразрешима. Или же она плохо обусловлена. Или в ней слишком много вариантов. Или она требует слишком много данных. Примечательно то, что обычно, при использовании механизмов, встроенных в Mathematica и Wolfram Language (Язык Wolfram), становится возможным решение таких задач, а так же, создание функций, покрывающих широкий спектр важных прикладных проблем, связанных с данной задачей.
Другая немаловажная задача — это то, как можно представлять самые разноплановые данные в подходящем формате и производить над ними вычисления. Её решение — это сильнейшая сторона Wolfram Language (Языка Wolfram), которая постоянно совершенствуется, а все доработки попадают сразу в Mathematica 10. Так, например, в Mathematica 10 существует непосредственная символьная форма для следующих типов данных: дата и время, временные ряды, геолокации, геоданные, и т. д.

Wolfram Language (Язык Wolfram) имеет пути для символьного представления невероятно широкого спектра явлений реального мира. Но как насчет данных об этих явлениях? Многие из них имеются в Wolfram Knowledgebase (Базе Знаний Wolfram) в облаке. Скоро мы собираемся запустить Wolfram Discovery Platform, которая создана для крупномасштабного доступа к данным из облака. И так как это не является обычным способом использования Mathematica (базовые версии Mathematica 10 рассчитаны лишь на небольшие объемы запрашиваемых данных из облака), то для расширения возможностей потребуется использование «валюты» — Wolfram Cloud Credits.
Тем не менее, в Mathematica 10 существует множество потрясающих новых вещей, которые можно будет сделать с помощью всего лишь небольших объемов данных из Wolfram Knowledgebase (Базы Знаний Wolfram).
Некоторое время назад я нашел список того, что необходимо для Mathematica, который я написал ещё в 1991 году. Некоторые пункты из этого списка были сделаны в течение нескольких лет. Но большинство потребовало разработки огромного стека технологий, построение которого потребовало много лет. При этом по крайней мере один пункт не удавалось реализовать все эти годы, вплоть до настоящего времени.
В этом списке он значился просто как “PDEs” (Уравнения в частных производных). Но за этими четырьмя буквами кроются сотни лет развития математики и огромное количество требующихся алгоритмов и технологий. Да, конечно Mathematica могла работать с УрЧП (уравнениями в частных производных) уже на протяжении последних 20 лет. Но в Mathematica мы всегда стремимся к как можно большей общности и надёжности встроенных алгоритмов и именно в этом заключалась самая большая трудность. В частности, мы хотели, чтобы система справлялась с УрЧП, заданными на областях произвольной геометрии. И хотя существуют стандартные методы, скажем, метод конечных элементов, решения УрЧП для различных областей и тел, они, тем не менее, не дают достаточно хорошего способа описать соответствующую геометрию областей и тел в достаточной общности.
На протяжении всех лет мы прикладывали огромные усилия для разработки Mathematica и того, что сейчас называется Wolfram Language (Языком Wolfram). При этом часть этого процесса разработки привела к развитию обширных вычислительных представлений того, что традиционно рассматривается, как математические понятия. Это тяжелая, но увлекательная, интеллектуальная работа, заключающаяся в том, чтобы, по сути, изучить всю «подноготную» математики, для того чтобы сознать новые, часто более общие, вычислительные представления.
Несколько лет назад мы проделали это для теории вероятностей и всего, что с ней тесно связано, скажем, статистических распределений и случайных процессов. Теперь, в Mathematica 10, мы проделали это для другой области: геометрии.

То, что мы получили на самом деле, является действительно фундаментальным расширением понятия «область», которое может быть представлено в вычислительном виде, при этом оно становится важным строительным блоком для многих вещей, которые появятся в будущем. На основе этого в Mathematica 10 созданы новые, очень мощные, возможности, включая решение УрЧП и работу с конечными элементами.
Итак, что же трудного в том, чтобы представить геометрию в вычислительном виде? Проблема не в том, что нужно работать с различными случаями — для этого существует множество методов — а в том, чтобы получить что-то действительно общее, расширяемое в дальнейшем, легкое в применении к всевозможным частым и специальным случаям. Мы думали о том, как осуществить это на протяжении более чем 10 лет и потрясающе наконец иметь решение.
Оказывается, что математика на самом деле делает за нас часть этой работы — поскольку из неё следует, что существуют различные виды геометрических объектов, от точек до прямых, поверхностей и объёмов, которые, с точки зрения математики, отличаются лишь размерностью. В компьютерных системах, однако, эти объекты обычно представляется совершенно по-разному. 3D-графические системы, например, как правило, работают с точками, прямыми и поверхностями, но при этом, по сути, не имеют понятия объема или тела. CAD–системы (САПР), с другой стороны, работают с объемами и телами, но обычно не работают с точками, прямыми и поверхностями. GIS-системы (ГИС) могут работать с границами и внутренними точками областей, но только в двумерном пространстве (на плоскости).
Итак, почему же мы не можем «просто использовать математику»? Проблема заключается в том, что специальные математические теории — и представления — дают, опять же, возможность работать, или, по крайней мере, пригодны, только лишь для специальных случаев. Так, например, можно описать геометрические объекты в терминах уравнений и неравенств, по сути, используя алгебраическую геометрию в области реальных чисел — но на самом деле это удобно лишь для простых «математических» областей. Можно использовать комбинаторную топологию, которая, по существу, основана на сеточном представлении областей и является действительно довольно общим методом, который весьма сложно использовать напрямую, а также он с большим трудом работает с неограниченными областями. Или же, можно использовать дифференциальную геометрию, которая хорошо работает с многообразиями, но при этом с трудом применяется к объектам смешанной размерности и не является замкнутой относительно операций булевой алгебры.
То, что мы создали работает, по сути, «как математика»: это общее символьное представление геометрических объектов, которое делает удобным применение любых из этих различных математических или вычислительных подходов. И вместо того, чтобы иметь разные виды всевозможных понятий, таких как, скажем, «точка в многоугольнике», «точка в сетке», «точка на прямой» и пр., и функций, работающих с ними, в нашей системе всё основано на одной общей функции RegionMember. И точно также, такие понятия, как площадь области (функция Area), объём области (Volume) или длина дуги (ArcLength), вместе со всеми их обобщениями, основываются на одной функции RegionMeasure.
В результате мы получили удивительно единый и мощный способ работы с геометрическими объектами, который легко работает как со школьными задачами на треугольники, так и с самыми сложными геометрическими объектами из области физики и техники. Что также важно — и является свойственным для нашего подхода ко всему — так это то, что все эти геометрические возможности глубоко интегрированы со всей системой. Так, например, Вы можете получить решение уравнения (или системы) внутри некоторой области, найти максимум функции в этой области или, скажем, вычислить интеграл по этой области, а можете, если на то пошло, решить дифференциальное уравнение в частных производных, заданное в этой области, со всеми различными видами граничных условий, которые вы можете легко задать.
Геометрический язык, который мы получили, очень прост и понятен. Но он основан на огромном количестве алгоритмической функциональности, которая базируется на большом количестве областей, разработанных нами за последнюю четверть века. Для обычного пользователя есть несколько показателей сложности устройства этого языка, хотя, пожалуй, трактат, занимающий несколько сотен страниц, посвященный всевозможным деталям ручной настройки методов работы с конечными элементами в Mathematica 10 покажет это с большей наглядностью.
Геометрия — это только одна из новых областей. Мы стремимся к общности и в других областях тоже. Так, скажем в области обработки изображений, в которой теперь наша система поддерживает работу большинства операций обработки изображений не только в 2D (для обычных плоских изображений), но также и для 3D изображений. Или же, в области всевозможных вычислений на графах, где все теперь работает единым образом как для направленных графов, так и для ненаправленных графов, смешанных графов, мультиграфов и взвешенных графов. Как обычно, потребовалась разработка всевозможных новых видов алгоритмов и методов, позволяющих работать с этими задачами, которые на самом деле являются междисциплинарными, а значит, они не изучались ранее, хотя очевидно, что они могут встречаться на практике.
Как я уже говорил, в Mathematica 10 есть вещи, которые мы смогли осуществить потому, что наш стек технологий уже достиг той точки, когда решение этих задач становится возможным. Есть и другие, которые решили проблемы, в том числе те, над которыми мы размышляли на протяжении последних десяти или двадцати лет. Примером может служить система работы с математическими операциями и операторами в аналитическом виде в Mathematica 10.
В некотором смысле то, что мы делаем — это перевод идеи символьного представления объектов на новую ступень. В математике, у нас всегда есть возможность рассматривать переменную, такую как, скажем, х в символьном виде, так что она может соответствовать любому возможному значению. Также у нас есть функции, такие как f, которые также могут быть символьными. Но как насчет математических операторов, таких как, например, производная? Ранее всегда было ясно, что если функция задана некоторой формулой то система будет брать от неё производную. Но теперь у нас появилось новое понятие “инертных” функций и операторов, которое дает нам общий способ работы с математическими операторами в чисто символьном виде, так что теперь можно преобразовать и манипулировать выражениями формально (тождественно), сохраняя при этом смысл этих операторов.

Это дает возможность делать множество новых действий — от удобного представления сложных выражений из векторного анализа до осуществления символьных трансформаций не только над математическими объектами, но также и над программами, давая Вам возможность, скажем, формально работать с такими объектами, как интегралы, со всеми возможными встроенными реализациями различных обобщений вещей, таких как, скажем, правило Лейбница.
В построении Mathematica 10, мы продолжили двигаться вперед в неизведанные вычислительные и математические области. Но мы также работали над тем, чтобы сделать Mathematica еще более удобной для областей, таких как, например, элементарная математика. Иногда построение концепций из элементарной математики является вызовом, так как это требует всей той общности, которую мы стремимся сохранить. Иногда требуется весьма изощренное решение, чтобы добиться этого. Но в результате мы получили замечательный и плавный переход от простого к сложному. И в Mathematica 10 мы снова добились этого для таких объектов как, например, всевозможные вычисления относительно кривых и областей определения и значения функций.
Развитие Wolfram Language (Языка Wolfram) имеет много последствий для Mathematica, которые впервые можно увидеть уже теперь в Mathematica 10. Помимо всевозможных новых вариантов взаимодействия с данными о реальном мире и объектах в нем, внешними системами, есть также некоторые новые фундаментальные конструкции и в самой системе. Примером служит встроенная система ключ-значение, которая вводит “именованные части” объектов во всей системе, являясь, по сути, встроенной базой данных для Wolfram Language (Языка Wolfram). Другим примером является общая система работы с шаблонами, важная для программируемой работы со строками, файлами или веб-страницами.

Wolfram Language (Язык Wolfram) открывает огромные новые области функциональности: поддержка новых парадигм программирования, новых структур и новых типов данных, новых форм развертывания и новых путей интеграции с другими системами. Со всеми этими разработками и всеми новыми продуктами, можно начать беспокоиться что традиционные фундаментальные принципы, на которых основана система Mathematica могут устареть и измениться. Но во всем этом нет ни капли правды. На самом деле, недавняя разработка Wolfram Language (Языка Wolfram) еще сильнее укрепила и расширила возможности традиционной парадигмы Mathematica.
Частично это заслуга новых возможностей программного обеспечения. Частично — результат осознания того, что мы разработали пути для продвижения системы, основанной на очень большом массиве знаний. И частично — результат постоянной усиления и оптимизации нашего внутреннего процесса R&D (НИОКР).
Мы все еще довольно маленькая компания (около 700 человек), но результаты нашей деятельности неуклонно увеличиваются. Потрясающе наблюдать чего мы смогли достигнуть в Mathematica 10. За 19 месяцев (588 дней) с момента релиза Mathematica 9, мы разработали более 700 новых функций и все они доступны в Mathematica 10. Существующие функции, так же постоянно улучшаются.
Мне кажется, тот факт, что все это стало возможным — наилучшая дань инструментарию, команде и организации, которую мы создали, и силе тех принципов, которыми мы руководствовались все эти годы.
Для большинства людей из бизнеса по разработке программного обеспечения показалось бы безумным то количество R&D, которое было произведено при разработке Mathematica 10. Многие могли бы подумать, что продукт, которому уже 26 лет, будет просто поддерживаться в рабочем состоянии, при этом он будет получать лишь небольшие обновления и улучшения каждые несколько лет. Но это совершенно не относится к Mathematica. Вместо этого, спустя 26 лет после выхода своей первой версии, она всё время продолжает расти с ускорением. В скором времени в ней появится еще больше нового.
Но сегодня я крайне рад объявить, что плод «сумасшедшего» количество всевозможных R&D разработок уже доступен для вас: Mathematica 10.
- mathematica 10
- wolfram
- stephen wolfram
- wolfram language
- wolfram cloud
- wolfram programming cloud
- wolfram alpha
- wolfram knoledgebase
- wolfram data science platform
- wolfram research