(Guest Post by Amir Michail)
The case for teaching everyone programming
If everyone could program, then anyone could more easily and cheaply
scale his/her world view to reach millions in one-on-one conversations
to, for example, have greater impact on the results of an election.
If everyone could program, then anyone can more cheaply achieve
immortality by encoding what they would like others to remember about
them into a simulation of themselves.
Is it ethical to deny people such capabilities? Moreover, is it
ethical to deny people the chance to dream up and create entirely new
sorts of programs to enhance their lives?
But I hear you say that programming is a difficult skill that only a
few could learn. Not really. Learning programming is easier than
learning reading and writing, basic arithmetic, or playing a musical
instrument. Programming at a professional level is hard, but so is
writing a novel, proving theorems, or playing in an orchestra.
Nonetheless, we need to start thinking about ways to make programming
more accessible to the vast majority of the population. This might
mean taking the math out of programming and using languages that are
not Turing-complete. Chatbot programming is one such example.
It sounds like a nice goal but I don't really understand... you don't have much specific advice except to remove features from existing languages. Even there, you can just teach people existing languages while omitting the complex features.
ReplyDeleteThat having been said, I think actually getting math/CS out to the hands of the public is great. Have you ever heard of the concept of a Math Circle? Maybe you should consider starting a Programming Circle.
Merely using how to use a computer is far too frustrating for the common person to do well, learning to program would be nearly impossible. I've gotten this through some positions where I had to attempt to teach basic SQL to warehouse supervisors. Some forklift drivers pick it up more quickly than warehouse supervisors, but some (most?) people aren't used to analytic thinking. You'd need to present substantial rewards to people before they'd learn, and most of the time what they want and would get the greatest benefit from would take too long to learn so they would do it themselves. To use your analogy - I am not a musically inclined person, and so I'd rather listen to someone else's song that benefited my mood rather than try to write my own. I think your motivation is good, but realistically it would be almost impossible to apply, and honestly I'd rather see the general public wise up in general before I'd start tackling programming.
ReplyDeleteI agree with the goal of teaching more people to program (although not literally everybody). However, this has to be the worst case I've even seen anyone make for that goal.
ReplyDeleteThe argument seems to be that if you can program a computer, you can automate the sending of election-related spam or build your own artificial intelligence modeled after yourself. It would be unethical to deny people these capabilities. Therefore, we should teach them chatbot programming and other non-Turing-complete languages.
I guess maybe my biggest grievance is that nobody has ever taught me how to cheaply achieve immortality by encoding what I would like others to remember about me into a simulation of myself. Surely someone deserves punishment for this huge gap in my education.
I disagree. Unfortunatley, students have limited time and school limited resources so teaching programming to "everyone" would come at the expense of teaching math, history, literature and other core areas that I (as a CS PhD student) think are MORE important to the AVERAGE person.
ReplyDeleteIn general, I think schools should focus less on expanding the set of "core subjects" that everyone must know, and give students more freedom in deciding which "special topics" they'd like to learn.
If you want to convince me otherwise, you need to make the argument that programming is MORE important than the current core subjects like math, history, science, literature...
If you want to convince me otherwise, you need to make the argument that programming is MORE important than the current core subjects like math, history, science, literature...
ReplyDeleteIf English is your native language, then learning programming would be more important and much easier than learning a second language.
If everyone could program, then anyone could more easily and cheaply scale his/her world view to reach millions in one-on-one conversations to, for example, have greater impact on the results of an election.
ReplyDeleteHey, there's this new thing now, called a “blog”. Takes the programming right out of the reaching-the-millions problem. All the kids are doing it these days; you should really check it out.
If everyone could program, then anyone can more cheaply achieve immortality by encoding what they would like others to remember about them into a simulation of themselves.
Oh, puh-leez. What rancid phantasmagorical nonsense. This is no more credible than "If everyone could play the marimba, we'd finally achieve world peace and universal enlightenment. Chocolate ponies for everyone! Awesome!"
Learning programming is easier than learning reading and writing, basic arithmetic, or playing a musical instrument.
This is empirically false. If it were that easy, we'd have billions of (amateur) programmers (as opposed to the mere millions we have now), just as we currently have billions of (amateur) readers, writers, counters, and musicians. Anyone can sing along with the Ting Tings without training; making a robot move toward the light isn't so trivial.
Moreover, I strongly suspect the attitude that "programming is easy" actually discourages people from entering computing. If I find it difficult, it must be my fault; I must be stupid. Screw that noise. I'm going to go do something that doesn't make me feel like an drooling idiot, like those dweebs over there.
No. Programming is hard. It certainly doesn't help that people who do it for a living, who don't understand how hard it is for most people, make it even harder in the interest of marketability, or abstraction, or efficiency, or portability, or one-pass quantum distributed polymorphic template factorization, or maintaining a sense of intellectual superiority. I agree with you on that point -- we've created lots of artificial barriers that keep people away from programming.
But even if those artificial barriers magically vanished, programming would still be harder than learning to write or add. Words, numbers, and music are integral parts of most people's daily lives; programming is not, cruise controls, Tivos, and cell phones notwithstanding. Anyone can (and most people do) write, add, and drum using pencils and paper, or even fingers and dirt; programming requires a computer.
Perhaps you meant that learning to program shouldn't be harder than learning to read. That would be a much more reasonable claim; maybe in 20, or 50, or 200 years learning to program really will be that easy. Maybe. (More likely, it'll become no harder than learning to tune an engine, build a chair, knit a sweater, or diagram a sentence.) But don't confuse your ambition, however admirable, with reality.
"If everyone could program, then anyone could more easily and cheaply scale his/her world view to reach millions in one-on-one conversations to, for example, have greater impact on the results of an election.
ReplyDeleteIf everyone could program, then anyone can more cheaply achieve immortality by encoding what they would like others to remember about them into a simulation of themselves.
Is it ethical to deny people such capabilities? "
-- These lines made no sense at all to me.
"one-pass quantum distributed polymorphic template factorization" ?
ReplyDeletenow I'd take a software engineering class that taught that :)
Hey, there's this new thing now, called a “blog”.
ReplyDeleteIt's not one-on-one.
I guess maybe my biggest grievance is that nobody has ever taught me how to cheaply achieve immortality by encoding what I would like others to remember about me into a simulation of myself. Surely someone deserves punishment for this huge gap in my education.
ReplyDeleteMany readers of this blog probably do care a lot about their immortality. It is one of the reasons why they try to prove important theorems and publish in top places.
Moreover, I strongly suspect the attitude that "programming is easy" actually discourages people from entering computing. If I find it difficult, it must be my fault; I must be stupid. Screw that noise. I'm going to go do something that doesn't make me feel like an drooling idiot, like those dweebs over there.
ReplyDeleteIt's probably the case that the people who find programming easy are those who learned it from a very young age.
I was an undergraduate math major when I took my first programming course (Intro to FORTRAN). While learning mathematical proofs was natural and enjoyable to me, I had the most difficult time with the programming course. There is something unnatural about computer languages that I couldn't/can't put a finger on. (Got any insight?)
ReplyDeleteThen, I met a CS major who said the same thing, only with the two subjects switched.
Sorry, the course was "Intro to Pascal". FORTRAN was easier to learn.
ReplyDeleteBut I hear you say that programming is a difficult skill that only a few could learn.
ReplyDeleteI doubt anyone reading this blog would say that. More likely, they will say that programming is boring and tedious.
By the way, what is the story? Can anyone just post random, unformed thoughts written in poor English on arbitrary topics on this blog whenever they want just by contacting Gasarch?
I would argue for teaching programming at school but for a different reason, that of gaining a better understanding of the modern world around us. Not only appliances, but also legal procedures, and even some medical ones - everything nowadays is an algorithm.
ReplyDeleteLanguages that can be easily learned as now abundant, there's for example Python and even good old Basic works nicely as a non-committal intro. For younger children there are also "point and click" options, such as Flash, and I've seen children do nice non-linear office presentations too.
Finally, to understand what a program is without doing actual programming, I would recommend playing Theseus and the Minotaur.
I suggest teaching algorithms instead of programming.
ReplyDeleteWhen one learns algorithms, how algorithms work, why it works and other stuff, they will then know how to implement with programming languages.
and algorithms are like universal compare to programming languages...
Many readers of this blog probably do care a lot about their immortality. It is one of the reasons why they try to prove important theorems and publish in top places.
ReplyDeleteYes, that's true, and perfectly reasonable. For a more extreme example, the folk over at overcomingbias.com want to achieve immortality by having their heads frozen and then revived centuries later. To me, achieving immortality by writing a computer program that simulates me sounds a hundred times sillier and less plausible than cryogenics.
COBOL "COmon Business Oriented Language" was developed for the purpose you are describing. Maybe you should look into that.
ReplyDeleteGood luck.
This is empirically false. If it were that easy, we'd have billions of (amateur) programmers (as opposed to the mere millions we have now), just as we currently have billions of (amateur) readers, writers, counters, and musicians.
ReplyDeleteNot everyone can afford a computer. Moreover, programming is not yet a required topic in school. Finally, "algorithmic thinking" is quite common.
I don't want to achieve immortality through my work. I want to achieve it through not dying (Woody Allen)
ReplyDeleteHave a look at the easy programming tool named 'Peter' at
ReplyDeletewww.gemtree.com
If you wish to programme you can!