Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
News

Source Code as Human Language 30

Geoff Eldridge writes " An interesting interview with Tim O'Reilly by SunWorld's Cameron Laird and Kathryn Soraiz - "the most distinctive aspect of O'Reilly's vision of software is to see it as expression more than product" - "He consistently talks about applications in the languages of the theater or gallery." " Nice little piece. Definitely worth a read.
This discussion has been archived. No new comments can be posted.

Source Code as Human Language

Comments Filter:

  • From the article:
    "failsoftness." Now, I guess this means "(fail-soft)-ness," meaning that failures in one place aren't catastrophic globally. But it could also, if poetically, mean "(fails-oft)-ness," being the quality of failing often. Maybe that's a term that could use replacing...

  • Perl *is* a mess... it has the advantage, though, that most of the messiest bits are redundant (TMTOWTDI). You can forget about 'em without affecting your ability to program in the language at all. You can write Perl that looks like just about anything you want. For example, I've been programming C for ages, and just recently picked up Perl... my Perl programs tend to look like C with regexps. It's also possible to write Perl that does exactly the same thing, but looks like the diff of two sendmail.cfs. Most people's code, from what I've seen, is somewhere between.
  • Computer "notations" are not rich enough to describe human thought. Please translate the following english statement into any computer notation you please:


    "Last night the whiskey was thin and the glass was thick." - Langston Hughes.
    Graphical art, music, and architecture probably suffer from just the same deficiency. Have you tried translating the factual contents of that statement into either an oil painting or a fugue? What about its poetic qualities? Are you saying oil on canvas isn't rich enough to describe human thought?

    On the other hand, English isn't too good at explaining Da Vinci's Mona Lisa, or the geometry of the Mandelbrot fractal. Each kind of expression is optimized to deal with its preferred subset of human thought. Computer languages don't stand out from any of the others, except in a political context.

    On the Internet, the average image says about as much as 2.72 words.

  • Programming languages are obviously languages (systems for constructing symbolic strings, within constraints of syntax, with semantic associations). They are human invention, and they allow humans to express thoughts. So why should they not be called "human languages"?
  • Computer "notations" are not rich enough to describe human thought.

    Must a language be so powerful that it can express all thoughts just to qualify as a "language?" If so, then I claim that languages do not exist, period. :-) English cannot express a huge universe of musical thoughts, for example.

    My claim was that computer languages allow humans to express thoughts, and never meant to imply all thoughts -- which would be a silly claim to make for any language!

  • One reason that the "source is language" meme is a good one to spread is that it would tend to bring programs under the protection of existing protections for speech and press. For instance, it would undercut encryption-export laws, whose Constitutionality in the U.S. has hinged in court on source *not* being speech.

    Your comparison of free software to free clip-art demonstrates this point even better: graphic arts are already considered speech, at least under U.S. law.

    Source code is an expression of ideas, just as much as a mathematical treatise is. The difference is that source code, besides *expressing* the ideas, *implements* them at the same time.
  • If you tend to learn by example, try to avoid a lot of the public domain code. 90% of the Perl code I come across is written so horribly and inconsistently that I tend to pull *ideas* from it and re-code it from scratch. I'm not trying to knock all of the Perl developers by saying that (I used to code pretty bad Perl myself when I was learning), but do try to find examples written by experienced programmers instead of novices. An O'Reilley book wouldn't hurt, either (and has examples of good examples!).

    Perl syntax is extremely flexible, which is why it might seem confusing. Once you figure it out, though, you'll find Perl to be extremely flexible and efficient.

    I am biased a bit here (being a Perl guy), and haven't used any of the competing languages, but I think Perl is the most widespread and general-purpose (though it's excellent when it comes to CGI and text processing).
  • I'd have written it like:

    next unless $x && $y;

    I think that's a bit clearer. No offense, but "if (!$x || !$y)" doesn't seem very "well-written" to me. :)
  • I think O'Reilly's point was that, originally, hardware was the most important thing; you bought an IBM System 360, or a PDP-11, or whatever. Then the focus shifted to software; you now buy Windows or Unix, in order to run Excel or Oracle. Whether it runs on a chip made by Intel or AMD, Sun or Digital, isn't the focus. The way O'Reilly mentions infoware, he's forseeing a shift away from software, where you run little snippets of code inside a browser or Web server, which perform useful operations with a large data collection, such as the purchasing patterns of Amazon's customers. *Which* browser or Web server would, presumably, become irrelevant over time.

    And open source, because of the peer review which it allows, has often been compared to the process by which science refines its results and corrects errors, so the comparison isn't that far-fetched.

  • If you really can't handle Perl, Python is probably your next best bet. It is ultra-clean in design, and ultra OO. But waaaaay less fun.

    Actually, I've found it great fun; the user community is generally quite clever, and comp.lang.python is my counterexample whenever someone claims that all Usenet newsgroups are swamped in noise. Tim Peters's postings alone are worth the price of admission. (Recently I've noticed a sharply increasing number of simple questions from newbies on c.l.p; while that's good because it means the language is becoming more popular, I hope it doesn't change the newgroup's chemistry too much.)

    Also, try attending one of the Python conferences; they've been great fun for techies. At IPC7, the most recent conference, guess which presentation sparked the longest question-and-answer session? Ivan van Laningham's talk on the Mayan calendar. The session on parsers also interested a lot of people, and I netted a bunch of quotations for my Python quotation file [skyport.net]; lots of Python users seem to be parser geeks, too.

    IPC7 also featured David Beazley's hilarious talk on Python and supercomputing, another audience favorite. Since he also talked a good deal about LLNL's Beowulf system, it would be on-topic for a Linux conference; someone should invite Beazley to Linux Expo. (Hint, hint...)

  • I found Perl to be powerful, but was always vaguely dissatisfied with the obscurity of its syntax, and the fact that it is so willing to let you shoot yourself in the foot. I've started working with Python now, and found it to be much cleaner, more maintainable, and strangely enough, it even appears to be more extensible. Go Python!

  • Great ideas you have on jvm functionalities ;)

    Like there is DTD for SGML, could there be a (useably) uniform spefication for (scripting) languages, so that you could embed functionality into, say, XML data: parts of the data itself could act as ad-hoc semi-active script, defining widget response calculus or repeating data?

    A meta-language should be able to present primitives such as block structure, test, repetition, call, data representation and inheritation markings, together with certain mutilations of these. With a few lines you should be able to redefine a new way to interpret parts of your data. With some more effort, you should be able to express more complicated compulinguistical developments.
  • I think exactly the opposite of JavaScript: it is actually useful, but it doesn't make sense.

    It is useful, as in, it does things the developper might wnat to do, and that can't be done otherwise. Which means it can be great to use in a controlled environment, like an "intranet" where you trust the server

    It doesn't make sense on the web, because it lets the server control the client much more than the human in front of the client would reasonably want. For one thing, it lets the page open new windows, coming up wth all kinds of annoying popup ads, and even worse, sites that will deliberately make it hard for you to leave!

    Unless you happen to trust the site that you're visiting, the only reasonable default for javascript is OFF.

  • perl is a compiler (compiles into some kind of internal bytecode, but that never prevented it from checking the program for consistency). and perl has good ways to enforce strict coding, just "use strict" and declare your variables etc. perl -w is your friend too.
  • learn sed and awk?? that's the last bit of advice I would ever give to anyone learning Linux/Unix nowadays! I'd say learn perl (or python, if you're of that religion), the basics of shell scripting, and be done with it.

    coding anything more complicated than a few lines in shell script feels like masochism to me, and sed and awk are redundant once you know some perl (but not the other way around!).

  • more or less standard predicate notation for the above would be:

    thin'(E, whiskey) & thick'(E, glass) & last-night'(E).

    of course, you lose all kinds of implications and connotations...

  • All you need for scripting is Perl (and possibly awk or sed). Even TCL/TK! I just wish one of those was adopted as the standard inline scripting language, not the broken, clunky Javascript.

    sigh

  • What has the biggest mindshare? Visual Basic, or
    JavaScript, or Perl, depending on how you define
    things.

    For a Linux audience, I'll recommend "How to choose a scripting language" .
  • What has the biggest mindshare? Visual Basic, or JavaScript, or Perl, depending on how you define things.

    For a Linux audience, I'll recommend "A HREF = "http://www.sunworld.com/sunworldonline/swol-10-19 97/swol-10-scripting.html">How to choose a scripting language".

  • Neither O'Reilly nor I belittle formal reasoning.
    I apologize for any such impression.

    Let's take this topic to comp.software-eng; I'm
    more comfortable there.
  • I apologize for any confusion I've promoted.

    One of the conventions of "Regular Expressions" is
    to look at the bottom for references to such other
    pieces as O'Reilly's "Open Source Revolution".
    Perhaps reading that will give you what you're
    after.

"And remember: Evil will always prevail, because Good is dumb." -- Spaceballs

Working...