Ainda vale à pena estudar Assembly?

Fala pessoal, como vão?

Bom, sou novo aqui. Fui incentivado a criar uma conta e postar minha dúvida depois de ver várias outras dúvidas relevantes serem respondidas assim que eu abria o chrome e ele me indicava sempre uma nova pergunta dessa comunidade, e claro, a maioria eu clicava pra ler.

Sou estudante independente Java. Digo independente pois não faço cursos (acredito que o auxílio de professores sempre me atrapalharam). Estudo por conta própria pelo site dev.java e com auxilio do chatGPT pra me explicar algumas coisas e também com auxílio do docs.java. Não estudo somente pra trabalho, mas sim porque amo programação e tudo que se refere a área de TI ❤️. É um universo fascinante que desperta minha curiosidade e meu desejo de aprender mais. Trabalho e dinheiro acredito que seja uma consequência de um bom estudo e de bons projetos no futuro.

Comecei em Java, mas futuramente pretendo também aprender C++ (o que estou tentando aprender desde 2016 kkkk). E muito futuramente, se tudo der certo, gostaria de aprender Assembly. Mas fica meu questionamento aqui: Vale a pena aprender Assembly?

Não digo pelo mercado (na verdade, estou cagando pro mercado), mas digo se essa aventura vale à pena. Assim, eu curto desafios, mas existem desafios, e existem muralhas que não se dá para transpassar, ou seja, há limites. Mas não sei se Assembly está nos meus limites ou se é humanamente possivel aprender tudo.

Podem me aconselhar sobre isso?

Valer a pena é extremamente pessoal. Ninguém pode responder isso por você, terá que descobrir por conta própria. As pessoas podem dizer se valeu a pena para elas despois que elas aprenderam, mas não podem falar do futuro da sua vida, ainda sem saber nada de você.

Principalmente sem o objetivo de trabalhar com isso, fica absurdamente pessoal.

Se é o que quer, manda bala, se não quer, esquece. Simples assim. Não precisa perguntar para pessoas aleatórias na internet o que você deve fazer da vida. Sim, é isso que está pedindo. Se não for, a pergunta não faz sentido. E isso vale para tudo, não é sobre Assembly.

Eu aprendi por necessidade. Não uso há muito tempo e não lembro da maioria das coisas, mas ter aprendido me deu uma vantagem enorme para programar outras coisas.

Eu já respondi falando de possibilidades: https://pt.quora.com/Vale-a-pena-aprender-assembly-Em-quais-situa%C3%A7%C3%B5es-assembly-poderia-ser-usado/answer/Antonio-Maniero

Pode ajudar: https://pt.quora.com/Programar-em-Assembly-%C3%A9-t%C3%A3o-dif%C3%ADcil-quanto-as-pessoas-fazem-parecer/answer/Antonio-Maniero

Se quiser pesquise o que eu acho sobre o uso do ChatGPT para aprender a programar.

Faz sentido para você?

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

eita amigo! que resposta robusta! muito obrigado por me fazer pensar melhor sobre isso. Realmente, tem vezes que sou um pouco "indeciso" (o que nao é algo tao bom para um desenvolvedor kkkk), mas suas resposta atingiu um ponto muito bacana sobre certas escolhas que so nos podemos tomar decisões que controem nossa pessoalidade. Ja vi voce algumas vezes aqui na plataforma respondendo algumas duvidas e fico muito feliz de ter me respondido! um abraço ❤️

Olá Deiv. Sim vale a pena aprender Assembly. Isso vai aumentar seu entendimento sobre a execução de programas pelo hardware com isso ajudar a estruturar seus programas para melhor aproveitamento de recursos.

Na verdade vale a pena aprender a maior variedade de linguagens que você puder, mas aconselho a procurar linguagens de paradigmas diferentes. Por exemplo você está estudando Java no momento. Deve estar aprendendo conceitos como herança, polimorfismo, métodos virtuais, classes e outras coisas relativas a Orientação a Objetos. Você aprender C++ depois de java vai acrescentar pouco a forma como você resolve um problema. Procura aprender uma linguagem puramente funcional que te mostre como resolver problemas sem usar objetos, classes, if, switch, while, for, em resumo qualquer conceito OO ou imperativo.

Gostei muito de seu conselho e muito obrigado pela resposta! 😃

Se com "estudar Assembly" você quer dizer decorar uma penca de instruções Assembly e escrever uns programinhas bobos de exercício, então não vale a pena (que é só o que muitos "cursos de Assembly" ensinam por aí...).

No máximo você vai usar esse "conhecimento" para se exibir na internet, porque não vai ter utilidade alguma. E aprender isso é muito fácil, por sinal. Até mais fácil do que uma linguagem de alto nível, sem exageros.

Agora se você quiser realmente estudar como as coisas funcionam: Assembly, arquitetura de processadores, compiladores, processos e threads, executáveis, sistemas operacionais etc.

Sim, vale muito a pena. Quanto mais você entende como as coisas funcionam, melhor tecnicamente você é. Você vai achar fácil aprender o que a grande maioria considera "muito difícil", porque tem base para isso. O que significa que você vai aprender mais rápido e com muito mais profundidade do que os outros que não têm a mesma base que você.

E você terá base para trabalhar em qualquer área de T.I., seja desenvolvimento, segurança, infra, redes etc.


Tem um livro gratuito de Assembly x86-64 que eu escrevi, se quiser ler:

E tem também essa apresentação que eu fiz de introdução ao baixo nível, que não aborda só Assembly mas antes explica como processadores e código de máquina funcionam.

caramba! nao brinca que voce escreveu esse livro? kkkkk cara, eu vi ele ontem na web! Meus parabens pelo livro. A introduçao dele é muito boa! Sobre o que voce disse, isso tambem tem em Java: pessoas que aprendem o básico pra fazer pequenos programas de exercicio para se exibir. Eu gosto de fazer algo bem relevante e desafiador (claro, dessfiador ao meu nivel de conhecimento atual). Sobre assembly, eu gostaria de saber tantas coisas... questoes como programar correções de bugs e otimizações em linguagens de baixíssimo nivel para softwares ja programados, aprender sobre engenharia reversa (que é um campo que eu acho muito legal analisado pela visao do assembly), estudar correções de segurança cibernética de aplicativos e sistemas com linguagem de máquina... enfim, acho que tem um campo enorme a ser desvendado e eu vejo isso como uma grande aventura! é muito legal quando voce faz algo com amor e compaixão. cursos, professores e obrigações tiram muito isso de nós. Mesmo se for um sonho, tudo vai perdendo o brilho. Um exemplo? todo curso de programação tem aquele aluno (ou ate mesmo professor), que diz que a linguagem que voce esta estudando um dia vai cair (ou algo fo tipo) para te desanimar... mas é isso amigo!muito obirgado pelos links de referencia e tambem pelo seu trabalho e paciencia para disponibilizar tfjfo mmmkfk a nos

Não vale apena aprender Assembly APENAS.

E sim estudar sobre Arquitetura e Organização de Computadores da o qual vai descrever como é a arquitetura de um computador, como funciona a CPU, como que ela roda as instruções e como Assembly se encaixa nisso. Sabendo do mínimo desses assuntos todo o universo de como que software é executado deixa de ser "Magia" e começa a fazer mais sentido, inicialmente o seu ganho é maior maturidade e entendimento do ambiente que esta trabalhando e não um completo leigo. Se você aprofundar no assunto, você pode saber desenvolver software otimizado ao máximo por saber como que isso se refletirá para a sua execução na CPU, esse nível muito baixo de tecnologia pode ser útil em ambientes de extrema performance ou com baixíssimos recursos, raramente sendo necessário num contexto mais cotidiano, mas não ser um completo leigo já é algo bem interessante, algumas aulas de YouTube e sofrer um pouco de MIPS já dá para o gasto.

Eu tive três disciplinas em momentos diferentes da faculdade que abordaram assembly, eu curti demais porque gosto de entender como as coisas funcionam.

Na minha cabeça não faz sentido estudar assembly por estudar assembly, ele é uma consequencia do estudo de arquiteturas e funcionamento de processadores.

Assembly não é uma linguagem como as outras, é uma forma direta de dar ordens a um processador então você vai passar mais tempo aprendendo mais sobre a arquitetura dele do que propriamente na sintaxe da linguagem.

Outra coisa a pontuar é ... cada processador possui seu assembly, então você tem que escolher um processador especifico e se dedicar a ele.

Acho que vale a pena ter conhecimento sobre, principalmente para entender melhor linguagens de mais baixo nível, como o C. Duas dicas: use mais livros do que sites, geralmente são mais completos. Dê uma chance de estudar Rust ao invés de C++, acredito que doravante será mais popular