Il problema di tutti i linguaggi è che senza compilatore specifico non si và da nessuna parte. E per Modula 2 non credo esista un compilatore per i microcontrollori AVR.
Sul piano della didattica sono d'accordo con te; ovvero sarebbe necessario un approccio più schematico nella programmazione, soprattutto per chi si affaccia a questa per la prima vota: è quello che il TeamArduino sta studiando proprio in questo periodo.
Se non sei stato all'Arducamp o se non hai guardato il filmato della presentazione (
http://arduino.tv/v.html), sappi che che stanno sviluppando un progetto che prevede la creazione di un'interfaccia a blocchi per la programmazione dell'Arduino tramite IDE, come quella dei Lego MindStorm

Il progetto, a quanto o capito, è in alpha, o beta privata, e a settembre, o giù di lì, sarà disponibile come beta pubblica.
Io non voglio il giocattolo per far lampeggiare un led, ho la zucca e la voglio fare funzionare. È evidente che i sistemi simil lego ti portano lonato dall'hardware con tutto ciò che ne consegue, al momento io mi tengo caro il mio C e le sue strafottenze.
Diverso è il discorso per un nuovo linguaggio di programmazione che offra più possibilita dal punto di vista del code design, perchè diciamocelo il C non offre nulla in merito, ancora ancora il C++ ha qualche chance, ma si tratta sempre di un linguaggio general purpose. C'è un progetto che si è arenato che vedeva riuniti i produttori di alcuni microcontroller device che volevano un C++ specifico per le applicazioni embedded, ma come ho detto si è arenato o almeno io non riesco a trovarne traccia.
Benvenga il modula 2 3 4 ecc, c'è appunto da vedere cosa offre e come usarlo attraverso un compilatore possibilimente Open Source.
Comunque di recento mi è arrivato questo libro
http://books.google.it/books?id=UnpIKZmodSAC&pg=PA308&dq=design+pattern+C%2B%2B&hl=it&sa=X&ei=JGeTT8KdL8XP4QT1w8TQDw&ved=0CDkQuwUwATha#v=onepage&q=design%20pattern%20C%2B%2B&f=falseE devo dire che c'è modo e modo di usare il C, resta sempre il fatto che non è il modo ideale ma è già qualcosa in più.
Il linguaggio ideale sarebbe quello che ti permette di avere efficienza di esecuzione e ti permette di scrivere in modo leggibile ed ordinato oltre che sicuro. Con il C si è costretti ad implementare le macchine a stati, o la queue, ecc che sono tutti problemi implementativi che ti allontano dall'obbiettivo principale che poi sarebbe la funzionalità dell'applicazione.
Insomma il C e quello che è, e per il momento ce lo dobbiamo tenere stretto, perchè non c'è altro che permetta prestazioni a run-time equiparabili.
Alla fine +1 per il modula o qualsiasi altro linguaggio a venire.
Ciao.