[quote=ViniGodoy]Eu trabalhei na indústria de hardware, e atualmente ainda atuo na indústria de games. Fiz muito software industrial, seja para smartcards, terminais de cartão de crédito, telefones. Trabalhei bastante com a otimização de motores gráficos e com gente que trabalha com dispositivos muito pequenos como PICs e microcontroladores.
Todas eram áreas onde o assembly era muito presente… e deixou de ser. Por vários motivos:
a) O código assembly não é portável: Se você fez para uma arquitetura, ele vai morrer naquela arquitetura.
b) O código assembly é EXTREMAMENTE caro e difícil de manter. Pois é difícil de ler, é difícil de achar bugs, difícil de modularizar e mais difícil ainda de ser absorvido por outro programador que não escreveu o código;
c) O código assembly é menos otimizado do que um código C escrito com “cuidado”. O compilador não perde oportunidades de usar instruções específicas de uma plataforma, além de aplicar diversas otimizações que seriam difíceis um ser humano aplicar o tempo todo. Além disso, é bem mais fácil escrever código com paralelismo em C.
d) Por ter bons compiladores C para a maior parte dos hardwares, há também uma comunidade muito maior, mais exemplos, bibliotecas e tutoriais.
Vai ser difícil achar referências hoje em dia sobre não programar em assembly pois esse é um assunto tão obsoleto que os autores não perdem tempo explicando o porque você não deveria programar em assembly. Ainda se fala em aprender assembly, mas por razões acadêmicas: “entender” o que está debaixo dos panos, “entender” como o hardware funciona, etc. Não para se fazer código de produção com ele.
Em alguns livros de jogos, como o “C++ For Game Programmers”, do Noel Llopis, há um discurso onde ele diz sobre a pouca probabilidade de você ter que recorrer a código assembly, mesmo no caso de ter que fazer otimizações agressivas em código.
O Dennis Richie (criador do Multics, do Unix e da Linguagem C), se refere a linguagem C como uma linguagem assembly portável [1].
Se você é tão fã de assembly, deveria procurar a comunidade Unix / Linux. Embora o criador do Unix seja também o criador do C, eles são bastante fãs de coisas muito antigas, como goto e assembly, e por lá ainda rola um discurso forte de que o assembly seja necessário.
Eu só peço novamente para você parar de criar tópicos sobre o mesmo assunto no GUJ. [/quote]
++
Hoje, e há muito tempo, é uma unanimidade que é proibitivo usar assembly como linguagem de programação de uso geral.
Como hobby, não tem sentido discutir a validade disso, é uma opção pessoal.
PS: Em outras palavras, pode parar de perder seu tempo procurando opiniões divergentes sobre isso, pois, mesmo que encontre, elas com certeza não estarão baseados nem na realidade nem no bom senso, ou seja, serão inúteis, sem valor algum.