Even little nuggets from programming, gifted in the right way can radically change things for non-programmers. I introduced a friend to regular expressions and Textpad so he could cleanup the output from a news reporting system he used (excess line breaks, weird characters, that sort of thing). It turned a manual task that took him the bulk of his time into something that took seconds.
When I showed him a related tool that could hunt out and tag terms of interest using the same concept (phone numbers, email addresses, etc.) it completely changed his life. He ended up using those two little kernels of wisdom to mostly automate a previously entirely manual research process and now leads a team of 20 researchers in his field.
He's not a programmer or even a scripter, but he uses regexes pretty much every day in his work.
In other words, "Everyone can script", rather than "Everyone can program". Where by "script" I mean to write a program, but for ad hoc tasks, and on a relatively small scale.
I use the word "program" pretty loosely. To me, a script is a program.
But for what it's worth, I think a working knowledge of the gnu utilities is worth more than most programming languages to most people. (If you're on a system that supports *nix utilities.)
I know that a script is a program. That's why I defined “script” as “write a program […]”. I included my definition of “script” because I was worried about people misinterpreting me… but it seems people misinterpreted me anyway.
With my comment, I wasn’t trying to contradict your original comment. I was just trying to reword the concepts to be more specific. “Everyone can script” was meant to be a more specific version of “Everyone can program” that might convey the concept better to those who shared or at least understood my definition of “script”.
There is really no difference though. Whether you 'script' away a mundane task with AppleScript or an elaborate C 'program' you still wrote down a series of instructions that were run by a machine. That's the definition of programming in some dictionaries.
I didn’t mean that “script” was an alternative to “program”. I meant that it was a subset of “program”. I tried to convey that by defining “script” as “write a program […]”. So we already agree.
Historically there was a meaningful distinction between scripting and programming: A script is interpreted, so you trade off slow execution for no compilation. A program is compiled, so you get fast execution but slow compilation.
Today (as in 2001) both compilation and execution is so fast, for most use cases it doesn't really matter which you do. JITs further washes out the distinction.
Scripting, as I learned, is being able control a host program in not-so-trivial ways with an embedded programming language, where the host isn't really dedicated to running programs. Consider Lua embedded in World of Warcraft, JavaScript embedded in the browser or even mod_PHP for Apache.
I think that people are trying to coin separate terms to differentiate the amount of knowledge one needs to complete the task. E.g. writing some automation in Python is easier than writing the same automation in C due to a lack of needing to understand things like character arrays and malloc. In reality, it's all programming, just via different interfaces.
> Where by "script" I mean to write a program, but for ad hoc tasks, and on a relatively small scale.
By that, I meant that a “script” is a specific type of program. “Scripting” is a subset of “programming”. Any type of program is a “program”. To be a “script”, a program must be for an ad hoc (one-time) task, and small relative to other programs. At least, according to my idea of the definition – though it is unclear what the “official” definition is.