Есть ли универсальная модель для языков? - PullRequest
5 голосов
/ 13 апреля 2010

Многие языки программирования имеют общие и даже довольно универсальные функции. Например, если вы сравнили Java, VB6, .NET, PHP, Python, то вы найдете общие функции, такие как управляющие структуры, числовые и строковые операции и т. Д.

Что было сделано для определения этих функций на уровне метаязыка (или независимого от языка)?

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

Я не спрашиваю: «Почему у нас нет единого языка, который заменяет нынешнее изобилие». Нам нужно много разных инструментов (по крайней мере, в этот период).

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

Я ожидаю, однако, что такую ​​модель можно будет использовать для переноса с одного языка на другой (с ограниченными целями - подумайте о переводе jist).

Ответы [ 6 ]

4 голосов
/ 13 апреля 2010

Было много попыток, но ни одна не была очень успешной. Самое раннее, о чем я знаю, это UNCOL более 50 лет назад.

Вы дали список языков, которые имеют много общего, потому что они очень похожи - все они процедурные языки с общими корнями и добавлены некоторые расширения OO, так что это не слишком удивительно. Если вы начинаете смотреть на разные языки, такие как LISP, haskell, erlang, prolog или даже SQL, вы начинаете видеть совсем другие вещи.

3 голосов
/ 13 апреля 2010

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

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

0 голосов
/ 13 апреля 2010

Автор Pattern Calculus , кажется, предлагает такую ​​универсальную модель. Я ожидаю, что он окажется таким же полезным, как и предыдущие попытки определить универсальную модель, то есть хорошую по частям, но не последнее слово.

0 голосов
/ 13 апреля 2010

Я думаю, что MOF - универсальный язык.Например, вы можете создавать UML-диаграммы из MOF с помощью UML-метамодели.Если вы сохраните эту информацию метамодели в xmi, вы сможете сохранить любую нужную вам информацию и даже больше, чем на любом языке.Семантика XMI настолько богата, что нет никаких ограничений для ее использования.Если вы отобразите UML на xmi в верхней части прямой синхронизации метамодели с MOF, то для меня это универсальный язык.

0 голосов
/ 13 апреля 2010

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

0 голосов
/ 13 апреля 2010

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

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

...