The embedded developers are out there, just go to uProcessor forums, These are all the different people that may be the embedded developers of tomorrow. Not many people want to program in Assembler/C anymore, its much easier to use Perl/Ruby/Java/C#...(insert abstracted language here) that takes all the Hardware out of the picture and just leaves the software problems at hand. In a sense why would any developer(software) want to have to deal with the low level mechanics/Memory management/Registers... anyway when most platforms have a high level language that lets them abstract the hardware so They don't have to work with it. Its much easier to say Vector myVector = new Vector() than to try and figure out how much memory they are going to need for something, then allocate it on the stack, then use pointers null characters and other low level "voodoo". And as for colleges teaching about infinite memory and cpu cycles, why not. I'm not saying you shouldn't be aware of the limitations and advantages of your hardware platform, but the computer industry has made such leaps and bounds as far as hardware is concerned every year that its not easy to pick what constraints you should conform to. in the 90's 4Gigs of ram was unheard of for a end user's PC, even a power user of any sorts and was most likely limited to mainframes if even they had that much. The embedded community is pretty much the same way, why try and write your stuff and cram it into a 8 bit platform when you can have dual Arm cores with media processing capabilities in hardware. And hell even some GPS chipsets have a python interface in them! and Java runs on most embedded platforms now too. it seems to me, we carry in our pockets the technology of 5-10 years ago. 400Mhz X-Scale processors, Multi processor embedded devices. that being said, Imagine what you could process on an AMD64X2 machine/Core2 Duo if you had no OS overhead and were writing all of your software in Assembly.
Well a lil off topic, oh well, could have been worse :)