tags:

views:

2177

answers:

21

Hey, I have just started to study computer sciences at the university where they teach us programming in scheme. Since i have learned c++ for the last 6 years, scheme appears a little odd to me. But they tell me you can write any program you can write in C or Java with it. Is anybody really using this language?

+14  A: 

Scheme will make you think differently about programming. Just try be open-minded!

leppie
+2  A: 

All languages can be used to write anything, with enough effort :)

However, Scheme's pretty cool - knowing Scheme tends to influence your programming in other languages, in my experience.

Scheme macros are extremely powerful, and call-with-current-continuation a mindwarping function.

The classic test is Structure and Interpretation of Computer Programs ("SICP"). Worth a read.

Paul
+7  A: 

"Is anybody really using this language?"

Paul Graham, famously.

moonshadow
Scheme or Common Lisp?
Jason Down
Meh, dialects. His rant and the links at the bottom are still applicable.
moonshadow
The crux of this stackoverflow question is also summed up in a Paul Graham quote: "I suppose I should learn Lisp, but it seems so foreign."
Michael Burr
Paul Graham used a Scheme dialect to implement Arc: http://paulgraham.com/arc0.html ("MzScheme, which the current version of Arc compiles to ...").
Max Lybbert
+18  A: 

Not a lot of people use it that I know, but it is definitely worth a peek (if even just to try programming in another paradigm, so that you learn to think differently). You're lucky to be able to take a class that uses Scheme, as most universities these days now teach Java. Here's a good link if you want to see some lectures from MIT or work on sample problems etc.

MIT Open Courseware - Structure and Interpretation Of Computer Programs

There's an accompanying book available on-line for free as well (Structure and Interpretation of Computer Programs).

Jason Down
Although theres a rumour that MIT are switching from Scheme to Python: http://lambda-the-ultimate.org/node/3312
Sean
Not just a rumor; MIT has transitioned their intro to CS class (MIT6.00) from Scheme to Python, dropped SICP (both the book and as the name of the class) and are using Allen Downey's "How To Think Like A Computer Scientist" instead. Berkeley's CS61A still uses SICP and Scheme, though.
Alex Basson
+5  A: 

I've worked on a project with scheme code in production, it can be pretty cool stuff. Scheme had this cool feature of dynamically recompiling to self-optimize execution. I think it's like one step away from sky-net.

Alex B
+1  A: 

Absolutely. Scheme is good for a number of different classes of problems. Jim Blandy is working on a version of Scheme called Minor that integrates a lot closer with native systems and is meant to be performant.

I understand that LilyPond uses Guile for extensibility, although I don't know that I'd hold LilyPond as the ideal shining example of software as it seriously wounded my OS X installation...

plinth
A: 

I recently heard on the stackoverflow podcast that Reddit was originally written in LISP!

CodingWithoutComments
I think you mean Reddit
Kyle Cronin
I think digg was done in PHP.
Chad
Digg has always been written in PHP. I'm sure you're thinking of Reddit.
EnderMB
I went ahead and changed it
Kyle Cronin
+1  A: 

I am playing with IronScheme these days, but don't know anyone who uses Scheme for actual work.

Nemanja Trifunovic
+1  A: 

Scheme is used mainly for teaching purposes. That's one reason there hasn't been a standard module system until the (controversial) RSR6 one: when writing small programs for homework it's unusual to need lots of big libraries.

Scheme started out as an experiment to add Smalltalk-like OOP to Lisp. It eventually changed the macro system, added call/cc (and dynamic-wind, dynamic-unwind), and grew quite a bit.

Aside from the GNU projects using Guile as a scripting language, I don't know of any production systems using Scheme. I do know of a handful of production systems using Lisp, though (Orbitz has Lisp code in its reservation system).

Max Lybbert
A: 

I'm learning about it in my Program Language Design class, it has some neat uses. I would only use it for a problem that lends itself easily to tail recursion.

Chad
+4  A: 

I used it in college, but I haven't used it much since.

If you're shaky on recursion at all, I highly recommend learning Scheme or Lisp. You'll learn to think recursively about all sorts of things. Is recursion always the right way to go? Of course not. But it's a useful tool to have in the toolbox.

I always encourage developers to learn new languages. The more languages you learn and become proficient with, the more abstractly you'll think about problems. The less you're tied to a specific language, the more likely you are to choose the language which best fits your problem.

Matthew Cole
+15  A: 

Square USA used it to make the movie Final Fantasy.

Here's a paper they published on it: Gluing Things Together - Scheme in the Real-time CG Content Production.

From that paper:

At SIGGRAPH 2000 and 2001, we, Square USA R&D team showed real-time rendering of scenes from full computer-generated movie ``Final Fantasy: The Spirits Within''.

[...]

We found it tremendous help to have an embedded Scheme interpreter in real-time rendering engine.

Matt Curtis
+4  A: 

Beyond personal experience, the closest thing you'll get to an objective guess is the TIOBE index, which currently ranks LISP/Scheme 21st with 0.470% market share. TIOBE uses search engine results to create the list. Obviously, you'll want to take the list (and any other guess at Scheme usage) with a grain of salt.

Shameless promotion: check out PLT Scheme. They've created a nice community, offer their IDE for many platforms, and give you a nice library selection out-of-the-box.

Here's an article describing PLT Scheme in a commercial app: http://www.untyped.com/downloads/icfp068-welsh.pdf.

Corbin March
+1  A: 

There are quite a few scheme implementation for Java platform, they are used for scripting and prototyping of Java applications. There exists continuation-based web framework for J2EE in scheme, called SISCWeb.

Guile scheme is used as scripting language in some GNU apps - GnuCash for example is mostly written in Scheme.

Also TinyScheme is used as scripting language for GIMP and some variations of it are used in embedded systems.

Anton Nazarov
+1  A: 

I'm currently working through the SICP lectures that Abelson and Sussman gave at Hewlett-Packard in 1986 and the Cal-Berkeley CS61A podcasts given by Brian Harvey (taught from the same book) and following along in Scheme, and the experience is opening up whole new ways of thinking for me. To anyone who, like me, doesn't have any formal CS higher-education, I highly recommend it...

adamvs
+1  A: 

Yes! Scheme is quite interesting. I learned it at my first year at the University of Waterloo. It is a little different at first, especially if you come from an OOP/imperative background.

It does a lot of nice things for you, and the functional paradigm is definitely one you should explore, if for nothing but gaining a different perspective.

It is also quite useful, for example, I just made a compiler for a super simplified version of C, and I couldn't imagine doing it without a functional language (:

+1 For 1st Year Waterloo :D
Josh K
+2  A: 

Clojure is a Scheme/Lisp like language that works in the JVM and is really good for parallel processing (supposedly). The great thing about using Clojure is that you get access to the entire Java API, and any other Java libraries.

Clojure is getting pretty popular with language geeks, along with Scala.

Chad Okere
+4  A: 

JavaScript is remarkably similar to Scheme in many ways (though it is missing continuations and the advanced numerical system of Scheme).

From "ECMAScript Language Overview" (PDF). 2007-10-23. pp. 4. Retrieved 2009-05-03.

ES3 is a simple, highly dynamic, object-based language that takes its major ideas from the languages Self and Scheme. The programming style is a mixture of object-based and functional programming: The primary abstraction mechanisms in ES3 are lexically scoped higher-order functions and mutable objects ...

cdiggins
A: 

Yes. I have worked on production applications written in Scheme that have been used "in the field" for years.

Justin Ethier
A: 

Jazz Scheme is an open source scheme environment built on Gambit Scheme and it seems to aggressively promote industrial uses, check it out:

Jazz Scheme

They report new uses in their news:

Jazz Scheme News

According to this page, Scheme is (or was) in use at: DEC, TI, Tektronix, HP, and Sun.

This guy's LinkedIn CV reports using Chez Scheme at Disney.

Just googling around a little can reveal a lot. In this case, it bears out the observation that I once heard that Scheme use is pretty ubiquitous, just not very public.

Pinochle
A: 

My websites and web apps are written in scheme: http://thintz.com

Thomas Hintz