I find it weird to say that Mac have failed at programming, given how wildly popular they are among developers. (Like, in 2005, the legendary “Blog in 15 minute” video of Ruby on Rail was recorded on a Mac). But I get the gist of the argument : Mac did not make programming easily grokked by amateur, unlike in the other mentioned domain.
Honestly, I’d say the best thing yet that allow people to tap into using computer for computation without programming is the good old spreadsheet. Mac got spreadsheet not long after were invented, so I’d say they certainly did participate in bringing that kind of programming to the mass. In that sense, I disagree with the author premise, though only for a certain way of defining “programming”.
For “real” programming, the problem I’d say, is that most attempt at creating simplification seems focus on not having to write code as text. And the only thing this can only achieve is that you don’t have to master a syntax. The thing about the syntax is that, yes, it is a hurdle at first, but you get over it rather quickly, and IDE can help so much with it that in practice, forgetting a semi colon is a rather infrequent problem.
Having to understand how loop, variable, array, etc work together, this is what is really hard to master. You can’t really make that any easier without making it, well, not programming anymore. Our current tooling, sadly, can’t really handle that for us. I would go so far as to say that this “Essential complexity” that can’t be removed. No matter if you drag a if box or if you type it by hand, your main problem is that the condition is supposed to be true, but it is false when you run, and you don’t know why.
I find it weird to say that Mac have failed at programming, given how wildly popular they are among developers.
I think that’s more due to how it’s (perceived to be) “Unix with a sane UI” (and rather sturdy and reasonably beefy machines), which only makes sense if you’re already a programmer.
For years the StackOverflow survey showed it’s about ⅓ each Windows, macOS, Linux. If anything Windows is wildly unpopular compared to mainstream usage & Linux numbers ballooning from 3% to numbers in the 30s is more significant (with average user usage of macOS around 20% worldwide & 30% in North America).
The thing about the syntax is that, yes, it is a hurdle at first, but you get over it rather quickly, and IDE can help so much with it that in practice, forgetting a semi colon is a rather infrequent problem.
I have been saying it for a long time, but we’ve already entered the age of visual programming through IDEs for a long time now - you don’t have to drag’n’drop expressions for that.
I believe I recall an assessment (perhaps from harvard.edu?) that the two hardest concepts for people taking an introductory CS class are variables and pointers.
There was a comment from someone at MIT a few years back that they want first year computer science students to understand two concepts: induction and indirection (recursion and pointers)l everything else is easy after that. Variables are somewhat confusing because the name of the thing is not the thing.
Playgrounds is one of the most innovative (and mainstream and polished) ways to onboard people onto a programming language bar none.
Quartz Composer is not even mentioned there (though another data flow language is) which had an immense impact on artists everywhere only to be supplanted by Max.
Shortcuts is programming and has massive adoption. If that isn’t “bringing programming to the people”, I don’t know what is.
Lots of older mac users also remember AppleScript and how it was prevalent in lots of non-developer shops all around the world. I still think it had a larger userbase than shortcuts/automator (not in absolute numbers but percentage of users)
It was a lot less the right thing when OS X came along with preemptive multitasking. AppleScript was written for a system with cooperative multitasking where you could send a bunch of commands to the target and everything would be consistent. On OS X, the application kept running while the script ran and so you could have a document go away while you were doing things with it. AppleScript is a distributed systems programming language without any tools to avoid race conditions or to ensure consistency. Exposing the model objects to scripting is a good idea but doing it by processing one command per run loop iteration, interleaved with other messages, is not the right way of doing it.
Interesting, this obviously makes perfect sense, and I’m annoyed at myself for being annoyed without doing the research. I think I’m irritated because the idea of it – exposing everything the software does interactively to a programmatic interface – is just .. it’s just correct.
Oh, the core idea is definitely right, but it’s hard to do right. Ideally you want a transactional interface where you send a closure to a set of applications and it runs with exclusive access to them. Hmm, the behaviour-oriented concurrency model from our latest paper is actually a perfect fit here…
I read the OP as arguing that the Mac hasn’t done for programming what it has done for the other fields; serve as an engine of democratization (for better or worse) of difficult, high-skill tasks.
This feels unfair to Hypercard since many cool things were, in fact, written in it, and many people did, in fact, start learning to code because of it. It’s like saying Logo was a worthless language because kids learned functions and recursion but nobody ever wrote a spreadsheet program in it.
What would count as “bringing programming to the people”? Without defining a success condition, it’s difficult to judge whether an effort failed, or whether the effort was even aimed at achieving that particular condition.
Does Windows come with something like Shortcuts? AFAIK Microsoft haven’t shipped any programming-like tools with their OS:es since DOS, but perhaps I’ve missed something?
Unless something has changed recently, Window Scripting Host has been a thing for decades, supporting both VBScript and JScript (MS’s JavaScript dialect).
I like AppleScript but I think calling it “easy to use” is a bit of a stretch. Each application could define their own syntax. In 2005, I had to write a bit of AppleScript to help install a mail proxy for a commercial spam filter; each mail client that supported AppleScript had a completely different dictionary for doing the same stuff. It was not always very obvious at all what syntax was the right one to use; you would click compile and then have a hard time figuring out what you had done wrong. There was also no real debugging. You just ran it and if it did what you wanted, great. Since even then AppleScript wasn’t widely used, applications would have bugs, or bits of the dictionary didn’t work, or there would be no obvious way of creating new items (accounts or whatever the app was concerned with).
I was also befuddled when Automator came out, but since I’m a programmer I never was really the target audience for these kinds of things. I had never even heard of Shortcuts before reading this article. It looks pretty neat, but again, no real way to debug things (I made a two-step shortcut that just said “Shortcut failed to execute”). I am glad that they haven’t given up on these technologies but I wonder what is so much better about Shortcuts over Automator that caused them to deprecate one and buy the other.
AppleScript is the only read-only language I’ve ever encountered, the opposite of Perl. I’ve never come across AppleScript written by other people that I found hard to understand, even before I learned any of the language. In contrast, writing a new AppleScript has always been a struggle for me.
I find it weird to say that Mac have failed at programming, given how wildly popular they are among developers. (Like, in 2005, the legendary “Blog in 15 minute” video of Ruby on Rail was recorded on a Mac). But I get the gist of the argument : Mac did not make programming easily grokked by amateur, unlike in the other mentioned domain.
Honestly, I’d say the best thing yet that allow people to tap into using computer for computation without programming is the good old spreadsheet. Mac got spreadsheet not long after were invented, so I’d say they certainly did participate in bringing that kind of programming to the mass. In that sense, I disagree with the author premise, though only for a certain way of defining “programming”.
For “real” programming, the problem I’d say, is that most attempt at creating simplification seems focus on not having to write code as text. And the only thing this can only achieve is that you don’t have to master a syntax. The thing about the syntax is that, yes, it is a hurdle at first, but you get over it rather quickly, and IDE can help so much with it that in practice, forgetting a semi colon is a rather infrequent problem.
Having to understand how loop, variable, array, etc work together, this is what is really hard to master. You can’t really make that any easier without making it, well, not programming anymore. Our current tooling, sadly, can’t really handle that for us. I would go so far as to say that this “Essential complexity” that can’t be removed. No matter if you drag a
if
box or if you type it by hand, your main problem is that the condition is supposed to be true, but it is false when you run, and you don’t know why.I think that’s more due to how it’s (perceived to be) “Unix with a sane UI” (and rather sturdy and reasonably beefy machines), which only makes sense if you’re already a programmer.
Right, Macs weren’t popular at all with developers until X.
For years the StackOverflow survey showed it’s about ⅓ each Windows, macOS, Linux. If anything Windows is wildly unpopular compared to mainstream usage & Linux numbers ballooning from 3% to numbers in the 30s is more significant (with average user usage of macOS around 20% worldwide & 30% in North America).
I agree.
I have been saying it for a long time, but we’ve already entered the age of visual programming through IDEs for a long time now - you don’t have to drag’n’drop expressions for that.
I believe I recall an assessment (perhaps from harvard.edu?) that the two hardest concepts for people taking an introductory CS class are variables and pointers.
There was a comment from someone at MIT a few years back that they want first year computer science students to understand two concepts: induction and indirection (recursion and pointers)l everything else is easy after that. Variables are somewhat confusing because the name of the thing is not the thing.
This is pretty outrageous.
Lots of older mac users also remember AppleScript and how it was prevalent in lots of non-developer shops all around the world. I still think it had a larger userbase than shortcuts/automator (not in absolute numbers but percentage of users)
AppleScript was so obviously the right thing that I’m unsurprised that today’s Apple is trying to kill it.
It was a lot less the right thing when OS X came along with preemptive multitasking. AppleScript was written for a system with cooperative multitasking where you could send a bunch of commands to the target and everything would be consistent. On OS X, the application kept running while the script ran and so you could have a document go away while you were doing things with it. AppleScript is a distributed systems programming language without any tools to avoid race conditions or to ensure consistency. Exposing the model objects to scripting is a good idea but doing it by processing one command per run loop iteration, interleaved with other messages, is not the right way of doing it.
Interesting, this obviously makes perfect sense, and I’m annoyed at myself for being annoyed without doing the research. I think I’m irritated because the idea of it – exposing everything the software does interactively to a programmatic interface – is just .. it’s just correct.
Oh, the core idea is definitely right, but it’s hard to do right. Ideally you want a transactional interface where you send a closure to a set of applications and it runs with exclusive access to them. Hmm, the behaviour-oriented concurrency model from our latest paper is actually a perfect fit here…
And yet the most common DSL known around the world is probably Excel.
I read the OP as arguing that the Mac hasn’t done for programming what it has done for the other fields; serve as an engine of democratization (for better or worse) of difficult, high-skill tasks.
This feels unfair to Hypercard since many cool things were, in fact, written in it, and many people did, in fact, start learning to code because of it. It’s like saying Logo was a worthless language because kids learned functions and recursion but nobody ever wrote a spreadsheet program in it.
What would count as “bringing programming to the people”? Without defining a success condition, it’s difficult to judge whether an effort failed, or whether the effort was even aimed at achieving that particular condition.
Why are Shortcuts dated ending in 2021? Are they deprecated now?
Probably because it’s when it appeared in macOS, after starting on iOS.
Does Windows come with something like Shortcuts? AFAIK Microsoft haven’t shipped any programming-like tools with their OS:es since DOS, but perhaps I’ve missed something?
Unless something has changed recently, Window Scripting Host has been a thing for decades, supporting both VBScript and JScript (MS’s JavaScript dialect).
I mean, it’s not well advertised, but it’s there.
I like AppleScript but I think calling it “easy to use” is a bit of a stretch. Each application could define their own syntax. In 2005, I had to write a bit of AppleScript to help install a mail proxy for a commercial spam filter; each mail client that supported AppleScript had a completely different dictionary for doing the same stuff. It was not always very obvious at all what syntax was the right one to use; you would click compile and then have a hard time figuring out what you had done wrong. There was also no real debugging. You just ran it and if it did what you wanted, great. Since even then AppleScript wasn’t widely used, applications would have bugs, or bits of the dictionary didn’t work, or there would be no obvious way of creating new items (accounts or whatever the app was concerned with).
I was also befuddled when Automator came out, but since I’m a programmer I never was really the target audience for these kinds of things. I had never even heard of Shortcuts before reading this article. It looks pretty neat, but again, no real way to debug things (I made a two-step shortcut that just said “Shortcut failed to execute”). I am glad that they haven’t given up on these technologies but I wonder what is so much better about Shortcuts over Automator that caused them to deprecate one and buy the other.
AppleScript is the only read-only language I’ve ever encountered, the opposite of Perl. I’ve never come across AppleScript written by other people that I found hard to understand, even before I learned any of the language. In contrast, writing a new AppleScript has always been a struggle for me.