00:00:08 Языки, специфичные для предметной области (DSL) и их разнообразие.
00:01:36 Примеры DSL: AMPL для математического программирования и HTML для веб-страниц.
00:03:00 Преимущества использования DSL по сравнению с языками общего назначения для конкретных задач.
00:05:22 Использование DSL Lokad для оптимизации цепей поставок в различных ситуациях.
00:07:23 Преимущества использования DSL для более быстрой и надежной конфигурации.
00:09:35 Ограничения DSL и их преимущества в оптимизации цепей поставок.
00:12:55 Последствия использования DSL с точки зрения безопасности по сравнению с языками общего программирования.
00:13:01 Времязатратный процесс разработки DSL.
00:14:49 Рекомендации для стартапов, рассматривающих разработку собственного DSL.
00:16:01 Недостаточное использование DSL и традиционных решений, приводящих к неудовлетворительным продуктам.
00:17:26 Дилемма использования DSL по сравнению с языками программирования общего назначения и их результаты.
00:18:32 SQL и HTML как успешные примеры языков, специфичных для предметной области.
00:19:46 Потенциал DSL в различных отраслях и их трансформационная сила.
00:21:19 Заключение и потенциальные будущие разработки в использовании DSL.

Резюме

В этом интервью Киран Чандлер обсуждает языки, специфичные для предметной области (DSL), с основателем компании Lokad, специализирующейся на оптимизации цепей поставок. DSL - это языки программирования, разработанные для решения конкретных задач, в отличие от языков общего назначения, таких как Java или Python. Верморел объясняет, что DSL используются в таких отраслях, как автомобильная промышленность, где они обеспечивают безошибочную работу для критически важных компонентов, таких как системы антиблокировки тормозов. Он также обсуждает разработку собственного DSL компанией Lokad, Envision, для оптимизации цепей поставок. Верморел подчеркивает преимущества DSL, такие как эффективные вычисления и настройка для конкретных областей, признавая при этом сложности и трудоемкость их разработки.

Расширенное резюме

В этом интервью ведущий Киран Чандлер обсуждает языки, специфичные для предметной области (DSL), с основателем компании Lokad, специализирующейся на оптимизации цепей поставок.

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

Языки, специфичные для предметной области, используются в реальных приложениях для реализации критически важных компонентов в различных отраслях. Например, в автомобильной промышленности DSL может использоваться для разработки программного обеспечения, управляющего системой антиблокировки тормозов (ABS) в автомобиле. Цель состоит в создании почти безошибочной системы, поскольку сбой в этом компоненте может привести к потере возможности торможения. В отличие от языков программирования общего назначения, языки, специфичные для предметной области, могут не обеспечивать такой же уровень надежности в работе без ошибок.

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

Когда спрашивают, почему вместо более выразительных языков программирования используются DSL, Верморель объясняет, что использование общего языка программирования для задач, лучше подходящих для DSL, усложняет процесс. Например, использование общего языка программирования для проектирования веб-страниц означало бы контроль каждого пикселя на экране, вместо использования простых элементов языка разметки, таких как указание заголовка, размера шрифта или выравнивания текста, как это делается в HTML.

Верморель объясняет, что проблемы снабжения разнообразны, и нет двух компаний, которые были бы абсолютно одинаковыми. У компаний различные IT-ландшафты, прикладные ландшафты и различные комбинации ERP-систем, WMS и других систем. Это разнообразие создает проблемы для программных решений, которые пытаются решить оптимизацию цепочки поставок с помощью универсального подхода. Традиционные фреймворки, основанные на конфигурации, часто требуют обширной настройки и конфигурации для каждого клиента, что занимает много времени и стоит дорого.

Признавая, что каждая клиентская ситуация требует различного программного обеспечения, Lokad решила разработать более эффективный и надежный процесс. Они решили создать свой собственный DSL, Envision, чтобы упростить процесс настройки и сделать его быстрее и продуктивнее. Верморель сравнивает использование Envision с общими языками программирования, такими как C#, F# и TypeScript. Хотя они уже широко используют эти универсальные языки программирования, работа с клиентскими запросами с их помощью оказалась медленной и дорогостоящей. Envision был разработан для большей гибкости и лучшего соответствия уникальным требованиям оптимизации цепочки поставок.

Верморель подчеркивает, что одной из причин, почему многие решения для управления цепочкой поставок становятся громоздкими, является то, что они пытаются учесть все возможные функции и варианты использования. Lokad выбрала другой подход, разработав узкоспециализированный язык программирования с ядром, представляющим собой сам продукт Envision и его возможности. Это позволяет им создавать индивидуальные реализации для каждого клиента с использованием Envision, в то время как компилятор и среда для Envision реализованы на C#, F# и TypeScript.

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

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

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

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

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

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

Один успешный пример DSL - это SQL (Structured Query Language), язык программирования, используемый для управления реляционными базами данных. Верморель отмечает, что когда DSL становится очень успешным, люди часто забывают, что это в первую очередь DSL. Он считает, что в различных отраслях, включая оптимизацию цепей поставок с помощью Lokad, есть значительный потенциал для DSL.

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

Полный текст

Кирен Чандлер: Сегодня мы узнаем немного больше о том, как они разрабатываются, и также поймем, почему они могут быть выгодны по сравнению с некоторыми более популярными языками программирования. Итак, Джоаннес, можете ли вы начать с того, чтобы рассказать нам немного больше о том, что такое DSL и как они работают?

Джоаннес Верморель: DSL - это особый класс языков программирования, которые, в отличие от общих языков программирования, таких как Java, Python и C++, не предназначены для решения всех задач, которые можно решить на компьютере. Популярные языки программирования предназначены для предоставления вам наиболее удобного, продуктивного и эффективного способа делать все, что вы можете делать с компьютерами или многими компьютерами, если хотите. Но языки программирования, специфичные для определенной области, - это нечто другое. Это программирование, поэтому оно сопровождается кодом, оно формальное и абстрактное, но оно разработано для решения очень конкретных типов проблем. Например, исторически первые языки программирования, специфичные для определенной области, в основном были ориентированы на такие вещи, как AMPL, математический язык программирования, предназначенный для выполнения очень конкретных задач.

Кирен Чандлер: Так для каких проблем вы бы использовали язык, специфичный для определенной области, и для чего они используются в реальном мире?

Джоаннес Верморель: В реальном мире одним из исторических применений было реализация критических компонентов. Например, вы хотите иметь программное обеспечение, которое будет управлять системой ABS в вашем автомобиле, системой антиблокировки тормозов, и вы хотите иметь доказательство того, что эта вещь никогда не будет аварийно завершаться, потому что если она аварийно завершится, ваш автомобиль внезапно потеряет возможность тормозить. Такая ситуация довольно серьезная, и вы бы подумали, давайте попробуем не иметь здесь слишком много ошибок. Это на встроенной стороне. Затем у вас есть проблемы, такие как HTML для веб-страниц, где это язык программирования, но вы хотите, чтобы этот язык был более доступным. Есть хорошая причина, почему вы можете изучить HTML в начальной школе; это потому, что он очень простой. Основы буквально доступны даже для людей, которые не очень техничны. Но компромисс заключается в том, что HTML позволяет вам контролировать макет веб-страницы; он не позволяет вам контролировать робота или выполнять искусственный интеллект.

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

Жоанн Верморель: Если подумать о том, что это означало бы для веб-страниц HTML, например, вместо того, чтобы иметь просто язык разметки, где вы можете сказать “заголовок”, “большой размер шрифта” и “текстовое тело”, “я хочу, чтобы текст был выровнен”, и так далее - простые элементы управления - вам пришлось бы думать: “О, я собираюсь контролировать каждый пиксель на своем экране”, и это непрактично.

Кирен Чандлер: …это то, что вы можете получить с помощью супернизкоуровневого подхода, и если вы хотите быть еще более низкоуровневым, вы можете сказать: “Ну, я собираюсь непосредственно контролировать свои графические карты для достижения супервысокой производительности”, и это, возможно, то, что вы сделаете, если вы действительно создаете 3D-движок для видеоигр. Но если вам просто нужно сделать что-то простое, например, веб-страницу, это займет бесконечное количество времени, чтобы сделать это таким образом. Через 3D-видеоигры это намного проще и намного более прямолинейно, просто используя идентификаторы и такие вещи, как HTML. Хорошо, и это тема, с которой мы очень хорошо знакомы в Lokad, поскольку мы создали свой собственный DSL. Так почему это было так интересно для нас, как для компании по цепочке поставок?

Жоанн Верморель: То, что связано с цепочкой поставок, это то, что проблемы настолько разнообразны. Буквально нет двух одинаковых компаний, я имею в виду, не совсем одинаковых. У них нет такой же прикладной ландшафт. У некоторых компаний есть одна ERP-система; у многих есть две ERP-системы по плохим причинам. У них есть система управления складом (WMS); у них есть несколько WMS-систем. У них есть 10 разных ERP-систем, потому что они работают в десяти разных странах с различными ИТ-ландшафтами. У них есть платформа электронной коммерции, которая появилась позже, это отдельная вещь. У них есть дополнительные ускорители. Так вот проблема заключалась в том, что мы хотели заниматься оптимизацией цепочки поставок, и я понял в первые годы, что буквально классический подход, когда у вас есть фреймворк, который можно настроить, просто не работает. Я имею в виду, ситуации настолько разнообразны, что мы получали огромное количество настроек и настройки для каждого клиента. И буквально, когда вы начинаете думать о том, чтобы иметь программное обеспечение, которое полностью готово к использованию, но требует шести месяцев настройки, это действительно настройка? Или это не то же самое, что создание нового программного обеспечения? Реальность такова, что да, это так. И поэтому мы решили перейти к следующему логическому шагу, который заключается в том, что если каждый раз, когда мы сталкиваемся с ситуацией, требуется отдельное программное обеспечение, что насчет того, чтобы иметь что-то, что поддерживало бы этот процесс, чтобы сделать его очень продуктивным, очень быстрым, очень надежным? И на самом деле, именно отсюда возникла идея создания DSL, языка, специфичного для предметной области.

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

Жоанн Верморель: Это интересно. Я имею в виду, в Lokad мы используем общие языки программирования. Мы с самого начала использовали C-sharp, C-sharp.NET, который, по сути, является стеком программирования Microsoft, а позже мы добавили F-sharp и TypeScript для различных целей. Так что мы уже широко используем общие языки программирования, и я очень хорошо знаком с тем, что можно сделать с помощью этих языков. Но мы поняли в течение первых лет работы Lokad, что работа с запросами клиентов с использованием этих языков программирования была просто невероятно медленной и затратной. Поэтому нам нужно было что-то лучшее, и проблема не заключалась в том, что мы не были знакомы с этими языками программирования. Мы поняли, что работа с ними для каждой клиентской ситуации была немного кошмарной. И, кстати, это также одна из причин, почему все эти решения программного обеспечения для цепочки поставок превращаются в гигантские монстры программного обеспечения. Это потому, что они пытаются включить в свой программный продукт все, и в результате получается программный монстр. Поэтому мы решили сказать: хорошо, а что, если программный продукт был бы

Кирен Чандлер: Что, если программный продукт был просто DSL и его возможности, то есть что-то вроде супер-жесткого ядра, а затем, когда мы идем к клиенту, мы создаем пользовательскую реализацию, реализованную не на C-sharp, а на Envision, нашем собственном DSL? Но компилятор и среда для Envision на самом деле не реализованы на Envision, они реализованы на C-sharp, F-sharp и TypeScript.

Жоанн Верморель: Хорошо.

Кирен Чандлер: Вы упомянули, что, очевидно, цепи поставок чрезвычайно разнообразны, и каждый клиент чрезвычайно отличается. Вводит ли использование DSL какие-либо ограничения? Мешает ли это вам фактически реализовывать определенные вещи?

Жоанн Верморель: Абсолютно, и в этом вся суть, как удивительно это ни звучит. Вы видите, например, одну очень простую проблему, с которой вы сталкиваетесь, когда у вас есть большая цепочка поставок, которую вы хотите оптимизировать, и вы получаете довольно большой набор данных. Допустим, у вас есть один терабайт данных. Это не совсем огромно; вы можете зайти в супермаркет и купить 1-терабайтный жесткий диск за что-то вроде 100 евро, что довольно дешево. Таким образом, это большой объем данных, но не гигантский. Теперь проблема в том, что ваш набор данных будет обновляться каждый день, и вы хотите, например, пройти по этому набору данных, чтобы принимать умные решения по цепочке поставок, такие как решения о пополнении запасов и ценообразовании.

Теперь проблема в том, что если у вас есть общий язык программирования, как вы можете гарантировать, что вычисление займет только, скажем, менее 60 минут? Это очень сложно. Как только у вас есть произвольные циклы или конструкции, становится очень сложно доказать, что ваше выполнение будет соответствовать определенному временному интервалу, что может быть проблемой, если расчет, который вы делаете для принятия определенных решений, таких как решения о пополнении запасов, должен соответствовать тесной последовательности выполнения ваших систем ERP. Вам действительно нужно, чтобы это выполнение было завершено за 60 минут; в противном случае вы нарушаете всю свою цепочку поставок, потому что расчет занимает слишком много времени.

Именно это типичная ситуация, когда общие языки программирования не могут дать вам такие гарантии, потому что, как раз, вы можете делать все с ними, поэтому очень сложно получить какие-либо гарантии от этих языков программирования. Но с DSL, в котором есть соответствующие ограничения, есть еще один аспект на данный момент: дизайн. На самом деле очень сложно предложить программную среду, которая полностью безопасна с общим языком программирования. С общими языками программирования, такими как Java, Python или C-sharp, вы открываете себя для целых классов уязвимостей безопасности. Если вы можете делать что угодно с компьютером, вы можете делать вещи, которые относительно опасны с точки зрения IT-безопасности.

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

Кирен Чандлер: Да, и об этом мы говорили в нашем эпизоде о безопасности. Давайте посмотрим, может быть, на разработку DSL. Я имею в виду, сколько времени на самом деле занимает разработка одного из этих языков, в вашем случае, сколько времени заняло разработку Envision?

Жоанн Верморель: Это хороший вопрос. Это буквально занимает десятилетие, что-то невероятное. Когда вы стартап, вы говорите “двигайтесь быстро и ломайте вещи”, давайте создадим минимально жизнеспособный продукт, который можно продать в течение шести месяцев, а затем начнем создавать свой собственный DSL, и это буквально процесс

Кирен Чандлер: Конечно, это многолетнее усилие, и главная проблема заключается в том, что вам действительно нужно переосмыслить основные проблемы, которые вы решаете. Каковы фундаментальные аспекты проблем и какие логические примитивы должны быть доступны вашему разуму для решения этих проблем с помощью компьютеров? Это еще хуже, чем просто изобретение новых слов; это изобретение логических примитивов для связи концепций, чтобы вы в конечном итоге могли описывать целые классы решений на этом языке, чтобы получать решения, полностью автоматизированные компьютерами. Но вы буквально думаете о самом языке программирования, его синтаксисе, типе операторов, которые у вас есть, что является… и вы действительно хотите, чтобы эти вещи полностью соответствовали проблеме, которую вы пытаетесь решить. Так что если бы вы были стартапом, начинающим сейчас, вы бы рекомендовали идти по этому пути и разрабатывать этот язык, что может быть невероятно времязатратно и довольно сложно, или вы бы больше посоветовали остаться на месте и работать с более популярными языками программирования?

Жоанн Верморель: Во-первых, создание своего DSL - это не то, что вы будете использовать в качестве замены популярным языкам программирования. Если вы являетесь программной компанией и хотите создать этот новый язык для решения класса проблем, как мы делаем для цепочки поставок, вам понадобится компилятор и среда выполнения для выполнения программ, написанных на этих языках программирования. И этот компилятор будет написан на обычном языке программирования. Так что это не означает, что если вы идете по пути DSL, вам не понадобятся программные инженеры; наоборот, вам понадобятся еще больше программных инженеров.

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

Один пример - это то, что я называю “системами управления заказами через несколько каналов”. Есть волна программных продуктов, которые пошли по этому пути, и самые крупные из них теперь выглядят практически как ERP-системы со сотнями экранов, тысячами опций, и настройка занимает месяцы. На самом деле они не оказываются в месте, которое настолько лучше, чем ERP-системы, которые были отправной точкой для дифференциации с целью создания более легких, быстрее развертываемых и т. д. продуктов. Через десять лет вы получаете что-то, что невероятно похоже на ERP-систему, и, возможно, это типичная проблема, где использование DSL могло бы сделать разницу.

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

Жоанн Верморель: Интересно отметить, что одним из первых успешных DSL был SQL, язык запросов для баз данных. В настоящее время каждый поставщик баз данных фактически продает DSL, поскольку единственный способ взаимодействия с базой данных - это запросы, написанные на языке, специфичном для предметной области. Когда DSL становится невероятно успешным, люди забывают, что это даже DSL. Например, HTML стал настолько распространенным, что люди не считают его DSL. Я считаю, что в различных отраслях, таких как оптимизация цепочки поставок с помощью Lokad, есть большой потенциал для DSL.

Кирен Чандлер: Кроме отрасли цепочки поставок, в каких других отраслях вы считаете, что использование DSL может быть полезным?

Жоанн Верморель: Маркетинг - это одна из отраслей, которая приходит на ум. Я вижу, что многие компании борются с комплексными программными решениями, которые не достаточно мощные. В результате они выполняют много работы с помощью Excel, что затрудняет поддержку и внедрение в производство. Еще одной областью, где DSL может быть полезным, является управление человеческими ресурсами. Управление человеческими ресурсами часто отражает культуру компании, что делает сложным создание универсального решения. Я считаю, что DSL имеет потенциал оказать значительное влияние практически в любой отрасли, но способ их реализации может сильно варьироваться в зависимости от конкретной проблемы.

Кирен Чандлер: Мы закончим на этом. Спасибо за ваше время сегодня, Жоанн.

Жоанн Верморель: Пожалуйста.

Кирен Чандлер: Это все на сегодня. Спасибо за внимание, и до встречи в следующий раз. Пока!