[comp.lang.misc] Icon, was:Re: Discussions of languages

mccarrol@topaz.rutgers.edu (<MC>) (01/11/88)

]My favorite language is Icon :-) :-); this language is VERY loosely typed.  My
]problems usually don't come about because of type differences (Note:  since it
]is an interpretive language it does provide the equivalent of runtime checks).
]This language helps me find my logic bugs (I don't have to worry about silly
]little things like stacks and lists; they are built into the language.
]
]One of the philosophies of Icon is that every function should either return a
]useful value or fail (i.e., x < y returns y if true; otherwise fails).  Another
]thing is that functions can return more than one value (generators; i.e.,
]find(s1,s2) returns all the positions of s1 in s2, and fails when it can't find
]any more).  I love these concepts; what do others' think?
]
	Since I just started reading some info on Icon this week, and
you seem to be fairly interested in it, I have a couple of questions
about Icon. It seems to be a language with a lot of excellent concepts
(generators in particular strike me as being a great idea..). But it
doesn't seem to me to be terribly useful in general. It seems like it 
could do awk type jobs extremely well, but from what I've seen, it
doesn't seem to be terribly good at much else. What is it intended
for? Is it basically a text processing language, is it just something
to try out some new ideas, or have I totally missed something?

] _ __			NEVIN J. LIBER	..!ihnp4!ihlpf!nevin1	(312) 510-6194
]' )  )				"The secret compartment of my ring I fill
] /  / _ , __o  ____		 with an Underdog super-energy pill."
]/  (_</_\/ <__/ / <_These are solely MY opinions, not AT&T's, blah blah blah

		-Mark
-- 
"It is a principle of the music/to repeat the theme |Mark C. Carroll
Repeat/and repeat again/as the pace mounts.  /------/Rutgers U CS Student
The theme/is difficult/but no more difficult |ARPA  :CARROLL@AIM.RUTGERS.EDU
than the facts to be/resolved"-WC Williams   |Usenet:mccarrol@topaz.rutgers.edu

wpnst@cisunx.UUCP (Bill 'Deus' Nixon) (01/12/88)

Here at Pitt, one of the upper level CS courses uses Icon.

It was designed bascially for String processing and is a superset of
SNOBOL.  Allows for structured programming (for you Pascal type people)
and symbolic manipulation of formulas.  Seems like it would work good
for a parser.

I like the 'C' type statements - statements can succeed or fail, passing
along a value for each case.

Even tho it allows structured programming, I love having not to declare
my variable.  I hate compiling my PASCAL or Modula-2 program, and have
the compiler yell at me for not declaring some stupid counter variable.


-- 
Bill 'Deus' Nixon  		One of the Univ. Of Pgh  ZETS !
mail :	wpnst@pittvms.BITNET
	wpnst@unix.cis.pittsburgh.EDU
	{allegra, cadre, psuvax1}!pitt!cisunx!wpnst

daveh@cbmvax.UUCP (Dave Haynie) (01/13/88)

in article <6121@cisunx.UUCP>, wpnst@cisunx.UUCP (Bill 'Deus' Nixon) says:

> Here at Pitt, one of the upper level CS courses uses Icon.

> It was designed bascially for String processing and is a superset of
> SNOBOL.  

Nope.  Icon does many of the kind of things that SNOBOL was designed to do,
but other than the fact they both process strings and they're both Ralph
Griswold languages, they're not all that closely related.  SNOBOL is 
syntatically a very primitive language.  Things like functions were added
after the language was initially defined, and as a result they're implemented
very strangely; you actually have to have your program jump around all 
functions you define.  SNOBOL, like older BASICS, is globally oriented and
starts execution from its first lines.  Icon is a more modern language,
syntatically similar to the Algol-derived languages like Pascal.  I used
SNOBOL in at course in college, and I've used Icon only a bit on my Amiga,
but I much prefer Icon.

> Allows for structured programming (for you Pascal type people)
> and symbolic manipulation of formulas.  Seems like it would work good
> for a parser.

I think it would be very good for writing compilers, if it could be easily
compiled itself.  Without that capability, it's going to be much too slow.

> I like the 'C' type statements - statements can succeed or fail, passing
> along a value for each case.

In SNOBOL, your control structures consist of an optional GOTO-type field on
the end of any program line that can act on success and failure.  Pretty
nasty, but I guess it works.

> Even tho it allows structured programming, I love having not to declare
> my variable.  I hate compiling my PASCAL or Modula-2 program, and have
> the compiler yell at me for not declaring some stupid counter variable.

> Bill 'Deus' Nixon  		One of the Univ. Of Pgh  ZETS !
> mail :	wpnst@pittvms.BITNET
> 	wpnst@unix.cis.pittsburgh.EDU
> 	{allegra, cadre, psuvax1}!pitt!cisunx!wpnst
-- 
Dave Haynie  "The B2000 Guy"     Commodore-Amiga  "The Crew That Never Rests"
   {ihnp4|uunet|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
		"I can't relax, 'cause I'm a Boinger!"

cef@H.GP.CS.CMU.EDU (Charles Fineman) (01/13/88)

And I thought I was alone!!!

I think one of the main reasons I liked ICON was that it was fast and easy
to program in. The resulting programs are much cleaner (read succinct) 
and thus easier to debug (and to grade i'm *SURE*). 

HOWEVER, I still can't see ICON as any more than a toy language. It
may be good for quick prototyping of complex algorithms but you probably
wouldn't want to write anything *real* in it because it is interpreted.

The year after I took the Comparative Programming Languages course at CMU
they switched from ICON (which, incidentally, replaced SNOBOL from the year
before) to CLU. I borrowed a friend of mine's book and checked it out.
CLU has co-routine support similar to ICON's but instead of being loosely-
typed, it's tightly-typed with overloading. So, once you've written your 
prototype in ICON, all you have to do is formalize your data types
(CLU has a concept fo a CLUSTER; a data object and its associated operations)
in CLUish. CLU has the added benifit of being compiled and it has *great*
modularazation support (besides clusters).

I must make one thing clear, I have never actaully programmed in CLU so
the above is entirely conjecture. If CLU is really a bomb, I'd like to know.
I always thought a CLU compiler with shared clusters (between processes) 
would be a neat thing to try and implement.



	Charles Fineman
	Carnegie-Mellon University
	cef@h.cs.cmu.edu (via seismo)

franka@mmintl.UUCP (Frank Adams) (01/20/88)

In article <6121@cisunx.UUCP> wpnst@unix.cis.pittsburgh.edu.UUCP (Bill 'Deus' Nixon) writes:
>Even tho it allows structured programming, I love having not to declare
>my variable.  I hate compiling my PASCAL or Modula-2 program, and have
>the compiler yell at me for not declaring some stupid counter variable.

What I really hate is having the compiler *not* yell at me for mispelling
one of my variable names, and having to spend (sometimes) hours to find the
bug.  The overlooked declaration can be fixed in a few minutes.  It takes a
*lot* of those to make up for one six hour debugging effort.
-- 

Frank Adams                           ihnp4!philabs!pwa-b!mmintl!franka
Ashton-Tate          52 Oakland Ave North         E. Hartford, CT 06108

wpnst@cisunx.UUCP (Bill 'Deus' Nixon) (01/25/88)

In article <2666@mmintl.UUCP> franka@mmintl.UUCP (Frank Adams) writes:
>What I really hate is having the compiler *not* yell at me for mispelling
>one of my variable names, and having to spend (sometimes) hours to find the
>bug.  The overlooked declaration can be fixed in a few minutes.  It takes a
>*lot* of those to make up for one six hour debugging effort.

Complier not yelling at you for things ?  Well, maybe AI research will
come up with a compiler capable of this.  The worst language to make a
typo in is 'c'.  

For example, a friend of mine was working on a LARGE project (ie.  lots
and lots of code.), and had this line buried inside of the middle of
it :

	if (c = 10)

Of course he meant, if (c == 0), but hey, he was used to PASCAL, and
well, couldn't figure out why the code was bombing with certain test
cases. 

What's worse, a mispelling that isn't caught, which could be caught with
a spelling checker variation, or a logic error, that may be caught with
lint, if you can read and understand all the stuff.

Program error are always going to be prone to human error no matter how
much checking the complier/paser/linter does.

Now, for a question - what is the langauge with the least about of risk
to make 'typo' mistakes ?  Maybe you all can sent your opinon to me, and
I'll post the "poll" results in a few weeks.

-- 
Bill 'Deus' Nixon  		One of the Univ. Of Pgh  ZETS !
mail :	wpnst@pittvms.BITNET
	wpnst@unix.cis.pittsburgh.EDU
	{allegra, cadre, psuvax1}!pitt!cisunx!wpnst

matt@oddjob.UChicago.EDU (My Name Here) (02/02/88)

wunder@hpcea.CE.HP.COM (Walter Underwood) writes:
) Lint'ing code can be very interesting.  I've found procedures called
) with the wrong number of arguments, variables used but not set, etc.
) All this in code that seemed to work just fine.

For instance, unix kernels.  (If I may let the last sentence apply to
them!)
				Matt Crawford