Ich habe eine Weile programmiert, ich habe einige rudimentäre Programme geschrieben und ich möchte weiter lernen. Ich habe den Punkt erreicht, an dem Sie einfach nicht mehr wissen, was Sie als Nächstes lernen sollen, und ich möchte eine Frage zu meiner eigenen Neugier stellen.
Kurz gesagt, die Frage ist, ob Sie mehrere Programmiersprachen zu einem Ergebnis kombinieren können. Kann dieser Code zum Beispiel möglich sein?
<html>
cout << "Hello world!";
</html>
oder
import java.util.Scanner;
cout << "Insert a number from 1 to 10";
Scanner n = new Scanner(System.in);
System.out.println("The value you entered was" +n.newLine());
Das fühlt sich wie eine dumme Frage an, aber ich kann nicht wissen, ob es möglich ist oder nicht, deshalb frage ich es. In dieser Frage stelle ich fest, dass er Python-Code in HTML-Code verwendet. Wenn mein obiges Beispiel nicht möglich ist, was hat er dann getan?
programming-languages
Bugster
quelle
quelle
Antworten:
Ihr erstes Beispiel ist irgendwie möglich. Normalerweise passieren solche Dinge in PHP (und anderen verwandten Web-Programmiersprachen) wie folgt:
Einige wichtige Punkte zu diesem Beispiel:
Ihr zweites Beispiel sieht aus wie eine Art Mashup von C ++ und Java. Es ist möglich, dass kompilierte Module, die in verschiedenen Sprachen geschrieben sind, miteinander kommunizieren, aber es wäre äußerst verwirrend und schwierig, Java und C ++ in derselben Quelldatei zu kombinieren: Wie würde der Compiler wissen, welche Anweisungen Java und welche C ++ sind?
Ich nehme an, Sie könnten theoretisch einen speziellen Compiler / Pre-Prozessor mit "Sprach" -Indikatoren schreiben, wie zum Beispiel:
Aber ich bin mir ehrlich gesagt nicht sicher, ob Sie dadurch etwas Nützliches gewinnen würden.
Wie würde diese hybride Sprachumgebung auch mit Sprachfunktionen umgehen, die zwischen beiden nicht kompatibel sind?
quelle
CUDA
. Es ist eine Mischung aus zwei sehr unterschiedlichen C-Sprachen, wobei einige Funktionen für ein Gerät (GPU) kompiliert wurden und andere auf einem Host verbleiben, wobei die Kommunikationsschicht abgeleitet wird.Kurze Antwort
Nicht wirklich.
Lange Antwort
Einbetten
Im Allgemeinen enthält eine einzelne Quelldatei Code für genau eine Programmiersprache. Es ist aus mehreren Gründen ungewöhnlich, dass mehrere Sprachen in einer einzigen Datei zusammengefasst werden:
Verknüpfen
Verschiedene Programmiersprachen, die eine gemeinsame Anwendungsbinärschnittstelle verwenden, können kombiniert werden, um eine einzige ausführbare Datei oder Bibliothek zu bilden. Das Ineinandergreifen der Signaturen der beiden Sprachen ist häufig mit einem gewissen Aufwand verbunden, es gibt jedoch Tools, die den Vorgang vereinfachen.
Mehrsprachige
Polyglot-Code ist gültig und in mehr als einer Sprache gleichwertig. Die 404-Seite von Stack Overflow enthält ein solches Programm:
Dies druckt "404" in Python, Perl, Ruby, C, Brainfuck und Befunge.
Fazit
Sprachen werden selten in Dateien gemischt, und wenn, dann ist es nur zum Lachen . Die Leute versuchen sogar, das Mischen von Sprachen in Projekten zu vermeiden, da dies zusätzliche Probleme mit sich bringt. Obwohl es technisch möglich sein kann, ist das Mischen verschiedener Sprachen weder üblich noch pragmatisch.
quelle
DATA
Anweisungen einfügen mussten . Nicht, dass ich bitter wäre oder so. Noooo.Ja, das ist tatsächlich möglich. Natürlich nicht so, wie Sie es sich vorgestellt haben. Es gibt einige Sprachen , die speziell für diesen Zweck entwickelt wurden.
In der Praxis kann es sehr nützlich sein, mehrere domänenspezifische Sprachen in einer einzigen Hostsprache zu mischen . Es ist selten erforderlich, zwei oder mehr gleichermaßen "Mehrzweck" -Sprachen in einer einzigen Quellcodedatei zu mischen, obwohl Sie häufig Projekte finden, die beispielsweise in VB.NET und C # geschrieben sind und unterschiedliche Sprachkomponenten enthalten, die separat kompiliert werden.
HTML ist nur eine Auszeichnungssprache. Möglicherweise finden Sie einen serverseitigen Code (z. B. in VB.NET), HTML-Markup und clientseitigen Javascript-Code in einer einzigen Quelldatei, obwohl dies von vielen als eine schlechte Vorgehensweise angesehen wird.
quelle
Dies wird oft als polygloter Code bezeichnet - es gibt einige lustige / verrückte Beispiele, wenn Sie dem Link folgen oder an verschiedenen anderen Stellen im Web. Die meisten davon sind nur zum Spaß / um zu beweisen, dass es möglich ist.
Im Ernst, es gibt verschiedene Beispiele aus dem wirklichen Leben, in denen zwei oder mehr verschiedene Sprachen sinnvoll kombiniert werden können:
quelle
Es ist möglich, mit Perl Inline eine Kombination von Sprachen zu erstellen, die es ermöglicht, ein Perl-Skript zu schreiben und Codeabschnitte einzufügen, die in einer anderen Sprache geschrieben sind:
quelle
Embedded SQL war eine gängige Methode, um SQL-Anweisungen in Programme anderer Sprachen einzubetten.
Heutzutage wurde es fast vollständig durch einen einfacher zu kompilierenden API-basierten Datenbankzugriff ersetzt, bei dem die Hostsprache nicht geändert werden muss, sondern stattdessen die normalen Fähigkeiten verwendet werden.
quelle
Es können mehrere Programmiersprachen verwendet werden, um 1 exe zu bilden. Eine Möglichkeit ist die Verwendung von DLLs. Natürlich gibt es verschiedene Bedenken. Zum Beispiel Parameterkompatibilität, COM-Kompatibilität und so weiter. Wenn Sie überlegen, wie Sie ein Datenbanksystem für Ihre Arbeit aufrufen, werden Sie möglicherweise feststellen, dass das DBMS nicht immer in einer Sprache geschrieben ist, die Sie kennen. Sie interessieren sich wahrscheinlich nicht einmal, solange die Schnittstelle bekannt ist.
Dieses Konzept wird weiterentwickelt, wenn Ihre Lösung Web-Services verwendet. Dies ist eine noch sauberere Möglichkeit, mehrere Softwarekomponenten zu kombinieren.
In der .NET-Welt gilt all das oben Genannte im Übrigen auch für die Schnittstellenebene, in der XAML- und HTML-Schnittstellen in Silverlight zusammenleben können.
In der UNIX-Welt haben wir einmal KShell-Skripte verwendet, um C ++ - und COBOL-Programme zu starten, damit die Lösung funktioniert.
quelle
Ich denke, es wäre wert, Cython hier zu erwähnen . Es ist eine Obermenge von Python zum Schreiben von C-Erweiterungen und obwohl es eine einzigartige Sprache für sich ist, können Sie C-Code in Python-Code verwenden, wenn Sie der Python-Syntax von Cython entsprechen
quelle
Beispiele für das Kombinieren von Sprachen: Jython (Python in Java), Cog (Python, das in so ziemlich allem als Generator für eingebetteten Code verwendet wird). Ich habe oft Perl-Code verwendet, um C ++ zu generieren, wenn Sie die Codegenerierung zählen.
quelle
Das .NET Framework ist so aufgebaut, dass mehrere Sprachen an einer Lösung teilnehmen können. Es funktioniert so lange, wie die Sprache CLR-kompatiblen Bytecode erzeugen kann.
http://www.geekinterview.com/question_details/1047
quelle
Es ist sehr schwer, sehr hässlich und oft nutzlos, mehrere Programmiersprachen in einer Datei zu kombinieren.
Es ist jedoch möglich, ein großes Projekt in mehr als einer Sprache zu schreiben. Beispielsweise enthalten sowohl Mozilla Firefox als auch MySQL C- und C ++ - Code. Bei großen Projekten wird diese Praxis häufig angewendet, da eine bestimmte Sprache einige Funktionen bietet, die eine andere nicht bietet. In PHP können Sie beispielsweise nach der Ausführung einer ausführbaren Binärdatei fragen, das Ergebnis nehmen und es ab diesem Zeitpunkt in Ihrem PHP-Code verwenden.
Wenn Sie neugierig sind, welche Sprachen für einige der wichtigsten Open Source-Projekte der Welt verwendet werden, können Sie dies überprüfen
Ohloh.net
. Dort finden Sie Statistiken zum Quellcode vieler Projekte.quelle
Sie können Sprachen in HTML "mischen". Für die Funktionsweise vieler Websites ist es wichtig, dass Sie Javascript in HTML einbetten können. Aber natürlich ist HTML Markup und keine Programmiersprache.
Ich denke, zu tun, was Sie vorschlagen, würde sowieso bedeuten, eine neue Sprache zu schreiben. Entweder müssten Sie einen Interpreter / Compiler erstellen, der alle diese Sprachen spricht und sie konsistent einrahmen kann, oder Sie müssten eine Möglichkeit finden, Zeile für Zeile explizit in einer Metasprache auszuwerten. Diese beiden Optionen sind im Grunde identisch, mit Ausnahme dessen, was der Programmierer tun muss, damit die Sprachen zusammenarbeiten.
quelle
Sprache ist ein Werkzeug. Bevor man ein Werkzeug auswählt (außerdem eine komische Hummer-PC-Spektroskop-Kombination macht), sollte man sich fragen - was genau möchte ich tun? Sobald die Antwort gegeben ist, werden Sie feststellen, dass eine solche Mischung von Sprachen selten notwendig ist.
quelle
Ja, es ist möglich, Programmiersprachen zu mischen, solange Ihr Interpreter / Compiler dies versteht. Zum Beispiel das Mischen von Javascript, PHP, Python in HTML oder C ++ in C #.
Das Mischen von Sprachen kann jedoch das Lesen und Ändern von Code erschweren, weshalb Vorsicht geboten ist. Eine Möglichkeit, dies zu umgehen, besteht darin, separate Dateien für Code in der aufzurufenden Sprache zu erstellen und diesen zu importieren, anstatt ihn einzubetten.
quelle