1 and 2 remind me of imperative and declarative programming languages (respectively) - telling your program how to do something versus merely telling it what to do. It's the difference between saying "x = 1" and telling your computer how to allocate sufficient memory for an integer, store that integer in said chunk of memory, and access it later.
And the first thing that comes to mind is that "you" can do declarative programming now, because someone in the past did all the imperative programming to enable it. Question is, what happens if the declarative fails? How easy is it to get at the imperative guts?
1 and 2 remind me of imperative and declarative programming languages (respectively) - telling your program how to do something versus merely telling it what to do. It's the difference between saying "x = 1" and telling your computer how to allocate sufficient memory for an integer, store that integer in said chunk of memory, and access it later.