На чем основана парадигма языка BPEL? Как язык BPEL был спроецирован на модель пи-исчислений? Что станет следующим этапом в развитии веб-сервисов? На эти и другие вопросы отвечает профессор Университета Иннополис Мануэль Маццара.

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

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

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

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

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

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

Я работал в этом направлении 3–4 года и затем, конечно же, продолжал углубляться в эту тему, дополняя ее новыми элементами. В конце концов оказалось, что это заявление ложное и использовалось оно лишь с целью прибавления значимости исследованиям; однако, как мы выяснили, оно абсолютно бездоказательное.

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

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

Я очень рад тому факту, что эта работа пользуется сегодня большим спросом.

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

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

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

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

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

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

Рекомендуем по этой теме:
12251
Что читать: Software Architecture in Practice

Что такое микросервисы, никто толком не знает, мы только сейчас пытаемся облечь это понятие в форму. Мы заинтересовались этим, так как хотим перенести концепцию веб-сервисов в микросервисы.

Веб-сервисы — это службы, связывающие удаленные компании, работающие по различным технологическим сценариям. Они занимаются передачей сообщений и вычислительных ресурсов между границами разных компаний. Этот так называемый «крупный сценарий» мы хотим перенести в меньший масштаб, то есть скопировать парадигму более крупной схемы и применить ее к одиночной машине. Отсюда и название «микросервисы» — по аналогии с веб-сервисами, только поменьше. Мы, можно сказать, сужаем широкую архитектуру, для того чтобы она работала в масштабах одной машины. Это будет новый этап эволюции. Если просмотреть историю веб-сервисов, можно обнаружить некоторые тренды.

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

С этой точки зрения мы довольно заняты, поскольку за несколько лет мы с коллегами из Болоньи, Копенгагена и других городов разработали язык программирования Jolie, который вы можете найти в интернете. При разработке мы были нацелены именно на применение его в сценариях веб-сервисов. И, как нам кажется, этот язык очень легко адаптировать для микросервисов.

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

У нас уже есть работающий язык, который мы желаем подстроить под набирающий обороты тренд. И у нашего языка есть потенциал, на реализацию которого мы очень надеемся, — стать языком микросервисов. У нас уже есть история того, как 10 лет назад проецирование BPEL на пи-исчисление стало очень популярным. Цель на следующие 10 лет — обеспечить прочную ассоциацию языка Jolie и микросервисов, чтобы через 10 лет на нас вновь стали ссылаться, но уже в контексте микросервисов. Вот я и поведал вам события прошлых десяти и планы на будущие десять лет.