Ainda vale a pena estudar assembly?

Me respondam se for possível, qual é o salário mínimo de um programador assembly?

Numca vi hoje em dia nenhuma vaga para programador assembly, acho que a vaga correta seria engenheiro de microeletronica acho que o salario deve ser bom… mas vc não vai só programar vai mecher com circuito, chips, soldas, acidos e por ai vai, a coisa é tensa…

É verdade que o C substituiu muita coisa do assembly? Se o C ou não sei o quê substituir todo o assembly assim como o assembly substituiu a linguagem de máquina, não será necessário o assembly.[/quote]
Quando foi que assembly substituiu a linguagem de máquina?
Quando é que C vai sobrepor assembly?
Quando é que Java vai subjugar COBOL?
C pode fazer uma série de coisas (talvez tudo) que assembly faz. Mas uma coisa é fazer, a outra substituir.
Assembly não substituiu a linguagem de máquina. Elas ainda falam 0 e 1 e continuarão por muito tempo.
[/quote]

Se C pode fazer uma série de coisas, se pode talvez fazer tudo que assembly faz, uma coisa é fazer, a outra substituir, é melhor usar C por causa de ser mais fácil que o assembly?

Se hoje não há vaga para programador assembly, quais são as vagas corretas para quem quer trabalhar com assembly ou a coisa que faz o que o assembly faz?

Devo entender inglês para aprender assembly e as linguagens que fazem o que assembly faz?

É verdade que o C substituiu muita coisa do assembly? Se o C ou não sei o quê substituir todo o assembly assim como o assembly substituiu a linguagem de máquina, não será necessário o assembly.[/quote]
Quando foi que assembly substituiu a linguagem de máquina?
Quando é que C vai sobrepor assembly?
Quando é que Java vai subjugar COBOL?
C pode fazer uma série de coisas (talvez tudo) que assembly faz. Mas uma coisa é fazer, a outra substituir.
Assembly não substituiu a linguagem de máquina. Elas ainda falam 0 e 1 e continuarão por muito tempo.
[/quote]

Quais são as linguagens que fazem o que assembly faz?

[quote=assembler]Devo entender inglês para aprender assembly e as linguagens que fazem o que assembly faz?
[/quote]

Você vai precisar aprender Inglês para não passar fome …

É verdade que o C substituiu muita coisa do assembly? Se o C ou não sei o quê substituir todo o assembly assim como o assembly substituiu a linguagem de máquina, não será necessário o assembly.[/quote]
Quando foi que assembly substituiu a linguagem de máquina?
Quando é que C vai sobrepor assembly?
Quando é que Java vai subjugar COBOL?
C pode fazer uma série de coisas (talvez tudo) que assembly faz. Mas uma coisa é fazer, a outra substituir.
Assembly não substituiu a linguagem de máquina. Elas ainda falam 0 e 1 e continuarão por muito tempo.
[/quote]

Quais são as linguagens que fazem o que assembly faz?[/quote]

Cara vc sabe ao menos o que é assembly? sugiro que leia isso: http://pt.wikipedia.org/wiki/Assembly

É verdade que o C substituiu muita coisa do assembly? Se o C ou não sei o quê substituir todo o assembly assim como o assembly substituiu a linguagem de máquina, não será necessário o assembly.[/quote]
Quando foi que assembly substituiu a linguagem de máquina?
Quando é que C vai sobrepor assembly?
Quando é que Java vai subjugar COBOL?
C pode fazer uma série de coisas (talvez tudo) que assembly faz. Mas uma coisa é fazer, a outra substituir.
Assembly não substituiu a linguagem de máquina. Elas ainda falam 0 e 1 e continuarão por muito tempo.
[/quote]

Quais são as linguagens que fazem o que assembly faz?[/quote]

Cara vc sabe ao menos o que é assembly? sugiro que leia isso: http://pt.wikipedia.org/wiki/Assembly[/quote]

Assembly é linguagem de baixo nível, linguagem mais próxima da linguagem de máquina.
Perguntei quais são as linguagens que fazem o que assembly faz por causa da afirmação do drsmachado:C pode fazer uma série de coisas(talvez tudo) que assembly faz.

[quote=assembler]Devo entender inglês para aprender assembly e as linguagens que fazem o que assembly faz?
[/quote]

Acho que você deve aprender inglês para poder viver e trabalhar na nossa área.
A literatura sobre Assembly em português é muito antiga e muito pobre; não vale a pena insistir na nossa língua.
Por exemplo, o manual do fabricante do processador (que é uma referência que você terá de consultar constantemente) está em inglês e eles nunca o traduzirão para outra língua (mesmo os fabricantes chineses publicam os manuais em inglês :slight_smile: ).

Quando se escreve um programa em Assembly, normalmente ele está inserido dentro de um programa em C hoje em dia - é difícil ver programas “pelados”.

Considero isso um diferencial… saber assembly ajuda a saber como as coisas funcionam!!
Se você for fuçar no kernel do linux provavelmente terá de saber um pouco de assembly!

Tanto se fala de fazedores de CRUD… se quiser se um destes, com certeza Assembly não serve para nada!

Aprendi assembly em 1995 fazendo crackers de joguinhos antigos de DOS… utilizando debugger e trocando JMP por NOP… nunca me aprofundei, pq realmente é dificil trabalhar precisando disto no dia-a-dia… mas acho importante que todo mundo tenha uma noção!

Caro Assembler,

C pode fazer o que o Assembly faz, até certo ponto, mas é diferente.
Só em Assembly você vai ter controle direto sobre as instruções que o processador vai executar.
Qualquer linguagem de nível mais alto será compilada em instruções de máquina sobre as quais o programador não tem controle direto.
Todo processador de computador tem um conjunto de instruções que fazem coisas simples. Estas instruções fazem coisas como:

  1. Leia a posição de memória 24034 e coloque o seu conteúdo no registrador 5.
  2. Pegue o conteúdo dos registradores 3 e 4, calcule a soma e coloque o resultado no registrador 9.
    As linguagens Assembler têm instruções correspondentes às instruções do processador. Por exemplo, uma linguagem assembler poderia ter os comandos abaixo, para as instruções 1 e 2 acima:
    [color=darkblue] 1) LOAD 24034,5
  3. SUM 3,4,5[/color]
    (É só um exemplo).
    Em C você tem comandos mais complexos, como por exemplo:
int m = 4;

O compilador de C, ao compilar este comando, irá gerar diversos comandos de linguagem de máquina, correspondentes às instruções Assembler. Irá criar uma posição em memória associada à variável m, guardar o endereço, e atribuir o valor.
Um comando mais complexo de C:

   for(int i=0;i<10;i++){}

Será convertido em muito mais comandos correspondentes às instruções Assembler…
Como as instruções de máquina são geradas pelo compilador, você não tem controle direto sobre elas.
Quer dizer, se você quiser operar a máquina intimamente, precisará programar em Assembler.
Um programa em Assembler pode ter performance melhor que em C, pois você sabe cada instrução de máquina que será executada. Só que em Assembler é bem mais difícil de entender e manter.
Quanto aos salários para programador, não sei, mas deve ter mais chances na área de engenharia elétrônica, programando coisas de mais baixo nível (no bom sentido), como um driver de dispositivo, por exemplo.

É verdade que o C substituiu muita coisa do assembly? Se o C ou não sei o quê substituir todo o assembly assim como o assembly substituiu a linguagem de máquina, não será necessário o assembly.[/quote]
Quando foi que assembly substituiu a linguagem de máquina?
Quando é que C vai sobrepor assembly?
Quando é que Java vai subjugar COBOL?
C pode fazer uma série de coisas (talvez tudo) que assembly faz. Mas uma coisa é fazer, a outra substituir.
Assembly não substituiu a linguagem de máquina. Elas ainda falam 0 e 1 e continuarão por muito tempo.
[/quote]

Consegui o conteúdo abaixo do camarony.tripod.com/sitebuildercontent/sitebuilderfiles/assembler.doc

PROGRAMAR EM ASSEMBLY (PARTE I)
(texto recuperado por OCR a partir da revista Spooler)

Muitos utilizadores e a totalidade dos programadores deparará, tarde
ou cedo, com a necessidade de resolver um problema específico
de codificação para o qual as linguagens de alto nível não oferecem
qualquer solução ou. se oferecem, esta não é satisfatória. A
frequência de aparecimento desses problemas não é tão invulgar
como à primeira vista possa parecer. Para um programador de
aplicações de gestão podem aparecer ocasionalmente, mas para um
programador de sistemas operativos, aparecerão a todo o momento.
E a sua resolução passará normalmente por possuir um elevado
conhecimento dos «meandros» de como o equipamento funciona e de
como actuar sobre ele. A melhor via para realizar essa aprendizagem
é começar a estudar a única linguagem que o computador entende.

Ora bem. mas todos sabemos que os computadores internamente - os
seus componentes físicos e circuitos electrónicos, todo esse conjunto
que se designa por hardware, só conhecem uma linguagem que é
constituída por zeros e uns, a linguagem binária ou código máquina.

Felizmente, não nos devemos alarmar, pois longe vão os dias em que
se programava directamente em binário. Nos nossos dias já ninguém
o faz!

Um programa binário é praticamente ininteligível para nós humanos,
mesmo que contenha apenas 2 ou 3 instruções. Mas nos primeiros
tempos da era dos computadores, nos anos 40 e 50, houve quem o
fizesse, naqueles grandes computadores de válvulas que já passaram
à História.

Tentou-se, em alternativa, programar em hexadecimal, que é uma
base de numeração em que se começa a contar no zero e se termina
no «F» (que significa 15 em numeração decimal). Base esta que tem
uma relação simples com a base binária, pois por cada grupo de
4 dígitos binários temos l em hexadecimal. Porém, a programação
em hexadecimal também era extraordinariamente complicada e
demorada.

Finalmente encontrou-se a solução, o Assembly.

Se o Assembly não substituiu a linguagem de máquina, para que a linguagem de máquina existe se é verdade que ninguém programa diretamente nela?

É verdade que o C substituiu muita coisa do assembly? Se o C ou não sei o quê substituir todo o assembly assim como o assembly substituiu a linguagem de máquina, não será necessário o assembly.[/quote]
Quando foi que assembly substituiu a linguagem de máquina?
Quando é que C vai sobrepor assembly?
Quando é que Java vai subjugar COBOL?
C pode fazer uma série de coisas (talvez tudo) que assembly faz. Mas uma coisa é fazer, a outra substituir.
Assembly não substituiu a linguagem de máquina. Elas ainda falam 0 e 1 e continuarão por muito tempo.
[/quote]

Consegui o conteúdo abaixo do camarony.tripod.com/sitebuildercontent/sitebuilderfiles/assembler.doc

PROGRAMAR EM ASSEMBLY (PARTE I)
(texto recuperado por OCR a partir da revista Spooler)

Muitos utilizadores e a totalidade dos programadores deparará, tarde
ou cedo, com a necessidade de resolver um problema específico
de codificação para o qual as linguagens de alto nível não oferecem
qualquer solução ou. se oferecem, esta não é satisfatória. A
frequência de aparecimento desses problemas não é tão invulgar
como à primeira vista possa parecer. Para um programador de
aplicações de gestão podem aparecer ocasionalmente, mas para um
programador de sistemas operativos, aparecerão a todo o momento.
E a sua resolução passará normalmente por possuir um elevado
conhecimento dos «meandros» de como o equipamento funciona e de
como actuar sobre ele. A melhor via para realizar essa aprendizagem
é começar a estudar a única linguagem que o computador entende.

Ora bem. mas todos sabemos que os computadores internamente - os
seus componentes físicos e circuitos electrónicos, todo esse conjunto
que se designa por hardware, só conhecem uma linguagem que é
constituída por zeros e uns, a linguagem binária ou código máquina.

Felizmente, não nos devemos alarmar, pois longe vão os dias em que
se programava directamente em binário. Nos nossos dias já ninguém
o faz!

Um programa binário é praticamente ininteligível para nós humanos,
mesmo que contenha apenas 2 ou 3 instruções. Mas nos primeiros
tempos da era dos computadores, nos anos 40 e 50, houve quem o
fizesse, naqueles grandes computadores de válvulas que já passaram
à História.

Tentou-se, em alternativa, programar em hexadecimal, que é uma
base de numeração em que se começa a contar no zero e se termina
no «F» (que significa 15 em numeração decimal). Base esta que tem
uma relação simples com a base binária, pois por cada grupo de
4 dígitos binários temos l em hexadecimal. Porém, a programação
em hexadecimal também era extraordinariamente complicada e
demorada.

Finalmente encontrou-se a solução, o Assembly.

Se o Assembly não substituiu a linguagem de máquina, para que a linguagem de máquina existe se é verdade que ninguém programa diretamente nela?[/quote]

Cara, isso é aí é bobagem. Assembly É a linguagem de máquina, tanto que cada arquitetura de processador tem sua própria linguagem Assembly. Uma instrução Assembly nada mais é do que um código seguido por 1 ou 2 parâmetros. Esse código é numérico, sendo assim, ele pode ser representado em qualquer base numérica, a mais comum é a hexadecimal. Porém, pode-se representar esse código também através de mnemônicos, para facilitar a leitura das instruções. Mas o fato de representar uma instrução através de um mnemônico está longe de definir uma linguagem nova.

Exatamente!
Tanto que um debugger assembly, não precisa descompilar o programa… ele apenas traduz os códigos hexa para os mnemônicos!
E da mesma forma que se você mudar um mnemônico, poderá ver qual a posição desta alteração e alterar diretamente o executável hexa!
É apenas um DE/PARA, diferente de um programa em C que passa por um compilador e que vai TRADUZIR o código para um de máquina, logo, dependendo do que o compilador fizer, pode ficar diferente.

Galera, me desculpem se falei o que não deveria ter falado, mas fiz o melhor que pude.

Se essas informações forem verdade, tentarei praticá-las.

O que devo fazer para estar atualizado sobre essas informações, por exemplo, quando não mais valer a pena estudar assembly, o que deverei fazer para saber disso? Por exemplo, se chegar o tempo que ninguém usará assembly assim como nos nossos dias ninguém usa a linguagem binária, o que deverei fazer para saber disso?

[quote=assembler]Galera, me desculpem se falei o que não deveria ter falado, mas fiz o melhor que pude.

Se essas informações forem verdade, tentarei praticá-las.

O que devo fazer para estar atualizado sobre essas informações, por exemplo, quando não mais valer a pena estudar assembly, o que deverei fazer para saber disso? Por exemplo, se chegar o tempo que ninguém usará assembly assim como nos nossos dias ninguém usa a linguagem binária, o que deverei fazer para saber disso?
[/quote]

Amigo. Se você quer ser um profissional completo, de tecnologia, considero que é importante aprender e ter noções de assembly, linguagem de máquina (hexadecimal), etc!
Hoje quase ninguém utiliza assembly para desenvolver sistema de padaria e cada dia menos se utiliza assembly até mesmo quem trabalha com eletrônica, visto até mesmo robôs de montadoras de automóveis (tenho um conhecido do ramo), que diz que os mais novos já se programa em C e não mais em Assembly.
O detalhe é… aprender e não se aprofundar! São diversos conceitos, muitos destes vistos em universidades, que são importantissimos de aprender, serão um diferencial, mesmo que você nãos os use no dia-a-dia, entender como as coisas funcionam ajudará a resolver problemas mais complexos.
Tive um problema muito sério com um gerenciador de banco de dados em Java (HSQL) e tive de abrir o código fonte da OpenJDK para saber alguns detalhes de como o nio funcionava para ver uma forma de resolver o problema. Muitos caras que conheciam Java mais do que eu, tentaram e não resolveram o problema, pois eles podiam ser mestres em Frameworks da moda, mas precisou ver um fonte em C o cara fugia!

E no fim das contas, mesmo que ninguem use diretamente, ele esta lá! Afinal é o que o computador entende! Talvez algum novo tipo de máquina que deixe de entender assembly e efetivamente esse conhecimento não sirva para mais nada!!! Ou os tal computadores quânticos, que confesso que não consigo entender…

Mas aprenda também linguagens de alto nível, C, C++, Java, C#, etc … na hora de se especializar, escolha um caminho!

O fato é que você não vai conseguir fugir da faculdade. Hoje em dia é muito raro conseguir ser contratado sem uma boa graduação (o diploma sozinho não vale nada, tem que matar a cobra e mostrar o porrete). Em termos profissionais, é mais fácil pensar no tipo de produto/serviço que você quer desenvolver/prestar do que na ferramenta em si. Pense na área de atuação, pense se você quer trabalhar mais próximo do hardware ou trabalhar com sistemas completos, pense se você quer trabalhar em linhas de produção ou fazendo apps para celulares. A ferramenta é consequencia.

[quote=assembler]Galera, me desculpem se falei o que não deveria ter falado, mas fiz o melhor que pude.

Se essas informações forem verdade, tentarei praticá-las.

O que devo fazer para estar atualizado sobre essas informações, por exemplo, quando não mais valer a pena estudar assembly, o que deverei fazer para saber disso? Por exemplo, se chegar o tempo que ninguém usará assembly assim como nos nossos dias ninguém usa a linguagem binária, o que deverei fazer para saber disso?
[/quote]

“Quando” é modo de dizer.
Quando é que não valerá mais a pena estudar latim, por exemplo?
É a linguagem que deu origem ao português, ao francês e indiretamente ao inglês (que é basicamente uma língua germânica mas com uma boa parte do seu vocabulário vinda do francês).
Você não precisa aprender latim para viver, mas um pouquinho de latim você acaba sabendo por osmose.
Se for estudar Economia, por exemplo, vai aprender o que é “ceteris paribus”.
Se for estudar Direito, vai se encher de latim jurídico até dizer chega.
Se for estudar Biologia, pelo menos vai saber dizer por que o Argentinossaurus tem esse nome :slight_smile:

E é por isso que não estipulo um prazo. Coisas antigas não morrem, só mudam de figura.