Yes, that's all true. The speed of getting something going is important for a beginner. But if the foundation is "sandy" then it can be necessary and difficult to get beginners (and managers) to appreciate the need to progress to tools with sounder foundations.
The old time "sandy" tool was Basic. While Python is much better than Basic, it is still "sandy" when it comes to embedded real time applications.
I wish more people took that attitude!
Agreed. The key difference is that with simple-but-unreliable tools it is possible to conceive that mortals can /understand/ the tools limitations, and know when/where the tool is failing.
That simply doesn't happen with modern tools; even the world experts don't understand their complexity! Seriously.
Consider C++. The *design committee* refused to believe C++ templates formed a Turing-complete language inside C++. They were forced to recant when shown a correct valid C++ program that never completed compilation - because, during compilation the compiler was (slowly) emitting the sequence of prime numbers! What chance have mere mortal developers got in the face of that complexity.
Another example is that C/C++ is routinely used to develop multi threaded code, e.g. using PThreads. That's despite C/C++ specifically being unable to guarantee correct operation on modern machines! Most developers are blissfully unaware of (my *emphasis*):
Threads Cannot be Implemented as a Library Hans-J. Boehm HP Laboratories Palo Alto November 12, 2004 * In many environments, multi-threaded code is written in a language that was originally designed without thread support (e.g. C), to which a library of threading primitives was subsequently added. There appears to be a general understanding that this is not the right approach. We provide specific arguments that a pure library approach, in which the compiler is designed independently of threading issues, cannot guarantee correctness of the resulting code. We first review why the approach *almost* works, and then examine some of the *surprising behavior* it may entail. We further illustrate that there are very simple cases in which a pure library-based approach seems
*incapable of expressing* an efficient parallel algorithm. Our discussion takes place in the context of C with Pthreads, since it is commonly used, reasonably well specified, and does not attempt to ensure type-safety, which would entail even stronger constraints. The issues we raise are not specific to that context.There are always crap instantiations of tools, but they can be avoided. I'm more concerned about tools where the specification prevents good and safe tools.
Lucky you -- I think! I've never been convinced of the wisdom of mixing work and home life, and family businesses seem to be the source material for reality television :)