Durante i miei studi, abbiamo usato C e VHDL, ma C era di gran lunga il linguaggio più usato. E il vantaggio dell'apprendimento C è ovviamente ovvio anche al di là della programmazione hardware. Quindi questo è quello che raccomando. Quando impari molto bene C, non dovresti avere problemi ad imparare Java e C ++ in seguito - si tratta solo di imparare gli aspetti OOP di entrambi, soprattutto. Dopo aver imparato C, avrai già una buona conoscenza dei principi fondamentali della programmazione.
E se ci si deve fidare dei nostri professori, la maggior parte dell'hardware embedded è ancora programmata con la semplice vecchia C, quindi dovrebbe essere più che sufficiente per fare un lavoro. Quindi puoi dirigerti verso sistemi più sofisticati ancora in C, o più moderni (e più rari, credi?) Programmando con C ++ e altri. La maggior parte dell'hardware embedded è così semplice che l'utilizzo di MCU a 32 bit sarebbe incredibilmente eccessivo e uno spreco di entrate e risorse.
Ma ovviamente dipende dal tuo interesse. Se vuoi programmare hardware moderno, come GPU, controller SSD e simili, allora C + + potrebbe avviarsi più vicino, anche se Assembly è più probabile quello che userai, a seconda di quanto vicino al "core" si otterrà con l'hardware .
Come per Java, C ++ e simili, forse l'hardware multimediale (lettori DVD / BluRay, TV moderne, ecc.) è il campo che usa quelle lingue.