Für alles was wirklich auf unterster Ebene agiert ist C oder C++, je nach Objectorientierter Präferenz ganz nett. Sollte es für deine Geräte keine Treiber geben, wirst du wohl oder übel auch noch Assembler anschauen müssen.
Was für die Hardwarefreak kaum geht, ist Java. Das liegt eigentlich am Konzept, obwohl es viele native Implementierung für diverse Hardware ist, ist man immernoch an native implementierungen gebunden - die müssen dann wieder in den "niederen" Sprachen geschrieben sein.
Was ich auch nicht empfehlen würde wäre Pascal, imho veraltet dämlicher syntax, keine ordnetlichen IDEs und überhaupt hat mich mein Formale Sprachen dozent mit seiner häslichen pascal-like-notation voll auf den Pascal-hass-trip gebracht
Für alles höher angelegte (applikationsprogrammierung, plattformunabhängig) bin ich Java fan - es gibt fast alles schon als API, Java ist modern und unterstützt allen möglichen sche*ß wie beans, webservices, geile IDEs, tonnenweise bücher, dokus, tutorials, unterstützung im professionellen business sektor, netter syntax, innovative ideen - eigentlich alles was eine moderne programmmiersprache ausmacht.
von C# halte ich persönlich nciht so viel, da ich damit wieder plattormabhängig bin - in meiner Firma ist das indiskutabel.