Много языков программирования совместно используют универсальные и даже довольно универсальные функции. Например, при сравнении Java, VB6.NET, PHP, Python, затем Вы нашли бы общие функции, такие как управляющие структуры, числовые и обработка строк, и т.д.
Что было сделано для определения этих функций в метаязыке (или агностик языка) уровень?
UML предлагает описательную ссылку программного обеспечения в каждом аспекте, но реальный фокус, кажется, процессы данных. Действительно ли UML релевантен?
Я не спрашиваю, "Почему у нас нет единственного языка, который заменяет текущее изобилие". Нам нужны много различных инструментов (по крайней мере, в этой вечности).
Я не прошу, чтобы все языки соответствовали шаблону - блок по сравнению со скомпилированными языками достаточно отличается для создания этого невыполнимым (и некоторые люди называют HTML языком, хотя я не был бы). Любая попытка запустилась бы с правильно узкого объема. В соответствии с этим, я не ожидал бы, что модель покроет даже маленький выбор полной законностью.
Я ожидал бы однако, что такая модель могла использоваться для перемещения от одного языка до другого (с ограниченными целями - думают jist перевод).
То, что вы описываете, похоже на формальную семантику языков программирования. Существует множество подходов, и каждый из них дает способ формально специфицировать смысл программы на некотором языке программирования. В некоторых случаях эта спецификация по сути является переводом на другой язык, например, на лямбда-исчисление, или компиляцией для формально заданной абстрактной машины, например, SECD.
Здесь так много работы, что трудно выбрать конкретную ссылку. Но я надеюсь, что дал вам несколько полезных ключевых слов для продолжения поиска.
UML обычно используется для определения алгоритмов / кода в более простых терминах, прежде чем переходить к реальному коду.
Чтобы ответить на ваш вопрос, я предполагаю, что уже существует определенный набор требуемых частей языков, в то время как, если, иначе ... Будет ли это когда-либо установлено в качестве стандарта или превращено в базовую библиотеку это используется всеми языками: нет, это потому, что разные разработчики языков любят делать это сами.
Автор Pattern Calculus , кажется, предлагает такую универсальную модель. Я ожидаю, что он окажется столь же полезным, как и предыдущие попытки определить универсальную модель, то есть хорошими частями, но не последним словом.
Было много попыток сделать это, но ни одна не была очень успешной. Самая ранняя, о которой я знаю, это UNCOL более 50 лет назад.
Вы привели список языков, которые имеют много общего, потому что они довольно похожи - все они процедурные языки с общими корнями и некоторыми расширениями ОО, так что это не слишком удивительно. Если вы начнете рассматривать различные языки, такие как LISP, haskell, erlang, prolog или даже SQL, вы увидите совсем другие вещи.
Я думаю, что наиболее близким к этому вопросу без ограничения общности является машина Тьюринга, которая не очень полезна для практических целей. Но если вы позволите машинным языкам Тьюринга «помечать» и повторно использовать, вы можете создать нужные концепции, работая от низкого до высокого уровня.
Я думаю, что MOF - универсальный язык. Вы можете, например, создавать диаграммы UML из MOF с помощью метамодели UML. Если вы сохраните эту информацию о метамодели в xmi, вы сможете сохранить любую информацию, которая вам нужна, и даже больше, чем на любом языке. Семантика XMI настолько богата, что ее использование безгранично. Если вы сопоставляете UML с xmi в верхней части метамодели, синхронизируемой в реальном времени с MOF, то для меня это универсальный язык.