Z tego pytania mam inne pytanie dotyczące ...
Jak długo i jakiego rodzaju złożoności byłby udział w pisaniu przez Chrisa Sawyera większości potentata rollercoastera w asemblerze?
Chciałbym sprecyzować i rozbić to pytanie, jestem zainteresowany;
W przybliżeniu ile osobogodzin (zgadnij) szacujesz, że zajęłoby to Chrisowi napisanie gry sam? Lub alternatywnie podaj przybliżony procent stosunku godzin kodowania asemblera do napisania, pisząc całość w C / C ++.
Czy programiści znający asembler dobrze uważają to za zbyt złożone zadanie dla tak niskiej abstrakcji języka? Czy oprócz korzyści związanych z wydajnością jest to tylko dziwaczna naturalna zdolność, którą posiada Chris, czy też zestaw umiejętności wartych uczenia się w takim stopniu? Interesuje mnie, czy ludzie myślą, że złożoność / wydajność jest warta nauczenia się asemblera tak dobrze (w celu pisania), czy też jest to „warte”, jeśli masz dużo naturalnie rozwiniętych umiejętności w asemblerze (prawdopodobnie dzięki pracy ze sprzętem / sterowniki sprzętu / elektronika / itp.).
źródło
Odpowiedzi:
Od przeczytania jego szorstkiej biografii wygląda to na dwa lata (od początku 1997 roku do końca 1998 roku). Biorąc pod uwagę, że wydaje się być osobą „jednego projektu na raz”, a zestaw narzędzi i ramy czasowe nie są świetne do „rozwoju zespołu”, zakładam, że mam 24 miesiące na programistę.
W tym momencie był profesjonalnym programistą gier pracującym w asemblerze od 1983 roku, więc nie zrównałbym „dwóch lat Chrisa” z pracą „dwóch lat”.
Biorąc pod uwagę, że większość profesjonalnych gier zajmuje zespołowi około 25 lat, dwuosobowe lata dla wiodącej w branży gry są niesamowitym osiągnięciem, nadając wyrazy uznania:
Więc w tym przypadku, o ile szybciej byłby napisany Rollercoaster Tycoon, gdyby Chris użył C lub Java lub Javascript albo ...? Prawdopodobnie nie miałoby to znaczenia poza tym, że mógł być nieco wolniejszy, używając języka wyższego poziomu, z którym nie miał 14 lat doświadczenia ...
źródło
Jeśli myślisz, że C to niewiele więcej niż asembler „wysokiego poziomu” i zakładamy, że Chris nie dokonywał szalonych optymalizacji swojego kodu asemblera w każdej procedurze, to wyobrażałbym sobie to w kategoriach% czasu dłuższego, to wtedy może nie być niczym więcej dla wykwalifikowanego programisty montażu.
Asemblacja komplikuje się, gdy wykonujesz wszystkie szalone optymalizacje (operacje wektoryzacji, korzystanie ze specjalnych zestawów instrukcji (SSE itp.), Kręcenie bitów itp.), Których po prostu nie możesz zrobić z C. Jeśli robisz takie rzeczy, wtedy czas faktycznie jest w pętli „baw się tym bitem, montuj, mierz ... baw się tym bitem, montuj, mierz ...”, a nie w rzeczywistym kodowaniu. Z dobrym asemblerem makr i wykwalifikowanym programistą pisanie asemblera nie jest wielkim krokiem w dół od pisania kodu C.
Mimo to nie byłbym w stanie tego zrobić! Drżę na myśl o próbie zainicjowania DirectX bezpośrednio w asemblerze! ( Edycja: Wikipedia mówi mi , że napisał niektóre części w C do „interfejsu z systemem operacyjnym Windows”, więc chyba nie inicjował DirectX w asemblerze, a potem… uff!)
źródło
Inną osobą znaną z pisania wielu programów Windows w asemblerze jest Steve Gibson, autor SpinRite, ShieldsUp! i inne narzędzia. Omówił jego miłość asemblerze tutaj .
Randy Hyde (którego znałem już wcześniej, kiedy oboje pisaliśmy kod asemblera 6502 dla Apple II) ma nową książkę online o nazwie Programowanie Windows w asemblerze . Jest wielkim zwolennikiem używania fantazyjnych makr (w tym konstrukcji zapętlonych), aby programowanie asemblera przypominało używanie języka wysokiego poziomu. Sawyer prawdopodobnie zastosował podobne podejście, aby zwiększyć produktywność.
źródło