Frage

Ich bin derzeit ein Mathe-Unterricht in College nehmen „Scientific Computing“ genannt, und der Professor sagte uns, dass C die häufigste Sprache für, na ja, das wissenschaftliche Rechnen verwendet wird, und frage mich nur, wie genau dieser Professor ist?

War es hilfreich?

Lösung

In meinem Geschäft (Teilchenphysik) wir ziemlich viel von Fortran 77 direkt in c bewegen ++ und Python. Diejenigen von uns, die Pflege über alle Programmierung wissen, c, aber es ist nur für Nischenanwendungen geschrieben (eingebettete Messkarten, Spezialtreiber, ...).

Aber c Lernen werden Sie eine solide Grundlage für die Programmierung, und es ist selten profitabel mit Professoren zu argumentieren.

Andere Tipps

Ich glaube nicht, dass Ihr Professor Antwort, die Sie auch selbst bedient, wenn es korrekt ist.

Nach meiner Erfahrung als Berater für die wissenschaftliche Rechnen und Datensysteme C wird sicherlich eine Menge verwendet, aber so sind Fortran und C ++. Python ist bei weitem der am häufigsten verwendeten Skriptsprache.

Ich denke, dass dies ändern wird. Die große Sache ist jetzt parallel Computing und das ist schmerzhaft (MPI anyone?) In den traditionellen Sprachen, die ich erwähnt habe. Meine Vermutung ist, dass ein großer Teil der Parallelisierung (und soll), um virtuelle Maschinen verschoben werden: Java oder .NET; das heißt, ich glaube, dass die Parallelisierung sollte die JIT-Job sein. Ob das mit aktiviert sein, sagen wir, Fortress , oder ein eine der traditionelle Sprachen, ich weiß es nicht. Intel treibt parallel Werkzeuge für C / C ++, aber ich frage mich, ob so etwas wie Terracotta könnte besser auf lange Sicht (ich habe nicht von jedermann in der wissenschaftlichen Gemeinschaft gehört, der es versucht hat, --- große Finanzen hat, aber sie sind nicht so offen).

Wenn die Frage ist, was sollte man einen Job in der wissenschaftlichen Datenverarbeitung erhalten lernen, dann ist das erste, was ich sagen möchte, ist, dass Sie eher sind für Ihre wissenschaftlichen Fähigkeiten als Ihre Programmierkenntnisse zu bekommen gemietet (die teilweise erklärt trauriger Zustand von vielen wissenschaftlichen Code, für weitere Informationen hierzu finden Sie unter SO Thema ). Wenn Sie sind gehen für Ihre Programmierkenntnisse angestellt werden (wahrscheinlich HPC), dann bedenkt, dass nach Ansicht des Professors, die in der nicht allzu fernen Zukunft für neuere Projekte veraltet sein können. Es würde nicht schaden, einige Python zu wissen, obwohl, einschließlich NumPy .

Von dem, was ich habe gehört, Fortran für wissenschaftliche Zwecke ist sehr verbreitet, aber C ist für allgemeine Zwecke genug, dass einige für sie eine gute Lösung für die meisten jede Art von Programmierung.

Für die Bioinformatik und Computational Biology, C ist sehr beliebt.

Eine Menge "Scientific Computing" in Mathematica, Matlab und ähnlichen Werkzeugen behandelt.

Nun ... unter der Motorhaube wird Matlab geschrieben in C oder C ++, denke ich, aber viele Teile von Mathematica sind in Mathematica selbst geschrieben. Um sicher zu gehen, aus historischen Gründen und auch, weil C der intrinsischen Eigenschaften, viele wissenschaftlicher und hallo-Tech-Computing-Software-Bibliotheken und so geschrieben werden, in C / C ++.

Ich vermute, C / C ++ wird auch weiterhin eine positive Flanke für viele Echtzeit und Hochleistungsanwendungen genießen, vielleicht nicht so viel für die rohen Rechen selbst (das in höheren Sprachen nicht ausgedrückt werden kann), aber für die lokale Optimierung von engen Schleifen und mit verschiedenen Komponenten zur Schnittstellenbildung, sie physikalische Stücke Equipement sein, oder Software-Elemente, wie beispielsweise parallel computing Gerüste.

Wie Dmckee wies darauf hin, stellt die Studie von c eine gute Grundlage für die Programmierung im Allgemeinen zumindest prozeduralen Programmierung. Es hat auch praktische Anwendungen, so dass Ihr Professors Meinung hat einige starke Unterstützung zu diesem Zeitpunkt. Aber tun! weiterhin respektvoll herausfordern, die Weisheit, die von Ihren Professoren und Ältesten, zu verstehen, dass manchmal wie gut Zen-Meister, sie setzen Sie auf einem Weg, nicht so sehr für das Ziel, aber für den Hub / Prozess.

C wird in der Programmierung weit verbreitet. Die meisten von uns Programmierer jemals in C-Codierung vor allem, wenn wir in der Schule sind. Es ist nur Ihr Professor Präferenz Ich denke: -)

  

Ist C wirklich für viele Scientific Computing verwendet?

Scientific Computing umfasst viele verschiedene Dinge, und folglich sind viele verschiedene Programmiersprachen für das wissenschaftliche Rechnen verwendet.

Traditionell wissenschaftliches Rechnen High Performance Computing gedacht und wurde im Rahmen zu meist linearer Algebra und einige spektralen Methoden (z FFTs) und wurden hauptsächlich getan in Fortran begrenzt. Seitdem hat sich die Breite des wissenschaftlichen Rechnens erweitert enorm viele Menschen jetzt technische Berechnungen unter Berücksichtigung (zB Daten Massierung, Graph Plotten, Prototyping) unter der gleichen Rubrik fallen und anderen Menschen neue Formen von High Performance Computing wie symbolische Berechnungen aufnimmt.

Sprachen wie Python, R, Mathematica und MATLAB sind für technische Berechnungen verwendet. Sprachen wie C, C ++ und Fortran werden verwendet, noch für Zahlknirschens. Sprachen wie OCaml sind für eine groß angelegte symbolische Berechnung verwendet.

Als professionelle Programmierer Gebäude-Software für Wissenschaftler und Ingenieure ich, dass fast alle unserer numerischen Methoden geschrieben in C. So in unserem Fall sagen kann, es ist sicherlich richtig. Wir haben Taschen von C ++ und Fortran. In Bezug auf Leistung ist es schwer, gut codiert C und einen guten Compiler zu schlagen. Sehr, sehr gelegentlich könnten wir in die Montage tauchen.

Aber die Welt hat sich sehr verändert. Python ist eine wunderbare Sprache - die schönste Sprache IMHO und native Bibliotheken aufrufen können. Dann gibt es wieder eine Quelle R interpretierte Sprache, aber mit einer massiven Bibliothek von numerischen Methoden alle kompilieren C oder C ++. Dann fügen Sie alle neuen Hardware-beschleunigte Verfahren wie OpenCL und den vielen Bindungen ... C oder Fortran ist nicht mehr die einzige Antwort. Aber für traditionelle CPU Zahlknirschens C und ASM ist die beste in der Klasse.

Aus meiner Erfahrung in verschiedenen Labors und Forschungseinrichtungen arbeiten, würde ich sagen, eine Computersprache lernen, Ihnen nur eine Grundlage und eine Einführung in die Programmierung. C oder Java wäre eine günstige Sprache als Einführung zu holen, so dass Ihr Professor korrekt gewissen Grad.

Die Möglichkeit, Ihr Wissen in 1 Sprache in einer anderen Sprache anzuwenden ist der Schlüssel zum Erfolg in der Rechen / Entwicklung Arbeitsumgebung. Wie Sie durch verschiedene Firmen / Institute / lab Gruppe zu verschieben, werden Sie feststellen, dass jede von ihnen ihre eigenen Vorlieben in Sprache / Software haben würde. Die Möglichkeit, neue Dinge schnell zu lernen ist wichtiger als zu versuchen, die Syntax einer bestimmten Sprache zu merken.

Natürlich, wenn Sie die Sprache Ihrer Wahl für ein Projekt wählen erhalten, wählen Sie 1, dass die Bibliotheken hat, die Sie benötigen.

Ja, ANSI C von MPI begleitet.

Manchmal wollen Menschen „objektiv C“ verwenden, das heißt, sie Funktionen in Methoden der großen Klasse setzen, und jeder Examplar davon wird auf separaten Kern laufen. Beachten Sie, dass dies nicht C ++, aber „C mit Objekten“. Keine von C ++ Funktionen mit Ausnahme von Verfahren-Objektmodell verwendet. Dies ist nur alte C in „rational Objektmodell“ Verpackung ermöglicht Zwischenschichten zu verwenden und so weiter.

Gute Beispiele von oben. LAMMPS

Charm ++ ist ein weiterer guter Weg "gute alte C in der modernen Art und Weise" zu erhalten.

Auf anderen Hügel wissenschaftlicher Sprachen sind LISP, Haskell und andere Gruppen Meta-lang. Dies ist andere „weiche“ Welt der wissenschaftlichen Programmierung, wo die Zeit nicht Problem, aber die Existenz der Antwort.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top