Рубрика «mps»

Привет! Недавно мы выпустили [MPS 2018.3](https://www.jetbrains.com/mps/download/). В этой версии много новых функций, с которыми работа над проектами станет еще эффективнее. Мы улучшили планы генерации и язык описания редактора, добавили новые конструкции в язык сборки и упаковки, обновили элементы интерфейса для удобной навигации по иерархии наследования и внесли много других изменений для продуктивной работы.

image
Читать полностью »

Недавно вышла новая версия MPS 2018.2 со множеством долгожданных изменений. Если коротко, то в этом релизе вас ждут улучшения миграции, новые генерационные планы, GitHub-плагин и не только. Подробности — ниже.

image
Читать полностью »

Бинго-бонго и Джимбо-джамбо, дорогие друзья!

У меня на дачке не было света 2 дня, я практически иссох и впал в спячку, но я снова здесь!
В этом посте мы начнем писать предсказания погоды и немного напишем кода, а не потыкаем мышкой! Ура! Наконец-то!

Какие прогнозы мы хотим делать

Очень простые! Пока прогнозировать будем только следующий день, а правила придумаем сами; а точнее, правил не будет. Мы просто будем выводить температуру на следующий день, абсолютно такую же, как и сегодня.
Сделаем один прикольчик, демонстрирующий возможности projectional editor.

Концепты

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

Читать полностью »

Йо-хо-хо!

В прошлом посте мы остановились на том, что мы умеем добавлять массив входных погодных данных, а точнее данные "Время + температура", слегка попробовали использовать Behavior и разобрались с концептами.
Пришло время делать что-то полезное, ведь пока все, что мы реализовали, можно было реализовать на любом другом языке, за исключением прикольного синтаксиса.
Первым делом, введем ограничения на время. Сейчас мы ограничим его, чтобы часы были в пределе 0-24, а минуты 0-60, иначе будет выдаваться ошибка компиляции.

Constraints

Constraints это аспект языка, который отвечает за валидность реализации концепта. В нашем случае нам нужно ограничить property hours и minutes, поэтому мы создаем Constraints аспект концепта Time.
image
Здесь мы видим 3 пункта, которые отвечают за структуру AST.

  • can be child: получаем на вход данные об узле, родительском узле, дочернем и все, что только можно и решаем, может ли реализация концепта в данном контексте быть дочерней или нет
  • can be parent: то же самое, что и с child, только проверка на возможность быть родительским узлом
  • can be ancestor: все то же самое, что с parent, но более вложенно: в данном случае мы можем идти как угодно выше по AST, дословно — может ли узел быть предком

    Читать полностью »

Введение

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

Зачем нам нужен язык Weather?

В комментариях к 1 посту было следующее высказывание

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

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

Синтаксис

Язык Weather, который мы хотим реализовать, должен выполнять следующую задачу: мы должны уметь лаконично выражать условия (погода сегодня, например) и следствия (погода завтра, послезавтра...).
В языке Weather мы будем делать наши прогнозы отталкиваясь от 1 фактора: от температуры на сегодняшний день(массив объектов время + погодные условия).

Читать полностью »

Введение

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

Почему я решил написать этот пост? Я считаю, что это очень недооцененная возможность, а недооценена она потому что порог вхождения очень высок, плюс это один из самых непопулярных продуктов JetBrains.

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

Я планирую написать серию постов об этой замечательной среде, чтобы по окончанию прочтения у энтузиастов оставалось как можно меньше вопросов «как сделать эту штуку», и как можно больше понимания структуры, чтобы можно было эффективно пользоваться документацией. Познавать MPS мы будем во время создания языка для описания закономерностей погоды. Почему, собственно говоря, и нет?
Читать полностью »

Один из клиентов обратился к нам в «Онланту» за услугой сервиса печати, получил прайс и на некоторое время удалился. Чуть позже он вернулся и заявил, что посчитал потенциальные затраты, и у него получилось дешевле. То есть он зашел на Яндекс.Маркет, взял цены на офисные принтеры, выбрал тот, который ему понравился. Потом нашел срок службы принтера — 5 лет, или 60 месяцев. Разделил цену на месяцы — получил затраты на печать в месяц. Затраты, разумеется, его устроили, а наш прайс — не очень. Бывало с вами такое?

Печать в компании: копейки, которые берегут миллионы - 1

При этом клиент не учел ни затраты на обслуживание принтера, ни расходы на картриджи, ни даже стоимость бумаги. То есть у клиента максимально поверхностное представление о том, из чего состоит цена печати одной страницы в его компании. Ожидания по цене крайне заниженные. Да и вообще — разве печать может чего-то стоить компании в век победившего электронного документооборота?!

Ну, во-первых, не победившего — и вы в этом убедитесь. Во-вторых, может. Еще как может. Давайте посчитаем.
Читать полностью »

Он лайн трансляция с Дня открытых дверей JetBrains

Привет!

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

www.ustream.tv/channel/lektorium

Читать полностью »

Практика аутсорсинга применяется во многих сферах информационных технологий. Мы привыкли пользоваться предоставляемыми каналами связи, многие компании арендуют сервера или виртуальные платформы у хостинг-провайдеров, так почему же не передать на аутсорсинг и печать?

На первый взгляд кажется, что печать – это очень простая процедура. Казалось бы, краситель наносится на бумагу – достаточно посчитать стоимость бумаги и стоимость чернил, и получится стоимость отпечатка. Однако, как отмечает в своих материалах компания HP, «до 90% расходов на печать являются скрытыми». Понятно, что показатель в 90% сильно завышен, но сама идея действительно интересна – а что если оценить косвенные расходы, связанные с печатью?
Аутсорсинг печатных процессов
Читать полностью »

Дайджест новостей JetBrains с 26 го июля по 5 августаПосле того как 26-го июля вышел долгожданный мажорный релиз ReSharper 7, произошел целый ряд событий, о которых мы не можем не упомянуть хотя бы в формате дайджеста.

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

  • 3 августа мы узнали о том, что dotTrace Performance получил Jolt Productivity Award, которую называют Оскаром индустрии разработки ПО;
  • 2-го августа вышел RubyMine 4.5.1 Читать полностью »

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js