Infelizmente... Assembly!

Bom pessoal, um dia desses eu postei aqui perguntando sobre livros para iniciação em Java e etc… mas acabei pegando um caminho meio sombrio. Como eu sou muito curioso e não me aguento aprendendo apenas Java, fui pra sua base, o C e, querendo ir ainda mais fundo, acabei parando em Assembly… agora eu acabei me fascinando pela “linguagem” e gostaria de saber em que área um programador Assembly pode atuar, andei dando uma pesquisada por aí, inclusive no fórum, e vi que normalmente Assembly é usado para trabalhar com microcontroladores mais voltados para circuitos eletrônicos, o que me deixou triste já que gosto mesmo de programação para computadores. Minha pergunta é:

Existe alguma área aberta para programadores em Assembly como, por exemplo, a área de segurança? Ou então, existe algum tipo de mercado de desenvolvimento e pesquisa que necessite desses programadores?

Talvez alguns de vocês que estão na área a mais tempo do que eu saibam.
desde já, obrigado.

ja ouvi muito falar que drivers de hardware do computador normalmente são feitos em assembly… me parece um mercado restrito, muito restrito.

[quote=TacticsOgre]Bom pessoal, um dia desses eu postei aqui perguntando sobre livros para iniciação em Java e etc… mas acabei pegando um caminho meio sombrio. Como eu sou muito curioso e não me aguento aprendendo apenas Java, fui pra sua base, o C e, querendo ir ainda mais fundo, acabei parando em Assembly… agora eu acabei me fascinando pela “linguagem” e gostaria de saber em que área um programador Assembly pode atuar, andei dando uma pesquisada por aí, inclusive no fórum, e vi que normalmente Assembly é usado para trabalhar com microcontroladores mais voltados para circuitos eletrônicos, o que me deixou triste já que gosto mesmo de programação para computadores. Minha pergunta é:

Existe alguma área aberta para programadores em Assembly como, por exemplo, a área de segurança? Ou então, existe algum tipo de mercado de desenvolvimento e pesquisa que necessite desses programadores?

Talvez alguns de vocês que estão na área a mais tempo do que eu saibam.
desde já, obrigado.[/quote]

Xiii vai trab desenvolvendo coisas pra algum HW, o nicho de Assembly está lá :smiley:

Já vi uma vaga que era pra trabalhar com C, Java e Assembly, cara!

O negócio era desenvolver uma interface com um sistema embarcado:

  • WEB e aplicativo desktop Java;
  • Driver, programação mais robusta em C;
  • bastante assembly para alguns detalhes do processador embarcado.

Mas é muito raro, infelizmente :frowning: Eu não sei pq vc não gostaria de trabalhar na área baixo nível, é muito interessante!

Eu sou meio fascinado pelo Assebmly também :smiley:

É simplesmente muito interessante, mas eu nem cogitei desenvolver softwares em assembly não… sei que não deve ter mercado, pois a linguagem é de um nível muito baixo. Estava pensando mesmo em programar pra circuitos e drivers pra hardwares mesmo, como os amigos aí de cima falaram.

Sei que tem algumas partes de SOs que são desenvolvidas em Assembly, então, se você descolar uma vaga na M$ talvez acabe fazendo alguma coisa nessa linguagem :stuck_out_tongue:

Ainda estou estudando, mas assim que acabar a facul (se Deus quiser, no fim deste ano) vou baixar o source do Linux e começar a “brincar”, estudar o funcionamento do SO, etc, só por diversão mesmo. (ouvi dizer que o Linux é feito em C/C++ )

Onde há muito trabalho para assembly é para microcontroladores mesmo. Existem micros que possuem memória de 1kb, e normalmente um compilador c ia gerar um software maior que isso, então entra o assembly.

Para processadores x86 ou amd64, é inviável escrever um software em assembly porque esses possuem milhares de instruções. A linguagem c foi criada para fazer o que o assembly faz, mas com uma vantagem dela ser médio nível.

Hoje em dia os drivers são escritos em c++(alto nível) ou c(médio nível). Você pode utilizar assembly em c++, c ou pascal fazendo chamadas inline nos métodos( o que eu uso no meu trabalho para fazer algumas otimizações).


http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
http://wiki.freepascal.org/Lazarus_Inline_Assembler

Existem duas notações de assembly. A intel e a AT&T/Unix. Os compiladores opensource como gcc normalmente usam a segunda.

isso é tão útil que dá para se criar bootstraps com ele.

Se alguém se interessa em assembly e eletrônica digital e deseja fazer um curso disso aconselho entrar em contato com a exsto em sta rita do sapucaí.
http://www.exsto.com.br/

Cara, já desenvolvi algumas coisas em Assembly e te digo que extremamente maçante! No começo é legal, mas quando software complica, você quer sair correndo do Assembly . Até hoje só vi mercado para isso na aréa eletrônica para programação de micro-controladores e, mesmo assim, quando a questão é mémória ou desempenho, pois nessa aréa o que domina mesmo é C. Outro fator é conhecimento do equipamento a ser programado. Como o nível é bem baixo um conhecimento de eletrônica é fundamental. Nunca vi um programador nesse nível que não soubesse de eletrônica. Normalmente é algum engenherio eletrônico que desenvolve os softwares.
Se você gosta dessa aréa, recomendo que vá estudar eletrônica, ou Engenharia da Computação, embora você vá usar mais ele na primeira mesmo!

você deveria procurar empregos na parte de automação industrial,
é onde você encontrará mais vagas, sendo que tais vagas, dependendo
do conhecimento e experiencia, podem ter um salário de dar inveja,
pois é muito muito dificil encontrar pessoas que gostam de baixo nivel.

Ah sim, esqueci de mencionar, estou estudando a sinstaxe AT&T e Intel.
No caso, para trabalhar com microcontroladores em circuitos eletrônicos eu não trabalharia com essas mesmas sintaxes Assembly certo? E acho que nem com a mesma estrutura de processador x86 =[

Então acho que vou continuar no nível mais baixo possível, me focar em C e continuar vendo assembly por diversão (diversão/masoquismo heheh)

[edit]

ou continuar com assembly e trabalhar nessas áreas que o drigo.angelo e o johnny quest citaram.

obs: esse ano começo a faculdade de engenharia da computação.

[quote=TacticsOgre]Ah sim, esqueci de mencionar, estou estudando a sinstaxe AT&T e Intel.
No caso, para trabalhar com microcontroladores em circuitos eletrônicos eu não trabalharia com essas mesmas sintaxes Assembly certo? E acho que nem com a mesma estrutura de processador x86 =[

Então acho que vou continuar no nível mais baixo possível, me focar em C e continuar vendo assembly por diversão (diversão/masoquismo heheh)[/quote]

Assembly não é linguagem de programação, é linguagem de montagem. Você trabalha com os mnemônicos que estão gravados no micro. Isso muda de fabricante para fabricante. Um pic é diferente de um atmel e assim por diante.

É interessante aprender microcontroladores. Para quem desenvolce software é legal saber um pouco de eletrônica digital.

Eu fiz engenharia da computação, e engenharia vae te ajudar e muito,
pois nos 5 anos se vê muito componentes, criar circuitos,
organizar componentes para criar a sua própria lógica e depois no 4 ano
ir para microcontroladores e criar algo mais profissional.

Mas se prepare, pois para se trabalhar no ramo de automação industrial tem que
saber bastante calculo Integral, derivadas, séries de Fourier, Laplace
(laplace é a mais legal) e várias outras técnicas.

Por essa razão quem escolhe essa área de desenvolvimento ganha um salário
muito maior que a média das pessoas que escolhem a área de mais alto nivel.

Eu gosto dessa parte, microcontroladores, mas preferi agora no começo de minha carreira
focar mais na área de alto nivel.

[quote=johnny quest]Eu fiz engenharia da computação, e engenharia vae te ajudar e muito,
pois nos 5 anos se vê muito componentes, criar circuitos,
organizar componentes para criar a sua própria lógica e depois no 4 ano
ir para microcontroladores e criar algo mais profissional.

Mas se prepare, pois para se trabalhar no ramo de automação industrial tem que
saber bastante calculo Integral, derivadas, séries de Fourier, Laplace
(laplace é a mais legal) e várias outras técnicas.

Por essa razão quem escolhe essa área de desenvolvimento ganha um salário
muito maior que a média das pessoas que escolhem a área de mais alto nivel.

Eu gosto dessa parte, microcontroladores, mas preferi agora no começo de minha carreira
focar mais na área de alto nivel.[/quote]

Só corrigindo uma coisa. O nível do salário depende do know how e não do tipo de linguagem.

Com certeza.

[quote=johnny quest]você deveria procurar empregos na parte de automação industrial,
é onde você encontrará mais vagas, sendo que tais vagas, dependendo
do conhecimento e experiencia, podem ter um salário de dar inveja,
pois é muito muito dificil encontrar pessoas que gostam de baixo nivel.

[/quote]
O que tu quer dizer com “Automação Industrial”? Trabalho com isso, fiz quase toda faculdade de mecatrônica e sinceramente nunca necessitei no meu serviço fazer qualquer coisa em Assembly. Para tudo é usado algum CLP, normalmente programado em Ladder!

[quote=johnny quest]Eu fiz engenharia da computação, e engenharia vae te ajudar e muito,
pois nos 5 anos se vê muito componentes, criar circuitos,
organizar componentes para criar a sua própria lógica e depois no 4 ano
ir para microcontroladores e criar algo mais profissional.

Mas se prepare, pois para se trabalhar no ramo de automação industrial tem que
saber bastante calculo Integral, derivadas, séries de Fourier, Laplace
(laplace é a mais legal) e várias outras técnicas.

Por essa razão quem escolhe essa área de desenvolvimento ganha um salário
muito maior que a média das pessoas que escolhem a área de mais alto nivel.

Eu gosto dessa parte, microcontroladores, mas preferi agora no começo de minha carreira
focar mais na área de alto nivel.[/quote]

Ahn? Laplace? Nunca usei nada de Cálculo nessa aréa! Acho que você está confundindo um pouco as coisas!

Não conheço a sua realidade, mas pelo jeito você deve trabalhar num ramo bem especifico. Onde não precisa fazer cálculos
para ver quais são os melhores componentes para um cliente especifico. Não conheço a sua realidade mas pelo jeito já deve
receber isso pronto de outra pessoa, normalmente um engenheiro.

Eu falei sobre calculo integral, diferencial, séries, laplace porque é algo básico para se aprender Funções de Transferência,
que é algo muito utilizado ao se criar sistemas eletrônicos, onde se defini os parametros, componentes para que em uma determinada entrada
saia uma saída desejavel.

A partir de tudo isso é possivel definir o hardware necessário e utilizar o que é necessário para se resolver o problema do cliente.
Sim, CLP é o mais utilizado, mas é bom começar de mais baixo nivel para se aprender.

Não conheço como é a realidade sua, mas aqui os engenheiros planejam, fazem todos os calculos, criam a função de transferencia, e outras
tecnicas, e com isso definem quais componentes que podem resolver os problemas do cliente, e somente depois partem para algum CLP especifico.

Normalmente transformadas e séries são usadas para sinais. Ou luz no caso de imagens ou outro tipo de ondas(som), etc…

A função das transformadas é mudar o plano de referência. Em uma imagem ao invès de se analisar o plano espacial, podemos analisar pela frequência(o espectro luminoso).

Isso são ferramentas matemáticas.

Ex:

Não conheço a sua realidade, mas pelo jeito você deve trabalhar num ramo bem especifico. Onde não precisa fazer cálculos
para ver quais são os melhores componentes para um cliente especifico. Não conheço a sua realidade mas pelo jeito já deve
receber isso pronto de outra pessoa, normalmente um engenheiro.

Eu falei sobre calculo integral, diferencial, séries, laplace porque é algo básico para se aprender Funções de Transferência,
que é algo muito utilizado ao se criar sistemas eletrônicos, onde se defini os parametros, componentes para que em uma determinada entrada
saia uma saída desejavel.

A partir de tudo isso é possivel definir o hardware necessário e utilizar o que é necessário para se resolver o problema do cliente.
Sim, CLP é o mais utilizado, mas é bom começar de mais baixo nivel para se aprender.

Não conheço como é a realidade sua, mas aqui os engenheiros planejam, fazem todos os calculos, criam a função de transferencia, e outras
tecnicas, e com isso definem quais componentes que podem resolver os problemas do cliente, e somente depois partem para algum CLP especifico.[/quote]

Realmente eu vi isso na faculdade, mas nunca apliquei em nada!
Em que aréa específica você trabalha de automação? Eu trabalho desenvolvendo equipamentos. Desde um simples Poka Yoke até uma linha inteira, isso em conjunto com com outras pessoas claro.

[quote]Realmente eu vi isso na faculdade, mas nunca apliquei em nada!
Em que aréa específica você trabalha de automação? Eu trabalho desenvolvendo equipamentos. Desde um simples Poka Yoke até uma linha inteira, isso em conjunto com com outras pessoas claro.[/quote]

Então, atualmente eu não trabalho mais nessa área. Eu costumava meio que fazer um estágio(sem receber $$) dentro do laboratorio de elétrica,
mas tinha contato com vários engenheiros seniores que mostravam todo o processo, sendo que a própria faculdade criava
todo o seu próprio hardware e para clientes de fora e com isso aprendi bastante.

Mas hoje em dia estou em outra área, mexendo com JEE.

[quote=johnny quest][quote]Realmente eu vi isso na faculdade, mas nunca apliquei em nada!
Em que aréa específica você trabalha de automação? Eu trabalho desenvolvendo equipamentos. Desde um simples Poka Yoke até uma linha inteira, isso em conjunto com com outras pessoas claro.[/quote]

Então, atualmente eu não trabalho mais nessa área. Eu costumava meio que fazer um estágio(sem receber $$) dentro do laboratorio de elétrica,
mas tinha contato com vários engenheiros seniores que mostravam todo o processo, sendo que a própria faculdade criava
todo o seu próprio hardware e para clientes de fora e com isso aprendi bastante.

Mas hoje em dia estou em outra área, mexendo com JEE.[/quote]

Ah bom, ta explicado. Realmente só vi isso em uso universitário. Na prática nunca vi ninguém utilizar e olha que eu já vi uns projetos de linhas de montagem enormes!