I know I've said this before in different terms, but David Graeber has taught me a better way to think about it.
-
I know I've said this before in different terms, but David Graeber has taught me a better way to think about it. In Pirate Enlightenment he says that the Malagasy always avoided having a class that specialized in violence, because they would tend to seize power. That's where we went wrong with computers: having a class that specializes in programming them. That gives them enormous power, in particular it gives those who control the means of distribution of those "applications" the ability to capture nearly all of the extra value computers enable to be produced.
I've also mentioned before that TRON has had way more influence on me than seems reasonable for such a silly inconsequential film. It's because I saw it at a very impressionable age, 8. In TRON, the programs are played by the same actors as the *users* who created them. Not programmers. That word is never used in the film. Users.
Which in 1982 was how computers worked. There wasn't a huge software market. There certainly weren't any app stores. Personal computers booted directly into a programming environment for a language that was intended for people who had no experience with computers. Mainframes and minicomputers would typically have all the tools to program them available to every user.
And before that, programming was the *only* way to interact with a computer. You fed it a stack of cards with the program and the data, and you got back a printout. To the extent there were specialists, they were the people punching the cards, who were almost entirely women. Programming was generally looked down upon as a menial task.
Imagine this as an alternate world: there are no software companies. The only specialists are the ones building things like compilers, and they work directly for the people who make the computers. There are no app stores, just places where people share and talk about programs and help other people come up with their own programs. All computers come with all the tools their users need to make them do what they want, and any they don't come with can be downloaded for free. All code is open for inspection and modification.
People say there are people who "can't" program, but we live in a world where computers have been built by and for programmer-priests for generations. The entire platform is built for them from the gates up.
-
[email protected]replied to Charles U. Farley last edited by
@freakazoid From the time I was learning programming in a high school elective (I'd only been self-taught to that point), I knew that introductory programming absolutely needs to be a standard part of the curriculum. Not everyone needs to have half a computer science degree in their pocket, but it's essential that people not think of computer programs as arcane magic. It wasn't made a standard part of the curriculum, and almost everyone sees it as arcane magic.
-
Charles U. Farleyreplied to [email protected] last edited by
@StarkRG I would not support teaching programming if they did it how they do today, teaching "industry languages" with an eye toward making students useful to capitalism. If they taught programming in the way Knuth does, or MIT's Structure and Interpretation of Computer programs, I would support that.
But I don't think that's really a solution to any problems. Programming isn't arcane magic because people don't learn how to do it. It's arcane magic because we deliberately make it arcane magic, because the people making the tools are magicians who want to sell ready-made magic boxes. So at best teaching people to program will drive down programmer wages. It won't change the world.
-
@freakazoid @StarkRG A long time ago, the community college I worked as a CS teacher as rented me out to teach programming to an elementary school which had a special class for kids on the autism spectrum.
Nothing at all even remotely industrially applicable. After getting acquainted with Python and the simplest possible tooling, we made terrible games, generative graphics, a Markov text generator, and some little tools. It was fun and they felt empowered.
-
@freakazoid @StarkRG They learned a lot, but the main things *I* learned were these.
1. Python was a terrible tool for the task, but not because of the language (which was fine for this purpose). It was a terrible tool because for the kids to show their creations to their friends, those friends would have to (on their parents' computers, possibly) go to a weird "python.org" website and download something called an "interpreter" and ... so, so much dull stuff.
-
2. When I was their age, if I wanted to show those of my friends who also had a C64 something I'd made, I'd put it on a disk or a tape and give it to them in lunch break or whenever. The closest analogue we'd have to that today would be to put it on the web ... but then a floodgate of strangers can *also* get to it, and also then you have to step into an overcomplicated and ever-moving nightmare (compared to Python+pygame) of browser dev.
-
3. Also when I was their age, if I wanted to program something, all I needed to do was to turn the computer on. I *did* need to keep a small library of bizarre esoterica in my head (which address do I POKE something into to do the thing I want to do?), but there wasn't really that mountain of incidental complexity in front of me. Programming old computers was hard because old computers were weak, not because of "industry practice".
-
4. I deliberately chose to *completely* ignore "industry practice" - this was about some kids who liked to think in a programming-shaped way (much like how my own mind works), and about giving them an experience of personal empowerment - which is completely orthogonal to the industrial mode of programming. This was the best choice I made. (though most of the really good choices were made by the kids - they got to choose what they'd make!).
-
@datarama @StarkRG I was shocked when I learned what a huge fraction of Second Life users used its scripting language even though it's a very weird and limited language (though with some very interesting innovations!). And these weren't programmers; for the vast majority, LSL was their first language. It wasn't because LSL is "good" or specifically designed to be easy to learn, but because it enabled people to do something they wanted to do, which was to make stuff in this virtual world.
Similar has happened with Roblox, though the adoption ratio is lower. Tons of kids are learning to program because of Roblox, so Lua (really Luau) is their first language. Again, not because the language is great, but because it lets them do what they want to do: make crappy games.
I think Arduino has been successful for the exact same reason. BASIC Stamps could have done something similar, but they were really designed for people who knew electronics but not programming, and they were expensive. Arduino is really designed for learning electronics, but even though the language and IDE have a steeper learning curve, the application is compelling enough that people push through it. And of course there's a huge community around it with tons of examples and documentation.
So maybe we just need to start with the things people want to use computers for besides "browse the web" and all the other preexisting applications they want to use. Making games is a huge one, especially for kids. But also, spreadsheets, mailmerge (newsletters for their friends etc), documents (used to be called desktop publishing), PIM stuff.
One big one for me lately is keeping track of "knowledge" including tasks etc in a way that works the way my brain works. Org-mode gets kind of close but of course that's a pain to integrate with other things unless you have let your life be taken over by Emacs already.
-
@freakazoid @StarkRG I think that was the high point of my 10-year stint as a teacher. And not just because the kids made freshly-baked cake for me on all the days we had one of our sessions.
I don't know if any of them went on to become professional programmers in the years since then (they're all grown up now). And while I was happy to talk to them about what life in the industry was like, it was never really about that, not for me, them or the school.
-
@freakazoid @StarkRG The last programming-for-fun project I got fired up about was basically "what if my Amiga had been a Lisp Machine?". A little Lispish interpreter with a pixel graphics and simple sound synthesis engine. And I'd want it to replicate the experience of "start the thing and you're ready to go", but with something I like more than BASIC.
(Then I got depressed and lost motivation.)