Montreal Tech Watch





TOPICS:
STARTUPS
ENTREPRENEURSHIP
WEB2.0
EVENTS
MOBILE
VIDEO GAMES
JOBS
HACKING

Scheme/Lisp, one of Montreal’s tech expertise (10)

July 11th, 2007 · by Heri · hacking

Today, Montreal Tech Watch features a guest post from Dominique Boucher. This is a fairly technical post, and yet very informative. There is a great list of practical uses of Scheme/Lisp at the end of the post

scheme
Lisp/Scheme logo from Robby Findler

The Montreal Scheme/Lisp User Group is four years old now and it’s alive and kicking. We can easily proclaim to be the most active Scheme user group worldwide. People come from as far as Boston, New York, Quebec, and Ottawa, to attend our meetings. And, most importantly, a startup culture is rising among its members. This can certainly be attributed to the growing interest in functional languages in general and in Erlang in particular, but also to Paul Graham’s
well-known articles.

Scheme/Lisp

So what is Lisp?

Lisp is not a single programming language, but rather a family of languages finding their roots in LISP, a programming language developed by John McCarthy at the MIT in the late 1950’s. (Yes, Lisp is almost 50 years old!) The two most popular languages in this family are Scheme and Common Lisp. Both languages have greatly influenced the design and implementation of many other programming languages.

Scheme is a more simple dialect of Lisp (its definition is only 50-pages long) , with an emphasis on simplicity and regularity. It is a full-fledged programming language, but it is also ideal as an extension language. It features powerful concepts like continuations, that can be used to implement all sorts of non-local complex control-flow constructs (efficient and lightweight threads, exceptions, logic programming, web programming, etc.).

Common Lisp, on the other hand, is a more complex language that is the result of the standardization of features found in various Lisp implementations in the late 1980’s. It has a powerful and sophisticated object system, CLOS, the only object system satisfying all the requirements of the OMG (the Object Management Group), the organization that controls the CORBA standard.

So what are the distinguishing features of Scheme and Common Lisp? First, the syntax. Or its lack of syntax. All programs are represented using a simple syntax for lists of data elements (Lisp which stands for LISt Processing), where all elements are separated by whitespaces and enclosed in parentheses:

(define (a-simple-program) (display “Hi!”) (newline))

This syntax may seem a little awkward at first, but it is in fact really convenient. And after a few days of programming, we don’t see them anymore, given that we use a good text editor that supports parentheses-matching. An advantage of this syntax is that it is easy to develop programs that manipulate other programs using macros.

Macros are program-transforming programs. (Lisp is often called a programmable programming language). A macro is different from the other definitions in your program in that it operates at compilation time instead of runtime, but using the same language as the rest of your program (no need for complex and limited pre-processors). Macros are used to augment the core language and implement domain-specific languages.

Also, Lisp encourages functional programming, i.e. programming with functions that do not mutate data. This style of programming leads to more robust and easily debuggable programs. Functional programs are more amenable to parallelization. Combined with a interactive style of development where functions are entered in the system interactively (instead of the usual edit-compile-link cycle), programs become easier to write and test.

What it is used for

Traditionally, Lisp has long been associated with Articifial Intelligence. But it is now used in virtually all industries. Common Lisp and Scheme are very good candidates for web and XML programming (some say that S-expressions, the syntax of Lisp programs, make a better XML). They are ideal languages for tackling hard problems, which often require an iterative, bottom-up design.

Scheme/Lisp in Montréal

Montréal is the home of some of the best open-source projects in the Scheme/Lisp community. Here are a few:

  • Gambit-C is high-performance Scheme implementation that compiles to C. It has the best debugging system around. Also, its threading system can support millions of simultaneous lightweight threads. The author of Gambit-C is Marc Feeley, a professor and researcher at the Université de Montréal.
  • Termite is a distribution and concurrency framework built on top of Gambit-C, inspired by the Erlang programming language. Termite is the work of Guillaume Germain, now working in the gaming industry.
  • JazzScheme is a complete development platform for the production of high-end GUI-based applications, developed by Guillaume Cartier, a Montréal-based entrepreneur. JazzScheme has been used for the development of many industrial applications. It is currently being rewritten to run on top of Gambit-C.
  • SchemeScript is a featureful Scheme plugin for the Eclipse platform developed by Dominique Boucher. It can be used to script Eclipse itself, or to interact with any Scheme system. It is now the defacto standard Scheme editor for Eclipse, as it provides the most advanced editing capabilities.

More importantly, Lisp programmers in Montréal are dedicated to using their tools in industrial contexts. As such, Lisp has been used with great success in various industries over the years: e-learning, telephony/call-centers, 3D, web, health-care, linguistics, workforce management, and many more. (Not all companies want to advertize their use of Lisp, seeing it as a secret weapon.)

For example, at Nü Echo, an exciting and fast-growing high-tech company developing speech-enabled applications for call-centers, Scheme has been used to develop the first generation of an innovative domain-specific language for the authoring of complex dialogs, as well as an unrivaled grammar development environment for speech applications that includes a sophisticated templating engine.

Other companies, like Metascoop, offer consulting services and custom application development in JazzScheme.

Comments

Related

Events

  • 7:00 PM - 9:30 PM: 5@7 du Net (Le Belmont, 4483 boul St-Laurent, Montréal)
  • Wed Aug 27 6:30 PM - 10:00 PM: Montreal StartupDrinks (Cafe des Eclusiers, 400 rue de la Commune Ouest)
  • Wed Sep 3 7:00 PM - 10:00 PM: yulblog (La quincaillerie)
  • Fri Sep 5 - Mon Sep 8: BitNorth (Lake McDonald, QC)
  • Mon Sep 8 6:00 PM - 9:00 PM: Mobile Monday Montreal - momomo job fair
  • Tue Sep 9 10:00 AM - 12:00 PM: Montreal Tech Entrepreneur Breakfast (Bistro Etc, 1291 avenue Mont-Royal Ouest)
  • Mon Sep 15 - Thu Sep 18: Red Herring Canada (Fairmont hotel in Mont-Tremblant)
  • Mon Sep 15 7:00 PM - 11:30 PM: MontrealAgainstRails (3981 boul. St. Laurent, suite 615 -- Standoutjobs offices)
  • Wed Sep 17 5:30 PM - 8:30 PM: 5 a 7 TechnoMontreal (Restaurant Le Quartier, Square Victoria)
  • Wed Sep 24 6:00 PM - 8:30 PM: Montreal StartupDrinks (Cafe des Eclusiers, Montreal)



  • Flickr

    SyntenicunykBuyCanadianFirstAnother pic of Sylvain CarleMontreal Tech breakfast, AugustTech BreakfastSylvain Carle, Tech Entrepreneur BreakfastMontreal Tech Entrepreneur breakfastPhp beer, st-sulpicePresto3D Model screenshot

    MTW is brought by

    Montreal Tech Watch is also

    Follow MTW's activity with the twitter feed.



    © 2007 Montreal Tech Watch
    Photographs taken by MTW are under Creative Commons. Attribution-NonCommercial-ShareAlike 2.0
    Screenshots, logos, videos, and trademarks showcased on Montreal Tech Watch are the property of their respective owners.