Source Code as Human Language
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.
it seems like scripters are constantly trying to belittle the utility of formal reasoning and careful work. has it never occured to them that it might be useful to have a compiler slap you around and tell you where you made a mistake? I'll take that any day over a runtime failure, however "soft" the failure might be. Even the mighty perl script does horribly wrong things sometimes.
Yeah I know it's a dumb question.....I'm just wondering which scripting langauge has the most mind share. I've looked at Perl a bit but the syntax seems very confusing.......
Don't mean to flame but I felt that the article was rather confusing and unfocused. Or maybe its just a holiday.
Point: Oreilly claims that computers have changed focus from IBM/DEC to Microsoft/Oracle ie hardware to software and going to somewhere new in the future. I don't see it. Yeah DEC isn't around but INTEL more than took over that spot. I think hardware might not be in the news as much simply since INTEL dominates. The second Motorola or someone does something interesting to upset the balance it will come back. I feel he's wrong.
Point: What does Open source have to do with a commerical concern such as AMAZON? Perhaps I missed the point or perhaps there is no point.
Point: Software as speech? You mean the language or the constructs from it? If you mean the language definition (like Java being closed) well I disagree. Let the market decide. If you mean the tools that come from the language then "No Way!" Alas the article is rather confused and vague on this issue.
Point: How the heck is scripting related to speech? This is completely bonkers.
Point: Open source is not free speech. Open source is more like creating useful clipart and letting people use it w/o royalties. Comparing it to science and western civilization is absurd. He gets off on the wrong step by saying "Once you start thinking of computer source as a human language...." Excuse me but that statement and the notion it contains is quite absurd. The problem seems to be that computer languages are called "languages" not something more accurate like "codes" or "notations". I cannot believe the writer didn't feel ashamed after quoting that.
Comparing free speech (a right that is difficult to come by in the world - and under attach in the US all the time ) to Open Source (the right to give away something you worked on - who really cares, its up to you) is simply not correct.
If you want to support free speech give to the ACLU. If you want to support OSS give to the FSF. Don't confuse them.
Peace
Ron Rangel
When I started learning Perl I was fairly angry. Most UNIX tools use a common set of notations to express things. I felt like when Wall designed Perl his shift key was broken. I don't care for it but use since its everywhere and I have to adjust programs written in it.
I thought PYTHON was the answer. Its not too bad but dont go and buy Guido's book. He's the designer of it. He might have designed PYTHON but he can not write. The oreily book is better. The reason I haven't used PYTHON much is that there is quite a lot of inertia towards it. "If we are going to use a nonstandard UNIX tool we must pick only one..." Perl is the choice.
TCL/TK. TK is a wonderful tool for generating GUI stuff in X, Windoze or in Netscape. The problem is TCL is a goofy tool that if you get a subtle bug it mught take you quite a while to find. I use the TK part and tcl to glue it together.
If you don't know AnY scripting then getting a handle on BASH or KSH would be in order. After that be sure to learn SED and AWK. I still use AWK all the time. Some of the newer tools outclass it but you will know where they are coming from and the limitations they are trying to blow away.
Or you could simply go to your local bookseller for $4.99 a piece in the bargain section and sample.and get a version behind text on all the above
Peace
Ron
thanks for the info. I learned the hard way. The more I think of it the more that article didn't need to be published or posted here.
Thanks again,
Ron "CrescentCityRon"
Eh, AFAIK he's most of the time serious and right on the money...
Computer "notations" are not rich enough to describe human thought.
That is debatable (strong AI people exist, you know) but I'm not gonna go into it. I'm just going to point out a terminological confusion.
The word language is used in several aceptions. The one you're thinking of is `natural language', which IMHO is synonymous with `human language' too. Pohl obviously is of the opinion they can be called "human languages" in the sense that "they are made by humans".
Then again, there's the other, mathematical conception of `language', which is that of a subset of the set of all possible strings on an alphabet. When mathematicians, logicians and computer scientists talk about `language' they usally mean that. For example, in a mathematical logic course, one studies several families of logical languages (first order, second order, with/without identity, etc.); a finite automaton accepts regular languages while a push-down automaton accepts conxtext-free languages; C or Pascal are languages whose syntax is specified by a context-free grammar, and which are semantically interpreted by a compiler and/or interpreter.
The most interesting part, for me, is that these two conceptions are not incompatible; in certain fields, like natural-language semantics and syntax, these two meanings of `language' meet. Thus, someone like Noam Chomsky frequently uses the word to mean both at the same time.
They are not languages since they cannot communcate human thought
You mean they cannot communicate the full range of human thought. Algorithms are contemplated by human thought, and computer languages communicate them quite nicely.
You seem to limit the word `language' to mean only `natural languages', and this IMHO is the source of the whole discussion. However, how do you classify pidgin languages? I think the case could be made that those languages cannot communicate the full range of human thought, but only limited matters relating to the interests of their users (like trade).
Near the end of the review:
"The O'Reilly & Associates catalogue has strong entries in traditional system languages such as C and Java."
Yes, Java certainly has a rich tradition... it's gained impressive mindshare, at least.
I think the whole overlying point is that scripting is 'expressing a desire for action'.
;)
In the context of the next generation of computer languages, I think he's pointing out that languages which 'express a desire for action on information' will be the next direction in which software will go.
Scripts are interpreted, this means that the 'idea of expression' is 'contained within the script' therefore scripts are implicitly open source.
In the sense that amazon.com uses scripting, I think he's pointing out that amazon.com uses 'open source' in the context that the 'idea of expression' is 'contained within the script' and is open to view.
Open source is free speech because source code expresses a direction (meaning instruction) of action. Open source, which is open to modification and distribution, essentially means its implicit ability to 'instruct' or 'make cause for action' is also able to be modified and distributed.
n.b. I think the article is speaking on a 'higher level' of abstraction. This article shows how English is excellent as a 'technical' language ( which we have a subject/predicate and verb) but horrible at expressing higher related abstract ideas which do not fit in the subject/predicate/verb schema. Perhaps if this article were written in Arabic then the article would be more to the point, since Arabic can express multi-dimensional as well as parallel operations on various sets of abstract ideas in which English simply can _not_ handle
... Handles it for me..
btw: 'use strict;' is also extremely handy. All these things make life more difficult when initially scripting, but they make for cleaner scripts..
- Otis
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...
Mind the Gap
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.
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"?
The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...
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!
The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...
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.
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.
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; 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, therefore thoughts exist. Ego is just an impression.
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.
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!).
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
æeee!
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" .
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.