A partir desta pergunta , eu tenho outra pergunta sobre ...
Quanto tempo e que tipo de complexidade estaria envolvido em Chris Sawyer escrevendo a maior parte do magnata da montanha russa em assembler?
Para especificar e detalhar esta questão, estou interessado;
Aproximadamente quantas horas-homem (adivinhe) você estima que Chris levaria o jogo sozinho? Ou, alternativamente, forneça uma porcentagem aproximada da proporção de horas de codificação do montador, escrevendo a coisa toda em C / C ++.
Os programadores que conhecem o assembler consideram isso uma tarefa excessivamente complexa para uma abstração de linguagem de baixo nível? Além dos benefícios de desempenho, essa é apenas uma habilidade natural esquisita que Chris tem, ou um conjunto de habilidades digno de aprender nessa medida? Estou interessado se as pessoas pensam que a complexidade / desempenho vale a pena aprender bem o assembler (para escrever) ou apenas "vale a pena" se você tiver muitas habilidades naturalmente desenvolvidas em assembler (presumivelmente por trabalhar com hardware / drivers de hardware / eletrônicos / etc).
fonte
Respostas:
Da leitura de sua biografia bruta , parece dois anos (do início de 1997 ao final de 1998). Dado que ele parece ser uma pessoa de “um projeto de cada vez” e o conjunto de ferramentas e o cronograma não são bons para o 'desenvolvimento da equipe', eu assumiria 24 programadores-meses seguidos.
Naquele momento, ele era um programador profissional de jogos trabalhando em montagem desde 1983, então eu não compararia "dois anos de Chris" a "dois anos de mim" de trabalho.
Dado que a maioria dos jogos profissionais leva cerca de 25 anos para o desenvolvimento de uma equipe, os anos de duas pessoas para um jogo líder do setor são uma conquista incrível, dando credibilidade aos dizeres:
Então, nesse caso, quanto mais rápido o Rollercoaster Tycoon seria gravado se Chris tivesse usado C ou Java ou Javascript ou ...? Provavelmente, não teria importado além do fato de que ele poderia ter sido um pouco mais lento usando uma linguagem de nível superior com a qual ele não tinha 14 anos de experiência ...
fonte
Se você pensa em C como pouco mais do que um montador de "alto nível", e assumimos que Chris não fez otimizações malucas para seu código de montagem em todas as rotinas, então eu imagino em termos de% de tempo a mais, então pode não ser muito mais para um programador de montagem qualificado.
A montagem fica complicada quando você está realizando todas essas otimizações malucas (operações de vetorização, fazendo uso de conjuntos de instruções especiais (SSE, etc), ajustes de bits etc.) que você simplesmente não pode fazer com C. Se estiver fazendo essas coisas, então, o tempo está realmente no loop "mexer neste bit, montar, medir ... mexer neste bit, montar, medir ..." e não na codificação real. Com um bom montador de macros e um programador habilidoso, escrever um assembly não é um grande passo para escrever código C.
Ainda assim, eu não teria sido capaz de fazê-lo! Estremeço ao pensar em tentar inicializar o DirectX diretamente na montagem! ( Edit: Wikipedia me diz que ele escreveu algumas partes em C para "interagir com o sistema operacional Windows", então eu acho que ele não estava inicializando o DirectX na montagem então ... ufa!)
fonte
Outra pessoa conhecida por escrever muitos programas Windows em assembler é Steve Gibson, autor de SpinRite, ShieldsUp! e outros utilitários. Ele discute seu amor pela linguagem assembly aqui .
Randy Hyde (a quem eu conhecia quando escrevíamos o código de montagem 6502 para o Apple II) tem um novo livro on-line chamado Windows Programming in Assembly Language . Ele é um grande defensor do uso de macros sofisticadas (incluindo construções em loop) para tornar a programação de montagem mais parecida com o uso de uma linguagem de alto nível. Sawyer provavelmente usou uma abordagem semelhante para ser mais produtivo.
fonte