You have a product to build, this requires an embedded operating system (of course!) and applications/services - you have a choice of application development tools, languages and frameworks
- Assembler - small, fast, error prone, takes for ever to code - and looks stupid on a printout (only taking the first few characters on a page, but the comments can of course make up for that [you do comment your code, right?])
- C/C++ - relatively small, faster development than Assembler - still error prone, easy to make mistakes with pointers, object lifetimes etc...
- C/C++ with libraries (OWL/MFC/ATL/STL/WTL) - can still be relatively small (when dynamically linked), still faster than assembler, and perhaps faster than "pure" C/C++, but you have a framework to assist with common tasks (string, file, graphics)
- .NET/Java - binaries still small, large framework, memory leaks and object lifetimes are taken care of by the framework, great libraries to assist with graphics, files, XMLWS, database etc... - RAD !
The further down the list you get the faster the development becomes, you spend less time worrying about the core technologies your application uses (file access, XML parsing etc), but instead focus on gluing the various technologies together - you also put more trust in the underlying framework and the code that's been written by someone else - the same can also be true of the underlying embedded operating system - you *could* write your own operating system, you could take an existing operating system and write your own infrastructure technologies (TCP stack, MQ, database etc...), but that doesn't make any sense, you would be focusing on the infrastructure, not focusing on getting your device to market.
Here's the question - where is your trust level for application development frameworks and embedded operating systems ?