Hacker News .hnnew | past | comments | ask | show | jobs | submitlogin

It's definitely possible to learn things from those languages. But languages that are trendy today (at least from my experience in the London job market) - Clojure and Scala - are really amazing, too, and have a lot of interesting ideas about concurrency, immutable data structures, and functional programming. Scheme, when compared to Clojure, seems a bit outdated now IMHO, although its extremely simple, small core makes it great for teaching.


If Scheme looks outdated to you compared to Clojure, I'd wager you are speaking from an unfamiliarity with modern Schemes like Chicken, Racket, and Guile.

This is an unfortunate, but all too common a perspective, since most people who are exposed to Scheme are exposed to in in an academic environment where they only get to play with ancient, primitive Schemes such as MIT Scheme of SICP fame, and come away with an impression that Scheme is a quaint toy language that may be useful for pedagogy but probably nothing else.

Nothing could be further from the truth, if you consider the capabilities of the modern Schemes.


Racket is so different it's basically a different language, so I'm not really talking about that.

I do know Chicken and Guile have more advanced library support than the Scheme I worked with on SICP, but neither has as advanced concurrency features or advanced immutable collections, which is why Clojure seems to me a big advance on Scheme. Plus that you can leverage existing libraries on the JVM, plus its excellent compile-to-JavaScript support, etc., etc.


I view lack of dependency on the JVM as an advantage of Schemes over Clojure. The last thing I want to do when developing in Scheme is learn or have to deal with Java or the JVM.

Chicken compiles down to C, so gets C's speed, size, and portability advantages. Chicken can also access C, Python, and Perl libraries, which aren't exactly lacking compred to those of Java. Not to mention that Chicken comes with a respectable set of libraries on its own, and that R7RS compatibility will bring a much larger "batteries included" core.

Guile is looking like its going to become the core of Emacs, and is an extension language for various other tools (like GIMP), so there are wins for learning it if you are interested in any of these ecosystems.


How can you access Python and Perl libraries?

However you feel about the JVM, it has led to adoption of Clojure, meaning if you're in a big city you have a chance of finding a job doing it. Not many jobs exist where you can use Scheme as your primary language.

But the main reason I wouldn't go back to Scheme is that it doesn't have a rich array of immutable data structures built in. Too quickly the implementations I've seen capitulate to mutation, which makes code harder to reason about, harder to parallelise, and just less fun to write IMO.

I'm looking forward to Emacs implementing Guile, as Elisp is yucky. But realistically that's not going to happen very soon.


Here's Chicken's interface to Python: [1]

It also has bindings for R, C/C++, Lua, Matlab, Objective C, and even Java.[2]

I could have sworn it had a Perl interface too, but maybe that was just my fevered imagination, or an older version of Chicken.

You can actually build Guile-Emacs right now: [3]

  "As of the end of GoogleSummerOfCode 2014, the Elisp engine of Emacs
  is fully replaced with that of Guile, and most things Just Work™."
Though it's true that it'll probably take some time for Guile to be fully integrated in to mainstream Emacs, and for all the wrinkles to be ironed out. But the future is here.

I do have to give credit to Clojure for exposing more people to a Lispy language, even if the language does not measure up to my ideal of what a Lisp/Scheme should be. And I do grant that there are many more Clojure jobs than Scheme jobs. So if work with a Lispy language is your goal, Clojure is probably your best bet.

However, many people work on open source and personal projects using languages that they are interested in and actually like rather than those they are forced to use at work. There's also much value to learning classic languages very different to what you're used to, which I elaborated on in another post in this thread. For all of those reasons and the ones mentioned above, I'd still much rather use a Scheme than Clojure.

[1] - http://wiki.call-cc.org/eggref/4/pyffi

[2] - http://wiki.call-cc.org/chicken-projects/egg-index-4.html#ca...

[3] - http://www.emacswiki.org/emacs/GuileEmacs




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: