Literacy: Natural Language vs. Code
sirReal.83. writes "The Guardian has an article by Dylan Evans, author of Introducing Evolutionary Psychology. The article discusses literacy in computer languages, and suggests that we are in the 'technological middle ages.' Cuddly UI's are the manifestation of wishful thinking; just as we try to make computers to adapt to us, we must adapt to them." Some good points are raised, with the example of the command line interface used, which is a much better choice than, say, an array of switches or a punch card.
that the customers I write software for 'work' on their computers 8-10 hours a day, and still have very little 'understanding' of what they are doing.
These users, which I can only imagine are representative of most computer 'users', don't really care. They simply look at their keyboards, mice, and monitors, and think, "I don't need to understand what I'm doing, all I know is that I need to do this, that, and perhaps another thing, and voila! A paycheck every 2 weeks!"
Not really. It is an issue where programmers them selves no longer have to understand computers to program. Going thew college there were way to many students saying "Why do I have to take a course in assembly? We never need to program in it." The future programmers them selves are no longer really understanding what is happening underneath as well. With languages like VB and others high level languages, people can get things done. But this where the scary part is. Is the people who do know how it works in more detail, they are more feared because they know to much and people wont higher them because they feel their skills are to specialized.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Indeed.
Dylan Evans obviously has never watched Star Trek: The Next Generation. If machines can't speak the language of children within the next 50 years, somebody won't be doing their job correctly.
Nor has he ever used Windows. How he can claim that Windows is logical much less than anyone should adopt what it uses for logic buggers my imagination.
"Where's my other sock?" - A. Einstein
This type of nonsense always comes from programmer geeks, too. Face it, the computer is a tool, not an end in itself. Sure, it'd be nice if every school child could write perl and understood regular expressions, but why? I'm sure most of you can drive a car, but how many can rebuild an engine? Can you do a brake job? Sure, being a mechanic in the height of the industrial age would have given you a financial advantage over your peers, but in the end, the automobile is just a tool that gets you from point A to B. The same is true of computers, it's just a tool. If I'm say, a theoretical chemist, why would I need to understand how to get under the hood of my operating system and tinker with it. It's just a tool. I might be interested in some scripting language that my chemistry visualization or analysis programs use, but for the most part, I shouldn't have to tinker with my computer. I should be able to put the key in the ignition (login) and it should work. If it's broken, then I take it to the technician and let her get under the hood.
An interesting concept. And this is exactly why Open Source software should be promoted.
The spread of human language has been an accumulative process. After the middle ages, when more and more people became literate, there was a corresponding increase in writers. The more writers, the more literature was available, which generated more ideas for more literature. It built on itself. Literature was Open Source. Anybody could take existing material and take ideas from that to build more material.
When we come to a similar stage with comptuers it will be the same thing. Programming will no longer be for the scholars, and more and more people will begin to take part. And the more software in the collective existence, the more resources there are to build more software. But it needs to be Open Source to facilitate the accumulative process.
Punctanym: alternate spelling of words using punctuation or numerals in place of some or all of its letters; see 'leet'
I wonder if he would have said the same thing about cars 75 years ago? As we get further into this new technology, everyone will be driving a car. You won't be able to get anywhere unless you can fix any and all problems that arise.
So, I'm reading this little article right, the man is here comparing the ability to read in general with teh ability to read and write code and laying a claim that in the future everyone must know how to read and write code because the current interfaces we have are illusions, or some other such nonsense, and that the ability to read an write code will be integral to ever profession.
I think regular literacy is just great, in an information based economy and world, you really can't get along without the ability to understand the assemblage of alphabetic characters or pictograms if that is your preference.
However, it is not necessary to know some really arcane computer programmingn code to be able to turn on a computer and use an internet browser. That's why we have computer programmers, to give us tools based on these machines that everyone can use, Windows is popular because you just turn it on and look at pictures and words in an easy to understand format (except on very poorly done websites).
We must adapt to computers, sure we do, we need to bring out culture into an age where informations is availible at the touch of a button. What captain Dylan fails to understand is that though it may seem, these machines are not gods that enslave us with their cold bluish glow, but they're tools. He starts out with a premise and is just ranting about that, he has no real arguments, no real evidence to back it up besides the fact that he wrote a book, wow, that makes someone an authoritative expert on everything.
Let's deconstruct shall we, here's my favorite line...
This is yet another reason why Windows is such a dangerous commodity. It lulls us into the pernicious illusion that we can deal with computers without adapting to their logic. By presenting us with colourful screens and buttons for us to click on, Microsoft encourages us to believe that we can force computers to adapt entirely to our preferences for visual images, without having to adapt ourselves to their preference for text.
Now, I get just as pissed when Windows crashes on me, or drops my internet protocols so I can't get on the network. But to say that Windows (specifically mind you, He doesn't talk about Mac OSes, you know the ones that windows holds an eerie resemblance to) creates an illusion that we can interact with computers on a level that the average person would appreciate straight out of the box is just unfounded, and I'll tell you why. Because it works, sure when everything was punch cards and cryptographic text you needed to have some specialized training to get computers to do what you wanted, but now that computing is something well into the mainstream people are picking it up much like any other bit of technology, like hammers (not the best analogy but whatever), I feel that Mr. Evans failed to grasp thtt the reason why computers are so indemnic now is that they do offer a clear and simple solution.
In 50 years, perhaps much less, the ability to read and write code will be as essential for professionals of every stripe as the ability to read and write a human language is today. If your children's children can't speak the language of the machines, they will have to get a manual job - if there are any left.
This part was pretty funny. For someone who wrote a book on evolutionary psychology he doesn't seem to grasp the concept of gradual specialization within a society. you see eventually as a society progresses, you get people whose job it is to think, and expressing that further you beginto develop proffesional groups as thought progresses. Eventually these professional groups become specialized themselves, like docotrs, sure way back in the day you went to your barber if you needed a good bleeding or if you wanted a limb off, but today there is a specialty for almost every concern. I look at it like food, not everyone is a farmer right? Yet, we all benefit from the product of a farmer's labor. Now agriculture has been around for let's say 10,000 years, most of us would be hard pressed if
The people who make comparisons to microwaves and cars are missing the point. A microwave is designed to do one thing and one thing only. A computer is designed to do, well, anything. The idea that the interface of a general purpose tool should be as simple as that of a more specialized tool is silly. The whole *point* of a computer is its complexity.
In this context, the article's assertion makes a bit more sense. People who use tools to solve problems need to understand the nature of those tools. Thus, people who use computers to solve new and interesting problems need to understand what a computer actually does before they even begin to work on a solution. Perhaps in fifty years time we will be using computers for much more interesting things in daily life than we do now. Given the existance of a near-natural language interface and voice recognition, tasks like word processing become trivial. The goal, then, is to be able to instruct the computer what to do in the most efficient way possible. Short of a strong AI, the only way to do that is to understand a bit about how a computer works.
When you look at things this way, the article doesn't seem quite so extreme. I don't know about "every secretary in the world", but I can see plenty of circumstances where complex instructions would need to be turned into "programming" to get anything out of them.
Visit the
I'm a programmer for quite a long time. I've dealt with designing interfaces (not too bad at it) and implementing other's designs (some are really great, it's where i've learned). Keeping the insides-in and the outsides-out is what keeps our lives simple. It's also what makes interface programming such a friggin' pain.
Let's take a screen that has just a simple checkbox. On.. off.. that's pretty easy.
Something more complex: a set of radio buttons. If none are on by default, you have to add a check to make sure things are fine.
Now let's add something like the slashdot post-comment page. Strip all "bad stuff", check that both aren't empty and check against a few rules.
How about an international address form. City/state is in the US or CANADA, you check for zip codes of certain types. (I know these two off the top ya' brit's
Want to include a phone number? Forget it. In the US, it's an area code that doesn't begin with 1 or 0, doesn't have 3 repeating digits (I believe), prefix doesn't start with 555, 1,0 or a few other things. No symbols except possibly -'s in the right place...
Now if this were done all premptively, warning you "no, you can't do that" along the way, it's one big pain-in-the-ass. Warning you after the fact that you can't continue is also another big PITA.
But you know what? It's so very necessary. Anyone remember OS/2's SYS1375 error? I hated that frickin' thing. It was the equiv of a segfault or sigbus in OS/2, when a program crashed... something like that. But you know what, those overly-verbose messages are great when you are in charge of maintaining or creating a system.
In the end, I want to be babied from A->B when going through some task or process that has an interface. I like the idea of not needing to consciously think that, "I have to create an image of a cd first THEN i burn it." That's one thing I like about CD burning tools vs cli's making an ISO first and then burning. I wish configuring a kernel to my system were that simple. It'd be nice if it all worked with autodetecting modules upon first-time startup.
It's the difference of wasting those internal mental cycles of figuring out what's going on. If I wanted complex, I'd figure out how to read my phone bill. They like to send it in spanish, though I told them I want it in english. Morons..
--
"I'm not bright. Big words confuse me. But Wanda loves me and that should be enough for you." - Cosmo
Computers are not natural. they were created by people, not God or Nature. we have to understand how other people chose to make them. Binary, could have been decimal. Big Endian little Endian. Is one better. Ascii or EBIDIC. C++ VB PERL? Computers will evole like Any other man made Item. Some things will be as they are for good or bad because they where done that way (tell me I am wrong on you QWERTY key board). Cars are mature in a way a 30 year old car is not any different to drive today. The works have be refined, but it is still a car. At some point computers will reach a point where they are not that different in a 30 year span. Will win2005 be unusable to a win95 user? I agree with the computers are a tool statment. We can adapt computers to us we made them. So we will make them work for us. Like my new car that starts when I turn the key in all weather (no Choke) , tells me if I need an oil change, and turns on the lights when it is dark. Most people are not rocket scientists. Tech that requires that will never be a mass market Item.
BTW to all the Rocket Scientist that know how the software works , how many know how the hardware works? Most could step on and IC and not know what it was. Will we have to teach everyone that too?
200 years ago do you think you could have taught English reading and writing to a bunch of farmhands with no stake in actually learning it? Today everyone can read and write, because it's nearly impossible to get by without it.
If, as the article says, in the future writing code will be nearly as important as writing English, then like English, programming will be taught to our children. So a high school graduate will already have about 10 years experience with it.
Not that I believe it will happen. (though I wish it would) Just that I believe that most humans are capable of learning programming if introduced early enough and given proper incentives. It is a language after all, and that's what we're good at.
Give me Classic Slashdot or give me death!
Longhorn should change this, with the rumoured next-gen command line implementation that approaches Unix-level capabilities.
Approaches? Are you crazy? MSh goes so far beyond Unix shells its not funny. Rather than the "everything as a stream of bytes approach"[1], MSh will use real objects. It features multi-language support. Objects in the filesystem. Full, multi-directional, conditional pipes. All features missing in Unix shells. Face it, Unix is 30 years old. It needs to be updated.
[1] Can someone explain whats so great about this? Doesn't that encourage ad-hoc interfaces, a poor programming practice? I realize that much of Unix is generalized for text, but generalizing it for objects is a much smarter idea, one which MS has pulled the carpet out from under us on.
Thats a bad analogy.
A car enhances your muscles: you should never need to understand it anymore than you need to understand your legs. (a little practice and go, right)
A computer can be used for many types of jobs.
Some of those jobs could require little to no understanding of logic.
For thinking jobs however, you will need some competence to be good at them. In this case the issue is not so much "understanding the computer", as it is "understanding the problem".
There will never be a star-trek like computer, competent enough to "do what you mean and not what you say" in a non-disastrous fashion.
I see no reason why the majority of people in the world need to learn in order to keep up in society.
Sure...the majority of people, but your attitude is really scary. As a CS major you must understand how a microprocessor, and therefore machine code, works. There is rarely a sitution, other than writing compilers, where you need to work at that level, but being able to think at that level is critical. Leaky abstractions are everwhere, and without a solid understanding of a computer from top to bottom you will never be able to debug problems when the abstractions built for you in languages like C++ and Java break down. I could give you tons of examples, but as just a bit of advice, you don't have to pick whether to learn how to do things the "hard way" (e.g. assembly) or the "easy way" (Java). Once you know assembly, Java is patty cake and you will be more productive with it.
There is one area of everyday human activity where complex logical structures are always expressed using natural language without any aid from more formalized languages and systems of expression.
It's called legal system, and it's a mess so huge, no one, human or machine, can predict its behavior, and an army of lawyers, judges and lawmakers of all kinds spend untold amounts of time trying to implement it in their various ways. If computer programming will ever turn into something that resembles this, determining which color should be a pixel (15, 351) ten seconds into a Quake game will be a process not unlike the Kobe Bryant case.
Contrary to the popular belief, there indeed is no God.
Silly as the authour may sound, he is making a good point. Imagine a car company's tech support conversations (I think I saw this in a joke somewhere).
Support Rep - How may I help you?
Customer - I'm sitting in my car, and it won't go.
Support Rep - Have you used the ignition key?
Customer - The what?
Support Rep - The ignition key. You insert it into the lock by the steering wheel, or the 'ignition' as we techies like to say, and twist it.
Customer - Why do I have to know all this technical stuff. I just want to go places in my car!
I've seen people copy 300+ files in W*ndows by drag-n-dropping each one. Programming languages, not really necessary, but it would certainly make peoples lives a lot easier if they knew a little about how a computer works (ie, what a bus is, what a graphics card is, what a file is, what a GUI does, what RAM does, and why we would rather have things we are working on in RAM rather than random access from the HD etc...).
After all, how many people with cars don't know what a petrol tank is, and why it's bad idea to drive 70mph on a motorway in 1st gear. When cars came along 100 years ago, people were equally pissed off when they came to the realisation that they actually had to know something of how they worked, and couldn't just leave it all to the blacksmith to sort out.
Now granted, the author didn't really do a good job of eloquently conveying that message, but I do think that it is interesting and possibly deserves further consideration.
People keep bringing up the "you don't need to know how a car works in order to be able to drive it" argument. I think that this argument is misplaced. It is normally the case that you do not need to know how something works if you plan to use it for its intended purpose. However, if you plan to use something beyond its intended purpose (e.g., stunt driving), or use something for an entirely different purpose (e.g., using a car as a portable generator), then most likely you will need a more thorough knowledge of how things work in order to do so.
Writing was originally invented for accounting records, but anyone trained in writing can use it for just about anything they want, provided it doesn't violate the DMCA. Computers are just about the same.
- data
- information
- knowledge
- wisdom
the "how" is in "knowledge" and the "why" in "wisdom"<RANT state="sad&disapointed">
It's my experience that a lot of developers out there know a lot of "hows" (how is this done; how does this work; how do we install it) but few or no "whys" (why is this designed like this; why are we doing this; why do we use this languquage/os)
</RANT>
AFAIK, the only scripts that seem to work on windows start with a browser exploit and then generate popups from now to eternity. we call them spyware, adware, worms and virii. funny how the virus writers know how to automate so well, even with a crippled shell.
"You never want a serious crisis to go to waste." - Rahm Emanuel
No, he's not making a good point. His point is not that people should know how to copy those 300+ files with multiple selection, his point is that they should know how to write the file manager.
Here's his article in an automobile support call:
Support Rep - How may I help you?
Customer - My car's engine doesn't turn over when I turn the ignition.
Support Rep - Well, you need a new starter, just build one?
Customer - How do I do that?
Support Rep - You need to make a DC motor. Just get a couple of strong magnets and a few hundred feet of wire. Make sure you use wire that's a proper guage to handle the amperage you'll be putting through it, and be sure to wrap it in the proper direction for the current and magnetic poles. Use the right hand rule if you get confused.
Customer - Can't I just take the car to a garage?
Support Rep - Well yeah, but you'll be dooming yourself to a life of hardship and servitude.
"Verbing weirds language." -- Calvin
>Out of the 40 people that started a Java class in my college, only 6 of us finished it. 34 couldn't keep pace and couldn't understand it.
Well, look at how programming is taught today compared to the late 80s.
When we were taught BASIC on machines that were only command line, people were quick to pick it up. Why? Because you could actually do stuff with it. At the time writing an app that did stuff like simple math, outputted to the printer, displayed a simple ASCII graph, etc. This is what computers did and being able to do this with a few lines of BASIC code was actually empowering.
Now look at what computers do now: everything. And they do it with neat-o GUIs. Also, many commercial apps are written so you don't have to program. You don't have Ford telling you that you should be popping open the hood on a brand new car and doing some major work do you?
Anyway, walk into a Java class. First thing they teach isn't how you can use java to solve problems like sorting text files, etc they throw the bible of OOP at you. OOP is fine and good, but if you don't have some procedural experience under your belt and know your way around at least another language Java is just going to be a mix of OOP, classes, etc and other junk a lot of people are not going to see how it all connects to their everyday tasks. Even if you master Java you're writing horribly slow apps designed for cross-platform applications. Not exactly empowerment there. Sure, you can move to any language from there, but starting to learn programming with Java is like kick in the teeth.
I think Dylan should have focused on how empowering HTML, Javascript, and PHP are. After reading a book or looking at a few examples you can quickly get the gist of HTML. Same with javascript. The stuff runs, it does stuff, you can show it to your friends, etc. Shift to PHP are you're doing tons more stuff, while your Java programmer is fighting his or her through a complex language with a strict syntax (at least a lot more unforgiving than HTML or PHP).
If there's a lesson here its embrace modern tools that accomplish something. Moving back to the command line is silliness for most people as they never leave the GUI and don't expect a CL program to be of much use. Giving them the power to generate GUI-like apps through HTML, etc is much more useful than spending 18 hours learning how to use cat, emacs, pipes, uniq, head, tail, etc on Cygwin.
Its a web/GUI world. This is what people should be adopting to. The days of simple DOS-like programs are far behind us and a lot of scripting tasks can be done within robust GUI apps.
If you don't understand cars, you're fated to do menial jobs.
Maybe a stupid comparison, but I'd rather my kid spoke four, five human languages like her parents than have her spend thousands of hours trying to get into the "mind" of her computer.
Yes, I do understand HTML (big deal) and I "get" my computer. Most kids of today do btw.
Suggesting you'll become obsolete when you don't speak computerese - be it through lazyness or cowardice - is really really naive. I think 10-50-100 years from now it will still be about "getting" your fellow man.
As if "speaking" one of hundreds of languages for machines gives you special powers. I know programmers who still don't get their machine - and wrestle with their VCR and toasters. Lack of 'mpathy', I guess.
I think, therefore I am...I think.
Have you forgotten Apple? It was a consumer system, and there were a number of vendors selling software on it - Visicalc is one software title I used on the Apple II. My daughter learned arithmetic on a software title sold on the Atari-800, another end user machine.
Microsoft merely extended a completely obvious trend. And remember, they bought their operating system from someone who was already selling it.
Microsoft made their big hit, not by opening up a consumer market, but by winning the IBM contract for the OS for the IBM PC. Before that, Microsoft was selling only to hobbyists also! Because the PC *hardware* design was open (just as Apple was transitioning to a closed design), and IBM commanded so many corporate desktops, whoever won that contract was pre-ordained to end up with the desktop monopoly, and the open hardware design guaranteed the extension of the PC platform into every place one could use a computer of that power.
So I'm sorry, but Microsoft did *nothing* creative for a long time. They ported Basic (invented while Bill was in grade school) to get their company started. The bought MS-DOS, which itself is a conceptual rip-off of CPM which was a conceptual rip-off of several DEC operating systems.
Their true ability for a long time was in their shrewd and sometimes unethical business practices, which allowed them to leverage, extend and maintain their PC OS monopoly. They were brilliant at that.
When it came to technology creativity, I saw little from Microsoft until Visual Basic, and probably someone else had a visual IDE before that, I just didn't see it.
Microsoft for a long time had the same attitude as Stephenson - if it didn't happen in the PC world, it didn't happen. Hence for many years they proclaimed the invention of various things that us old fogies had used on big machines 20 years before - such as virtual memory (I first used it in 1967 on Stanfords Wylbur system on a 360/67. That machine also had a total VMM on it).
They kept "inventing" stuff that us more experienced people had been wanting for a long time, since we had it previously, and had to step down in functionality and computer science conceptual levels to use PC's - long after they had the hardware capability to do this stuff.
And they stole ideas right and left. Remember when there were companies with file system compression? Microsoft subsequently "invented" that. Remember the original MacIntosh? Microsoft had to "invent" windows. But the Mac itself was a ripoff of a Xerox product, and it's intellectual ancestor was the Xerox PARC Dynabook project!
Furthermore, they rejected some very important ideas, such as the Unix approach of command line or shell scripting using primitive commands and the Unix approach of keeping all configuration information in human readable files.
This has cost their users immensely, probably cost Microsoft a lot, and was simply unnecessary. GUI vs Command Line is *not* either-or. I am using a GUI (Win2K/IE) to write this, but I also use Cygwin (which has its own warts to do much of my work. Cygwin gives me scripting, and very quickly executed commands with hands on the keyboard. But Windows configuration, done through GUI windows, is much easier for the non-expert than Linux configuration done through command files (although the various X tools are improving there), and I have been runing Unixes at home since 1983.
At some point in the '90s, Microsoft realized that there really people outside their world who might know something they didn't know. They started bringing in experts (although their choice for NT architecture, and hence probably NT architect was a mistake, which is why NT has so much trouble in SMP configurations - configurations which I first worked with in 1970!). Hence when they needed a good database, they stole much of Informix's crew (but still, had it run on their deficient NT Win32 kernel).
Now they have lots of serious pe
The only good weather is bad weather.