Slashdot Mirror


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.

18 of 534 comments (clear)

  1. Empowering users with the command line by Nooface · · Score: 5, Informative

    For a more in-depth discussion of this topic, see Neal Stephenson's essay In The Beginning Was The Command Line.

    --

    Nooface
    In Search of the Post-PC Interface
    1. Re:Empowering users with the command line by mesocyclone · · Score: 4, Insightful

      It's unfortunate tyhat Stephenson, in that essay, seems to believe that Gates and Allen invented the idea of selling software. It is so typical of the PC generation that people imagine that if the first person to use an idea on a PC invented it.

      A relative of mine was selling software in the early '60s. I worked for a company selling software in 1971. I wrote a command line interface for a teletype in 1969, and first used one in 1967.

      Likewise, I first used saw a hyperlinked GUI presentation at a FJCC in 1967 or 1968.

      As far as the article that started this thread, it is idiotic. It was either done by someone who has no clue about software engineering, or who suffers from recto-cranial insertion. Probably both!

      People have been trying for a very long time to figure out how to KEEP folks from having to know all the dirty little details of computers.

      By the logic of the article, we should also all become logic engineers, and then solid state physicists, and finally wave Shroedinger equations around to understand how the computer REALLY works. Those of us who have done all of that still end up specialists who don't do more than a tiny bit, and those who are not specialists in that area don't need to know it, or even know that it exists.

      I tell folks who really want to know how a computer works to learn assembly language, and then study the internals of an OS. Then they at least understand what a computer *does*. But they still don't know how to build one, nor should they!

      Personally, I use command line for most of my work - cygwin on Win2K for most, Linux for some. But I would NOT want my wife to have to use it, nor my daughter the neuroscientist!

      --

      The only good weather is bad weather.

  2. Incredibly foolish article by Anonymous Coward · · Score: 4, Insightful

    Microsoft is oppressing the masses with the GUI. Everyone must learn a scripting language in order to manipulate information. Suuuuuuure.

    Who the hell wrote this article, the union of all slashdot posts?

    1. Re:Incredibly foolish article by hellswraith · · Score: 5, Insightful

      I can't agree more. This about the most stupid article I could have ever hoped to see on this topic. I am sure some short sighted person said such things about the automobile when it first arrived. Probably something like "If you don't understand how your car works, and can't fix it yourself, you will be walking everywhere."

      Give me a break. Programming has become such a complex subject, that there is no way the majority of users could ever hope to achieve the level of proficiency needed to even code the simplest of applications. It takes a majority of coders 5-10 years to become 'experts'. That is why there are application developers, and the users they write applications for. If we (the application developers) do our job right, then we can satisfy the users needs without them having to know how to write code. This lets the users concentrate on using the applications that were written to perform other business needs that they will spend their time studying.

      To prove my point that this will never happen, I have an example. 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. The class wasn't that hard. One chapter a week, and one little app a week to re-enforce the chapter's materials. How is 'everyone' going to learn programming if that many can't hack a beginning class?

    2. Re:Incredibly foolish article by mcrbids · · Score: 4, Insightful

      To prove my point that this will never happen, I have an example. 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. The class wasn't that hard. One chapter a week, and one little app a week to re-enforce the chapter's materials. How is 'everyone' going to learn programming if that many can't hack a beginning class?


      The strange thing is that computer programming is getting both hard and easier at the same time.

      Things that were traditionally difficult are now easier than ever. However, the things that are expected of computers today make yesteryear's problems pale.

      As languages evolve new capabilities, expectations rise to meet them - and the net effect is that the power of computing never really makes it to the average Joe.

      This is news?

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    3. Re:Incredibly foolish article by Spyffe · · Score: 4, Insightful
      I agree that it is not the GUI per se that is the instrument of oppression. It is, instead, the adoption of mediated tools to access information.

      For instance, when I want to find something on the Internet, I use Google. I trust that if I type in two words, Google will find me Web pages that contain those two words. I have no idea how they do this, because they keep it secret.

      This is the dangerous thing. The Merovingian (watch Matrix II Reloaded!) would love it: I type in words and I get links and I click them, with no idea of why I got them!

      Nowadays, that's reasonable (although Google is already starting to remove links that are extremely unpopular or expose them to lawsuits). But in the future, Google's mediation of my interface to the Web could really hamper me.

      If at that point, I continue to use Google with no understanding of how to spider the Web for myself, I'm screwed. My searches will be controlled by Google, and I will be jacked in to their particular Matrix, seeing only information they choose to purvey.

      Similarly, right now I use a PowerBook for everything. I have a Japanese DVD (Spirited Away) that I want to watch. But I can't, because the firmware in my DVD-ROM drive locks me out. I have allowed another company to mediate my experience of the data on the DVD. They have chosen to limit what I can see, and because I don't understand their hardware (i.e. I can't reprogram their BIOS) I am at their mercy.

      The GUI can be a powerful tool. It can enable one to visualize what is going on in an extremely detailed fashion. But if I don't know what's being visualized, and what simplifications are being made, and how they're being performed, I'm screwed if I want to do it any differently.

      Have you watched Serial Experiments Lain? It is a Japanese animation about a little girl that is slowly sucked into the world of the Internet. In her school, they learn programming and she has a textbook that describes the architecture of her computer. In effect, this is what all who want complete self-determination need: a textbook that tells us how the tools we use to process data do it.

      This makes non-self-determination an attractive option. Most people will simply choose to take what they are given and to hell with how it's processed or from what source. They will eventually end up looking at a data-feed and occasionally clicking on interesting bits of information. This may be a satisfying way of life.

      Then there will be the Merovingians, holding all the keys. They will understand the workings of the data-feeds and will, through subtle manipulation, be able to tap the vast computing power of the hardware that underlies them. They will also control all the drones.

      The fight is happening right now. The media companies are the Merovingians, and consumers of media are being herded into smaller and smaller squares. Some will squeeze out of the barriers, and form a Zion of resistance, of hard-fought lives on the fringes of the information society. Some will join the Merovingians. But most will enter the Matrix.

      As Roac son of Carc would say, I will not say if this be good or bad. But I will say that I want to be in Zion.

      --
      Sigmentation fault - core dumped
  3. Microsoft is already developing a natural language by MongooseCN · · Score: 5, Funny
    Instead of typing in stuff like:
    int main()
    {
    printf("Hello World.\n");
    return 0;
    }
    Now you simple type in:
    Microsoft_knows_whats_best_for_me;
  4. The problem with a command line interface.. by windows · · Score: 5, Insightful

    The article suggests that machines deal in text instead of through colorful GUI windows. This isn't true at all. The computer has no preference between user interfaces; it doesn't make a bit of difference to the machine.

    Whether or not I'm adding a switch on the command line or checking a box in some GUI, I'm performing the exact same function - that is, toggling some flag/setting within the program. It's just a different representation. The article suggests that text is the language of computers. This is not true at all. The language of computers is a stream of octets that are interpreted as instructions by the processor. That is the only language the computer actually understands.

    I can say for sure that I find the GUI very efficient at times. For example, I do some video editing and converting, and find myself using mencoder (a tool included with mplayer) rather often. There's a LOT of switches at the command line, and often I find myself spending several minutes browsing the manual page to find what switches I need set. And even then, sometimes I find myself turning to Google to find the information I need. I can't help but think that it could be done much more efficiently with a very basic graphical front-end. The CLI isn't always more efficient.

    I know, there's many tasks that are better done from the command line. But to say that a user operating a GUI is further removed from the internals of the computer, is just incorrect. Whether or not I'm adding a switch on the command line or checking a box in a GUI, it generally has the same effect.

  5. How much abstraction? by GnuHaiku · · Score: 5, Insightful

    The suggestion that people should use CLIs instead of GUIs so that they can understand how their computers work at a fundamental level seems kind of ironic to me. CLIs were originally introduced as just another layer of abstraction. When you type "ls", you don't really think that you're sending the command directly to your CPU, do you? The command shell processes the text that you input, interprets it, and cranks out a result (I oversimplify, of course). Even your file system is just another level of abstraction, as is the C or C++ code that you type in to be compiled. On the other hand, additional abstraction can simplify user tasks tremendously and make learning curves much shallower. Try writing a "hello, world" program in ASM^H^H^H octal, and then in Perl or Python or C or java or whatever, and see how much easier it is!

  6. Article lacks reason. Is this really necessary? by SamNmaX · · Score: 5, Insightful
    The article doesn't really give a reason that users should learn languages. Their only reason is being 'stuck in the Matrix'. Gee, thanks...

    I'm not sure the average user need to start cracking open books on Java (or even VB). Yeah, as a programmer I take great interest in how the computer works, and it probably makes me more productive. However, I think I was very productive with the computer without actually knowing any programming languages that well.

    The key to being productive, after understanding the basics of the computer in terms of memory, files, etc., is tools. How do you search for text in files (grep, find)? How do edit HTML files (text or GUI based program)? How do you move files around? (samba, ftp, etc.)

    It may be useful to at least be able to wrap your head around something like a regular expression, though even being able to understand what "*.txt" means is nearly as useful. For the adventurous, a scripting language. I don't think any more, at least given the current tools, is that necessary. Making a full-fledged program is hard work, it takes time. Most tasks you may think require programming are already be implemented.

    Obvoiusly, computers shouldn't be made purely for those who have no patience to learn. However, there is a balance, and everyone knowing assembler Java, or even HTML isn't it.

  7. Total Nonsense by Ignis+Flatus · · Score: 5, Interesting

    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.

  8. Ridiculous by dreamchaser · · Score: 4, Insightful

    As has already been pointed out in other posts, computers do NOT have any preference for text. All he is doing is spelling out HIS preference for text and projecting it as a need for everyone to learn 'the language of the machine'. Does he realize that the language of the machine is just a streams of 1's and 0's? Apparantly not. I can't believe anyone published this drivel.

    Making a tool more accessible for the masses is exactly what should be done, and is the normal progression for any technology. Perhaps he thinks that we should program our VCR's by setting dip switches, or reprogramming it's code just to catch the latest episode of The Simpsons?

    Yet another example of someone with far too much time on his hands to think coupled with an amazing lack of common sense.

  9. This is just silly by DarthTaco · · Score: 5, Insightful

    This guy is an idiot.

    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.

    Computers have no preference for text. They have no preference for graphics. If they could be said to have any sort of preference at all, it would be binary. And that would still be a misleading statement.

    His goofy comments about html don't make any sense. HTML is just as artficial a construct as the graphics rendered by the browser engine.

    Does this guy think that you can just write some code on a piece of paper and show it to a CPU? The text on your screen is already an abstraction.

    Sounds like he has some problem with the fact that even idiots like himself can use a computer without any kind of in depth knowledge.

    And all this nonsense about forcing computers to adapt to us. WE MAKE COMPUTERS. They didn't "evolve" of their own volition. I'm surprised this guy isn't complaining about how using a steering wheel doesn't require knowledge of the actual steering mechanism.

  10. Levels of Abstraction by KalvinB · · Score: 4, Insightful

    If I want to make a 3D game, I can use OpenGL or DirectX. However, I have little clue how exactly telling OpenGL to put a quad with various features on the screen actually gets it on the screen with those features. For all I care it's magic. It just works. OpenGL and DirectX are my lowest levels of abstraction for 3D graphics currently. There's also DarkBASIC et al for those who don't want to go even that far down.

    If I want to make a 3D API like OpenGL or DirectX, I need to dig down deeper to understand how graphics cards work in order ot get any realistic amount of speed. Consoles tend to have fewer levels of abstraction.

    This is how it works in every area. You have the people on top who have little to no abstraction. They know exactly how every little thing fits together. And they get paid accordingly. The people on the bottom just give you your burger. And are paid accordingly. They don't care how the meat or buns or whatever got there or where the money goes aside from their pay.

    I can imagine that like all things, computers are going to reach a level of complexity that's just flat out absurd. Hobbyists work on kit planes but it takes years of training to properly maintain a Boeing 747. As the complexity of planes went up, the requirements for getting hired to work on them also went up.

    However as usual, there will be a handful of geniouses that understand everything who write abstraction layer unpon abstraction layer until a level is reached that it doesn't take a genious to get a polygon on a screen.

    All that will change is the amount of education you'll need to be able to function at a certain level.

    Planes are one thing but it used to be that to fix a computer you had to hunt for a vacuum tube or whatnot that was out and replace it. These days, if a computer breaks, within 5 minutes you can determine the problem then throw out the defective part and buy a new one with little training. It's actually gotten easier to maintain PCs. I don't have to try to find and then fix a transistor in the northbridge. I just throw the MB out and get a new one.

    So yes, you do need to know assembler for certain positions to earn a certain pay. But, there will always be other entry levels that don't require that level of knowledge. It's up to the individual to choose what level they want to strive for.

    In conclusion, dumb, not well thought out article.

    Ben

  11. All metaphors... even the command line. by SoupIsGood+Food · · Score: 4, Insightful

    Bah. Everything in information technology is a metaphor, an illusion to trick the human mind into coping with the machine. Where do you think the term "channel" came from? It's a metaphor, using a nautical term to boil down an overbearingly complex technical description into a concept non-technicians can understand when trying to get their television to show them Gilligan's Island.

    Saying the command line is "closer" to the way a computer "really operates" is preposterous. The command line itself is a metaphor, an abstraction that simulates lingual conversation, where a GUI is an abstraction that simulates tactile space.

    Most programming languages are based around the lingual metaphor... but not all of them. Prograph was a language based around manipulating shapes in a super-flow chart, and Helix is a relational database language based around the same concept, only in a declarative rather than procedural programming context.

    Computers aren't even remotely human... they aren't even remotely alive or self-aware. These are just anthropomorphizations people assign to the system, because they don't understand that the command line, the C++ language, the GUI, are simply anthropomorphic metaphors, conceptual hacks that empower the user.

    The very first Hollerith machine used on Ellis Island was very close to a GUI system. You plugged in the card, and turned clearly marked dials to indicate nationality, age, etc, which were punched into a card (stored im memory.) Information was read from memory by putting the cards in a reader, where the appropriate option was lit up on a menu of possible options listed in plain english, corrsponding to the nationality, age, etc, as it was stored on the card. It depended on tactile metaphor to store and visual metaphor to retrieve data, rather than an answer-response metaphor like a CLI. The only way to get closer to the metal is to put the bits into memory by hand with a hole punch.

    What's needed are better, newer, more empowering metaphors. GUI's engage the part of the brain that deals with tactile, pattern and spatial relationships, so they're a better metaphor than a command line in most instances. We need to transcend the GUI with a more involving illusion, not just swap it for an older illusion that doesn't take as much advantage of human neurology and psychology... like the command line, or job control language, or patch panels.

    SoupIsGood Food

  12. Empowering citizens with Boolean algebra by Frater+219 · · Score: 5, Insightful
    What Evans' article suggests -- a conclusion, I might add, that I would not attribute to Neal Stephenson -- is that understanding computation has become necessary to individual freedom in our computerized society. That is, because we have to use these immensely complex and versatile artifacts, we must understand them and be able to control them, in order to call ourselves free. If we cannot control them, it follows, they will be used to control us.

    In the olden days, there was an expression used to refer to those disciplines and sciences deemed necessary to the free man. That expression was the liberal arts. Though today we might associate that phrase with endless "humanities" classes, or with a college degree not useful for any particular career, of old it meant simply those arts -- practices -- necessary to exercise the liberty of a free citizen. The classical liberal arts were seven: grammar, rhetoric, logic, arithmetic, geometry, astronomy (for which read "physics other than ballistics"), and music.

    (Please note that literary criticism, social theory, and deconstruction are not named among the liberal arts.)

    We still recognize (I hope) that one who cannot recognize a fallacy in argumentation, or who cannot do arithmetic, is severely impaired in exercising the freedoms of man and citizen. A person who is unacquainted with works of literature may miss cultural references in a politician's speech, but a person unable to cope with rhetoric and logic cannot even tell if the speaker is contradicting himself. Likewise, one who cannot add and subtract cannot tell if he is being cheated in the marketplace.

    From a classical viewpoint, what Evans is suggesting is that an understanding of computation has become a liberal art: a discipline necessary to exercise freedom. It is unfortunate and misleading, however, to frame this in terms of "programming languages" or "command lines" -- both of which are simply abstractions (just as is the GUI) on top of the mathematics of computation. The essence that must be understood is no language other than mathematics.

    (As an aside: Historically, computer science -- which has little, I might note, to do with "knowing programming languages" -- is an outgrowth of mathematical logic, which is itself an extension of the liberal arts of arithmetic, geometry, and classical (syllogistic) logic. Thus, Aristotle and Dodgson, to pick two, prefigure Turing and McCarthy.)

    The same fundamental calculi of functions, algorithms, and Boolean binary logic underlie all of the abstractions we may encounter in computing. GUIs, shells, assemblers, virtual worlds -- all of these are necessarily founded upon the same mathematics. No matter how complex the language or how pretty the interface, it must abide by mathematical logic or it cannot function.

    Thus, if Dylan Evans seeks, with Neo, "the code behind the graphics", he should not look to the Unix shell, to C, or even to machine code to find it. Those are tools, not truths, and freedom comes with understanding truths, not simply with mastering tools. Learn the liberal arts -- mathematics and logic -- and you will be much better prepared to defend yourself as a free citizen in a computerized world.

    1. Re:Empowering citizens with Boolean algebra by Ignis+Flatus · · Score: 5, Funny

      Learn the liberal arts -- mathematics and logic -- and you will be much better prepared to defend yourself as a free citizen in a computerized world.

      Nah, to be "free" in our society means having power. And for at least a couple of centuries now, the easiest way to obtain power is to become a lawyer. Learn to defy mathematics and confound logic through the power of law.

    2. Re:Empowering citizens with Boolean algebra by Dr.+A.+van+Code · · Score: 4, Insightful
      Unfortunately few U.S. citizens today can recognize a fallacy in argumentation. In American politics debates are usually won by whoever can yell the loudest, beat the most strawmen, scatter the most red herrings, poison the well the most effectively, do a better job of making ad hominem attacks stick, or lie the most convincingly. We desperately need more of the classical liberal arts.

      I agree that understanding computation has become an indispensible skill and should be considered one of the modern liberal arts. But I must take issue with your argument that a grounding in mathematics and logic is all that is needed.

      Programming languages and command lines may be only one form that the underlying math behind computers takes, but learning them teaches important lessons about how information is represented and structured in computers. Of course, there are other approaches that will bring about the same understanding. But focusing on the pure abstract math behind it all without ever getting down to the nitty-gritty implementation details will never give anyone the skills needed to survive in the modern world.

      One example should suffice to demonstrate the point. This evening I helped a friend with some computer problems he was having. One problem was an unwanted program that was running every time he booted up. A few moments with regedit quickly cleared up the problem. I'd like to think I'm fairly well versed in math and logic (yes, even Boolean algebra), but no amount of general knowledge would have been enough for me to solve the problem at hand, and, more importantly, it wouldn't have been enough for him, either!

      I knew my way around regedit and the Windows registry; he didn't. Let's have more (and better) education in logic and mathematics (statistics is also vital but too often overlooked), but let's also teach the tools and the practical application of the concepts. Otherwise we'll just produce computer idiot-savants.

      --
      Good mfences make good neighbors.