Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

LeoL

Sistemas Embarcados

Mensagens Recomendadas

LeoL

Boas pessoal :)

Sou novo aqui no fórum e gostava de fazr uma pergunta :)

Eu estou a estudar Engenharia Electrotécnica e Computadores, e no próximo ano início o meu mestrado.

Estou a pensar em seguir sistemas embarcados. Porque é a junção de hardware e software. O que me permite ter um amplo conhecimento em ambas as áreas :)

Mas neste verão estive a aprender php e estive a ler sobre aplicações Android, e fiquei curioso sobre o assunto, e sobre a programação em mais alto nível. O que me fez considerar a minha escolha de mestrado.

 

Na vossa opinião, acham que, formando-me em sistemas embarcados acham que tenho todas as bases necessárias para mais tarde desenvolver software de maior complexidade e de maior nível? :) por exemplo sites, ou quem sabe até jogos? Ou quem sabe computação gráfica ;)

 

Acham que fico, de alguma forma limitado a programação de baixo/médio nível?

Eu aprendi C, C++, assembly e agir estou a dar MySQL.

Por favor, digam qualquer coisa, principalmente se forem da área da informática :)

obrigado pessoal!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Boas.

Acho que ficas com uma visão mais completa e coerente. Farto-me de ver "programadores drag-n-drop", que só sabem "programar com o rato", fazer copy-paste de snippets do Google sem terem qualquer noção do que estão a fazer ou de como será o resultado ao nível da interação software-hardware.
A bem da verdade, a larga maioria das organizações não estão muito interessadas nisso, e como tal, qualquer "programador drag-n-drop" serve, razão pela qual a sua proliferação é tão grande.

No entanto, existe o outro lado da questão. Essa malta nunca terá hipótese de construir uma placa gráfica, um SO para um sistema embebido, um driver para um SO, etc.. Ou seja, são cada vez menos as pessoas com este tipo de especialização, o que quer dizer que essa mais valia poderá ser catapultada para uma profissão mais interessante, em particular a nível de satisfação pessoal/profissional e financeira.

Não há problema em ser-se um "programador drag-n-drop", mas, profissionalmente, prefiro trabalhar com pessoas que tenham um leque de conhecimento mais alargado e que não se atrapalhem quando lhe aparece um erro vindo do sistema e para o qual não encontram nada no Google. Têm know-how suficiente para compreender o que se passa "nos bastidores" e assim raciocionar sobre a causa do problemna.

O reverso da medalha de um perfil desse tipo é precisamente o que referi anteriormente, o mercado pede muito mais "programadores drag-n-drop" do que especialistas, e isso pode ser, por vezes, frustrante. Não porque não saibas C# ou PHP (com o know-how que tens aprendes isso numa semana) mas porque percebes que sabes e podes fazer muito mais, só que não há oportunidade.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LeoL
5 horas atrás, M6 disse:

Boas.

Acho que ficas com uma visão mais completa e coerente. Farto-me de ver "programadores drag-n-drop", que só sabem "programar com o rato", fazer copy-paste de snippets do Google sem terem qualquer noção do que estão a fazer ou de como será o resultado ao nível da interação software-hardware.
A bem da verdade, a larga maioria das organizações não estão muito interessadas nisso, e como tal, qualquer "programador drag-n-drop" serve, razão pela qual a sua proliferação é tão grande.

No entanto, existe o outro lado da questão. Essa malta nunca terá hipótese de construir uma placa gráfica, um SO para um sistema embebido, um driver para um SO, etc.. Ou seja, são cada vez menos as pessoas com este tipo de especialização, o que quer dizer que essa mais valia poderá ser catapultada para uma profissão mais interessante, em particular a nível de satisfação pessoal/profissional e financeira.

Não há problema em ser-se um "programador drag-n-drop", mas, profissionalmente, prefiro trabalhar com pessoas que tenham um leque de conhecimento mais alargado e que não se atrapalhem quando lhe aparece um erro vindo do sistema e para o qual não encontram nada no Google. Têm know-how suficiente para compreender o que se passa "nos bastidores" e assim raciocionar sobre a causa do problemna.

O reverso da medalha de um perfil desse tipo é precisamente o que referi anteriormente, o mercado pede muito mais "programadores drag-n-drop" do que especialistas, e isso pode ser, por vezes, frustrante. Não porque não saibas C# ou PHP (com o know-how que tens aprendes isso numa semana) mas porque percebes que sabes e podes fazer muito mais, só que não há oportunidade.

Obrigado pela resposta!
Exactamente, eu compreendo tudo aquilo que me explicou! :)

Acho que a minha maior preocupação é ficar "limitado" a programar em low-level. Gostava de ter todas as bases e toda a capacidade para me ligar a projectos de high level e cuja a complexidade seja superior. Não gostava que uma coisa impedisse a outra.
Acha que estou no bom caminho, ou acha que tirando mestrado em sistemas embarcados, estou "destinado" é a programar hardware e ponto final? :cheesygrin:

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Não penses que por estares a programar em low-level ficas limitado ou que o que se faz em high-level é de complexidade superior. Podes ter essa visão porque o low-level é a tua zona de conforto e o high-level é-te desconhecido, mas se pensares bem, a larga maioria dos programadores não é capaz de desenvolver uma placa de circuito integrado e programá-la, até mesmo programá-la é algo que apenas uns poucos fazem.

Basta pensares no que é mais simples: fazeres uma box para TV digital (hardware e software) ou implementares um algoritmo de uma rede neuronal numa aplicação em Java ou C#? A resposta não é clara pois nem sequer é totalmente comparável, são desafios diferentes. No entanto há duas coisas que se compreende de imediato aqui: 

  1. o primeiro requer um leque de conhecimento muito mais abrangente e de compreensão de integração de componentes físicos e lógicos, e
  2. em última instância o segundo pode ser feito por quem sabe programar no primeiro, embora dificilmente seja uma primeira escolha por quem necessita do algoritmo.

Quanto à resposta se estás no bom caminho, bem, isso só tu podes responder. Estou apenas a mostrar-te que há diferenças e que cada uma das escolhas implica limitações, abrir de umas portas e fechar de outras.
O que é importante é que faças a tua escolha em consciência.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LeoL
7 horas atrás, M6 disse:

Não penses que por estares a programar em low-level ficas limitado ou que o que se faz em high-level é de complexidade superior. Podes ter essa visão porque o low-level é a tua zona de conforto e o high-level é-te desconhecido, mas se pensares bem, a larga maioria dos programadores não é capaz de desenvolver uma placa de circuito integrado e programá-la, até mesmo programá-la é algo que apenas uns poucos fazem.

Basta pensares no que é mais simples: fazeres uma box para TV digital (hardware e software) ou implementares um algoritmo de uma rede neuronal numa aplicação em Java ou C#? A resposta não é clara pois nem sequer é totalmente comparável, são desafios diferentes. No entanto há duas coisas que se compreende de imediato aqui: 

  1. o primeiro requer um leque de conhecimento muito mais abrangente e de compreensão de integração de componentes físicos e lógicos, e
  2. em última instância o segundo pode ser feito por quem sabe programar no primeiro, embora dificilmente seja uma primeira escolha por quem necessita do algoritmo.

Quanto à resposta se estás no bom caminho, bem, isso só tu podes responder. Estou apenas a mostrar-te que há diferenças e que cada uma das escolhas implica limitações, abrir de umas portas e fechar de outras.
O que é importante é que faças a tua escolha em consciência.

Percebo perfeitamente :)
A ideia de seguir o caminho de sistemas embarcados até é mais a de ter um leque de conhecimento maior.
Porque, no geral, acho que até prefiro programar num nível mais alto.

Sendo assim, acho que vou apontar mesmo para esta especialização de mestrado :)

Se tiver alguma dica sobre quais as skills que eu deva ter, agradecia imenso. E já agora, gostava também de saber algumas opções no que toca ao emprego com sistemas embarcados. Que tipo de trabalho é que um programador pode fazer?

Pode por exemplo, estar relacionado com robótica, com drones, com carros? :)
Embora seja algo para o qual tenha uma ideia de seguir, é ainda um mundo desconhecido... Qualquer dica ou insight sobre isto, ia ajudar-me imenso!
Obrigado :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Boas.

Sou da opinião, e isto é algo muito pessoal, que o mestrado já deve ser algo que vai ao encontro daquilo que tu gostas de fazer. Dado que já tens bases da licenciatura (onde geralmente existe um curriculum pré-definido e pouco flexível), o mestrado é a tal especialização onde já é existe um grau de flexibilidade interessante para que as escolhas sejam feitas mediante os gostos e interesses de cada um.

Quanto às saídas profissionais, hoje em dia estamos a assistir a uma boom muito grande neste tipo de sistemas (depois de uns anos valentes com muito pouco interesse). O sucesso de projetos como Arduino, Resp Pi, FGPA, etc. vem provar isso mesmo, até os curiosos investem nisto como hobby. Daqui para uma coisa séria, temos hoje (como referiste) o carros de condução autónoma e os drones, mas temos também o IoT, os smartphones que são cada vez mais "smart" (embora eu os veja como mais intrusivos e não "smart", mas isso é algo pessoal), a miniaturização das coisas parece estar de novo na berra, colocar o telemovel num relógio de pulso, colocar o PC num smartphone, etc. e imensos projetos interessantes em crowdfunding, routers wifi na rede Tor (infelizmente cancelado), ar condicionado portátil controlado pelo telemóvel, dispositivos para encontrar objetos perdidos, consolas retro, sistemas de comando e controlo (domótica), etc..

O que estou aqui a dizer é que vejo essa área com bastante futuro hoje em dia. Estamos a assistir a um crescimento muito interessante em várias áreas onde compreender a ligação entre hardware e software é uma mais valia.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bubulindo

Não estou com muito tempo para expandir na resposta... mas eu foquei-me em sistemas embebidos nas optativas da Universidade e existem algumas coisas que se calhar dão jeito teres em conta.

Eu diria que alguém que programa uma aplicação para a qual não pode adicionar RAM e apenas tem kB e não MB é bom programador. Quantas vezes não vi programadores a resolver problemas adicionando RAM ao computador porque não percebiam onde estava o erro... não que seja a norma, mas já vi acontecer.

Outra coisa que há 10 anos reparei foi que existia muito pouco mercado para alguém que se focasse nisso... muito pouco mesmo e o que havia era muito mal agradecido daí ter abandonado essa área. Dito isto... hoje poderia estar um pouco melhor porque oportunidades para alguém experiente nessa área é o que não falta no UK.

Isto vai desde dispositivos móveis, boxes para a TV cabo, dispositivos médicos e até robots para serem usados em armazéns automáticos.

Ahh, eu aprendi PHP, PostgreSQL, javascript, VB, matlab e mais linguagens na Universidade... logo duvido que te coloquem limites ao que podes fazer, até porque a maior parte dos sistemas embebidos vai necessitar dum interface com alguma coisa.

  • Voto 1

include <ai se te avio>

Mãe () {

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
LeoL

Obrigado a ambos pelas respostas!

Estou a ficar com uma melhor noção de que as coisas não são black&white (ou 0 e 1 :D ) como eu estava a pensar.
Pelo que estou a perceber, o curso não limita as futuras opções. Estou a interpretar as vossas mensagens como a ideia de que o mundo do trabalho vai muito além do curso, e tendo as bases de determinado assunto, talvez seja fácil mergulhar nisso mais tarde.
E isso para mim é muito bom, porque como já referi em cima, também gostava de trabalhar em high level, por exemplo em jogos. Mas sinto que esta especialidade me daria um leque enorme de conhecimentos que até nem muitas pessoas têm. E depois, PENSO EU, que nada me impede de perseguir um ramo de high level. À medida que as coisas vão avançando eu percebo que programar um sistema embarcado tem muito que se lhe diga. É preciso ter um conhecimento muito profundo da máquina e dos registos, memória, mapeamento... etc...
E quando penso nisto tudo, comparado com fazer um programa em C/C++ compreendo que este segundo, me seria mais fácil, mais intuitivo e acima de tudo, não teria de me preocupar com "mais nada" a não ser com a lógica do programa. Por isso, parto deste princípio para achar que terei todas as possibilidades de perseguir um ramo em high level (jogos, por exemplo), no futuro. Depois de programar um micro-controlador, tudo parece mais fácil.
Mas claro, eu sei que a minha visão no que toca a tudo isto é muito mais embrionária do que a vossa, daí gostar de ouvir as vossas opiniões :)

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bubulindo

Hoje em dia muita da programação embebida vai envolver um sistema operativo. Pode não ser Windows ou Linux (tipo Debian ou Red Hat), mas vai ter um sistema operativo como VxWorks, FreeRTOS, etc...

Nota que além da programação vais ter de saber electricidade e electrónica... e mais importante de tudo, o objectivo dum curso de engenharia não é ensinar-te a programar em C ou Java ou a desenhar um sistema embebido. A mais valia dum curso de engenharia é ensinar-te a pensar por ti e a pesquisar a informação que precisas de forma eficiente para resolver o problema que tens em mãos.


include <ai se te avio>

Mãe () {

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.