If You're Not Writing a Program, Don't Use a Programming Language [video]
I wasn&#x27;t exposed to spreadsheets until a few years into college back around 1996 or 1997 maybe (I had been programming in C&#x2F;C++ for 7 or 8 years by then).  I wasn&#x27;t taught matrix math until pretty late in the curriculum, I want to say junior or senior year.  Also I was lucky to have a semester of Scheme but they were transitioning to teaching Java around the time I graduated (I don&#x27;t know if they ever switched back).  And this was for a computer engineering degree at one of the best state universities for engineering in the US.<p>Honestly I think it might be time to phase out teaching imperative and object-oriented programming.  Most of the grief in my career has come from them.  I don&#x27;t care if they&#x27;re where the jobs are.  The mental cost of tracing through highly-imperative code, especially the new implicit style of languages and frameworks like Ruby and AngularJS (which have logic flows having no obvious connection to one another, or transition through async handlers connected by a convention which isn&#x27;t immediately obvious to the developer) is so high that the underlying business logic is effectively obfuscated.<p>I think we should get back to fundamentals.  Maybe start with the shell and explain why separate address spaces connected by pipes are such a powerful abstraction, maybe touch on the Actor model, maybe show how spreadsheets and functional programming are equivalent, and how even written notation is superfluous.  Really focus on declarative programming and code as media, and how that made the web approachable by nontechnical folks before it was turned into single page application spaghetti.  There are so many examples from history of where better ways were found before the mainstream fell back into bad habits.