Re: foundations of relational theory?

From: Marshall Spight <mspight_at_dnai.com>
Date: Wed, 29 Oct 2003 06:39:28 GMT
Message-ID: <AgJnb.40259$275.92001_at_attbi_s53>


"Mike Preece" <michael_at_preece.net> wrote in message news:1b0b566c.0310282146.902de1e_at_posting.google.com...
> "Marshall Spight" <mspight_at_dnai.com> wrote in message news:<hCwnb.38621$9E1.148443@attbi_s52>...
> >
> > But I'm *extremely* skeptical of the idea that any variant of BASIC
> > could compete on language features with a modern language. I
> > could be convinced otherwise, though.
>
> I'll bite (couldn't resist if I tried).
>
> Bearing in mind that everything in Pick is a string - more or less -
> and that PickBasic has a feature set ideally suited to manipulating
> strings with Pick's specific system delimiters, I'd like to know if
> there's a programming language that could do a better job.

On the specific issue of manipulating strings using Pick's specific delimiters, a special-purpose language (aka Pick BASIC) will typically demolish a general purpose language.

> I'd go so far as to say that, provided the programmer is aware of the
> format, it's pretty damn handy at dealing with *any* ASCII string -
> regardless of where it came from or where it's going.

There are a number of languages out there that target String processing specifically. The most well-known is Perl, but I do not consider Perl a particularly praiseworth language. The most interesting is probably Icon. Despite its age, it is still quite interesting from the standpoint of the number of interesting things it does really well, such as generators, backtracking, and coroutines. (Note that popular languages such as C++ and Java do not have any of these features. Python has generators.) I've never heard any official confirmation of this, but it certainly appears to me as if much of Perl's string processing features derive from Icon (possibly indirectly.)

Some people like Python for string processing, and a lot of people like Python for just about anything. I must admit it has many attractive features.

C++ has templates and operator overloading, which are pretty cool. The template sublanguage is impressively powerful.

Java has a very clean model for object oriented programming (OOP.) It has first class support for exceptions, including the ability to typecheck exceptions, and a "finally" construct that solves the problem of resource deallocation in the context of thrown exceptions. It has inner classes, which may be anonymous. This is quite a feature; it significantly makes up for the lack of higher order function support (HOF.) Also in the OO canon is Eiffel, which has Design By Contract. I think DBC would be an excellent fit for a RDBMS-oriented language.

Lisp and Scheme have features such as continuations, lambdas, and macros. (Lisp macros are on a whole different plane from C macros; I admit I do not begin to fully understand them.) CommonLisp has the "Meta Object Protocol."

Languages like the ML family (which includes OCaml) and Haskell have Hindley-Milner type systems and type inference. I'm quite interest to learn more about type inference; it may be a great fit for relational. These languages also have excellent HOF support. Haskell includes a pure functional sublanguage, and monads.

There's also Erlang, which comes from Mars, apparently. I would love to have the time to study that closely for a while.

These are just the (comparatively) mainstream languages. There's also things like Ruby, Tcl, PHP, Objective C, C#, Nice, Pizza, Mozart, Sather, Mercury, Clean, Dylan, Ada, Cecil, CLU, XSLT, Javascript, Self, REXX, Prolog, Modula-3, FORTRAN, etc.

Each and every one of these languages has some unusual or different feature or combination of features that makes it interesting, distinctive, and unique. Except FORTRAN.

> Can you tell me where I can find out more about a "modern language"
> with features that a PickBasic programmer is "cut off from"?

I honestly believe I could spend the rest of my life studying it and still feel like I was just getting started. Interesting resources are language-specific sites like python.org, ruby-lang.org, java.sun.com, theory/discussion sites like lambda.weblogs.com, and Your Local University.

Marshall

PS. I tried to range over a pretty broad swath of languages; there are almost certainly some mistakes in this post. The line about FORTRAN was a crack; FORTRAN has some high performance vectorizing math libraries that make it still the performance leader in some domains to this day. Received on Wed Oct 29 2003 - 07:39:28 CET

Original text of this message