2010-03-05 16 views
6

Während meines Studiums an der Universität musste ich viel über die Theorie der Berechnung lernen. Ich habe das Thema für drei Semester studiert. Ich hatte eine schwere Zeit und muss zugeben, dass ich viel vergessen habe.Wichtige Themen in der Theorie der Berechnung

Ich frage mich, ob das ein persönliches Problem ist, oder ob wir einfach viel (mehr oder weniger) nutzloses Zeug lernen müssen.

Also meine Frage ist: Welche Themen auf dem Gebiet der Theorie der Berechnung sind Ihrer Meinung nach am wichtigsten, welche Teile sind es wert, darüber zu lernen, und welche Themen verwenden Sie während Ihrer normalen Arbeit?

Ich persönlich bin froh, dass ich über die theory of languages gehört (vor allem die regulären Sprachen => reguläre Ausdrücke - wenn sie angewendet und wenn nicht werden) die verschiedenen time (and space) complexities und über, insbesondere die O (n) Notationen.

Aber wir hatten viel mehr zu studieren, einschließlich:

  • Berechenbarkeit Theorie
    • Halteproblem
    • semidecidable Probleme
  • Theorie der Komplexität
    • p = np?
  • Theorie der Logik
    • Aussagenlogik
    • Pr¨adikatenlogik

Es war interessant, über diese Themen zu hören, aber ich bin nicht sicher, wie notwendig es ist, studiere sie gründlich.

Ich weiß, diese Frage ist subjektiv und die Antworten werden sich sehr unterscheiden abhängig von Ihrer täglichen Arbeit und persönliche Erfahrung. Aber ich hätte gerne über Themen, die interessanter sein könnten, als ich mich erinnere.

+0

Sie werden beginnen, die Dinge zu vergessen, die Sie nicht verwenden, dann wird ein Jahrzehnt später jemand Sie in einem Interview über sie fragen! – RichardOD

+0

Ja, leider wirst du manchmal auch die wichtigen Dinge vergessen - deshalb frage ich hier :) Vielleicht bekomme ich heute eine gute Buchempfehlung ... oder so ähnlich – tanascius

Antwort

1

Ich bin mir nicht sicher, ob ich direkt bei der Arbeit alles nutze, was ich in der Theorie der Rechenklassen gelernt habe. Aber ich denke nicht, dass das wirklich der Punkt ist. Ich benutze auch nichts, was ich in der euklidischen Geometrie in der High School des Lebens gelernt habe. Aber das war der wichtigste Kurs, den ich in der Grundschule belegt habe.

Die Theorie der Berechnung ist ein wirklich interessantes Thema, und es gut zu wissen kann Ihnen nur im Leben helfen. Ich kann das nicht beweisen, aber ich weiß, dass es wahr ist.

Tut mir leid, wenn das keine große Antwort ist.

+0

Aus Neugier, warum glaubst du, war die euklidische Geometrie am wichtigsten? Klasse, die du in der Grundschule belegt hast? (Ich bin wirklich interessiert, denn das scheint eine seltene Meinung zu sein.) –

+0

Weil das der erste Ort ist, an dem ich einen Beweis machte. Es war der erste Geschmack, den ich von richtiger Mathematik hatte. Leider konnte ich erst nach dem Studium im College einen weiteren Beweis machen. –

+0

@A. Rex, Euklidische Geometrie verbessert abstraktes Denken und Problemlösungsfähigkeiten * viel *. Für viele von Eucl.geom. Probleme Sie haben kein Muster, wie Sie sie lösen können; Sie müssen auf eigene Faust eine knifflige und einzigartige Handlung entwerfen, die etwas beweist. Für Menschen mit dominanter visueller Wahrnehmung ist dies ein sehr wichtiges und hilfreiches Thema. –

6

Welche Themen auf dem Gebiet der Theorie der Berechnung denken Sie, sind die wichtigsten

Die Frage ist vage. Wichtig zu wer?

Welche Teile sind es wert, darüber zu lernen?

Alle von ihnen sind es wert, darüber zu lernen. Dies ist ein Sonderfall der Tatsache, dass alle menschlichen Anstrengungen von Natur aus lohnenswert sind.

Wenn Ihre Frage lautet: "Welche Themen bieten mir Vorteile, die größer sind als die Kosten meiner Zeit und Mühe, sie zu studieren?" Dann ist das eine Frage, die nur Sie selbst beantworten können. Der Vorteil für mich, etwa die Geschichte der alten Griechen zu studieren, hat nichts damit zu tun, wie es meine Fähigkeit beeinflusst, meine Arbeit zu erledigen.

Welche Themen verwenden Sie bei Ihrer normalen Arbeit?

Ich benutze alle Themen, die Sie aufgelistet haben - Sprachtheorie, asymptotische Ordnungsanalyse, Entscheidbarkeit, Komplexitätstheorie, Theorem-Prüfsysteme und so weiter.

Ich verwende sie nicht in einer formalen Sinn; Ich sitze nicht mit dem Hauptsatz an meinem Schreibtisch, um eine Ordnungsanalyse für bestimmte Algorithmen abzuleiten. Ich benutze sie in dem Sinne, dass es sehr praktisch ist, ein vorgeschlagenes Sprachmerkmal zu verwenden und schnell herauszufinden, ob die Implementierung des Compilers ein Problem lösen muss, das linear, polynom, exponentiell, NP-hart oder äquivalent ist das Halteproblem.

Zum Beispiel ist es ziemlich einfach zu erarbeiten, dass die Überladungsauflösung in C# 3 auf verschachtelten Lambdas NP-hart ist, aber nicht dem Halteproblem entspricht. Wir wissen daher, dass es (1) eine Verschwendung unserer Zeit ist, sogar zu versuchen, das Problem in polynomieller Zeit zu lösen, und (2) zumindest wissen wir, dass eine Lösung in einer gewissen Zeit gefunden werden kann, und (3) wir könnten mit einfachen Heuristiken aufwarten, um die schlechten Szenarien zu erkennen und schnell zu versagen, wenn es nötig wäre.

Ich persönlich verwende keine Proofsysteme, obwohl es hilfreich ist, über Probleme als Sonderfall eines Theorembeweisers nachzudenken. Es gibt alle Arten von Sprachmerkmalen, die den Problemen entsprechen, die Sie bei einem Theorembeweiser werfen, insbesondere im Bereich der Typinferenz und der Flussanalyse. Glücklicherweise keine der Funktionen von C# tatsächlich erfordern Implementierung eines Theorembeweisers; Andere Sprachen, die in diesem Gebäude implementiert sind, haben diese Eigenschaft, wie F #.

+0

Ok, ich verstehe deinen Standpunkt: Es geht nicht nur darum, dieses Wissen absichtlich zu nutzen, sondern es ist wichtig, ein Gefühl für das Thema zu haben. Aber gibt es nicht ein Thema, wo Sie sagen würden: Das sollte besser gelehrt werden?Zum Beispiel, wenn Sie ein neues Mitglied für Ihr Team bekommen (direkt von der Universität) - sind Sie mit ihrer theoretischen Ausbildung zufrieden (obwohl dies natürlich von Person zu Person unterschiedlich ist) – tanascius

+3

@tanascius: die Fächer, die ich gerne in Schulen besser gelehrt sehen würde sind die * nicht-theoretischen * Fächer. Die meisten frischgebackenen Kandidaten, die ich nicht in einem kooperativen Ausbildungsprogramm wie Waterloo durchlaufen habe, verfügen über gute theoretische Kenntnisse, sind aber schlecht darin, den Code anderer zu lesen und Code zu schreiben, der von anderen beibehalten werden kann Fehler in ihrem eigenen Code finden, eine Design- oder Implementierungsentscheidung in der Dokumentation klar kommunizieren und so weiter. Universitäten mit starken Koop-Programmen stellen die Studenten schon früh diesen Dingen aus. –

Verwandte Themen