From: Xah
Subject: a view of comp lang [was: why we have cons]
Date: 
Message-ID: <68tlha$oi2$1@nntp1.ba.best.com>
(This message has no technical value. Skip now at will.)

I think in "Why we have cons" thread, I've progressively desperately made
very clear now what I intented to ask. From the heated but overall cool
thread, I've learned the answer more than I wanted to know. (^_^)

In the thread I mentioned *an* ideal language as a conceivable goal of
abstraction. Erik Naggum humbly denied such conceivability on the spot. In
this message I'll try to elaborate on it.

Some people have expressed that I mixed up interface with inplementation.
This prompted me to think: How exactly do you define a _programing
language_? *I* view programing language as an implementable formal
mathematical language. In other words, the ideal language in my mind is more
or less a perfect interface (as some would call it). In this ideal language,
implementation or hardware has nothing to do with it. The language consists
of primitives that directly corresponds to abstract computational concepts.
In this language, it is conceivable that we still needs "data" such as tree,
and we need to represent it (as characters, symbols, or glyphs...etc.) in
some way. One way to write it is List[...], and trees are than List[expr1,
expr2,...] where exprs are Lists or nested lists. In this ideal language, it
is conceivable we still needs to retrieve data in some way. One way is to
have a function, say, Extract. Extract[expr,{n}] will then return the nth
part of an expr. Extract[expr,{a,b,c,...}] will return the index of a tree
at {a,b,c} etc. (i.e. the ath branch of bth branch of cth branch etc.) So
you see, the two example primitives List and Extract has a concrete meaning
in the language. In this ideology, it is a kludge if one needs to figure
what caadadadadar to use to get the {i,j,k..} th index of a tree. It is a
kludge if one needs to think about cons, "cells", pointers,  datatypes,
heterogenousness, vectors, constructors, efficiency,...etc. in order to
create a tree. Exactly how such a language will be like on paper, and what
primitives related to computer engineering concepts are necessary, is not
clear to me or anyone. (I think)

Remember this ideal language is defined to be implementable, but the
implemention details one couldn't possibly imagine: multitude of processor
types, myriads OSs technologies, unforseeable computing hardwares
(biological, optical, magical...), ...etc. All these should be the jobs of
computer *engineers* with the task currently known as compiler/intepreter
optimizing technology. On the other hand, computer *scientists* are busily
figuring out what such auto-optimization is possible and what is not and
what is the theoretical limit of such. These are irrevelant to the users of
this programing language. This language is permanent. It is just like a
piece of mathematics (e.g. lambda calculus), except it is actually *usable*
for computing. If there be improvements made to the language, it is the
implementations, which is totally independent to language.

It may be that such language is impossible even in theory, but it is in the
least extremely desirable and rewarding in its research. I think many of the
modern research languages are one way or another running closer to such
ideology, whether or not its their goal.

In my bias, I view computer science as a branch of math. It studies of
"what's possible", but not "what is better". The whole cons business is too
much an engineer's issue. The qestion of whether cons should be visible in a
language is, in my ideology, obvious.

Star Trek scenario:
Xah: "Computer, give me a list x".
Computer: (done)

Erik: "Computer, cons cons cons cons cons."
Computer: "Incomplete request. Please state what type? How you gonna use it?
do you want to mix datatypes? Do you care about efficiency? And how you want
your cons nested?"

2001 scenario:
Xah: "Hal, summarize the state of philosophy for me".
Hal: (answer spoken)

Erik: "Damn you Hal. Do you know what's cons? Do you know what is Lisp? Do
you know what is REAL LISP? You damn next generation fsssck!"

PS I'm like many programers, always on the lookout for the ultimate
language. Mathematica is my love. Scheme I'm learning. (I like Scheme too,
if you are looking for this line.) Perl is crap. Based on my rambling, which
language do you suggest?

 Xah, ···@best.com
 http://www.best.com/~xah/Wallpaper_dir/c0_WallPaper.html
 "Flaming is social. It releases tension, heal wounds, expands brain size,
and promotes love. Oh, hug me."

From: Erik Naggum
Subject: Re: a view of comp lang [was: why we have cons]
Date: 
Message-ID: <3093113410990461@naggum.no>
* "Xah" <···@best.com>
| Erik: "Computer, cons cons cons cons cons."

  I wish you would at least pay enough attention to make funny jokes.

  you seem to have this psychological need to ignore about half of what I
  write in favor of making me appear to you as you have decided I am,
  despite masses of evidence to the contrary.  such is not just stupid
  behavior, it's downright moronic.

  go play with Mathematica or something, will you?

#:Erik
-- 
The year "98" was new 1900 years ago.  |  Help fight MULE in GNU Emacs 20!
Be year 2000 compliant, write "1998"!  |  http://sourcery.naggum.no/emacs/
From: Will Hartung
Subject: Re: a view of comp lang [was: why we have cons]
Date: 
Message-ID: <vfr750EMDJFJ.2z8@netcom.com>
"Xah" <···@best.com> writes:

*snip*

>PS I'm like many programers, always on the lookout for the ultimate
>language. Mathematica is my love. Scheme I'm learning. (I like Scheme too,
>if you are looking for this line.) Perl is crap. Based on my rambling, which
>language do you suggest?

Esperanto.

-- 
Will Hartung - Rancho Santa Margarita. It's a dry heat. ······@netcom.com
1990 VFR750 - VFR=Very Red    "Ho, HaHa, Dodge, Parry, Spin, HA! THRUST!"
1993 Explorer - Cage? Hell, it's a prison.                    -D. Duck
From: Xah
Subject: Re: a view of comp lang [was: why we have cons]
Date: 
Message-ID: <xah-ya02408000R0601981331410001@nntp1.ba.best.com>
>>PS I'm ... always on the lookout for the ultimate language....
>>which language do you suggest?
>
>Esperanto.

With respect to artificial *human* languages, how about loglan:

<http://www.halcyon.com/loglan/what-is-loglan.html>

Loglan is based on predicate logic, and indeed seems to be possbible to be used as the ideal *programing* language I'm looking for. If you knew loglan, I'd be very interested to hear what you have to say, especially in regards of its use as a programing language.

 Xah, ···@best.com
 http://www.best.com/~xah/Wallpaper_dir/c0_WallPaper.html
 "Your nonsense is no better than mine."   --Mathematician of metaland.

Excerpt:
>Loglan is a speakable, human language originally designed to serve as a 
>test of the Sapir-Whorf hypothesis that the structure of local human 
>languages places limits on the development of local human thought, and 
>hence, on human cultures. If this hypothesis is correct, a language that 
>"lifted" those constraints--that is to say, that reduced them to some 
>functional minimum--should in a certain sense "release" the human mind 
>from these ancient linguistic bonds and so have notable effects on both 
>individual thinking and the future development of human culture. 
>
>
>Since its original development in the late 1950s and the 1960s Loglan 
>has acquired certain properties that also make it interesting to 
>computer science, principally its total freedom from syntactic 
>ambiguity. This feature of the language, together with its audio-visual 
>"isomorphism" (which means that the Loglan speechstream breaks up 
>automatically into fully punctuated strings of words) and its borrowing 
>algorithm (by which the International Scientific Vocabulary goes into 
>Loglan virtually ad libitum), may make it ideal for three uses: 
>1.for international information storage and retrieval, 
>2.for machine-aided translation between natural languages, and 
>3.for facilitating interaction between computer-users and their 
>machines.
From: John Atwood
Subject: Re: a view of comp lang [was: why we have cons]
Date: 
Message-ID: <68vdiu$emn$1@news.NERO.NET>
Xah <···@best.com> wrote:
>PS I'm like many programers, always on the lookout for the ultimate
>language. Mathematica is my love. Scheme I'm learning. (I like Scheme too,
>if you are looking for this line.) Perl is crap. Based on my rambling, which
>language do you suggest?

Sound to me like you might like Haskell.  See www.haskell.org
Start with "A Gentle Intro to Haskell..."
Some other papers are at:
http://www.md.chalmers.se/~rjmh/tutorials.html
And some heavier stuff at:
http://www.lpac.ac.uk/SEL-HPC/Articles/GeneratedHtml/functional.pearls.html
I recommend two of Paul Hudak's papers to get the flavor of the langauge:
"Haskell vs. Ada vs. C++ vs. Awk..." - An Experiment in Software
Prototyping Pruductivity."
"Haskore Music Notation, An Algebra of Music"
both at:
http://www.cs.yale.edu/users/hudak-paul.html

The easiest implementation to install and get around in (in my 
experience) is hugs, at www.haskell.org.


John


-- 
--Office phone: 541-737-4145 (Dearborn 311) home: 757-8772
  Office mail:  303 Dearborn Hall, OSU, Corvallis, OR  97331