Мета-программирование: писать на одном языке X, кросс-компиляция на нескольких языках, таких как C #, PHP, Java, C

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

Очевидно, что каждая система плагинов (или система расширений) отличается, и это требует определенного кода моста через шаблон адаптера. Но ядро ​​должно быть написано один раз. Я не Я не ожидаю, что пользователи WordPress будут использовать мост PHP-Java, и я не ожидаю, что пользователи DotNetNuke будут использовать мост .NET-Native (хотя это проще задумать).

Как я вижу, ядро ​​должно быть компилируемым в три основных домена, которые охватывают большинство систем CMS:

  • родным, промежуточным языком может быть C или C ++. Целевой объект может использоваться как расширение PHP.
  • MSIL / CIL для языков на базе .NET
  • Байт-код Java для систем на основе Java

C # и Java довольно хорошо переводятся друг в друга, но C и C # - это гораздо больше. Сильнее. В конце концов, было бы неплохо, возможно, добавить другие цели, чтобы не заставлять пользователя WordPress или WikiMedia устанавливать расширение перед использованием плагина.

Я уверен, что это придумало и другое. Какой' как распространенный способ решения таких проблем? Должен ли я сначала определить DSL и использовать DMS или что-то подобное для преобразования? Другие варианты?

17
задан Abel 16 March 2011 в 18:25
поделиться