Aus dieser Frage habe ich noch eine Frage zu ...
Wie lange und welche Komplexität hätte es gedauert, wenn Chris Sawyer den größten Teil des Rollercoaster Tycoon in Assembler geschrieben hätte?
Um diese Frage zu präzisieren und aufzuschlüsseln, interessiere ich mich für;
Wie viele Mannstunden (raten Sie mal) hätte Chris wohl gebraucht, um das Spiel selbst zu schreiben? Oder geben Sie alternativ einen ungefähren Prozentsatz des Verhältnisses der Assembler-Codierungsstunden an, um das Ganze in C / C ++ zu schreiben.
Denken die Programmierer, die Assembler gut kennen, dass dies eine übermäßig komplexe Aufgabe für eine so einfache Sprachabstraktion ist? Abgesehen von den Leistungsvorteilen ist dies nur eine verrückte natürliche Fähigkeit, die Chris besitzt, oder eine Fähigkeit, die es wert ist, in diesem Ausmaß gelernt zu werden? Ich bin interessiert, ob die Leute denken, dass die Komplexität / Leistung es wert ist, Assembler so gut zu lernen (um zu schreiben), oder ob es sich nur "lohnt", wenn Sie eine Menge natürlich entwickelter Fähigkeiten im Assembler haben (vermutlich durch die Arbeit mit Hardware) / Hardware-Treiber / Elektronik / etc).
quelle
Antworten:
Nach dem Lesen seiner groben Biografie sieht es nach zwei Jahren aus (Anfang 1997 bis Ende 1998). Angesichts der Tatsache, dass es sich bei ihm anscheinend um eine Person handelt, bei der es sich um ein einzelnes Projekt handelt und die Tools und der Zeitrahmen für die Teamentwicklung nicht optimal sind, würde ich von 24 Programmiermonaten ausgehen.
Zu diesem Zeitpunkt war er seit 1983 ein professioneller Spieleprogrammierer, der in der Montage tätig war, sodass ich "zwei Jahre Chris" nicht mit "zwei Jahren me" gleichsetzen würde.
Angesichts der Tatsache, dass die meisten professionellen Spiele für die Entwicklung eines Teams etwa 25 Personenjahre benötigen, sind Zwei-Personen-Jahre für ein branchenführendes Spiel eine erstaunliche Leistung, die den folgenden Aussagen Glaubwürdigkeit verleiht:
Also, in diesem Fall, wie viel schneller würde Rollercoaster Tycoon geschrieben werden, wenn Chris C oder Java oder Javascript verwendet hätte oder ...? Wahrscheinlich hätte es nichts ausgemacht, außer der Tatsache, dass er mit einer höheren Sprache, mit der er keine 14 Jahre Erfahrung hatte, ein bisschen langsamer gewesen wäre ...
quelle
Wenn Sie C als etwas mehr als einen "High-Level" -Assembler ansehen, gehen wir davon aus, dass Chris nicht in allen Fällen verrückte Optimierungen an seinem Assembler-Code vorgenommen hat Routine , dann würde ich mir vorstellen, in Prozent länger zu arbeiten ist für einen erfahrenen Assembler-Programmierer vielleicht nicht viel mehr.
Die Montage wird kompliziert, wenn Sie all diese verrückten Optimierungen (Vektorisierungsoperationen, Verwendung spezieller Befehlssätze (SSE usw.), Bit-Twiddling usw.) durchführen, die Sie von C aus einfach nicht durchführen können. dann ist die Zeit tatsächlich in der Schleife "Dieses Bit fummeln, zusammenbauen, messen ... Dieses Bit fummeln, zusammenbauen, messen ..." und nicht in der tatsächlichen Codierung. Mit einem guten Makro-Assembler und einem erfahrenen Programmierer ist das Schreiben von Assembler kein großer Schritt weniger als das Schreiben von C-Code.
Trotzdem hätte ich es nicht geschafft! Ich schaudere, wenn ich darüber nachdenke, DirectX direkt in der Assembly zu initialisieren! ( Edit: Wikipedia sagt mir, dass er einige Teile in C geschrieben hat, um "mit dem Windows-Betriebssystem zu kommunizieren", also habe er DirectX in der Assembly wohl nicht initialisiert ... puh!)
quelle
Eine andere Person, die dafür bekannt ist, viele Windows-Programme in Assembler zu schreiben, ist Steve Gibson, Autor von SpinRite, ShieldsUp! und andere Dienstprogramme. Er spricht über seine Liebe zur Assemblersprache hier .
Randy Hyde (den ich vor langer Zeit kannte, als wir beide 6502-Assembler-Code für Apple II geschrieben haben) hat ein neues Online-Buch mit dem Titel Windows Programming in Assembly Language . Er ist ein großer Befürworter der Verwendung ausgefallener Makros (einschließlich Schleifenkonstruktionen), um die Assemblerprogrammierung mehr wie die Verwendung einer Hochsprache zu gestalten. Sawyer hat wahrscheinlich einen ähnlichen Ansatz gewählt, um produktiver zu sein.
quelle