Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top