Grazie a tutti per avermi chiarito le idee. In generale per programmare dei dispositivi embedded sono richieste conoscenze specifiche e piu' focalizzate sul dispositivo rispetto al programmare per PC. Ma in generale sono conoscenze che dipendono tantissimo dal contesto, proprio perchè il mondo embedded è estremamente variegato; quindi es: se programmi un PIC dovrai impararti il set delle istruzioni assembly, mentre se prendi una schedina Raspberry e ci installi Linux.. a quel punto diventa quasi come un PC e puoi sviluppare sopra il SO senza che quasi te ne accorgi che stai sviluppando per emebdded.
Oggi vedo che negli annunci di lavoro del settore "embedded" chiedono molto conoscenze dei microprocessori ARM; informandomi vedo che molti di questi hanno dei tool di sviluppo che rende possibile programmarle in C/C++, per altro alcune hanno processori e memorie che come prestazioni non sono molto lontani da quelli dei PC normali, per cui anche il discorso delle "risorse limitate" e le conoscenze particolari che tale situazioni renderebbe necessarie vale sporadicamente secondo me, idem per il discorso dei contesti "critici" che vanno trattati come situazioni molto molto particolari..
Perchè alla fin fine si tratta sembre di scrivere software no? Cioe' non è come ad esempio progettare dell'hardware, dove devi
applicare delle conoscenze particolari derivate dall'elettronica (calcolo dei valori delle resistenze per avere il guadagno giusto ecc.ecc) o mi sbaglio?
Quindi secondo me a meno che l'annuncio di lavoro non richieda conoscenze particolare (esempio : conoscenza dell'assembly o protocolli come potrebbe essere SPI o I2C) di fatto un programmatore C++ generico potrebbe andare benissimo per un progetto embedded a patto di lavorare focalizzandosi sulle specifiche del dispositivo, non è cosi'?