Ist es üblich, Prototypen in einer höheren Sprache zu erstellen? [geschlossen]

18

Derzeit spiele ich mit der Idee, ein Projekt zu starten, das meine derzeitigen Programmierkenntnisse in einer Sprache, in der ich nur sehr wenig Erfahrung in der Praxis in (C) habe, bei weitem übertrifft. Wäre es sinnvoll, Prototypen in einer höheren Sprache zu erstellen, mit der ich besser vertraut bin (z. B. Perl / Python / Ruby / C #), damit ich das gesamte Design in Gang bringen kann?

Letztendlich ist das Endprodukt leistungsabhängig (es ist eine Datenbank-Engine), daher die Wahl von C, aber ich fürchte, wenn ich C nicht gut kenne, verliere ich den Wald vor lauter Bäumen.

Während ich nach ähnlichen Fragen suchte, bemerkte ich einen Kollegen, der erwähnte, dass Programmierer in Prolog Prototypen erstellt und diese dann in Assembler herausgearbeitet haben.

Mark Canlas
quelle
4
Ich habe von Leuten gehört, die Assembler schreiben, indem sie zuerst in C programmieren, dann zerlegen und die resultierende Assembly von Hand optimieren.
user16764
9
Vergessen Sie nicht, dass die Leistung häufig darauf hinausläuft, die Algorithmusauswahl und -implementierung zu korrigieren, parallelen Code für peinlich parallele Probleme zu schreiben und gute Datenrepräsentationen zu erzielen. Machen Sie sich keine Sorgen um C, bis Sie das richtige Design gefunden haben.
Peter Smith
1
@ user16764: Hab das eigentlich gemacht. Nur Fortran war die Sprache. Aber wir haben die Compiler-Ausgabe von Hand genau so optimiert, wie Sie es beschrieben haben.
S.Lott
C ist nicht unbedingt schneller. Vor allem, wenn die Leistung IO-gebunden ist. Selbst bei CPU-gebundener Leistung kann eine optimierte VM möglicherweise alles übertreffen, was Sie selbst schreiben, wenn Sie kein C-Experte sind.
jiggy
Ich verwende oft diese Prototyping-Technik: Ein Problem wird in seiner natürlichsten Sprache ausgedrückt und schließlich als DSL implementiert. Wenn der Prototyp fertig ist, verbessere ich die Implementierung dieses DSL-Compilers, anstatt einen DSL-Teil in eine niedrigere Sprache umzucodieren, bis die Leistung akzeptabel ist.
SK-logic

Antworten:

27

Die Verwendung von C beschleunigt Ihre Anwendung nicht automatisch. Wenn Sie die Möglichkeit haben, eine andere Programmiersprache für Ihre Plattform zu wählen, kann ich es nur empfehlen.

Wie Bill Harlan erklärte :

Es ist einfacher, den richtigen Code zu optimieren, als den optimierten Code zu korrigieren . Eine vorzeitige Optimierung behindert langfristig die Optimierung. Unnötige Optimierung verzerrt Designs, zerstört Modularität und das Verbergen von Informationen und erschwert das Ändern von Code. Das Auffinden latenter Fehler dauert länger. Oft stellen wir durch Profilerstellung oder durch Ändern von Maschinen oder Compilern fest, dass wir den Rechenaufwand unseres Codes falsch eingeschätzt haben. Erraten Sie, was? Jetzt ist die Optimierung viel schwieriger als es sein musste.

Wenn Sie Leistungsprobleme wirklich vorhersagen können, ziehen Sie die Verwendung von C ++ in Betracht. cprogramming.com sagt es sehr schön :

Sie mögen sich jedoch fragen, ob es sich lohnt, auf die Wiederverwendbarkeit von C ++ zu verzichten, um die geringfügige Leistungssteigerung mit C zu erzielen, insbesondere wenn C ++ bei Bedarf in einem C-Programmierstil geschrieben werden kann .


Um Ihre eigentliche Frage besser zu beantworten: Ich würde Code in einer höheren Sprache schreiben, nicht nur als Prototyp, und nur in niedrigeren Sprachen optimieren, wenn Sie auf Leistungsprobleme stoßen.

Steven Jeuris
quelle
25
+1: Außerdem können Perl, Python und Ruby C-Funktionen aufrufen, sodass Sie die leistungsabhängigen Teile bei Bedarf in C schreiben können.
Larry Coleman
Ich habe Machine Vision-Code in Java als Prototyp erstellt. was sich herausstellte, war eigentlich schnell genug. Das Umkodieren in C wäre ziemlich einfach gewesen (Sie schreiben es einfach wie C; mit dem primitiven Fixierungs-Antimuster)
Tim Williscroft
Ich habe Echtzeit-Code in Java geschrieben. In diesem speziellen Projekt erfolgte der Dateizugriff mit C ++, und der Echtzeitcode war in Java - verrückt! Der Echtzeitcode war jedoch unglaublich schnell. Es war nicht sehr kompliziert, aber es handhabte unglaubliche Datenmengen in kürzester Zeit. Ich würde also sagen, Sie können auf jeden Fall Hochsprachen für leistungskritische Anwendungen verwenden.
Konfigurator
@ Tim Williscroft: Ich scheine nur genau diese Seite aufzublättern, wenn ich nach "primitiven Fixierungs-Antimustern" google. Was ist das?
SingleNegationElimination
@ TokenMacGuy: Primitive Obsession hat mehr Treffer (gleiche Antipattern)
Tim Williscroft
7

Es wäre nicht wertvoll, dies zu tun, da a) die Teile dieser Sprachen, die direkt in C übersetzt werden, nicht einfacher wären und b) die Teile, die nicht direkt in C übersetzt werden, schwieriger in C umzuschreiben wären als wenn Sie sie zuerst in C geschrieben hätten.

user16764
quelle
+1 - Zumal es schwierig ist, den OO-Code auf C zu verschieben, wenn Sie nicht mit der Sprache vertraut sind, oder die Verwendung der Hochsprache umständlicher wird, wenn Sie prozedural schreiben.
Jetti
Ja genau. Ich mache mir Sorgen, dass ich immer noch über höhere Konzepte nachdenke, die nicht einfach in C übersetzt werden können, z. B. wenn ich zu viel Magie oder Zucker verwende.
Mark Canlas
4

Dies ist keine Frage mit einer kategorischen Ja- oder Nein-Antwort. Lassen Sie mich mit einer Anekdote abwägen.

Beispiel 1

Ich wurde beauftragt, ein in Java geschriebenes Spiel in Flash, AS3, zu portieren. An der Oberfläche hat dies das Potenzial, relativ reibungslos zu verlaufen. Schließlich könnten Sie einen solchen Job als eindeutiger als Ihre durchschnittliche Kundenarbeit ansehen, da Sie bereits eine vollständig integrierte Funktionsspezifikation in Form des Quellenspiels haben. Java und AS 3 sind beide Hochsprachen, und AS3 hat viele Merkmale gemeinsam mit Java, wie Paketstrukturen, einfache Vererbung / Mehrfachschnittstelle, starke Typisierung (Opt-in) und Vorstellungen von öffentlichen / geschützten / privaten Variablen und Funktionsdeklarationen. Zu der Zeit war ich in Java noch sehr grün und völlig neu in der ursprünglichen Quellcodebasis. Also habe ich einfach nachgesehen, was ich finden konnte, in der Hoffnung, dass es schnell und einfach gehen würde.

Wie sich herausstellte, hatte der Autor des Codes versucht, eine abstrakte Engine zu erstellen, die von Java in eine undefinierte andere Umgebung portiert werden konnte. Dies gab mir die Hoffnung, dass es einfach zu portieren wäre. Leider stellte ich stattdessen fest, dass ich die Aussicht auf eine Neuerfindung von Flash über Flash ohne die Vorteile von Threads in Betracht zog. Wie sich herausstellte, wäre ein buchstäblicher Hafen einfach eine schlechte Idee gewesen ... ein wahrer Albtraum. Darüber hinaus hat das Spiel eine eigene externe Skriptsprache implementiert, was bedeutet hätte, dass ein Parser und ein Lexer für diese Sprache erstellt wurden, wenn ich gehofft hätte, alle ursprünglichen Quellendatendateien zu verwenden.

Aus Zeit- und Budgetgründen hat der ursprüngliche Quellcode letztendlich nicht wirklich geholfen. Das Hilfreichste daran war, dass ich wusste, wie man den Kontrollfluss der Spiellogik genau nachahmt ... aber brauchte ich wirklich die Originalquelle dafür? Wahrscheinlich nicht.

Aber dieses Beispiel ist möglicherweise nicht so relevant, weil es die Umkehrung Ihrer Situation darstellt. Ich hatte gehofft, eine Codebasis zu verwenden, die ich nicht geschrieben hatte, in einer Sprache, die ich damals nicht kannte, um die Entwicklung in einer mir bestens vertrauten Umgebung zu beschleunigen. Also hier ist ein anderes Beispiel

Beispiel 2

Als ich feststellte, was der Java-Entwickler tat, um eine tragbare Codebasis zu erstellen, begann ich damit, in meiner Flash-Arbeit etwas Ähnliches zu tun ... Code zu schreiben, der nicht so sehr auf der Erweiterung von flash.display. und Komposition verwenden, um Ansichten zu erstellen. Ich verlasse mich nicht so sehr auf flash.event. * Und schreibe stattdessen ein einfaches System zur Nachrichtenübermittlung, das nicht speziell an eine Sprache oder Plattform gebunden ist. Ich habe kürzlich ein Spiel mit diesem Framework fertiggestellt und wollte herausfinden, ob es einfach ist, es auf C # (eine Sprache, die Java und AS3 ähnelt) als Unity 3D-Projekt zu portieren. Es stellte sich heraus, dass dies viel erfolgreicher war! Weil ich in AS3 fließender denke als in C #, hat es eine Menge Zeit gespart, die Algorithmen bereits geschrieben zu haben. Alles was ich tun musste, war einfach die Syntax zu ändern.

Also, nur aus meiner persönlichen Erfahrung, kann ich nicht sagen, dass die Antwort immer Ja oder Nein sein wird. Sie sollten berücksichtigen, inwieweit Sie von bestimmten Sprachausdrücken abhängig sind, die in der von Ihnen gewählten Hochsprache vorkommen, und ob die Neuerstellung in C einfach oder schwierig sein wird.

scriptocalypse
quelle
Ihre zweite Geschichte zeigt, wie ich mich fühle. Ich würde versuchen, die Implementierung des Prototyps generisch und magisch / trickreich frei zu halten, so dass die meisten, wenn nicht alle Ideen in C übersetzt werden können. Einfacher gesagt als getan, aber ich denke, es ist immer noch hoch genug. Offensichtlich steckt der Teufel im Detail.
Mark Canlas
@ Mark Canlas "Der Teufel steckt im Detail." Absolut. Ich halte es für möglich, dass Ihr erster Versuch fehlschlägt, wenn Sie noch nie zuvor Code zwischen Sprachen oder Umgebungen portiert haben, nur weil es schwierig ist, alle potenziellen Probleme vorherzusehen, bis Sie auf sie gestoßen sind.
Scriptocalypse
2

Ich denke, es wäre wertvoll, mit Pseudocode zu beginnen. Das Schreiben eines Prototyps in einer anderen Sprache scheint eine potenzielle Zeitverschwendung zu sein, da Ihre übergeordnete Sprache wahrscheinlich nicht annähernd so gut wie der Pseudocode in "C" übersetzt.

Durch die Verwendung von Pseudocode können Sie außerdem besser verstehen, wie Ihr System tatsächlich funktioniert.

Während des gleichen Zeitraums, in dem Sie an Pseudocode arbeiten, sollten Sie C studieren. Wenn Sie dann mit Ihrer Planung fertig sind, sind Sie möglicherweise bereit, das Ding tatsächlich zu implementieren.

Da Sie vorgeschlagen haben, es in einer anderen Sprache zu schreiben, um das Design voranzutreiben, möchten Sie möglicherweise stattdessen einige UML-Diagramme oder ähnliches verwenden, um den Einstieg zu erleichtern.

Casey Patton
quelle
2

Sie können den Algorithmus prototypisieren - bügeln Sie die Entwurfsfehler der Kernlogik aus, indem Sie auf jeden Fall eine "sehr hohe" Sprache verwenden (z. B. Matlab, vielleicht Ruby). Verwenden Sie es, um zu beweisen, dass Ihr Algorithmus funktioniert und ordnungsgemäß funktioniert, und implementieren Sie ihn dann von Grund auf in einer "einfachen" Sprache.

Sie werden nicht viel gewinnen, wenn Sie C ++ oder sogar Java oder C # als "High Level" und C als "Low Level" wählen, da der Gewinn an Lesbarkeit nicht signifikant ist und "Übersetzung" immer noch ziemlich schmerzhaft und ziemlich fehlerhaft sein wird. anfällig. Die Idee ist die Essenz, die Engine Ihres Projekts in der High-Level-Implementierung sollte nicht mehr als ein oder zwei Bildschirme einnehmen, leicht zu erfassen, leicht zu lesen und alle Vorbehalte schmerzhaft offensichtlich sein - im Grunde genommen ein funktionierender, lauffähiger Block Diagramm.

SF.
quelle
2

Bei einer Datenbank-Engine geht es hauptsächlich darum, I / O auf niedriger Ebene optimal zu behandeln und komplexe Strukturen wie B-Tree und verknüpfte Listen effizient zu handhaben.

Es ist also definitiv ein C / C ++ - Problem, obwohl es einige ziemlich gute Java-Implementierungen gibt.

Die Entwicklung korrekter Algorithmen mit guter Leistung ist in einer höheren Sprache viel einfacher. In der Regel müssen mehrere Variationen ausprobiert und die Ergebnisse verglichen werden. Sie könnten dann den "gewinnenden" Algorithmus auf C übersetzen.

Eine Kompromisslösung könnte darin bestehen, die anfängliche Implementierung in einer der übergeordneten JVM-Sprachen (Jython, Groovy) zu schreiben und dann Klasse für Klasse nach Java zu verschieben, wenn sich die Implementierung stabilisiert.

James Anderson
quelle
2

Ich glaube nicht, dass es üblich ist, aber es ist geschafft. Einer der schärfsten Architekten, mit denen ich je zusammengearbeitet habe, hat früher in Python modelliert und diesen Code dann in C ++ implementiert.

Im Allgemeinen denke ich, dass Sie komplexe und hochoptimierbare Algorithmen ausführen müssen, um dies sinnvoll zu machen, die in der Zielsprache nicht einfach und unkompliziert ausgedrückt werden können. In den meisten "realen / geschäftlichen" Situationen ist es relativ einfach, die Absicht auf hoher Ebene in derselben Sprache auszudrücken, auf die wir abzielen, und eine Implementierung in dieser Sprache erfüllt unsere Leistungsanforderungen, sodass keine Notwendigkeit / kein Wunsch besteht, in einer höheren Sprache zu modellieren ebene sprache.

In Anbetracht Ihrer Situation, in der Sie bessere Kenntnisse in einer höheren Sprache haben, könnte ich sehen, dass diese Methodik kurzfristig gut funktioniert. Sie erhalten nicht nur eine Roadmap, mit der Sie den Überblick behalten, sondern bei Fragen können Sie auch präziser fragen.

user29776
quelle
1

Momentan arbeite ich an einem Projekt, das in C "wegen der Leistung" geschrieben ist (dies war die ursprüngliche Motivation), aber wenn es profiliert ist, zeigt es, dass es die meiste Zeit darauf wartet, auf andere Systeme zu warten (eine DB, andere Apps, die in C geschrieben wurden) Java, "Ereignisse" auf einem Socket).

Wenn Sie den falschen Algorithmus verwenden, erhalten Sie auch in C eine schlechte Leistung (z. B. wenn Sie eine lineare Suche nach einem Schlüssel durchführen, "da C keine Hash-Tabellen hat und wir keine anderen Bibliotheken verwenden möchten"), werden Sie langsamer als Sie Tun Sie dies mit einer Sprache, die Hash-Tabellen oder ähnliches wie C ++, Java, C #, Python usw. enthält.

Wenn Sie aus irgendeinem Grund dazu gezwungen sind, in C zu arbeiten, ist das Prototyping in einer anderen Sprache, die Sie kennen, für mich keine schlechte Idee, nur wenn Sie als Prototyp wissen, welche "Probleme" Sie bei der eigentlichen C-Implementierung haben, was schwierig ist, wenn Sie sind mit C. nicht sicher (Sie werden bald feststellen, dass C / C-Standardbibliotheken keine Container haben, sondern nur "einfache" Arrays; Sie benötigen Nicht-Standardbibliotheken). Außerdem ist C nicht OO. Wenn Sie also OO-Prototypen erstellen, wird es schwieriger.

Zusammenfassend ist es am besten, die eigentliche Implementierung in Ihrer "Prototyping" -Sprache vorzunehmen und dann, falls wirklich erforderlich, CPU-intensive Funktionen in C zu schreiben. Wenn jedoch nur C akzeptabel ist, sollten Sie es besser lernen, bevor Sie Prototypen in anderen Sprachen erstellen Sprachen und natürlich vor dem Schreiben der Implementierung.

ShinTakezou
quelle
1

Es gibt viele leistungskritische Anwendungen, die in einer höheren Sprache geschrieben sind.

Ich habe in der Vergangenheit in Assembler und C programmiert, und obwohl es ein cooles Gefühl ist, so nah am Metall zu sein, ist ihre Verwendung heutzutage sehr begrenzt.

Es gibt so viele Dinge, die die Leistung beeinträchtigen, dass ich bezweifle, dass Sie jemals den Teil erreichen werden, in dem die Sprache selbst der begrenzende Faktor ist. Dies ist der Ansicht, dass es sich um C vs C # handelt.

Angenommen, Sie erzielen eine Leistungssteigerung von 10 bis 15 Prozent durch die Sprache. Dies ist nichts im Vergleich zu der Größenordnung, mit der der richtige Algorithmus implementiert werden kann.

Wenn Sie in C # programmieren, haben Sie viel mehr Zeit, um sich auf die Architektur und Implementierung von Algorithmen / Datenstrukturen zu konzentrieren, was zu besseren Optimierungen auf höherer Ebene führt.

In der realen Welt sind Sie immer an Zeit gebunden, also verbringen Sie Ihre Zeit mit dem richtigen Teil des Projekts.

Boris Yankov
quelle
0

Ich bin gespannt, was Ihr Plan ist, um es tatsächlich in C zu erstellen? Werden Sie Prototypen erstellen und dann C lernen und es dann in C neu codieren? Für mich scheint dies ein bisschen so, als wären die sprichwörtlichen "Augen größer als der Magen", in die viele Programmierer geraten, wenn sie neue Technologien erlernen (ich weiß, ich habe). Was ich damit meine ist, dass Sie versuchen, etwas zu entwerfen, das eindeutig leistungsabhängig ist, ohne die Vor- und Nachteile der Sprache zu kennen, in der es möglicherweise geschrieben werden muss. Grundsätzlich möchten Sie bereits vor Ihnen mit dem Entwerfen einer C-App beginnen Kennen Sie C, wenn die Zeit besser genutzt werden kann. Lernen Sie zuerst C und gewinnen Sie dann möglicherweise mehr Einblick in das Schreiben der gewünschten Anwendung. Vielleicht habe ich die Frage falsch verstanden und Sie beabsichtigen, sie einem anderen Programmierer zu übergeben, um das Programm in C zu erstellen.

programmx10
quelle
Manchmal "Tu das nicht." ist die richtige Antwort auf "Wie mache ich X?"
Larry Coleman
0

Manchmal wird ein Prototyp erstellt, um ein Verständnis für das Problem zu erlangen, das Sie lösen möchten. Und manchmal, um die zugrunde liegenden Technologien kennenzulernen, wenn Sie nicht bereits damit vertraut sind.

Für den genannten Fall erwägen Sie, Prototypen in einer Skriptsprache, beispielsweise Python, zu erstellen und den eigentlichen Code in C zu erstellen.

Bewertung einiger Möglichkeiten:

1 . Sie erstellen Prototypen in Python und schreiben die Software in C.

Prototyping in einer Skriptsprache kann dabei helfen, die Ausgabe schnell mit der Eingabe zu vergleichen . Dies ist nützlich, wenn Sie in erster Linie Ihre Logik testen müssen, um ein Problem zu lösen. Auch nützlich, wenn Sie schnell eine Demo für andere Leute zusammenstellen möchten .

Der in Python geschriebene Code wird in der endgültigen Software nicht verwendet. Es kann jedoch hilfreich sein, wenn Sie Ihren Prototyp an jemanden weitergeben, der Python lesen und in C schreiben kann. Hier kann Prototyping dabei helfen , eine Idee zu kommunizieren .

Diese Methode eignet sich zum Testen der logischen Machbarkeit der Lösung.

2 . Sie erstellen einen Prototyp in C und schreiben die Software in C.

Das für Sie neue Prototyping in C bietet zwei Vorteile. Zum einen lernen Sie beim Schreiben des Prototyps die relevanten Teile der Sprache , Bibliothek, API, Fallstricke usw. kennen. Zum anderen können Sie beim Erstellen der endgültigen Software vom Prototyp selbst ausgehend Zeit sparen und Code wiederverwenden .

Diese Methode eignet sich sowohl zum Testen der logischen als auch der technologischen Machbarkeit der Lösung.

3 . Abhängig vom jeweiligen Problem können Sie auch Möglichkeiten in Betracht ziehen, Prototypen ohne Kodierung zu erstellen.

Wenn es sich um ein Stück Logik und Ideen handelt, die Sie prototypisieren möchten; Pseudocode , Flussdiagramme und Blockdiagramme auf Papier sind auch gut.

Wenn es sich um einen UI-Prototyp handelt, sollten Sie sich ein UI-Modell-Tool oder erneut ein Blatt Papier überlegen.

Amol
quelle
0

Ich denke, Sie sollten Prototypen in einer Sprache erstellen, die Sie kennen (Pytho / Ruby / C # was nicht), damit:

  1. Sie nutzen die Einrichtungen / Bibliotheken, die die Sprache bietet, optimal.
  2. Sie verbringen Ihre Zeit damit, sich für Designentscheidungen zu entscheiden, anstatt für Spracheinschränkungen.

Später können Sie mit einem Profilierungswerkzeug Bereiche des Flaschenhalses suchen. Neuimplementierung in C / C ++. Wiederholen Sie den obigen Schritt ein paar Mal. Wer weiß, dass Ihr Prototyp möglicherweise "schnell genug" ist?

KGA
quelle
0

Ich glaube nicht, dass Sie durch den von Ihnen beschriebenen Ansatz etwas gewinnen, und mehrere Leute haben detailliert beschrieben, warum.

Ein Projekt, an dem ich beteiligt war, verwendete diesen Ansatz: Entwicklung einer mathematischen Bibliothek für die Cell / BE- und Power7-Architekturen. Die Funktionen wurden in Haskell (unter Verwendung von CoCoNUT) modelliert, und die Ausgabefunktionen wurden für eine bestimmte Zielarchitektur in einer optimierten Baugruppe erstellt.

In diesem Fall war die Zielsetzung eine hohe Leistung mit optimierten Montageanweisungen und der Fähigkeit, mehrere Architekturen anzusprechen.

Essen dafür, ich hoffe du hungerst nicht :)

Stephen
quelle
0

Für eine leistungsstarke Datenbank-Engine benötigen Sie vermutlich:

  • Multithreading,
  • explizite Speicherverwaltung,
  • asynchrone Benachrichtigungen,
  • Semaphoren oder Synchronisationsprimitive,
  • Einfacher Zugriff auf Dateisystemfunktionen auf niedriger Ebene.

Die von Ihnen ausgewählten Algorithmen sind für die Leistung von entscheidender Bedeutung.

Der allgemeine Rat ist, mit einer höheren Sprache zu beginnen und dann nur die zu optimierenden Bits in eine niedrigere Sprache zu migrieren.

Die von Ihnen gewählte Hochsprache muss jedoch in der Lage sein, die zu schreibenden Algorithmen zu unterstützen. Effiziente Algorithmen können letztendlich von der Steuerung des Threadings, der effizienten Speichernutzung und der Verwendung der besten Dateisystemoperationen auf niedriger Ebene dominiert werden verfügbar. Wenn das Endziel also die Leistung ist, können Sie keine Prototypen in Sprachen erstellen, die die zu verwendenden Grundelemente nicht unterstützen.

Wenn Sie Ihren Prototyp testen müssen (oder andere Leute Software gegen seine Schnittstellen entwickeln müssen), müssen Sie auch in einer Sprache arbeiten, die die vorgesehenen APIs unterstützt. Sie können dann zulassen, dass andere Benutzer ihren Code testen und Ihre eigenen Regressionstests durchführen, während Sie optimieren.

Diese Überlegungen schließen in diesem Fall wahrscheinlich viele Sprachen für High-Level-Prototyping aus - und wahrscheinlich alle, die Sie erwähnt haben (außer möglicherweise C #). Aber Sie können natürlich Pseudocode in jeder Sprache (einschließlich Englisch) erstellen und bei Bedarf Teile des Projekts (zum Beispiel Sortierfunktionen) in Ihrer bevorzugten Sprache prototypisieren.

Die enge Beziehung zwischen C ++ und C (und vernachlässigbare Leistungsunterschiede) bedeuten, dass es nur sehr wenige Gründe gibt, C ++ im Endprodukt nicht vor C zu bevorzugen.

(Ich gehe davon aus, dass Sie für einen bestimmten Zweck eine leistungsstarke Datenbank-Engine benötigen: Wenn Ihre Absichten bescheidener sind, würden Sie vermutlich eine vorhandene Engine von der Stange übernehmen.)

MZB
quelle
-2

Ich denke, dass Cs Ruhm verdient ist, weil das großartige Produkt Unix in C geschrieben wurde. Im Vergleich zu Leuten, die C am besten kennen, bin ich jedoch ziemlich skeptisch, warum es verwendet werden sollte. Es wird gesagt, dass Ken Thompson (nachdem er eine erste Version von Unix in Assembler geschrieben hatte) begann, Unix in Fortran zu schreiben, aber nach einer Woche oder einem Monat aufgab und anfing, C zu verwenden, das von seinem Kollegen Ken Ritchie bei entwickelt wurde die selbe Zeit.

Ich war erstaunt zu lesen, dass Fortran schneller als C und C ++ ist.

Richard Mullins

richard mullinsq
quelle
1
Wie beantwortet dies die gestellte Frage?
gnat