it-swarm-eu.dev

Warum werden die meisten Browser in C ++ entwickelt?

Es scheint, dass die meisten gängigen Webbrowser (Firefox, Chrome, Safari) mit C++ entwickelt wurden. Warum ist das so?

101
Nipuna

Eine andere Möglichkeit, die Frage zu stellen, ist, welche Unterstützung ein Browser benötigt. Die kurze Liste lautet:

  • Unterstützung für das Parsen (erforderlich, um [X] HTML, CSS und [ECMA/Java] -Skript zu verstehen)
  • Funktionen zum Gehen/Interpretieren von Bäumen (Teil des Parsens und Erstellens der Benutzeroberfläche)
  • Unterstützung für beschleunigte Grafiken
  • Schnelle Vernetzung
  • Für die fortgeschritteneren Browser: Kontrolle über Prozesse und Isolieren des Speichers zwischen Seiten
  • Muss auf allen unterstützten Plattformen funktionieren

Die meisten Sprachen unterstützen das Parsen. Sie haben Parser-Generatoren für C, C++, C #, Java usw. C und C++ haben jedoch einige Jahre Vorsprung vor den übrigen Alternativen, sodass die Algorithmen und Implementierungen ausgereifter sind. Der Zugriff auf beschleunigte Grafiken in Java ist kein Problem, es sei denn, Sie haben einige native Erweiterungen, damit dies funktioniert. WPF unter C # bietet Zugriff auf beschleunigte Grafiken, ist jedoch zu neu, um einen seriösen Browser zu erstellen mit der Technologie.

Das Netzwerk ist eigentlich der geringste Grund, C++ anstelle von Java oder C #) zu wählen. Der Grund dafür ist, dass die Kommunikation um ein Vielfaches langsamer ist als der Rest der Verarbeitung, mit der die Seite angezeigt wird Die Geschwindigkeit des Drahtes ist der begrenzende Faktor. Sowohl Java als auch C # haben nicht blockierende IO Unterstützung, ebenso wie C++. Es gibt also wirklich keinen klaren Gewinner in dieser Bereich.

Warum nicht Java? Haben Sie jemals versucht, eine Benutzeroberfläche mit Java zu erstellen? Es fühlt sich umständlich und langsam an, verglichen mit allem anderen da draußen, weil es so ist. Auch hier ist keine beschleunigte Grafik ein großer Nachteil. Das Sandboxing von Java ist wirklich gut und kann dazu beitragen, die Sicherheit eines Browsers zu verbessern, wenn es richtig verwendet wird. Es ist jedoch schwierig, es zu konfigurieren und zum Laufen zu bringen. Ganz zu schweigen davon, dass die Unterstützung für Grafikformate hinter den meisten modernen Browsern zurückbleibt.

Warum nicht C #? Wenn Ihr einziges Ziel Windows ist, ist C # möglicherweise eine gute Darstellung. Das Problem tritt auf, wenn Sie etwas anderes unterstützen möchten. Mono hat nicht genug aufgeholt, um als plattformübergreifend genug für diese Aufgabe angesehen zu werden - insbesondere mit beschleunigter Grafikunterstützung und WPF. Wer weiß, wie lange es dauern wird, bis sich das ändert.

Warum nicht C? Es gibt einen C-Compiler für nahezu jede Plattform (einschließlich eingebetteter Geräte). Es gibt jedoch eine Menge, die C nicht für Sie tut, bei denen Sie besonders wachsam sein müssen. Sie haben Zugriff auf alle niedrigsten Ebenen der APIs, aber die Mehrheit der C-Entwickler führt keine GUIs durch. Auch die C-GUI-Bibliotheken sind objektorientiert geschrieben. Sobald Sie anfangen, über die Benutzeroberfläche zu sprechen, ist eine objektorientierte Sprache sinnvoller.

Warum nicht Ziel C? Wenn Ihr einziges Ziel Apple ist, ist dies sehr sinnvoll. Die meisten Entwickler kennen Objective-C jedoch nicht, und der einzige Grund, dies zu lernen, besteht darin, an NeXT- oder Apple - Boxen zu arbeiten. Sicher können Sie jede C-Bibliothek mit Objective-C und verwenden Es gibt Compiler für viele Plattformen, aber es wird schwieriger sein, Leute zu finden, die daran arbeiten können. Wer weiß? Vielleicht Apple kann diesen wahrgenommenen Mangel umkehren.

Warum C++? Es gibt einen C++ - Compiler für nahezu jede Plattform. Fast jede GUI-Bibliothek verfügt über eine C++ - Schnittstelle, manchmal ist es besser und manchmal ist es einfach anders. Zum Beispiel ist die ATL von Microsoft viel besser als Win32 C-Funktionsaufrufe oder sogar die MFC-Bibliothek. Es gibt C++ - Wrapper für GTK unter Unix, und ich wäre überrascht, wenn jemand keinen C++ - Wrapper um Apples Objective-C-GUI-Bibliothek hätte. Das Prozessmanagement ist in C++ einfacher als Java oder C # (diese Details werden für Sie abstrahiert). Die wahrgenommene Geschwindigkeit beruht mehr auf Hardwarebeschleunigung als auf Rohleistung. C++ kümmert sich um mehr Dinge für Sie als rohes C (wie z. B. begrenzte Zeichenfolgen), gibt Ihnen aber dennoch die Freiheit, Dinge zu optimieren. Ganz zu schweigen von einer Reihe von Bibliotheken, die zum Rendern von Webseiten benötigt werden, sind auch in C oder C++ geschrieben.

Derzeit bietet C++ Edge die Alternativen an.

165
Berin Loritsch

Ich habe beschlossen, einen Roman darüber zu schreiben, in der Hoffnung, dass die Leute ihn beschönigen und mich positiv bewerten. Nein, nein, nur ein Scherz! Ich habe über jedes Wort gelitten. Jedes Wort, sage ich dir!

Fragen Sie 'wann' vor 'warum'

Alle gängigen Webbrowser können ihre Ursprünge bis in die 90er Jahre zurückverfolgen. Konqueror wurde Safari und Chrome; Aus Netscape wurde Firefox. IE und Opera sind immer noch IE und Opera. Diese Browser haben alle einen Vorsprung von 15 Jahren gegenüber etablierten Unternehmen).

Ich schlage vor, Sie versuchen sogar, name eine akzeptable plattformübergreifende Sprache (Windows/Mac/Unix und noch schlimmer) zu verwenden, die um 1995 verfügbar war, als moderne Browser entstanden. Um den Kern in etwas anderem als C/C++ zu erstellen, müssten Sie wahrscheinlich einen Compiler und Plattformbibliotheken erstellen oder kaufen und ändern.

Wie wäre es heute? Was sind die Alternativen?

Lassen Sie uns zum Spaß heute über das Problem nachdenken. Ja, es gibt Alternativen, aber es gibt immer noch große Probleme.

Die Wahl der Sprache bringt zumindest folgende Probleme mit sich:

  1. Wissensprobleme - Einstellung/Schulung von Entwicklern oder Gewinnung von Mitwirkenden
  2. Organisatorische/soziale Probleme - Sprachakzeptanz
  3. Sprachimplementierung: Geschwindigkeit, Plattformunterstützung, Tooling
  4. Sprachkraft

1: Wissensprobleme

Woher bekommen Sie Leute, die die Sprache kennen oder lernen können? Dies ist ein Hindernis für Sprachen wie OCaml, F #, Haskell, Common LISP und D, die schnell und hoch genug sind, um einen Browser gut zu schreiben, aber nur wenige Follower haben (vielleicht im Bereich von 10.000 bis 100.000), selbst wenn Sie großzügig sind Zählen Sie alle Hobbyisten und Akademiker.

2: Soziale/organisatorische Probleme

Folgerung aus der obigen Antwort auf den Frachtkult:

  • Ein Open-Source-Browser, der nicht C, C++, C # oder Java wird angeblich verwendet, hat Schwierigkeiten mit Mitwirkenden.
  • Ein proprietärer Browser, der nicht C, C++, C # oder Java) verwendet, wird in den meisten Organisationen von Projektmanagern heftig angeschrien.

3. Technische Probleme

Selbst in der heutigen Zeit benötigen Sie eine relativ schnelle Sprache für die rechenintensiven Teile des Renderns von Seiten und des Ausführens von Javascript. Sie können dies durch eine Hochsprache zum Erstellen von GUI-Elementen usw. ergänzen (z. B. den Firefox-Ansatz von C++ und Javascript), aber Sie müssen eine enge Integration zwischen den Sprachen haben. Sie können nicht einfach sagen "Okay, C # und Lua." Sie müssen diese Bridge wahrscheinlich selbst erstellen und debuggen, es sei denn, Sie wählen C oder C++ als Basissprache.

Die plattformübergreifende Entwicklung ist eine weitere Tüte Würmer. Sie könnten C # oder F # verwenden und die Daumen drücken, wenn GTK # und Mono in Zukunft lebendig und gesund sind. Sie könnten Common LISP, Haskell, OCaml ausprobieren ... Viel Glück, dass alles unter Windows funktioniert und Mac und Linux.

4. Sprachkraft

Nach all dem müssen Sie eine enorme Menge an Funktionen aufbauen. Wenn Sie sich also für eine einfache Sprache entscheiden, benötigen Sie eine noch größere Armee von Programmierern als zuvor. Beachten Sie, dass in etwa fünfzehn Jahren niemand wirklich einen Browser von Grund auf neu erstellt hat. Das liegt zum Teil daran, dass es (Überraschung!) Schwer ist.

Insbesondere ist ein Javascript-Interpreter Problem 3 (erwerben Sie einen) oder Problem 4 (erstellen Sie einen).

Fazit:

Wenn Sie heute (Anfang 2011) einen Browser mit drei Plattformen (Windows/Mac/* nix) entwickelt haben, welche Möglichkeiten stehen zur Auswahl?

  • C: Siehe (2). Jeder wird nach C++ verlangen. Viel Spaß beim Auswählen eines plattformübergreifenden Toolkits oder beim Erstellen eines (1, 2, 3 und 4). Siehe auch (4); Viel Spaß beim Erstellen eines stabilen, sicheren Browsers.
  • C++: Viel Spaß beim Auswählen eines plattformübergreifenden Toolkits oder beim Erstellen eines (1, 2, 3 und 4). Viel Spaß (4) beim Aufbau eines stabilen, sicheren Browsers.
  • C oder C++ und HLL: Ihre beste Wahl. Wählen Sie Ihr Gift für die dynamische Sprache; Siehe (1) und (2). Zu viele gute Sprachen, jeweils zu wenige Anhänger. (1, 2, 3 und 4) im Toolkit.
  • Java: Zweitbeste Wette, wenn Sie dem mittleren Management gefallen müssen. Siehe (4); Das Erstellen großer Dinge in Java benötigt viel mehr Code als in irgendetwas anderem auf dieser Liste, aber vielleicht C.
  • Scala: Beats Java on (4); (1) und (2), aber es fängt an.
  • C und Javascript: Als Sonderfall ist dies ansprechend, da Sie bereits einen Javascript-Interpreter erstellen oder erwerben und assimilieren müssen. (Daher Firefox.) (1, 2, 3 und 4) auf Toolkit; Die Mozilla bauten ihr eigenes IIRC.
  • C #: Viel Spaß bei (3). Sie sind wahrscheinlich mit GTK # festgefahren, wie gut das auch sein mag, oder Sie erstellen eine eigene Ebene und einen eigenen Renderer über GTK # und Windows Forms.
  • Ruby/Python/Perl/Racket/Lua/Erlange usw.: Sie haben (3) plattformübergreifende Widget-Bibliotheken und Geschwindigkeit. Moores Gesetz ist bei dir am (4); Die wachsende Nachfrage nach Browsern ist gegen Sie.
  • OCaml, Haskell, Common LISP, Smalltalk: (1) und (2) in Pik. Wahrscheinlich keine Geschwindigkeitsprobleme, aber (3) für die plattformübergreifende Entwicklung, und Sie müssen irgendwie alles selbst bauen oder eine Brücke zu C/C++ - Bibliotheken schlagen.
  • Ziel C: (3) Ich bin mir nicht sicher, wie die plattformübergreifende Entwicklung hier funktionieren würde.

Wenn wir in den nächsten Jahren einen weiteren großen Browser sehen, würde ich wetten, dass er in C oder C++ und einer dynamischen Sprache (wie Firefox) geschrieben wird, egal ob Open Source oder proprietär.

Edit (31. Juli 2013): Kommentatoren in Hacker News scheinen Rust und Go (nicht speziell im Zusammenhang mit meiner Antwort) zu erwähnen, die vage in den Bereich fallen "Verschiedenes schnelles" Eimer. Der Versuch, diese Liste der egalitären und aktuellen Sprachen auf dem neuesten Stand zu halten, wird ein verlorener Kampf sein. Stattdessen nenne ich sie zum Zeitpunkt des Schreibens eine repräsentative Stichprobe und lasse sie in Ruhe.

89
Jesse Millikan

Geschwindigkeit

So hässlich es auch ist, C++ ist immer noch das, was Sie verwenden, wenn Sie eine schnelle Anwendung und die volle Kontrolle über den Code wünschen.

Aus diesem Grund werden Spiele, nicht zum Kern gehörende Teile (z. B. Dateiimporteure) von Office und mehr immer noch in C++ geschrieben.

Bearbeitet, um die Antwort von MSalters einzuschließen

36
Ryan Hayes

Portabilität

Ich kann nur raten, aber Sie erwähnen Softwareprodukte, die auf mehrere Plattformen abzielen, und C++ kann auf jeder Plattform kompiliert werden.

17
Pete

(Ich arbeite seit ungefähr fünf Jahren an Firefox.)

Der Fragesteller hat Recht, dass ein Großteil des Firefox-Codes C++ ist, und tatsächlich ist C++ die Mehrheit, wenn Sie nach Codezeilen zählen (obwohl dies nicht die ganze Geschichte erzählt, da wir viel JavaScript haben und JS mehr ist prägnanter als C++).

In Wirklichkeit ist Firefox jedoch in vielen verschiedenen Sprachen geschrieben:

  • C++
  • C (NSS, NSPR, various libraries we've imported)
  • x86 und ARM Assembly
  • JavaScript
  • XUL (eine HTML-ähnliche Auszeichnungssprache) und CSS
  • Ziel C (Nur MacOS-Code)
  • Java (nur Android-Code)
  • Mehrere benutzerdefinierte Schnittstellendefinitionssprachen (XPIDL, IPDL)
  • WebIDL (eine andere Sprache für die Schnittstellendefinition, aber diese ist nicht benutzerdefiniert, obwohl der Codegenerator ist)
  • Python (Codegeneratoren)

Ich vergesse sicher einige.

Diese Liste ist wichtig, weil sie auf die unglaubliche Komplexität hinweist, die hinter einem Webbrowser steckt.

Ja, Firefox hat viel C++ - Code, und ja, das hat etwas damit zu tun, dass C++ bei der Gründung von Netscape die beste Sprache für solche Dinge war. Ich behaupte aber auch, dass es heute für vieles, was wir tun, keine bessere Sprache gibt.

Keine andere Sprache hat ein so starkes Ökosystem von Bibliotheken (wir stützen uns stark auf externen Code). Nur wenige andere Sprachen bieten Ihnen eine vollständige Stapelsteuerung wie C++ (wir optimieren regelmäßig unseren benutzerdefinierten Heap-Allokator und führen alle möglichen speichersicheren Dinge aus, um schneller zu sein oder weniger Speicher zu benötigen). Mit nur wenigen anderen Sprachen können Sie den größten Teil der Standardbibliothek auf vernünftige Weise neu implementieren (wir haben unsere eigenen Implementierungen für Zeichenfolgen und Sammlungen, die auf unsere Anforderungen abgestimmt sind). Mit nur wenigen anderen Sprachen können Sie Ihren eigenen Garbage Collector implementieren. Und so weiter.

Obwohl C++ die offensichtliche Wahl für viele unserer Aktivitäten ist, sind die Leute, die vorschlagen, dass wir einen Browser in Java schreiben und bei Bedarf unsere eigene JVM schreiben könnten, auf etwas. Dies ist im Wesentlichen Was wir tun, aber mit JavaScript anstelle von Java. Natürlich ist ein Großteil des Browsers nicht in JavaScript geschrieben. Aber eine überraschende Menge ist.

13
Justin L.

Nun, Sie müssten die Entwickler dieser Produkte direkt bitten, die Antwort zu erhalten, aber ich vermute, es ist eine Kombination aus Vertrautheit (das wussten die Entwickler am besten), Leistung (Kompilieren zu einer nativen Binärdatei) im Gegensatz zu Bytecode) und Tools (im Vergleich zu Sprachen wie C ist C++ voll von netten arbeitssparenden Gadgets wie der STL).

12
John Bode

Geschichte

Jeder der Browser hat einen Verlauf, der die Wahl der Sprache beeinflusst hat.

Zum Beispiel basieren sowohl Chrome als auch Safari auf WebKit, das seinen Ursprung im KHTML-Teil des KDE-Projekts hat. KDE wurde ursprünglich (teilweise) als Demonstration des Qt-GUI-Toolkits erstellt KDE ist insgesamt ein C++ - Projekt. Alle neuen KDE-Projekte wurden zu dieser Zeit vollständig in C++ geschrieben, daher war dies eine logische Wahl für KHTML. Seitdem wurde es für die Verwendung anderer GUI-Toolkits portiert.

Die Presto-Engine von Opera wurde mit Blick auf Leistung und eine kleine Binärgröße geschrieben: C++ war die logische Wahl.

Microsoft IE wurde als Sammlung von ActiveX-Komponenten geschrieben, die in jeder Sprache mit COM-Bindungen geschrieben werden konnten, aber wahrscheinlich in einer Teilmenge von C++ geschrieben wurden, da der Großteil ihrer Codebasis darin besteht bereits in dieser Sprache geschrieben.

Mozilla von Netscape wurde wahrscheinlich in C++ geschrieben, weil die Portabilität ein Hauptanliegen von ihnen war. C- und C++ - Compiler sind (praktisch) allgegenwärtig, daher war dies eine logische Entscheidung.

Es gibt keinen inhärenten technischen Grund für diese Entscheidungen. Es schien damals nur eine gute Idee zu sein.

10
greyfade

Das Netzwerk in C und C++ ist einfach zu optimieren, da Sie keine Bibliotheken verwenden müssen, wenn Sie dies nicht möchten. Ich vermute, dass C++ die Sprache der Wahl ist, weil es die Vorteile von C bietet:

  • Geschwindigkeit
  • Optimierung
  • Ein gewisses Maß an Portabilität
  • Kompilierte Sprache, nicht interpretiert

gepaart mit den Vorteilen von OOP:

  • Erweiterbarkeit
  • Einfachere Visualisierung
  • Bessere Bibliotheksunterstützung für unkritische Aufgaben wie Zeichenfolgenverarbeitung und Datenstrukturen
8
Michael K

Als die ersten Codezeilen für die erste Runde der Browser geschrieben wurden, waren C # und Java nicht vorhanden. Ruby auch nicht. Python war möglicherweise vorhanden, Aber zu diesem Zeitpunkt war es noch ein winziges Homebrew-Projekt.

Grundsätzlich gibt es wirklich es gab keine anderen Möglichkeiten außer C++, die es einem ermöglichen würden, einen Browser zu erstellen, der schnell ist und auf vielen verschiedenen Plattformen ausgeführt wird.

Warum wurden sie in C++ geschrieben? Weil dies die einzige verfügbare Sprache war, in der sie geschrieben werden konnten.

4
GrandmasterB

Da die in anderen Sprachen geschriebenen Browser (z. B. HotJava, offensichtlich genug in Java geschrieben) nie einen wesentlichen Grad an Marktakzeptanz/Marktdurchdringung erreicht haben.

Ich kann nichts über die aktuelle Iteration (oder die neueste - wurde seit einiger Zeit nicht mehr aktualisiert) von HotJava sagen, aber als ich es versuchte, schien (zumindest) eine mangelnde Marktdurchdringung zu bestehen für mich) extrem leicht zu verstehen - es war hässlich, langsam und mit einigen Webseiten nicht kompatibel. Letztendlich schien es auf einer Prämisse zu beruhen, die sich nie herausstellte: Das Web würde hauptsächlich aus Java Applets) bestehen, wobei HTML kaum mehr als ein Wrapper ist, der angibt, welche Applets wo angezeigt werden sollen.

Ein Teil davon ist wahrscheinlich auch historisch: Die meisten großen Webbrowser gibt es schon lange. Als sie zum ersten Mal geschrieben wurden, war die Landschaft ganz anders: C++ war eine "heiße" neue Sprache, daher wurde sie für viele neue Entwicklungen verwendet. Browser sind zu einer der am häufigsten verwendeten Software geworden, während viele andere aus dieser Zeit in Vergessenheit geraten sind.

Ich denke, die angezeigte "Haltung" der Sprache hat auch einen Effekt: C++ (wie C zuvor) hat immer die Praktikabilität und den Pragmatismus betont. Diese Grundeinstellung zieht Programmierer an, die auch pragmatisch sind. Viele andere Sprachen legen viel mehr Wert auf Dinge wie Eleganz - und ziehen damit Programmierer an, die genauso denken. Das Problem dabei ist das, was ich den "LISP-Effekt" nenne. Symptome sind:

  1. Endlose Auseinandersetzungen über die am meisten elegante Umsetzung der trivialsten Dinge.
  2. Unfähigkeit, Funktionen einzufrieren und etwas zu beenden, das versendet werden kann (auch bei Fehlern)
  3. Unfähigkeit, Kompromisse einzugehen. Jeder, der mit mir nicht einverstanden ist, ist nicht nur falsch, sondern muss entweder dumm oder böse sein.

Es gibt noch mehr, aber Sie haben eine allgemeine Vorstellung (und ja, ich übertreibe bis zu einem gewissen Grad - aber nur bis zu einem gewissen Grad). Ja, ein Teil des Codes, den Sie erhalten, wird erstaunlich schön sein - aber es besteht die Möglichkeit, dass es sechs Monate zu spät ist und größtenteils nicht mit jedem anderen Code im System kompatibel ist (was eigentlich sein soll), und bis Sie ihn erhalten, ist er da Eine ziemlich faire Chance, dass sich etwas anderes so geändert hat, dass Sie es überhaupt nicht verwenden können.

Es gibt auch Sprachen, die zweifellos gut funktionieren würden, aber (zu Recht oder zu Unrecht) einfach nicht (oder zum entscheidenden Zeitpunkt nicht) den Marktanteil hatten, den jemand jemals in ihnen geschrieben hätte. Angesichts der Größe und Komplexität eines vollständigen Browsers sind viele Leute und viel Zeit erforderlich, um einen zu entwickeln. Mit dieser Art von Investition werden viele Menschen relativ konservativ in Bezug auf Dinge wie Entwicklungswerkzeuge.

4
Jerry Coffin

Frachtkultprogrammierung. Die Wahrnehmung, dass "C++ schnell ist", ist immer noch da draußen (trotz schlecht durchdachter Funktionen auf Sprachebene wie dem stark kaputten Objektmodell, das die Dinge verlangsamt), und die Leute möchten, dass ihre Browser schnell sind, also schreiben sie in C++ .

In einer vernünftigen Welt wären Menschen, die netzwerkfähige Software schreiben, entsetzt über den bloßen Gedanken, eine Sprache zu verwenden, die mit allen inhärenten Sicherheitsproblemen von C verbunden ist, und dies wäre tatsächlich eine kriminelle Fahrlässigkeit. (Sehen Sie sich nur an, wie viele Pufferüberlauf-Exploits in den letzten 15 Jahren für verschiedene Browser gefunden wurden. Für wie viele Millionen Dollar Schaden sind diese Codierer verantwortlich?)

Es gibt andere kompilierte Sprachen, die schnelle Binärdateien erstellen können. Das Problem ist, dass sie nicht die gleiche Exposition haben wie die C-Familie, und wir alle müssen dafür leiden.

Unterhaltsame Tatsache: Als der Morris-Wurm 1988 ins Internet kam, wurden die Probleme beim Schreiben von Betriebssystemen und netzwerkfähiger Software in C (die bis heute noch nicht gelöst wurden, weil sie inhärente Sprachfehler sind) abschließend demonstriert ,) Apple hatte das fortschrittlichste Betriebssystem veröffentlicht, das die Welt bereits seit mehreren Jahren in Pascal geschrieben hatte.

3
Mason Wheeler

Zugriff auf APIs auf Systemebene

Alle Browser müssen irgendwann mit dem Betriebssystem verbunden sein, und die meisten wichtigen Betriebssysteme verfügen über gut etablierte C- und C++ - APIs und -Bibliotheken. Es ist normalerweise einfacher, mit diesen APIs in C oder C++ zu arbeiten, als Wrapper zu schreiben.

2
TMN

Legacy-Kompatibilität - kann alten Code nicht wegwerfen

Es hat nichts mit den Vorzügen von C++ im Vergleich zu anderen Sprachen zu tun. Sie können sicherlich einen besseren Browser von Grund auf in einer Sprache wie Haskell schreiben. Ein so wichtiges Projekt könnte sogar eine eigene JVM implementieren, wenn einige Leistungsmerkmale garantiert werden müssten. Zum Beispiel, wie Facebook seinen eigenen PHP Compiler/Optimierer) geschrieben hat.

Ein Browser, der bei nicht standardmäßigen Markups kaputt geht, ist schlimmer als nutzlos. Legacy-Kompatibilität ist so kritisch und so komplex, dass ein Umschreiben einfach keine Option ist. Viel Geld und Zeit wird in kampferprobte Sicherheit usw. investiert. Sie können diese Investition nicht einfach wegwerfen. Wieder wie Facebook noch in PHP geschrieben ist.

0
Dustin Getz

Kontrolle und Portabilität

die meisten Geschwindigkeitsargumente können in beide Richtungen gehen, aber in allen Bereichen, in denen Sie eine genaue Kontrolle darüber benötigen, wie etwas erledigt wird, regnen viele der höheren Sprachen auf Ihrer Parade. Es gibt Ausnahmen, aber die meisten von ihnen sind nicht plattformübergreifend genug, um in so etwas wie einem Browser zu zählen.

0
Bill