Updated 2017-01-10 12:15:59 by gre (Redirected from The L Programming Language)

What It Is edit

Little is a statically-typed scripting language that combines C syntax and types with Perl's regexes and associative arrays, and dynamically compiles the whole lot to Tcl byte-codes. All Tcl/Tk facilities are available to Little, and source files can interleave Little and Tcl code that call each other.

Homepage: http://www.little-lang.org/

Language Reference: http://www.little-lang.org/little.html

GitHub repo: https://github.com/bitkeeper-scm/little-lang

Web forum: https://users.bitkeeper.org/c/little-language

IRC channel: #little-lang on freenode.net

What It Was edit

Little is the current incarnation of the L programming language.

As of late 2006, an introductory paper was at: http://www.bitmover.com/lm/papers/l.pdf. A related IRC channel named "##l" existed on the irc.freenode.net. Old documentation remains available at http://www.mcvoy.com/lm/L/L.html.

A seminar on the language was presented in 2006 at the Thirteenth Annual Tcl/Tk Conference.

What It Looks Like edit

/* trivial grep implementation */
int
main(string argv[])
{
    string buf, regexp;
    int    ret = 1;        // not found is default
    
    unless (regexp = argv[1]) die("usage: grep regexp [files]");
    undef(argv[1]);        // left shift down the args

    /*
     * Example perl goodness, the iterate through files and regexp
     */
    while (buf = <>) {
        if (buf =~ /${regexp}/) {
                puts(buf);
                ret = 0;
        }
    }
    return (ret);
}

Discussion  edit

New topics

Larry Smith God, people, can we please stop looking to C for syntax? It was an ugly language when it was created, it's gotten nothing but uglier since then, and it, and all of its derivatives, remain ugly, glitchy, and riddled with exceptions, arbitrary assumptions and associated garbage. C'mon, folks, the state-of-the-art has moved in 30 years! If you need some idea what to look for that's cleaner and easier, look at Oberon [1], check out the FAQ [2], and look at the community [3]. Full control-statement bracketing is not the only advance, not just solve the "dangling-else" problem, it incorporates type extension and other object-oriented concepts cleanly, elegantly, and concisely. Check out [4]. And it's not the only major advance out there either, but can we stop looking to a glorified assembler for high-level language concepts? It's not "easier" - it's just more familiar - and that's an endlessly self-fulfilling prophesy.

Availability (old)

PT 07-Nov-2007: I built some tclkit executables that contain L for Windows - see [5]

(June-2009): If people want more recent drops based on 8.6b1 ping the L mailing list, we're looking for a few beta testers.

lexfiend 2016-Apr-21: The current incarnation of the language is called Little.

History of L (old)

L is a programming language started by Larry McVoy, with help with help from Jeffrey Hobbs, Oscar Bonilla, and Tim Daly, Jr.

(2009) That's not quite accurate, says lm. I, through BitMover, provided the funding and the overall direction. The initial coding was done by Oscar, Tim, with help from Jeff and hand waving (aka "you're doing it wrong") from me. Miguel Sofer did the first implementation of "deep dive" which was the logic needed get at various elements of complex structures (a hash of structs which contain an array - think int x = h{"key"}.list[12]). That was some complex work.

Tim got it partially working and then moved on to Yahoo. After Tim left, we coaxed Rob Netzer into coming back to work at BitMover and he's done a tremendous job of moving the language forward. As of June 2009 the line counts on the code look like:
      8 damon
      9 jeffh
    400 lm
     20 mig
     88 ob
  16896 rob
    688 tim
    996 wscott

and the line counts on the tests look like:
     21 damon
     10 jeffh
     24 lm
    336 mig
     72 ob
     69 ob/tim
  12953 rob
   1472 tim

so you can get an idea of who is doing the heavy lifting.

Questions

SYStems will L add features that TCL does not, like different ways to do concurrency or parallelism, gradual typing, etc ...