Ausführen von C-Code direkt im Browser?

8

Abgesehen von den Leistungsaspekten gibt es eine bekannte Möglichkeit, vorhandenen C-, C ++ - oder Objective-C-Code zu verwenden und ihn direkt im Browser auszuführen? Zum Beispiel ein Compiler, der den gesamten Code in eine interpretierte Sprache konvertiert, die im Browser ausgeführt werden kann. Wie Javascript oder Actionscript und der Flash Player oder ich nehme Java und die JVM an.

Ich erkenne, dass es höhere Sprachen wie HaXe gibt, die zu verschiedenen Zielen kompiliert werden können. Und auf der anderen Seite gibt es Projekte wie Cappuccino und GWT, die versuchen, die JavaScript-Entwicklung eher der traditionellen Desktop-Entwicklung anzupassen.

Aber ich habe mich gefragt, ob Sie eine Anwendung haben, die auf einem Desktop oder einer bestehenden Codebasis in C, C ++ oder Objective C funktioniert, könnte es leicht in eine webbasierte Anwendung umgewandelt werden?

Wird an dieser Front gearbeitet? Gibt es einen praktischen Grund dafür? Grundsätzlich den Browser in das Betriebssystem verwandeln?

Gibt es neben den Leistungsproblemen und der Verschärfung von Betriebssystemanbietern technische Gründe, die nicht erreicht werden können? Könnte diese Art von C wie Code in eine virtuelle Maschine in einem Browser gehorcht werden?

    
Gordon Potter 18.09.2009, 10:19
quelle

10 Antworten

16

Googles Native Client (NaCl) verwendet einen optimierten Compiler zum Erstellen von x86-Objektcode, der vom Browser überprüft werden kann und laufen in einer Sandbox, ohne einen großen Performance-Hit - ziemlich coole Sachen. Sie haben Quake darunter zusammengestellt.

Dies Matasano Artikel hat einen guten Ablauf, wie es funktioniert.

    
caf 18.09.2009 10:26
quelle
6

Hier ist ein C-Compiler, der auf eine Reihe anderer Sprachen abzielt, einschließlich Javascript:

Ссылка

Nicht sicher, in welchem ​​Zustand es ist - zuletzt habe ich mit dem Autor gesprochen, es hat reines C89 behandelt (vorbehaltlich der Einschränkungen des Compiler-Frontends). AFAIK gibt es keine Pläne, jemals eine GUI zu unterstützen.

Ich habe mich gefragt, ob Sie eine Anwendung haben, die auf einem Desktop oder einer vorhandenen Codebasis in C, C ++ oder Objective C funktioniert, könnte es leicht in eine webbasierte Anwendung konvertiert werden?

Dafür gibt es Silverlight (natürlich C # und nicht Objective-C), da es die .NET-Laufzeit zur Verfügung stellt. Bei der Portierung einer Desktop-App geht es in der Regel genauso um die Benutzeroberfläche wie um die Sprache. Wenn Sie eine Cocoa-App haben und diese in eine andere Umgebung portieren möchten (ob Browser oder Windows), benötigen Sie mehr als nur ein Objective-C Cross-Compiler, benötigen Sie das Application Kit und so weiter. WINE ist ein bemerkenswertes Gegenbeispiel, es ist ziemlich selten, dass diese OS-spezifischen Bibliotheken überhaupt auf anderen Plattformen verfügbar sind, geschweige denn effizient. Und selbst dort, wo sie verfügbar sind, gibt es Look-and-Feel- und Usability-Probleme, wenn die Konventionen einer Benutzeroberfläche übereinander geschraubt werden. Daher neigen die Leute dazu, entweder mit tragbaren Frameworks zu beginnen oder die Präsentationsebene der App komplett neu zu schreiben.

Grundsätzlich den Browser in das Betriebssystem verwandeln?

Es gibt mehrere Projekte, die den Browser in eine voll funktionsfähige Umgebung für Anwendungen verwandeln (nicht sicher, ob Sie das mit "OS" meinen). Flash und AIR, Silverlight, HTML 5. Keiner von ihnen plant, C als Programmiersprache anzubieten, soweit mir bekannt ist.

    
Steve Jessop 18.09.2009 10:29
quelle
3

Ich denke, das, wonach Sie suchen, ist Google Native Client . Es ist jedoch noch in frühen Entwicklungsstadien.

    
Brian R. Bondy 18.09.2009 10:26
quelle
3

Emscripten ermöglicht es Ihnen, Ihren Code in Javascript zu kompilieren, das dann plattform- und browserunabhängig ist.

    
UKMonkey 06.01.2017 10:08
quelle
2

Sie könnten an LLVM interessiert sein, der Low Level Virtual Machine. Es wäre möglich, ein LLVM in einem Java-Applet, einem Flash-Applet oder sogar in Javascript zu implementieren (ich wäre nicht überrascht, wenn jemand nicht bereits einige oder alle der oben genannten Schritte durchgeführt hätte).

Das Konvertieren einer existierenden Anwendung ist jedoch ein völlig anderer Fisch. Die Paradigmen der Benutzerinteraktion sind so völlig unterschiedlich zwischen einer "Desktop" -App und einer "Browser" -App, dass viele davon neu gestaltet werden müssen, bevor ein Port sinnvoll ist.

    
Greg Hewgill 18.09.2009 10:30
quelle
2

Sehen Sie sich Adobe Alchemy (früher bekannt als FlaCC) an, das LLVM zum Kompilieren von C / C ++ verwendet zu blinken.

    
Christoph 30.09.2009 18:09
quelle
1

Dies ist mit einem ActiveX-Steuerelement möglich, aber das funktioniert nur im Microsoft Internet Explorer.

    
codymanix 18.09.2009 11:25
quelle
0

Mir scheint, dass die großen Herausforderungen nicht mit der verwendeten Sprache zusammenhängen. Ich vermute, C wäre eine sehr schwierige Sprache in JavaScript zu implementieren, aber es ist möglich. Es scheint nur eine schlechte Idee für mich.

Zunächst würde ich in C keine Desktop-Anwendung schreiben, geschweige denn eine Web-Anwendung. Zweitens erfordern Webanwendungen eine völlig andere Architektur als Desktop-Anwendungen. Einfaches Kompilieren einer Desktop-Anwendung macht sie nicht zu einer Web-Anwendung. Wenn es um Portabilität geht, die Sie suchen, schlage ich vor, eine Hochsprache zu verwenden, die auf die JVM abzielt.

    
Jørgen Fogh 18.09.2009 11:17
quelle
0

Ссылка kann Java-Quellen erstellen, sodass Sie diese für das Java-Plugin in einem Browser kompilieren können. Angesichts der Tatsache, dass Java-Plugins heutzutage viel seltener sind, ist es vielleicht besser, eine Lösung zu finden, die nach Javascript kompiliert.

    
Prof. Falken 15.11.2011 07:59
quelle
0

Vielleicht sollten Sie sich Ссылка für das Kompilieren von C ++ im Browser überlegen? Du kannst auch andere Sprachen kompilieren oder interpretieren, ich benutze sie lieber für exotischere Sprachen - ich habe c und c ++ auf meinem PC:)

    
Anton 21.12.2014 00:04
quelle