Teaching kids how to code isn't bringing programming to the masses. There's certainly little harm in replenishing or increasing our supply of Morlocks, but the true promise of computing, the reason we say we are living in the Information Age, means putting programming in the hands of lay folk, in forms ubiquitous and invisible. So far only spreadsheets have broken this barrier.
@fool for a while Hypercard did even better than spreadsheets, before Apple realized it threatened their control and killed it
local tech university functionary was quoted in the paper something to the effect that learning to program is of limited use to many since there are only so many programming jobs
to me, that's like saying few should study music or art or pursue sport since not everyone will get a job doing those, too
programming belongs amongst the liberal arts
@fool That's what python was for
@toast Attractive syntax and a big standard library doesn't make Python fundamentally different from other extreme-specialist tools. At least say LOGO or something.
Hot take: BASIC was not a mistake.
BASIC was fucking accessible. Commodore had it, the first PCs had it. It was easy to learn and universal.
Hell, all those crappy Visual Basic desktop programs were the proof that BASIC worked.
The implementation sucked, but it did more for giving computing to the masses than Linux with its complicated, incompatible, inaccessible languages and libraries. Y2K and it was still hard as fuck.
Learning Linux meant spending countless hours of debugging your keyboard drivers, mouse drivers, network drivers (the fucking network drivers) and if you got in early, even the video hardware. One bad config and your monitor would get fried. You fucking call that accessible???
Listen, kid, here's Visual basic, run the installer and play around with your forms.
IT FUCKING WORKED.
You know, maybe the time has come to admit that hiding computers’ complexity behind brightly coloured rectangles is not a good strategy and just teach Unix devops skills in high school. Make sure every graduate can provision a server and deploy a bunch of services on it. It’s no harder than fixing cars or sewing a T-shirt.
@suetanvil Neither colored rectangles nor sysadmin skills are the way forward, except for those who have already been, or are destined to be, inducted into the universe of specialists.
A computer is a machine that can perform arbitrary transformations on data, which is incredibly powerful. Most of the ways of programming those transformations suck so bad that mastering them is a primary specialization unto itself. Except in the laudable case of spreadsheets, programming means are separated from human ends.
@fool @suetanvil I think you have an important insight here: only spreadsheets connect the outcome (the behavior of a program) immediately to the action (programming). Spreadsheets show results immediately as you work, and the purpose of everything you’re doing is immediate.
Conventional programming involves a long chain of planning with little to no feedback. Just getting any meaningful output at all is often a milestone even in a small project.
So here's the thing. I think you're wrong. I hope you're right and I'm mostly just talking from my own gut reaction, but still.
Specifically, I'm talking about the idea that there exists software with the shallow learning curve of consumer applications but capable of granting users the power of steep-learning-curve programmable tools.
I mean, it's true that Excel is a powerful programming language and it's also true that people can just pick it up and start using but they generally use it as a 2-D word processor. People who do clever things with it (or even just mundane automation ) will have earlier sunk a lot of effort into learning to use it effectively. Is that effort less than it would take to learn (e.g.) Python and Jupyter notebooks?
Is HyperCard really easier to learn to use than Tcl/Tk?
Maybe, the current stack of shell + small tools + REPLs + scripting languages really is the most efficient way to harness the power of a computer.
In that case, the only way to democratize computing is to teach everyone how to use some reasonable subset of that stack.
The thing is, it's not really that hard. Mostly, people need to get past the intimidation of the command-line and learn the skill of effectively reading the manual. And, they have to be motivated to put in the effort.
@suetanvil I'm _totally_ on board with this idea. A text-mode shell and repl and scripting language is a totally reasonable way to operate a computer.
BUT not any shell or scripting language or package in the mainstream today. The supply-chain costs for maintaining such a computer are just too damn high.
In some ways I'm taking your idea further. Even shells today are too powerful, at the cost of security exposure. What else can we take out? At least for a while?
@suetanvil That's true *as long as the stack is stable.* People can learn to sew t-shirts because needles don't keep changing their shape and sharp-bit-count every couple of years.
People can provision a server and deploy services on it *as long as the operational burden afterwards is miniscule.* Can't keep being like, "oops, security patch, do over."
I work on reducing operational burden, primarily by being extremely parsimonious with dependencies: https://github.com/akkartik/mu
1. The principal skills this (ideally) teaches are i) gauging what the computer can do, ii) not being intimidated by the command line and iii) how to find and read documentation. All of that is evergreen.
2. No part of the modern stack is less than 25 years old. Nothing's changed except for control placement on the sewing machines.
The systems for easily keeping a server secure already exist, they're just geared at experts. But it's not hard to type 'apt dist-upgrade'.
@suetanvil @fool Ok, the disagreements are clearer now. IMO, status-quo thinking like "it's not hard to type apt dist-upgrade" and "no part of the modern stack is less than 25 years old" lacks nuance.
Last week I wrote a 20-line Python script very carefully to support Python 2 and 3. I found later I was using a function introduced in 3.5. Python 3.5 is less than 25 years old. I got it because I ran `apt dist-upgrade`. There's a tension here. Computers are _all about_ control placement.
I'm a professional programmer. I find managing a site burdensome. Subscribing to mailing lists, typing commands every week, wishing I could roll back, worrying that I might need to roll back. Is this security patch worth upgrading the whole computer for? These are non-trivial costs. It's obvious to me why lay folk don't take them on.
@fool there is a lot of discussion about UI in this discussion, but I don't think that's what's fundamentally important.
What is import is that the tools are close to, and able to powerfully manipulate, the data.
If the data is well represented in tables, and excel provides tools to work with that, people will learn excel to do so. If it comes in relational forms, people learn SQL in access (I've seen it - it starts with query wizards and then people dig into customising the generated queries, then move to writing them whole cloth).
Excel's dominance is mostly because so many different business domains are well represented as sheet tables and the tools provided are powerful at manipulating this format.
As soon as people need to write in an imperative style where they need to think about mechanical sequences of transformations, rather than computations of cells in place, things fall apart.
Once you have to parse and transform data before you can do your work, there is a hill forming that you must overcome before you can can enjoy the downhill roll into a good, effort-saving solution.
@fool I'd like to nominate Twine as well. It blew my mind to see someone praise it in a blog post for "not requiring code"... while illustrating an if-else construct. Changed my perspective.
@fool There are spreadsheets, there are also various clones of hypercard, and most importantly, there are things like twine, rpgmaker, 2nd life's scripting, etc. — turns out people have no problem learning programming when it does something else than just displaying stupid numbers.
@deshipu @fool as someone who is passionate enough about #highLevelProgramming #hlp to spend some years working on accessible models for #generalComputing platforms, boy do I have a lot to say on this topic. for one, there is a lot of noteworthy work in business automation. tools like airtable and Monday.com show that there is a market for this stuff, despite that these businesses are not trying help liberate The People from oppressive app stores.
@technomancy @fool This is true, and visual-first seems to be a winner.. but as @deshipu points out, even bare code appears to be OK and accessible as long as it's tied to a tangible output: lots of people have learned a "real" programming language from writing plugins or scripts for their favourite games. I imagine people are learning JS to extend Google Sheets (..ew) also. The pragmatic code-as-hack or code-as-extension draws ppl in.
@fool I'm not sure a lot of people know how to actually use those correctly.
@fool spreadsheets relate to programming as much as restaurants to cooking. We need to do better.
@oz a restaurateur should not disdain home cooking even though the tools are unsophisticated, the process is inefficient, and the outcomes are modest
@fool why does it have to be invisible?
(I'd suggest dbase and access did this too... And templates/macros in word...)
@feonixrift "Invisible" is an overstatement, but most users who program in spreadsheets don't think of what they're doing as "programming." it doesn't resemble the more intensive tasks that lifers like you or I do
there's still a lot of computer science going on under the hood and you can still fiddle with it like a specialist tool if you know where to look, but the path from writing the program to seeing its result need never expose the intermediate steps even a production-ready system
@fool Yes..! I bet folks who saw the rise of electricity thought we'd need to bury the world with electricians.
Probably many folks who saw "automobiles" take off had the same thought about car mechanics.
Kids should be encouraged to learn anything they enjoy, but once us old folks get over "the olden days before the Internet" we're going to realize that most people only need to know how to change a light-bulb and put gas in the tank.
@fool Not everyone is going to become a great novelist, but you won't get very far in a business environment without having first mastered the technology of writing.
The computer is, at this juncture, the ubiquitous tool of business and it will only become more so as time progresses. Being able to master that tool is important.
Engineering is it's own specialty. But being comfortable putting together a shell or simple script on the command line to automate the repetitive and boring tasks is well within the reach of anyone with a college or high school education.
There are so many who excel with just a little SQL knowledge. The ability to forgo the clumsy GUI, query the db directly vs needing to wait on Engineering to add some button for you to click...
What's that quote -- you either tell the computer what to do or the computer will tell you?
This Mastodon instance is for people interested in technology. Discussions aren't limited to technology, because tech folks shouldn't be limited to technology either!