tags:

views:

501

answers:

11

Hey, I'm a relative newbie to programming. I've picked up some very basic Java (File I/O, GUIs, inheritance) and would like to take a look at functional programming - in particular, I would like to learn Scheme. I'm having some trouble finding a Scheme implementation I can understand. Interpreters are weird; I'm not sure how to save my programs and create executables. I've downloaded PLT Scheme, but I would prefer using something less condescending, something similar to NetBeans. Is there a plugin or tool that will allow me to quickly and easily create and manage Scheme programs? All help is appreciated!

A: 

What's wrong with DrScheme as a Scheme beginner ?

Skeptic
Nothing, I guess. I'm simply uncomfortable with the overly cheery interface, and find it difficult to do basic things like create, save, and run a program. The interface doesn't really matter; any advice on how to use DrScheme would be appreciated!
Gautam
DrScheme may not be the way to go to build stand-alone applications, but to experiment with Scheme, its file-based modules and its interactive shell (Read-Eval-Print-Loop) is all you need.
Skeptic
+6  A: 

some nice links for you

http://mitpress.mit.edu/sicp/

http://www.htdp.org/

both are course books. The courses with video lectures are available on the MIT opencourseware site.

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/index.htm

Sam
HTDP is not so about functional programming (even if it covers some concepts pretty well), but more about programming in general. Give it a try using DrScheme and don't worry yet about creating stand-alone applications or about interpreters/compilers.
Skeptic
A: 

Well I can't help You much with the tools. I tried MIT implementation and got a bit lost too, but I'd like to recommend a book which is a great source of knowledge about programming in general and uses scheme for illustrating ideas. If You din't come across this one yet, You have to check SICP

Maciej Hehl
A: 

Maybe this isn't the best answer but one of things I have found over the years is that a lot of new programmers get pulled in too many directions. If you are just starting out the best thing you can do (my opinion) is to learn one programming language really well. If possible I would try to make this the language you are working in, if you are not working in a programming job then I would try to pick a language with the best prospect of getting a job. Once you have mastered this one language then learning other languages will help enhance your already solid foundation and help make you an exceptional programmer.

Don't get me wrong, learning Scheme is a great thing to do but until you have mastered one language you will have a harder time moving up the ranks and landing that perfect job. In the end most companies are looking to hire the guru's, make sure you are in this group.

kjkerstens
I don't know if Gautam's age is correct in his profile, but if so, he has plenty of time to learn :). Scheme is better than Basic :)
Maciej Hehl
Yeah, being 16 has advantages.
Gautam
Gautam - my apologies, I didn't realize that you were only 16. Please learn away, scheme will definitely expand your mind. One of the tricks that I use to learn new languages is to do a pet project, that is I have the same simple project that I keep doing over and over in different languages. This way I can compare the advantages / dis-advantages of each language solving the same problem. Have fun.
kjkerstens
+1  A: 

SICP (Structure and Interpretation of Computer Programs) is sure a great book, but it is not necessary a good introduction to Scheme programming. Though, after some understanding of Scheme, reading SICP is recommended.

Learning to use Emacs as an editor would be useful. As a Scheme implementation I would recommend something like CHICKENscheme. Its manual describes for example how to deploy programs.

An alternative is a Scheme development environment like JazzScheme.

A good book for learning Scheme would be The Scheme Programming Language.

Rainer Joswig
A: 

I took a programming languages course in college that was done entirely in Scheme, and the textbook we used is "Programming Languages: Application and Interpretation" by Shriram Krishnamurthi, one of the guys who helped write DrScheme. The textbook is available freely online. I found the book to be really helpful and informative when trying to understand the arcane mysticism of Scheme.

Dave DeLong
+3  A: 

I wish I had learned Lisp when I was 16. (I started programming commercially at that age.) I didn't learn it until I was nearly 40. Where I was once blind, now I can see. (Well, I can see a few inches ahead of me anyway.)

I second the idea that someone else here posted about learning Emacs.

One good way to learn any language is to go solve problems on projecteuler.net.

Donnie
Very biblical ;)
bleakgadfly
A: 

I think the docs for plt-scheme is quite nice http://docs.plt-scheme.org/ is worth reading

End also: write code, write code, write code

Soltys
A: 

If Java environment is already comfortable for you, then probably the best way is to use Scheme implementations that run on top of JVM. For educational purposes SISC is more than enough:

http://sisc-scheme.org/

Alternatively, you could use Kawa or Bigloo.

If you're up to learning functional ways, and not necessarily bound to Scheme, then probably Clojure would be a right choice.

SK-logic
A: 

A nice beginner intro to Lisp is Common Lisp First Contact

Not a heavyweight course like SICP mentioned above, but a gentle introduction to the syntax, features and oddities of Common Lisp in a nicely formatted PDF optimized for screen reading.

nickyp
+4  A: 

Try the book "The little schemer" (http://mitpress.mit.edu/sicp/), it provides an unconventional but yet easy to follow tutorial on Scheme, and in particular teaches you how to "think" recursively, which is essential in order to understand Scheme (and other functional programming languages).

florans
That's a link to SICP, not to the little schemer. This is the little schemer: http://www.ccs.neu.edu/home/matthias/BTLS/ but it's not available for free (as SICP is)
Jay