ACM Queue: Schizoid Classes

Schizoid Classes, Rodney Bates

Smalltalk-80 was an important and enlightening experiment in just how far object-orientation can be taken in a programming language. It is simple, compact, and shows a rare and refreshing integrity of concept. To accomplish its goals, it introduces the idea that the variables of a class can be either class variables or instance variables, and the methods can be either class methods or instance methods. This turns the class into a mixture of two fundamentally different concepts—type and module—with very different semantics. Smalltalk manages to do this relatively cleanly.

Unfortunately, two more recent languages, C++ and Java, have taken this same distinction and turned it into a gratuitous mess.

The author is of the opinion that [t]he best-designed languages give you two abstraction tools—a module and an object type—each of which serves its own purpose reasonably well - I wonder if he is thinking about Smalltalk or about Ada...

Great Works in Programming Languages

A collection organized by Benjamin C. Pierce.

In September, 2004, I posted a query to the Types list asking people to name the five most important papers ever written in the area of programming languages. This page collects the responses I received. (A few are missing because I am still tracking down bibliographic information.)

Seems prime material here for Lambda.

Programming Language Popularity

Mind as well complete the daily trifecta and post the article on Programming Language Popularity. The author combines search, advertizing and job data to try and draw a measurement on various aspects of popularity. Open to criticism, but the results are somewhat non-surprising given the weights applied, and coming up with a truly objective measurement is probably impossible.

In conclusion, if we look at the data available to us, especially as presented in the final, normalized chart below, we can see that there are broad patterns in language usage. Beyond the overall ranking, it is also possible to see whether a language is more used (jobs) or promoted (ads), and also whether it is used for open source projects, where presumably the participants have chosen a language because they feel it is truly the best choice, rather than dictated by management or commercial needs.

Smalltalk 80: Green Book

The text for Smalltalk-80, Bits of History, Words of Advice is now available online. The text documents the development history of the Smalltalk 80 language.

  • Part One of this book is a collection of papers that provide some
    background and history of the Smalltalk-80 implementation.
  • In Part Two we present papers that describe the experiences four
    implementors had in bringing their systems to life.
  • Part Three is a collection of measurements made by the
    implementation groups.
  • In Part Four we present papers that look toward the future of
    Smalltalk systems and propose ideas for extending the Smalltalk-80
    system beyond its initial form.

via Cincom Smalltalk Blogs.

The Language of Biology

Probably goes against Dijkstra's advice of modeling real world objects, but Luca Cardelli is exploring Programming Languages for Biology.

If you want to go to another country, it would behoove you to learn the language of the land. Luca Cardelli, an Italian researcher working in England, knows this lesson well. He wants to help scientists travel to an unknown country — the membranes and cells of our bodies — and feel right at home. To do this, he is developing a computer language to model the processes of biology.


From the University of Waterloo Computer Graphics Lab comes Sh:

Writing programs for these GPUs can be a tedious task, as it generally has to be done in assembly. A high-level language allows programming GPUs with familiar constructs and syntax, without worrying about the details of the hardware. A high-level language is also important for portability across different hardware and graphics API platforms. Sh is such a high-level language. It offers the convenient syntax of C++ and takes the burden of register allocation and other low-level issues away from the programmer. This allows GPU programs to be written much quicker and makes porting such programs extremely simple.

See also this recent article on Gamasutra (requires login, free)

Fresh O'Caml

Fresh O'Caml aims to provide the features of the Objective Caml language (with the exception of native-code compilation) together with:

  • a type of names for representing object-level bindable names;
  • abstraction expressions for representing object-level binding;
  • pattern-matching for deconstructing abstraction values;

and some additional utility operations.

Fresh O'Caml is Mark Shinwell's sucessor to Andrew Pitts's last summer's blockbuster FreshML. It's experimental, but Tom tells me it's very cool, and I trust him. This work comes out of... no, not INRIA, enclave of O'Caml High Acolytes, but rather the University of Cambridge Computer Laboratory Theory and Semantics Group. Here are the obligatory tasty paper morsels:

More papers than you can shake a stick at on Fresh O'Caml's dad, FreshML, are also available.
Finally, there's a mailing list you can join for information, updates, and discussion about FreshML and Fresh O'Caml

A tutorial on graph transformation

A nice application of category theory to computer science that is rather simpler than its application to semantics tends to get is the single and double pushout approach to graph transformation. Categorical pushouts allow patterns and rewrites on many kinds of structure, in particular graphs, to be specified in a simple manner. The theory can be read forwards, generalising term rewriting systems to graph rewriting systems, or backwards, specifying parsing problems for a graph grammar.

There's a shortage of good introductory material to this idea online. Offline I can recommend Tutorial introduction to the algebraic approach of graph grammars based on double and single pushouts [citeseer]. Online I suggest Practical Use of Graph Rewriting, and I welcome other suggestions.

Busy, busy

We are on holiday (it's the Jewish new year), and on top of that there are some problems at work, that may mean looking for a new job soon.

Hence my lack of posts.

I am sure others will fill in.

newLisp: A better Lisp/Scheme Fusion...

I had been breathlessly watching Paul Graham's website hoping for news about Arc, his "New Lisp". But I hadn't realized that a group of developers had already beaten him to the punch!

newLisp is an updated (and scaled down) Lisp, targeted at the scripting world. From the web site:

newLISP is a general purpose scripting language for developing Web applications and programs in general and in the domain of Artificial Intelligence (AI) and statistics.

Among its many interesting features (such as useful functions for getting scripting work done, good performance, and small footprint) are:

  • Dynamic and lexical scoping with multiple name spaces
  • OOP extensions
  • TCP/IP and UDP networking functions
  • Perl compatible regular expressions, PCRE
  • Matrix and advanced math functions
  • Financial math functions
  • Statistical functions
  • XML functions and SXML support
  • Tcl/Tk Graphical Fontend
  • Modules for MYSQL, SQLite and ODBC Database access
  • CGI, SMTP, POP3 and FTP Modules
  • Complete documentation in HTML and PDF

While many new scripting languages languish with good implementations, but no fully-realized libraries or interaction with outside software, newLisp seems to have sprung fully-formed, with various useful libraries already implemented.

Newlisp compiles on most LINUX, UNIX versions, CYGWIN, Windows, and presumably Mac OS X. It is licensed under the GNU Public License, GPL

Who knows -- perhaps now Ehud will have a Lisp with which he can finally get some scripting work done!