Содержание
Первые языки объектно-ориентированного программирования (ООП) на сайте Игоря Гаршина
Первые языки объектно-ориентированного программирования (ООП) на сайте Игоря Гаршина
|
Практически сразу после появления языков третьего поколения (1967 г.) ведущие специалисты в области программирования
выдвинули идею преобразования постулата фон Неймана: «данные и программы неразличимы в памяти машины».
Их цель заключалась в максимальном сближении данных и программы.
Были разработаны три основополагающих принципа того, что потом стало называться объектно-ориентированным программированием (ООП):
- наследование;
- инкапсуляция;
- полиморфизм.
Первым языком программирования, в котором были предложены основные понятия, впоследствии сложившиеся в парадигму, была Simula-1,
но термин «объектная ориентированность» не использовался в контексте использования этого языка.
В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и др. ,
однако это всё не было воспринято современниками как нечто грандиозное.
Фактически, Симула была «Алголом с классами», упрощающим выражение в процедурном программировании многих сложных концепций.
Понятие класса в Симуле может быть полностью определено через композицию конструкций Алгола
(то есть класс в Симуле — это нечто сложное, описываемое посредством примитивов).
При этом класс можно использовать в качестве префикса к другим классам, которые становятся в этом случае подклассами первого.
Впоследствии Симула-1 был обобщен, и появился первый универсальный ООП-ориентированный язык программирования – Simula-67.
Взгляд на программирование «под новым углом» (отличным от процедурного) предложили Алан Кэй и Дэн Ингаллс в языке Smalltalk.
Здесь понятие класса стало основообразующей идеей для всех остальных конструкций языка
(то есть класс в Смолтоке является примитивом, посредством которого описаны более сложные конструкции).
Именно он стал первым широко распространённым объектно-ориентированным языком программирования.
Как выяснилось, ООП оказалось пригодным не только для моделирования (Simula) и разработки графических приложений (SmallTalk),
но и для создания большинства других приложений, а его приближенность к человеческому мышлению и возможность
многократного использования кода сделали его одной из наиболее бурно используемых концепций в программировании.
В настоящее время количество прикладных языков программирования,
реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам.
Наиболее распространённые в промышленности языки (С++, Delphi, C#, Java и др.) воплощают объектную модель Симулы.
Примерами языков, опирающихся на модель Смолтока, являются Python, Ruby.
Разделы страницы о первых языках объектно-ориентированного программирования:
- Simula (Си́мула — «объектный Алгол») — 1967 г.
- Язык абстрактных данных Клу (Clu) — 1974 г.
- SmallTalk (Смо́лток) — 1980 г.
- Объектный язык системного программирования C++ — 1980-е г.г.
- Язык контрактного программирования Eifel
- Язык программирования Go (Golang) — оптимальный?
Simula (Си́мула — «объектный Алгол») — 1967 г.
Simula (Си́мула) — язык программирования общего назначения для моделирования сложных систем.
Он разработан в конце 60-х сотрудниками Норвежского Вычислительного Центра (Осло) Кристеном Нюгордом и Оле-Йоханом Далем
и был представлен как Simula-67.
Симула традиционно считается первым в мире объектно-ориентированным языком,
но создатель языка Smalltalk Алан Кэй утверждает, что именно он изобрёл термин «ООП».
Симулу 67 можно охарактеризовать как объектное расширение Алгола 60.
Simula 67 явилась первым языком с встроенной поддержкой основных механизмов ООП.
Этот язык в значительной степени опередил своё время. Его современники (программисты 60-х годов) оказались не готовы воспринять его ценности,
и он не выдержал конкуренции с другими языками программирования (прежде всего, с Фортраном).
Прохладному отношению к языку способствовала и его весьма неэффективная реализация (в т.ч. из-за сборки мусора).
Тем не менее, этот язык активно использовался в образовательном процессе в высших учебных заведениях, особенно в Скандинавии.
Более всего в Simula 67 поражает сходство с современными языками: пожалуй, единственными существенными пробелами по сравнению с Java
являются отсутствие интерфейсов и невозможность для объекта иметь более одного конструктора.
- Симула в Википедии.
Язык абстрактных данных Клу (Clu) — 1974 г.
Клу (Clu, CLU) — объектно-ориентированный [?!] язык программирования, одним из первых
реализовавший концепцию абстрактных типов данных и парадигму обобщённого программирования.
Создан группой учёных Массачусетского технологического института под руководством Барбары Лисков в 1974 году.
Язык широкого применения не нашёл, однако многие конструкции и находки использованы при создании таких языков
как Ада, C++, Java, Sather, Python, C#.
- Клу — Википедия
SmallTalk (Смо́лток) — 1980 г.
Smalltalk (Смо́лток) — объектно-ориентированный язык программирования с динамической типизацией, разработанный
в Xerox PARC Аланом Кэйем, Дэном Ингаллсом, Тедом Кэглером, Адель Голдберг и др. в 1970-х годах.
Язык был представлен как Smalltalk-80.
Smalltalk продолжает активно развиваться и собирает вокруг себя сообщество пользователей.
Smalltalk оказал большое влияние на развитие многих других языков, таких как: Objective-C, Actor, Java, Erlang, Groovy и Ruby.
Многие идеи 1980-х и 1990-х по написанию программ появились в сообществе Smalltalk.
К ним можно отнести рефакторинг, шаблоны проектирования (применительно к ПО), карты «класс — обязанности — взаимодействие»
и экстремальное программирование в целом.
Основатель концепции Wiki Уорд Каннингем также входит в сообщество Smalltalk.
- SmallTalk в Википедии.
Объектный язык системного программирования C++ («Си с классами») — 1980-е г.г.
А почему вы используете С++ вместо языка программирования? (из Башорга)
Язык C++ появился в начале 80-х годов. Созданный Бьерном Страуструпом с первоначальной целью
избавить себя и своих друзей от программирования на ассемблере, Си или различных других языках высокого уровня.
По мнению автора языка, различие между идеологией Си и Си ++ заключается в следующем:
программа на C отражает “способ мышления” процессора, а C++ — способ мышления программиста.
Язык С++ объединил в себе черты объектно-ориентированного и системного программирования.
Отвечая требованиям современного программирования, C++ делает акцент на разработке новых типов данных
наиболее полно соответствующих концепциям выбранной области знаний и задачам приложения.
Класс является ключевым понятием C++.
Описание класса содержит описание данных, требующихся для представления объектов этого типа и набор операций для работы с подобными объектами.
Таким образом, Си++ — это универсальный язык программирования, задуманный так,
чтобы сделать программирование более приятным для серьезного программиста.
За исключением второстепенных деталей Си++ является надмножеством языка программирования Си.
Помимо возможностей, которые дает Си, Си++ предоставляет гибкие и эффективные средства определения новых типов.
Используя определения новых типов, точно отвечающих концепциям приложения,
программист может разделять разрабатываемую программу на легко поддающиеся контролю части (абстракция данных).
Информация о типах содержится в некоторых объектах типов, определенных пользователем.
Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции.
Программирование с применением таких объектов часто называют объектно-ориентированным.
При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Язык контрактного программирования Eifel
Эйфель (Eiffel) — объектно-ориентированный язык программирования с алголоподобным синтаксисом
(но без использования сепаратора) и сильным влиянием Симулы (Simula).
Он разработан президентом компании Interactive Software Engineering (ISE) Бертраном Мейером в 1987 году.
В этом языке впервые был реализован метод контрактного программирования, что является самым характерным его свойством:
встроенные утверждения создают принудительный контракт между вызывающим оператором и вызываемым кодом подпрограмм.
Eiffel имеет несколько важных черт, поддерживающих более жесткий стиль программирования,
в том числе параметризованные классы, утверждения и исключения.
Неотъемлемой частью языка являются пред- и постусловия — утверждения, которые должны выполняться при входе в метод и выходе из него.
Нарушение утверждения вызывает исключительную ситуацию, которую можно перехватить, обработать и попробовать вызвать тот же метод еще раз.
Предусловия, постусловия и инварианты называются «контрактами».
Его приверженцы считают Eiffel более полным, надежным, универсальным и удобным языком программирования, чем Java.
- Эйфель (язык программирования) Материал из Википедии — свободной энциклопедии.
- Язык программирования Eiffel (Эйфель).
Язык программирования Go (Golang) — оптимальный?
Думаете, универсального языка для разработки backend не существует?
Можно взять объектно-ориентированный и эффективный C, но придётся мириться с многочисленными ограничениями.
Или Python — тогда процесс будет быстрым, но сам код — медленным.
Или Erlang — с ним вы создадите высокораспараллеленные распределённые приложения, но он впишется далеко не во все проекты.
Или энтерпрайзный Java, но он тяжеловат.
Однако есть язык, который с успехом нивелирует все эти «но».
Go (Golang) — идеальный вариант, если нужно написать что-то производительное и одновременно лёгкое в поддержке.
Согласно опросу Stack Overflow, он входит в тройку самых востребованных языков в 2020 году.
На правах рекламы (см.
условия):
Страница обновлена 28.09.2022
Предметно-ориентированные языки для бизнес-приложений — пользовательские интерфейсы / Хабр
Эта статья 一 перевод статьи Domain-Specific Languages for Business Applications — Modelling User Interfaces
Разработка бизнес-приложений связана с решением задач в различных предметных областях, таких как хранение данных, обработка бизнес-логики, проектирование интерфейса пользователя. Для прироста производительности и качества не хватит ни одного предметно-ориентированного языка (domain-specific language, DSL), ни нескольких, если они недостаточно интегрированы между собой. Значительные улучшения может принести лишь целостный подход, при котором согласованно применяются несколько DSL для моделирования решений в различных предметных областях.
В этой статье мы рассмотрим пример DSL, с помощью которого мы моделируем стандартизованные пользовательские интерфейсы для наших бизнес-приложений в modellwerkstatt.org. Логика, присущая DSL, позволяет визуализировать графы объектов полностью и в очень простом, декларативном виде. Мы покажем, насколько просто внедряется обычный код Java, с которым можно взаимодействовать, что обеспечивает дополнительную гибкость и безопасность, в частности типобезопасность. Указав на различие между внутренними и внешними DSL, мы перейдем к JetBrains MPS и сразу же рассмотрим наш DSL для интерфейсов пользователя. Наконец, мы приведем ряд общих соображений относительно взаимодействия DSL между собой и их расширения.
Внутренние и внешние DSL
Предметно-ориентированные языки широко применяются в современной разработке программных приложений. Им можно дать следующее определение: «языки программирования, выводящие уровень абстракции за рамки программирования, задавая решение, в котором непосредственно используются концепции и правила из конкретной предметной области». (Kelly и Tolvanen, 2008). Хотя языки общего назначения (General Purpose Language, GPL), такие как Java или Kotlin, широко применяются в самых разных предметных областях, предметно-ориентированные языки адаптированы к конкретной предметной области, что обеспечивает им чрезвычайно высокую эффективность в этой области. Такие языки предоставляют абстракции, адекватные решаемой проблеме, и позволяют выражать решения кратко и емко, причем для использования таких решений зачастую не требуется квалификация программиста.
В качестве примера DSL часто приводят язык запросов SQL. SQL позволяет пользователям обрабатывать данные, таблицы и базы данных, не обладая какими-либо навыками программирования. SQL обеспечивает высокий уровень абстракции благодаря конкретным концепциям, таким как «выборка» или «обновление», в предметной области «данные в строках и столбцах». Язык SQL четок и выразителен, но при этом он приковывает пользователя к одной конкретной предметной области. Небезызвестны также такие DSL, как CSS, регулярные выражения и XPath. Помимо этих «всеобщих» DSL создано и множество узкоспециальных, применяемых в отдельных организациях для фиксации предметных знаний и автоматизированной генерации однообразного кода на языках общего назначения.
Широко распространены так называемые внутренние DSL, опирающиеся на базовый GPL. «Внутренний DSL— это особая форма API в базовом языке общего назначения, часто также называемая текучим интерфейсом» (Fowler, 2010). Внутренний DSL определяет концепции и операции, существующие лишь в конкретной предметной области, и помогает работать именно в этой области. Хорошо известны примеры внутренних DSL, построенных на Java — JMock и JooQ. Однако внутренним DSL свойственны существенные ограничения. Синтаксис внутреннего DSL не может нарушать синтаксис базового языка общего назначения. В противном случае компилятор базового языка не смог бы проводить синтаксический анализ полученного кода и компилировать его. Кроме того, поддержка подсветки синтаксиса, автодополнения и контроля типов в средах IDE также ограничена для DSL и зависит от базового GPL. Из этого следует, что, во-первых, внутренние DSL могут оказаться полезными лишь разработчикам, владеющим GPL, а во-вторых, на синтаксис и визуальное представление накладываются суровые ограничения.
SQL же можно считать внешним DSL, поскольку он не встраивается в какой-либо другой GPL и не базируется на нем. SQL предоставляет собственные ключевые слова, операции и синтаксис. Он был задуман вне какой-либо (синтаксической) связи с языками общего назначения — он совершенно независим. Внешние DSL поддаются оптимизации для обеспечения полноты охвата информации в предметной области и максимальной выразительности без каких-либо ограничений по читаемости и понятности. Визуальное представление, эстетика и эргономика внешнего DSL могут быть разработаны с учетом требований не только разработчиков, но, возможно, и собственно специалистов по предметной области. Только в этом случае возможны улучшения в части формулирования, коммуницирования и понимания решений в определенной предметной области. Именно эти соображения изначально и подтолкнули к созданию предметно-ориентированных языков.
Тем не менее, внешние DSL обладают и рядом недостатков. Во-первых, поскольку такой язык не базируется на языке общего назначения, для него изначально отсутствует среда IDE. Это особенно верно в случаях, когда DSL нацелен на крайне узкую предметную область, т. е. если потенциальное количество пользователей языка не оправдывает трудозатраты на создание языкового инструментария или полноценной среды IDE. При этом пользователям DSL все же необходимы интеллектуальные инструменты для помощи в работе и повышения производительности труда. Во-вторых, что более важно, внешние DSL не предусматривают простого способа обращения к внешним артефактам, например к коду на языке общего назначения или декларациям, хранимым в виде XML. Внешний DSL в некотором смысле остается изолированным, пока не будут дополнительно разработаны средства импорта и экспорта (генераторы, производящие исполняемый код на языке общего назначения). На практике взаимодействие с полной средой разработки чрезвычайно важно, поскольку один лишь DSL не позволяет охватить все аспекты программного решения. Именно здесь могут помочь средства разработки языков.
JetBrains MPS
JetBrains MPS — это средство разработки языков, которое позволяет определять, многократно использовать и составлять предметно-ориентированные языки и предоставляет дополнительный инструментарий для этих языков.
В отличие от других сред разработки, MPS предоставляет широчайшую поддержку инструментов, не опираясь при этом на синтаксические анализаторы. Обычно инструменты и компиляторы получают абстрактное синтаксическое дерево (АСД), подвергая синтаксическому анализу текстовое представление кода с достаточно определенной грамматикой. В дальнейшем с использованием этого структурированного дерева переданная информация преобразуется в исполняемый код.
В отличие от этого подхода, в MPS манипулирование АСД выполняется непосредственно, с помощью проекционного редактора. Хотя проекционный редактор и похож на текстовый редактор, пользователь в нем редактирует структуру дерева в режиме реального времени. Для хранения кода не используется текст — сохраняется само АСД, что устраняет необходимость синтаксического анализа. Следовательно, исключается синтаксическая двусмысленность, а для разграничения концепций не требуются точки с запятой или скобки. Проекционный редактор обеспечивает краткость и адекватность визуального представления предметной области. Автодополнение кода и контроль ошибок легко реализуются через исследование и обход АСД — все это поддерживается в IDE MPS без лишних ухищрений. Короче говоря, MPS обеспечивает инструментальную поддержку предметно-ориентированных языков в общем виде, избавляя от необходимости реализовывать ее отдельно для каждого языка.
Использование АСД в качестве основы MPS дает важное преимущество. Поскольку устраняется двусмысленность грамматики, языки можно комбинировать любыми способами. Существующие языки можно расширять и обогащать новыми концепциями. Языки могут дополнять друг друга, наследовать функционал и возможности. Это позволяет без труда многократно использовать существующие языковые концепции, что ускоряет разработку и способствует единому подходу.
Чтобы проиллюстрировать эти соображения с практической точки зрения, обратимся к нашему примеру.
DataUx — язык пользовательского интерфейса, основанный на Java
DataUx удачно демонстрирует идею комбинирования языков. Мы создали этот язык специально для спецификаций пользовательских интерфейсов Java-приложений, предназначенных для интенсивной обработки данных, — обычно это бизнес-приложения, например для управления счетами на оплату или для контроля складских запасов. DataUx предоставляет различные языковые концепции, позволяющие задавать формы ввода данных, таблицы для визуализации коллекций и макеты. В DataUx элементы интерфейса пользователя снабжаются фактическими значениями данных посредством расширенной привязки свойств. Объекты Java со свойствами компонента (получатели и установщики для определенных идентификаторов) организуются в граф объектов. Затем — и это, на наш взгляд, очень необычно — весь этот граф привязывается к интерфейсу пользователя. В рассматриваемом простом примере объект заказа (Order) с различными свойствами также содержит список позиций заказа (OrderPosition). На следующем снимке экрана показан пользовательский интерфейс для объекта Order с его свойствами и позициями заказа. На втором снимке экрана показана спецификация этого самого пользовательского интерфейса средствами DataUx.
Снимок экрана 1: пользовательский интерфейс демонстрационного приложения с одним объектом Order, содержащим несколько объектов OrderPosition
Снимок экрана 2: спецификация пользовательского интерфейса Order для демонстрационного приложения на языке DataUx в MPS
Выше на снимке экрана 2 показана «главная страница заказа», привязанная к списку объектов Order. В макете сетки, состоящем из единственного столбца (1* = максимизация с весовым коэффициентом 1), мы разместили два элемента пользовательского интерфейса в две строки, первая из них минимизируется, насколько возможно (-1), а вторая опять максимизируется (1*). На форме «Delegate Form» значения шести свойств объекта Order показываются в двух столбцах; в таблице отображается список позиций данного заказа. Ключевое слово DISABLED переводит всю форму в режим только для чтения; таблица и без дополнительной настройки доступна только для чтения по умолчанию.
Главная идея языка DataUx основана на привязке компонентов и на шаблоне «основные данные – подробные данные». Каждая панель PagePane способна визуализировать граф, состоящий из объектов, в котором для каждого типа объектов существует «выбранный объект». В нашем примере есть объекты двух типов: Order и OrderPosition. Таким образом, существенными являются два текущих выбора: выбранный заказ и выбранная позиция заказа. Чтобы в элемент пользовательского интерфейса загружался текущий выбранный объект определенного типа, каждый элемент интерфейса должен быть привязан к соответствующему типу объекта. В отдельных элементах пользовательского интерфейса можно обращаться к свойствам объектов и привязывать их.
Форма «Delegate Form» привязана к заказу, выбранному в текущий момент, а таблица привязана к списку позиций выбранного заказа (записывается как Order.pos). Следовательно, форма «Delegate Form» может визуализировать свойства объекта Order, в то время как таблица может визуализировать свойства объектов OrderPosition в своих столбцах. Для OrderPosition объявлены пять свойств и задана ширина соответствующих столбцов.
В рамках нашей логики «выбранного объекта» таблица используется не только для отображения списков объектов, но и для определения выбранного объекта. Выбранная строка таблицы напрямую соответствует «выбранному объекту» данного типа. В нашем примере при выборе другой строки в таблице происходит выбор и определение объекта типа OrderPosition. Таким образом, пользовательский интерфейс удалось улучшить за счет визуализации подробных данных позиции заказа (ее свойств) в другой форме, привязанной непосредственно к объекту OrderPosition.
«Главная страница заказа» со второго снимка экрана по типу является списком объектов Order, однако если передан только один заказ, он автоматически становится выбранным объектом данного типа. Это особенность нашей концепции PagePane. Если бы странице было передано несколько заказов, для определения выбранного заказа потребовалась бы дополнительная таблица. Только это позволило бы реализовать выбранный заказ, что необходимо для формы подробных данных и таблицы OrderPosition. На третьем снимке экрана показан более сложный случай, предусматривающий несколько заказов. Как уже было сказано, для отображения свойств выбранной позиции заказа (объекта OrderPosition) мы добавили форму подробных данных.
Снимок экрана 3: более сложный пользовательский интерфейс для демонстрационного приложения с отношениями «основные данные – подробные данные»
Продолжая следовать этой логике привязки объектов, с помощью DataUx нетрудно задать пользовательские интерфейсы для сложных графов объектов. Пользователь привязывает элементы пользовательского интерфейса к типу объекта, чтобы обращаться к определенным свойствам данного объекта. Во время исполнения в элемент пользовательского интерфейса загружается текущий выбранный объект соответствующего типа. Это, вероятно, самый сложный для понимания момент в языке DataUx. Однако такая логика привязки объектов проверяется системой типов DataUx и еще целым рядом проверок на непротиворечивость. Для интеллектуального редактирования предусмотрено автодополнение, чувствительное к контексту, и даже «автодополнение элементов пользовательского интерфейса».
В контексте обсуждения предметно-ориентированных языков примечательно отношение между DataUx и Java. Очевидно, что хотя DataUx не совместим с синтаксисом Java, он опирается на такие концепции Java, как свойства и классы. Присутствуют даже правила проверки типов, основанные на Java. Более того, среди элементов пользовательского интерфейса упоминаются внешние артефакты Java. Как это достигается?
JetBrains MPS поставляется с полнофункциональной реализацией Java. Реализация этого GPL в MPS ничем не отличается от реализации любого специализированного DSL. Имеется неплохой проекционный редактор, воспроизводящий привычную модель работы с интеллектуальным текстовым редактором Java — поддерживаются определения классов и интерфейсов, их членов, и конечно, выражений. Поскольку в MPS также есть средство импорта jar, им можно пользоваться как автономной полнофункциональной IDE Java. Мы расширили и дополнили эту реализацию Java языком DataUx. В результате появилась возможность использовать мощные концепции Java, в особенности выражения и типы. Таким образом, DataUx получил базовую поддержку программирования без каких-либо дополнительных усилий.
Задавая элементы пользовательского интерфейса на языке DataUx, пользователи могут ссылаться на объявленные объекты Java и их свойства, если они загружены в среду IDE и доступны в ней. Интеллектуальные области доступа для ссылок на классы, свойств и выбора вычисляются во время редактирования. Как можно видеть на снимке экрана 2, параметр DataUx «Table Summary Line» предоставляет концепцию, аналогичную замыканиям, с переменной «allObjects» (тип — list). В правой части ожидается выражение Java, возвращающее строку (тип — Java.lang.String). В примере вызывается статический метод sum() класса MyUtil. При этом нужно отметить, что в контексте данного параметра может фигурировать любое корректное выражение Java — от вызовов методов до конкатенации строк и ссылок на переменные Java. Интеллектуальные области доступа для всех ссылок вычисляются именно в контексте параметра. Проверка типов выполняется для всех выражений.
Язык DataUx полностью использует все существующие концепции языка MPS Java, в частности выражения и обработку системы типов — эти элементы языка обычно являются чрезвычайно сложными. Использование выражений Java в DataUx, несмотря на простоту, дает пользователю языка дополнительные преимущества. Выражения позволяют гибко адаптироваться к требованиям конкретного случая, не прибегая к какому-либо внешнему, не интегрированному программному коду. Ключевое преимущество также обеспечивается возможностью расширения других языков: сохраняя независимость от синтаксиса языка MPS Java, можно легко ссылаться на концепции, объявленные в этом языке, например, на статический метод, который вызывается в параметре таблицы «Table Summary Line».
Язык DataUx был разработан для одного из наших крупных клиентов — предприятия розничной торговли из Австралии. На стороне заказчика восемь разработчиков реализуют на DataUx все необходимые пользовательские интерфейсы, не затрагивая каких-либо дополнительных аспектов пользовательского интерфейса в обычном коде Java. После успешного определения идеи и структура языка сам язык был разработан за пару дней. Однако на разработку среды выполнения интерфейса пользователя ушло больше времени из-за сложности реализации под несколько разных технологий.
Язык DataUx доступен на GitHub.
Заключение
DataUx — это весьма просто и логично устроенный предметно-ориентированный язык, позволяющий делегировать разработку пользовательских интерфейсов людям без навыков программирования. Крутизна кривой обучения так мала, что какие-либо объяснения практически не требуются. Этот язык также чрезвычайно упрощает понимание и обслуживание существующих пользовательских интерфейсов. Более того, пользовательский интерфейс, заданный с помощью DataUx, не зависит от технологии реализации. Это очень важное достоинство, поскольку технологии пользовательских интерфейсов в наши дни быстро меняются. Отметим, что мы уже предоставляем среды выполнения DataUx для Apache Pivot, JavaFX, vaadin и HTML5. Пользователю достаточно выбрать требуемую платформу, и MPS сгенерирует необходимый код из описаний пользовательского интерфейса на языке DataUx.
DataUx демонстрирует способность JetBrains MPS к комбинированию внешних DSL — в данном случае DataUx расширяет внутреннюю реализацию Java. В DataUx используются важные концепции Java, такие как выражения, при этом обеспечивается привлекательное визуальное представление. Именно такое расширение языка позволяет DataUx взаимодействовать с объявлениями на Java. Обычно языки в MPS могут ссылаться на концепции из других языков, и следовательно, на спецификации, смоделированные на других языках. Проекционный редактор работает с АСД и позволяет создателю языка составлять, многократно использовать и модифицировать языки, но что важнее всего, он позволяет разным предметно-ориентированным языкам взаимодействовать друг с другом. MPS способствует активному взаимодействию между разными предметными областями.
Рисунок 1: различные предметно-ориентированные языки для моделирования бизнес-приложений дополняют друг друга
В самом деле, определение пользовательского интерфейса для бизнес-приложения с помощью DataUx — это еще не все. В типичном бизнес-приложении пересекается целый ряд предметных областей, таких как хранение данных (например, запросы и преобразования SQL), бизнес-логика и пользовательские интерфейсы. Поскольку JetBrains MPS обеспечивает взаимодействие между DSL, мы разработали для каждой специализированной части бизнес-приложения отдельный язык (см. рисунок 1). Созданы три узкоспециальных предметно-ориентированных языка, образующих полноценный комплект средств разработки. Таким образом, для каждой конкретной задачи мы предоставляем наиболее выразительный язык, не отказываясь при этом от создания всего бизнес-приложения в пределах единой среды разработки. Для каждой предметной области бизнес-приложения обеспечиваются высокоуровневые абстракции, причем не создается препятствий для интеграции и сохраняется простота формулирования и понимания, а значит, удобство обслуживания и высокое качество в долгосрочной перспективе.
Ссылки и литература
- DataUX на GitHub
- JetBrains MPS
- Kelly and Tolvanen, 2008: Domain-Specific Modeling: Enabling Full Code Generation, Wiley-IEEE Computer Society
- Fowler 2010: Domain-Specific Languages, Addison-Wesley Educational Publishers Inc
Мы готовимся к расширению Европы [. Союз для включения новых государств-членов, и мы подчеркиваем, что этот процесс […] europarl.europa.eu europarl.europa.eu | Preparamos la asociacin de nuevos pases y hacemos hincapi en que ese […] 3 4.europarl.europa.eu europarl.europa.eu |
Проект умиротворения upp — это […] насилие в новейшей истории. bernardvanleer.org bernardvanleer.org | El proyecto de pacificacin upps […] Полиция МС […] Cabo en la Historia reciente para refrenar la violencia. bernardvanleer.org bernardvanleer.org |
Помощь, не связанная с […] общего интереса. europa.eu europa.eu | Уведомление о кризисе s e mantuvo [. europa.eu europa.eu |
Следствие тл у , broadly — b a se d pov er t y — oriented e c on omic рост […] и улучшенная экономическая политика распределения, которая приносит пользу […] Беднейшие группы населения имеют решающее значение для устойчивого решения мировых проблем, связанных с голодом. europarl.europa.eu europarl.europa.eu | Por ello un […] y una mejora de la poltica de reparto econmico, […] que beneficiie los grupos de poblacin ms pobres, son fundalis para una solucin sostenible los problemas de hambre del mundo. europarl.europa.eu europarl.europa.eu |
The program under study w a s broadly b a se d, though slightly le s s oriented t o wa rd беднейшие слои населения. cdr.or.cr cdr.or.cr | Эль Программа Бахо […] cdr.or.cr cdr.or.cr |
Товар […] цели клиентов: тела качения из […] керамика или сталь, сепараторы из латуни, листовой стали или ПЭЭК, кольца подшипников из цементируемой стали и многие другие. smartperformanceprogram.com smartperformanceprogram.com | La gama de productos ha si do cread a en b ase a los objetivos de las […] Приложения для клиентов: elementos rodantes cermicos […] o de acero, jaulas de latn, acero o PEEK, anillos de acero macizo, y muchos ms. smartperformanceprogram.com smartperformanceprogram.com |
обеспечение распространения информации в различных формах (таких как компакт-диски, Интернет и Интранет) для обслуживания различных целевых групп и ее […] удобен в использовании, с […] должны быть созданы карты и краткие пояснения. unesdoc.unesco.org unesdoc.unesco.org | распространение информации в различных формах (например, CD-ROM, Интернет и интранет) для различных целевых групп, которые можно легко использовать: [. презентасин де альта […] Политическая составляющая […] grficos, mapas y explicaciones breves. unesdoc.unesco.org unesdoc.unesco.org |
В своем эссе Мишель Пейс предлагает больше оснований для оптимизма, намечая развитие в ЭМИ впечатляющего набора культурных […] инициатив, а также […]
fride. fride.org | En su ensayo, Michelle Pace abre un espacio para el optimismo al describir el desarrollo de un impresionante abanico de iniciativas Culturales en el contexto de la AEM, al tiempo que lamenta el hecho de que el […] tercer pilar de la […] fride.org fride.org |
Эксклюзивное» или узкое произведение включает в себя только ма rk e t — oriented w o rk , and «inclusive » o r broadly — d e fi Необязательный труд включает как ориентированную на рынок работу, так и работу по дому. cepal.org.ar cepal.org.ar | S e номинал т rabajo excluyente аль дие рассмотрите соло эль trabajo де меркадо у trabajo incluyente аль дие рассмотрите эль trabajo де меркадо у лас Labores domsticas. cepal.org.ar cepal.org.ar |
Для ответа на вопрос 2 анкеты […] понятий больше о средствах защиты. aippi.org aippi.org | Аль-конкурс ла pregunta 2 del cuestionario, […] abonare algunos conceptos ms sobre los recursos. aippi.org aippi. |
я т в широком смысле m i rr или то, что в существующем Регламенте и отражает текущую практику в Сообществе. eur-lex.europa.eu eur-lex.europa.eu | Es prcticamente idntico аль-дель-дель reglamento vigente у refleja ла prctica привычный де-ла-Comunidad. eur-lex.europa.eu eur-lex.europa.eu |
Мы считаем, что это необходимо как для восстановления, так и для […] daccess-ods.un.org daccess-ods.un.org | Opinamos que ello es esencial tanto para los esfuerzos de reconstruccin como para […] daccess-ods.un.org daccess-ods.un.org |
Заявление […] расследование любых полученных сообщений или жалоб. daccess-ods.un.org daccess-ods.un.org | Las denuncias se […] cualquier tipo de notificacin o queja que se recibiera. daccess-ods.un.org daccess-ods.un.org |
Я полагаю, что мы достигли соглашения в Брюсселе за две недели a g o в целом s a ti соответствуют этим целям. europarl. europarl.europa.eu | Creo Que el acuerdo alcanzado en Bruselas hase dos semanas satisface en buena medida estos objetivos. europarl.europa.eu europarl.europa.eu |
Как показывает оценка, Europass работает лучше […] а недостатки в основном касаются […] элементы, у которых это измерение слабее. eur-lex.europa.eu eur-lex.europa.eu | Como indica la Evaluacin, функция Europass […] подготовка к устранению недостатков [. воздействует на принципала лос-элементос-ан-лос-ке-эста-дименсин-эс-менос-важно. eur-lex.europa.eu eur-lex.europa.eu |
Инструкции не должны быть чрезмерными […] eur-lex.europa.eu eur-lex.europa.eu | Las instrucciones no deben ser excesivamente tcnicas y deben […] eur-lex.europa.eu eur-lex.europa.eu |
В исследовании отмечается, что нормативно-правовая база для финансовой […] кредиторов. daccess-ods.un.org daccess-ods.un.org | En el estudio se seala que el marco normativo de la informacin […] 1 oteccin […] |
Создание […] предусмотрено. unesdoc.unesco.org unesdoc.unesco.org | Convendra prever la […] в политике. unesdoc.unesco.org unesdoc.unesco. |
Мы ha v e в широком смысле s u pp , сосредоточены на том, что вопрос или неофициальные предложения, формальные и неофициальные. daccess-ods.un.org daccess-ods.un.org | Tenemos propuestas oficiales y oficiosas con un apoy o общий , sobre las cuestiones en que concentrarnos. daccess-ods.un.org daccess-ods.un.org |
Таким образом, существует неформальная сеть, и работа по созданию отделения может быть следующей: gopacnetwork.org gopacnetwork.org | Де Esta Forma себе establece уна красный неофициальный дие allowe repartir mejor эль trabajo де crear уна seccin. gopacnetwork.org gopacnetwork. |
Чтобы быть полным, он также должен быть культурным и социальным, и mo r e в широком смысле t o принимать во внимание все факторы, которые помогают людям 1 4 реализовать себя. unesdoc.unesco.org unesdoc.unesco.org | Para ser completo debe incluir tambin los aspectos Culturales y Sociales y, вообще, todos los factores que concurren a la plena realizacin de la persona. unesdoc.unesco.org unesdoc.unesco.org |
Наиболее важные a n d в целом a c ce pt принцип […] В основе современной системы закупок лежит открытый конкурс — неограниченный, […] универсальный доступ к рынку закупок. pppue.undp.2margraf.com pppue.undp.2margraf.com | Принципы […] Moderno de Adquisicin es la компетентность abierta — […] el acceso no restringido y universal al mercado de adquisiciones. pppue.undp.2margraf.com pppue.undp.2margraf.com |
Рабочий стол […] windows.microsoft.com windows.microsoft.com | El escritorio a veces se […] барра-де-тареас. windows.microsoft.com windows.microsoft.com |
Очевидно, однако, что была потребность в […] daccess-ods.un.org daccess-ods.un.org | Sin embargo, parece evidente qu e deb en adoptarse de cisio ne s ms orientadas a los resultado s y m edidas concretas para asegurar una ate nc в м s общий a la ig ua ldad y fomentar los derechos [. y las oportunidades de las mujeres. daccess-ods.un.org daccess-ods.un.org |
Минимальный шестимесячный […] операторов в управлении своими контрактами и их маркетингом. europarl.europa.eu europarl.europa.eu | El perodo de conservacin mnimo […] операторы телекоммуникаций для администраторов […] sus contratos y su mercadotecnia. europarl.europa.eu europarl.europa.eu |
Такой подход требует действий […] которые укрепляют возможности сообщества по выявлению и преодолению [. средства к существованию. unisdr.org unisdr.org | Tal enfoque requiere actividades que fortalezcan […] la capacidad local para identificar y enfrentar las […] жилых домов. unisdr.org unisdr.org |
С его прак ти с е — ориентированный w o rk , IWG Bonn […] хочет пролить свет на экономическую и социальную сферу вокруг политики […] и предпринимательской деятельности, тем самым облегчая стратегическое планирование. colorqualityclub.org colorqualityclub.org | C на и т раб ajo orientado al a p rcti ca , el IWG […] Bonn desea arrojar luz sobre el contexto econmico y social de las actividades […] polticas y empresariales, y facilitar la planificacin estratgica. colorqualityclub.org colorqualityclub.org |
Однако еще более важным событием является […] , которые вышли на сцену. europarl.europa.eu europarl.europa.eu | Эмбарго на грех, означающее отказ от систем […] que h en entrado en escena. europarl.europa.eu europarl.europa.eu
|
Этот брифинг подтверждает […] daccess-ods.un.org daccess-ods.un.org | Esta exposicin informativa corrobora que su planteamiento […] daccess-ods.un.org daccess-ods.un.org |
Они также стро нг л y ориентированный t o wa rds частный сектор. unjiu.org unjiu.org | Tambin est n fuer teme nt e orientadas h ac ia e l se 1 unjiu. unjiu.org |
Нино Жомелидзе | История искусства
Имея опыт работы в широко ориентированных немецких и швейцарских академических традициях — я получил докторскую степень в Бернском университете и защитил степень Habilitation в Тюбингенском университете — я занимался широким кругом исследовательских интересов в области средневекового искусства с географический акцент на Италию и Восточное Средиземноморье. Меня особенно интересуют вопросы репрезентации, мимесиса и аллегории, интерактивных отношений между искусством и зрителем, а также исследование теоретических, историографических и политических аспектов средневекового искусства.
Моя первая книга ( Santa Maria Immacolata in Ceri: Sakrale Malerei im Zeitalter der Gregorianischen Reform , Rome, 1996) представляет собой первое всестороннее исследование ключевого памятника григорианской реформы в Риме. Я продемонстрировал влияние принципов Реформаторского движения на возрождение раннехристианских идеалов и образов и на особое восприятие античности в римской живописи XII века. Для своей второй книги я обратился к увлекательному, часто взаимосвязанному художественному ландшафту южной Италии, определяемому ее многогранными связями в Средиземноморье и землях к северу от Альп. г. Искусство, ритуал и гражданская идентичность в средневековой Южной Италии г. (Pennstate University Press, 2014) исследует создание, функционирование и изменение значения литургической мебели и рукописей на юге Италии (включая Сицилию). Сейчас я работаю над книжным проектом о средневековых концепциях подлинности и процессах аутентификации.
До прихода в Johns Hopkins я преподавал в Тюбингенском университете (Германия) и в Принстонском университете. Я получил многочисленные стипендии и гранты от Bibliotheca Hertziana в Риме (Институт Макса Планка), Фонда Carlsberg, Центра перспективных исследований в области визуальных искусств (CASVA), Национальной галереи искусств, Вашингтон, округ Колумбия, Герда — Фонд Henkel и Институт перспективных исследований, Принстон.
В дополнение к моим исследованиям средневекового искусства — и мотивированные немецкой академической традицией, которая требует второстепенной компетенции — я также опубликовал публикации по северному немецкому и датскому искусству в первой половине 19-го века, в частности по эстетике и науке в академическая традиция в Дании, интеллектуальный и художественный обмен между Римом и Копенгагеном, а также роль пейзажной живописи в построении «национальной» идентичности. Чтобы узнать об этом конкретном направлении исследований, см. вкладку «Исследования» и мое резюме.
Моя первая книга ( Santa Maria Immacolata in Ceri: Sakrale Malerei im Zeitalter der Gregorianischen Reform (Рим, 1996) представляет собой первый всесторонний анализ до сих пор неизвестного ключевого памятника григорианской реформы в Риме и его внутренних районах . Основано На материальных свидетельствах самих фресок, их стилистическом, иконографическом и общественно-политическом контексте я демонстрирую влияние принципов Реформаторского движения на возрождение раннехристианских идеалов и образов и на специфическое восприятие античности в XII-XII вв. Сопоставление антропоморфного изображения бога Ветхого Завета с теоретической надписью в Цери положило начало одному из основных интеллектуальных курьезов, которые движут моим исследованием: влиянию средневековой теории образов на представление о «невидимом Боге». , в нескольких статьях и совместно отредактированном томе ( Die Sichtbarkeit des Unsichtbaren: Zur Korrelation von Text und Bild im Wirkungskreis der Bibel , с Берндом Яновски (Штутгарт, 2003), я исследую средневековые концепции репрезентации и видения как в связи с фресками в Цери, так и в более широком смысле.
В моей последней книге «Искусство, ритуал и гражданская идентичность в средневековой Южной Италии » (Pennstate University Press, 2014) исследуется создание, функционирование и изменение значения потрясающе красивой и сложной литургической обстановки и богато иллюминированных рукописей на юге Италии. (включая Сицилию). Эта книга охватывает широкий период времени, предваряя анализ позднеантичного развития литургических практик и мебели на Западе, а также в Восточном Средиземноморье, включая Сирию и Малую Азию, и заканчивается в четырнадцатом веке. Мой подход касается в первую очередь концептуальных измерений этих произведений искусства, исследуя различные способы взаимодействия, которые происходят между церковной мебелью, изображениями и ритуальным движением. Я занимаюсь недавними методологическими дискурсами в истории искусства, особенно в отношении перформативных аспектов произведений искусства и их рецепции, а также вопросов движения, нарративности и процессов декодирования.
Сейчас я работаю над двумя проектами. Один из них представляет собой исследование длиной в книгу Истинные образы? Вопрос аутентичности в средневековом искусстве , исследующий понятия аутентичности и процессы аутентичности в средневековом искусстве. Здесь я выхожу за рамки региональных границ, чтобы ответить на вопросы, возникшие в результате моего интереса к средневековым отношениям к изображениям культа и поклонения: какие стратегии — визуальные и другие — были разработаны для создания изображений христианского бога и святых, приемлемых для почитания? ? Можем ли мы различить общетеоретический дискурс об истине, который находит свое визуальное выражение в производстве средневековых произведений искусства? Что устанавливает подлинность образа, созданного для культа и поклонения, и как знания о создателе образа связаны с его восприятием как подлинного? Я рассматриваю вопрос подлинности на множестве примеров, выходящих за рамки культового изображения и включающего печати, юридические документы, гравюры на дереве, портреты, значки паломников, Agnus dei капсулы и т. д. Более широкая цель этой книги — исследовать концептуальный характер средневекового искусства и его парадоксальную природу посредством применения более поздних точек зрения из области антропологии, социальной истории, религии, медиа- и визуальных исследований. .
Начинает формироваться второй исследовательский проект, касающийся иллюминированных свитков в Средние века. Я предполагаю исследовать свитки в глобальном контексте и в совместном процессе, который мог бы привести к выставке позднеантичных папирусов, свитков Торы, японских и китайских ручных свитков, византийских библейских свитков, западных средневековых литургических свитков и хроник и, следовательно, охватит к еврейской, исламской, азиатской, древней средиземноморской и ближневосточной культурам.
В дополнение к моему исследованию средневекового искусства и руководствуясь немецкой академической традицией, требующей второстепенной компетенции, я опубликовал статью о пересечении натурфилософии и науки, а также изящных искусств в Германии и Дании 19-го века. В частности, я сосредоточился на роли естествоиспытателя Х.К. Эрстед за образование и становление художников в Датской королевской академии изящных искусств в Копенгагене. Совместно отредактированный том «Вымыслы об изоляции: художественный и интеллектуальный обмен в Риме в первой половине девятнадцатого века» г. вместе с Лоренцем Эндерлейном (Рим, 2006 г.) исследует интеллектуальную основу художественных и теоретических дискурсов в Риме в первой половине XIX века и является частью этого более широкого интереса к искусству XIX века. Я считаю, что переход к совершенно новой и отличной области оказался чрезвычайно полезным для моего интеллектуального пути как медиевиста и искусствоведа.
Центральное место вопросов репрезентации и аутентичности в моем собственном исследовании, а также в рамках современного дискурса истории средневекового искусства, побудило меня разработать ряд курсов, в частности семинар уровня 400 AS.010.405.01 « Концепции изображения невидимого Бога в средние века» (весна 2014 г. ) и два семинара для выпускников АС.010.652.01 «Средневековые образы визионерских переживаний» (осень 2013 г.) и «Средневековый образ и концепции подлинности ( будет преподаваться весной 2015 г.).
Мой 300-уровневый курс AS.010.360.01 «Средневековое искусство в Европе: методология, историография, теория» рассматривает теоретические, методологические и историографические аспекты истории искусства в более общем плане, но с материальным и историческим акцентом на средневековый период. Мой интерес к значению искусства и архитектуры в более широкой схеме политической и религиозной истории привел меня к разработке 300-уровневого курса AS.010.319.01 «Средневековое искусство и архитектура Святой Земли» (весна 2014 г.). Исходя из того факта, что все три монотеистические религии с раннего Средневековья претендовали на одни и те же территории, этот курс имеет целью показать, что создание святых мест, их доступность и многие преобразования в Средние века зависели от политических и религиозных изменений и были неразрывно связаны с созданием искусства и архитектуры. Весной 2015 года я буду преподавать новый курс из 300 уровней: «Трансформации империи: власть, религия и искусство средневекового Рима». Этот курс исследует влияние экономических взлетов и падений в средневековый период вечного города, а также рассматривает идеи и концепции, лежащие в основе различных форм лидерства, как политического, так и религиозного, поскольку они пересекаются с силой искусства и самореферентным характером город, одержимый своим прошлым.
Я регулярно устраиваю специальные классные встречи в зале для семинаров библиотеки Эйзенхауэра, посвященной редким книгам, используя имеющиеся в коллекции факсимильные издания иллюминированных средневековых рукописей для тщательного изучения в классе. Кроме того, я преподаю разделы своих курсов в учебной комнате и на обычных выставочных площадках Художественного музея Уолтерса, а также беру студентов на экскурсии за пределы Балтимора, например, в Клойстерс (Музей Метрополитен, Нью-Йорк). Вместе с Мартиной Баньоли, куратором Эндрю У. Меллона, отвечающим за средневековое искусство и рукописи в Художественном музее Уолтерса, я планирую провести семинар для выпускников, запланированный на осень 2015 года, на тему «Чувства в средневековом искусстве». совместно с выставкой в Художественном музее Уолтерса.
Книги (от одного автора)
- Искусство, ритуалы и гражданская идентичность в средневековой Южной Италии (Университетский парк: Pennstate University Press, 2014)
- Santa Maria Immacolata in Ceri: Sakrale Malerei im Zeitalter der Gregorianischen Reform (Рим: Archivio Guido Izzi, 1996), Storia e Arte 5 (итальянский и немецкий)
Книги (в соавторстве)
- Значение в движении. Семантика движения в средневековом искусстве г., под редакцией Джованни Френи (Принстон: издательство Принстонского университета, 2011 г.)
- Вымыслы об изоляции: художественный и интеллектуальный обмен в Риме в первой половине девятнадцатого века , под редакцией Лоренца Эндерлейна, Supplementum Analecta Romana Instituti Danici 37 (Рим: L’Erma di Bretschneider, 2006)
- Die Sichtbarkeit des Unsichtbaren: Zur Korrelation von Text und Bild im Wirkungskreis der Bibel , под редакцией Бернда Яновски (Штутгарт: Deutsche Bibelgesellschaft, 2003)
г.
Статьи (подборка)
- «Богоявление логоса в Амвоне Ротонды (Агиос Георгиос) в Салониках», в: Synergies in Visual Culture / Bildkulturen im Dialog , ред. Мануэла Де Джорджи, Аннет Хоффманн, Никола Сутор (Мюнхен: Fink Verlag, 2013), 85-96
- «Нисходящее Слово и воскресающий Христос: движущиеся изображения в иллюминированных литургических свитках Южной Италии», в: Значение в движении. Семантика движения в средневековом искусстве г., ред. Н. Жомелидзе и Г. Френи (Принстон: Департамент искусства и археологии совместно с Princeton University Press, 2011 г.), 3–34
- «Аура нуминозного и ее воспроизведение: средневековые картины Спасителя в Риме и Лациуме», Мемуары Американской академии в Риме 55 (2010), 221-262
- «Deus — Homo — Imago: представление божественного в двенадцатом веке», в , глядя за пределы. Видения, сны и озарения в средневековом искусстве и истории г., изд.
.