Frage

Einfach nur neugierig, ich frage mich, was alles, was Sie Programmierer oder Neulinge erfahren (wie ich) da draußen getan haben. Also, was ist das Schwerste komplizierteste Programm, das Sie geschrieben haben?

War es hilfreich?

Lösung

Die Anwendung, die ich in 2005/6 geschaffen lässt die Leute Visualisierungen ihrer Häuser / Autos etc in verschiedenen Farben lackiert erstellen. Nun kann das sicherlich in Photoshop getan werden, aber es war viel, viel mehr zu bieten.

Viresol Ausgabevorschau

Andere Tipps

ein Compiler

Die, die ich nicht wollte, oder Spaß haben, zu schreiben.

Ich hatte einmal einen Kompressionsalgorithmus zu schreiben, die BWT (Burrows-Wheeler-Transformation) verwendet und es ist ein Schritt in dem Algorithmus, wo Sie eine RIESIGE Matrix erstellen haben. Ich hatte Probleme mit Gedächtnisproblemen und Geschwindigkeit, da die Matrix so riesig war. Kommen Sie, um herauszufinden, gibt es einen wirklich einfachen Algorithmus, die ich verwendet habe, konnte und vermied die Matrix vollständig.

Ich hatte auch ein einfaches Betriebssystem in ASM zu schreiben und das war ziemlich schwierig.

Ich habe einmal eine Echtzeit-Software Multi-Kamera-Videoverarbeitung, Bewegungserkennung und kumulative histographische Magie zu tun, die alle auf 33 MHz-Prozessoren und 640 MB RAM. Der schwierige Teil machte dies schnell gehen; Reichlich Hashing, Bits-Verschiebung, Betrug, Fluchen und spät in der Nacht mit Pizza und ephiphanies für ca. 4 Jahre. Oh, und ich habe eine Version mit Farbe zu tun als gut. Ach ja, und ein Modul, das den Unterschied zwischen Dampf und weißen Rauch in großen Räumen sehen konnte (wie Kernreaktoren, wie sie waren). Hah, versuchen Sie es einfach! Sie würden nicht Beispiele für solche in jedem Lehrbuch finden. :)

Eine Bibliothek zur Lösung nichtlineare Teil Differenential Gleichungen. Wir habe es in einer theoretischen Physik Gruppe eine nicht-lineare Anpassung der Schrödinger-Gleichung zu lösen, die in sehr speziellen Umgebungen mit niedrigeren Temperaturen auftreten.

Es war relativ einfach, ein einfaches Solver zum Laufen zu bringen, aber es und macht es schnell, war eine Herausforderung zu verallgemeinern.

Es ist derzeit Open Source auf Google Code: FDTL

Eine Anwendung, die kompiliert und lief auf beiden -. Windows und Mac mit einer Code-Basis

Alles, was mit Verschlüsselung und Sicherheit ist immer 1000% schwerer zu tun, als es scheint!

Ein Allzweck-Modemtreiber für einen flockigen Online-Service. Es hatte auch 30 Arten von Modem zu unterstützen (vor Hayes Modem). Sie alle hatten unterschiedliche Timing-Eigenschaften.

Es hatte in den beiden 8086 und Z80-Assembler für die CP / M und DOS-Versionen unserer Produkte geschrieben werden. Ich habe immer noch Alpträume über ein bestimmtes Halbduplex-Modem ...

Automation mit COM, mit der Ausführung über die Grid

Eine proprietäre Video-Streaming-Klasse der ffmpeg api mit - auf der Ebene von Paketen, die Handhabung und die Anzeige Rahmen zur richtigen Zeit, Synchronisation mit dem Audio. Nicht so hart wie einige der anderen aufgeführt, aber es trat meinen Hintern für viele Wochen!

Wahrscheinlich eine Bindung: eine Entscheidung Problemlöser für Baugruppen mit dem Erfüllbarkeit Modulo Theorien und ein kooperativer Prozess Scheduler in C / ASM, die auf einem UNIX-Betriebssystem lief. Die erste war einfach nur hart - es hatte nie zuvor mit SMT und Übersetzen des hochtheoretischen Papier in eine tatsächliche Implementierung in einem anderen Zusammenhang war schwierig gemacht worden. Die zweite Graben beteiligt zu OS-Datenstrukturen, sie zu verstehen, dann Stücke ersetzt hin und her zwischen den Funktionen in dem Programm zu springen, als ob sie separat Threads geplant wurden.

ein Debugger

Vektorgrafikbibliothek ich 1998 zu schreiben begann, die umfangreiche Nutzung aus hierarchische Unterteilung viele Operationen in O (log n) und anisotroper Tesselations memoized in OpenGL Anzeigelisten zur Verfügung zu stellen, um hohe Bildraten auf dynamische Szenen zu halten. Insbesondere könnte es vergrößern in komplizierten Vektorgrafiken strömungstechnisch, weil es sie in Bäume zerlegt und gekeult sie effizient. Seit vielen Jahren ist es bei weitem der schnellsten Verbraucher-Level-Vektor-Grafik-Renderer in der Welt.

Die ursprüngliche Version war 200kLOC von C ++, aber die theoretischen Probleme, die die Grundlage für das Design haben mich 2 Jahre gebildet zu lösen.

2 Dinge:

1) Ein Compiler. Der Name der Sprache war „3-Bälle“ (Tribut an einen Freund, den er Bälle betrieben hatte)

2) Ein Windows-Assembler-Programm ohne einen einzigen Makro, wurde alles auf den Stapel geschoben und die Adresse war alles relativ. Es funktioniert in allen Windows (keine Adresse harcoded). Im Grunde ist es ein einfaches Fenster mit einigen Tasten und Etikett. Aber das Schöne daran ist, dass aus dem Objekt und ausführbare Dateien, habe ich die OP-Codes extrahiert und erzeugt einen Shellcode von ihm. So konnte ich jeden Puffer auf ein Programm nutzen und buchstäblich schaffen sie meine eigene Anwendung über die man laufen! Nizza einen Bildschirm auf einem entfernten Computer zu zeigen, und den Remote-Computer ein Programm ausführen, die auf seinem Computer nicht vorhanden ist, gesendet Sie literaly das Programm auf den Remote-Computer ausgeführt werden.

Das ist natürlich zu viel headcache für nichts ... aber es lohnt sich alle Bytes ich! Getippt

Ich habe mehrere Stücke von Code geschrieben, die in mehreren räumlichen Dimensionen Modellierung tun (von 3 bis wie etwa 7 Dimensionen hoch.) Probleme schwieriger werden, wenn Sie auf etwas arbeiten, das man eigentlich nicht dargestellt werden kann, oder sogar sichtbar zu machen.

Aber wirklich, als derjenige, der die meiste Zeit Gebäude Toolkits verbracht hat, für andere in ihrer Arbeit zu nutzen, würde ich argumentieren, dass die komplexeste Programme, die ich getan habe tatsächlich Werkzeugkästen, Werkzeugsätze, die mit jedem arbeiten andere in einer konsistenten Art und Weise. Weil sie alle gemacht sind, zusammen zu arbeiten, können Sie argumentieren, dass mehrere Dutzend Dienstprogramme arbeiten tatsächlich wie in der Tat ein einziges Werkzeug. (Natürlich kann jeder modularer Code ähnelt in dieser Hinsicht.) Auch hier, was ich zur Verfügung gestellt wurden in der Regel Werkzeugen Modellierung gemacht Farbmanagement-Probleme zu lösen.

Ich war vor dieser Frage in einem Interview vor ein paar Wochen gefragt (noch nicht gehört, ob ich den Job bekam).

Für mich war es mehrere Aufgaben in meiner ersten Programmier Klasse nach der Grunde Intro Klassen. Es war das erste Mal, wenn ein Kurs in Web Design wurde an meiner Universität angeboten. Da es neu war, unterzeichneten mehr Abiturienten und etwa die Hälfte der Klasse zusammen. Der Lehrer wurde für den Unterricht Senior-Level-Klassen verwendet, und wußte schon viele von denen in der Klasse. Im Grunde lehrte er sich auf ihrer Ebene, anstatt für die andere Hälfte der Klasse, die ziemlich unerfahren waren.

Die wohl schwierigste Aufgabe war es, einen Nur-Text-Browser schreiben. Ich hatte Probleme für die verschiedenen Tags mit Parsen und bat um Hilfe. Der Lehrer sagte: Nun, wenn Sie die Compiler gehabt hätte natürlich könnte man einfach ein einfaches schreiben. An diesem Punkt ‚Compiler‘ war eine schwarze Box, die magischen Dinge taten, bevor das Programm lief. Ich wusste wirklich nicht, was es war, viel weniger war ich in der Lage zu schreiben.

Das, was es schwierig machte war nicht die Werkzeuge, die notwendig, um die Arbeit zu tun, umfassen die Ergebnisse das Verständnis habe ich, wenn ich gegoogelt. (Man-Seiten und APIs sind groß, wenn Sie bereits wissen, was Sie suchen, aber nicht für ein noob zu unterrichten.) In meinen Co-op Erfahrungen habe ich gelernt, am meisten, wenn ich hatte einen Mentor, der sagte: Wenn Sie nicht weiterkommen mehr als ein paar Stunden, lassen Sie mich wissen, damit ich dich unstuck bekommen und sich entlang. Viel besser als diejenigen, die nicht wollen, außer jede Woche von mir hören oder so.

Ich arbeite an noch eine weitere PHP Framework, das bisher eine unterhaltsame Reise gewesen ist.

ich zur Zeit schreibe eine iPhone-Anwendung. Es ist definitiv das härteste Programm, das ich je geschrieben habe. Nicht, weil die Sprache schwierig ist, ist der Code nur schwer oder aus irgendeinem anderen Grunde, sondern weil alles auf dem Gerät sein muss, so fließend.

Alles muss aussehen und natürlich anfühlen. Da ich einen echten Programmierer (mit null Verständnis der Geläufigkeit, Glätte oder Design .. so scheint es) bin das macht es wirklich schwierig für mich. Das Programm arbeitet, Code klug, aber Benutzeroberfläche weise habe ich eine viel härtere Zeit zu erledigen Dinge.

fädelt auch saugen; -)

nichts besonderes, aber eine Funktion, die eine „Kugel“ mit Dreiecke, mit n x n Punkten interpoliert, und die Dreiecke betweeen zwei Farben (so war der Eingang der Radius, die Anzahl der Unterteilungen, color1, color2) ziehen konnte. Es war hart, aber sehr lustig, wenn es funktioniert:)

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