Twój pierwszy przykład jest w pewnym sensie możliwy. Zwykle takie rzeczy zdarzają się w PHP (i innych powiązanych językach programowania):
<HTML>
<?PHP
call_some_php_function(1,2,"a","b"); /* This is may return nothing, a text string, or actual HTML markup code */
?>
</HTML>
Kilka ważnych uwag na temat tego przykładu:
- HTML NIE jest językiem programowania, to język znaczników.
- PHP i HTML, a nie wykonywane / interpretowane w tym samym miejscu: kod PHP jest wykonywany przez interpretera PHP działającego na serwerze, a wynik jest „wstrzykiwany” do otaczającego HTML. Następnie ten cały obiekt blob jest wysyłany do klienta / przeglądarki, która renderuje pełny kod HTML.
Drugi przykład wygląda jak połączenie C ++ i Java. Możliwe, że skompilowane moduły napisane w różnych językach będą ze sobą rozmawiać, ale połączenie Java i C ++ w tym samym pliku źródłowym byłoby niezwykle mylące i trudne: skąd kompilator wiedziałby, które instrukcje to Java, a które C ++?
Teoretycznie można by napisać specjalny kompilator / preprocesor ze wskaźnikami „języka”, takimi jak:
Java
{
import java.util.Scanner;
}
C++
{
cout << "Insert a number from 1 to 10";
}
Java
{
Scanner n = new Scanner(System.in); //Actually, this line *could* be a C++ line - it's hard for me to tell just by looking at it.
System.out.println("The value you entered was" +n.newLine());
}
Ale nie jestem pewien, czy robiąc to, zyskasz coś przydatnego.
W jaki sposób to hybrydowe środowisko językowe poradzi sobie z funkcjami językowymi, które są ze sobą niezgodne?