People may like this discussion of the history of innovation. What caught my eye was the remark about the importance of providing learning environments where failure is safe (gymnast mats, for instance). It caused me to wonder what makes programming environments characteristically safe. Here are three attributes that I have identified:
- Strong type safety.
- Compile time vs. run time determination of semantics. Here, concepts like generic programming (templates) win out over dynamic programming (Ruby, Smalltalk).
- Clarity of syntax (having x=1 evaluate to TRUE, for instance, has caused many people to fail "unsafely").
Also interesting were the remarks about technological determinism. Here's a good example: at about 3:15 into Essential Windows Presentation Foundation, an architect of WPF fails to remember all seven core elements of the framework.