Arc Forumnew | comments | leaders | submitlogin
Learning Arc?
4 points by shmay 6064 days ago | 7 comments
I basically suck at programming. I've taken classes in C and Java, but that's about it.

I'm thinking about really delving into a language, and arc, from what I've read at pg's site, should be awesome.

But if Lisp and its dialects are so great, why isn't it more popular?

Is Lisp/Arc unpractical in some way? Are there things that it can't do that other languages can?

In interviews of PG the interviewer often seems shocked that he wrote the Viaweb software, or some of it, in lisp. If it's the best language, as I've been led to believe, then why would he be?

Thank you.



4 points by absz 6064 days ago | link

Why is what's popular popular in general? The biggest obstacles to popularity for Lisp, as I see it (and I'm not an expert) are the prefix syntax and its attendant parentheses; the history of having been chiefly used for AI, which is rather esoteric; and the (undeserved) reputation for slowness. Paul Graham has more to say in http://www.paulgraham.com/iflisp.html . None of these are intrinsically bad, but they are often perceived as such.

The interviewers are surprised because Lisp isn't popular, as you observed, and nobody expects it to be used for anything big.

Is Lisp impractical? Not really. As I understand it, the one problem it has is lack of libraries. Why? Because it's not popular. Even so, most things you want to do are probably librarified already, as "lack" here is relative.

Is Arc impractical? Not in the abstract, but it sounds like it will be for you. I don't think that Arc should be the first language you pick up, for a few reasons. It is still in a state of flux; it is missing certain features; it is designed for experience hackers; and, most importantly, there is a real paucity of documentation. http://arcfn.com/ has some great stuff, but that's about it. Starting in Arc would, therefore, be difficult.

Learning another Lisp would be a good idea, however; I would recommend learning Scheme. You might try working through How To Design Programs (http://www.htdp.org/) in Dr. Scheme (http://www.plt-scheme.org/); as I learned Scheme as a later language, I never worked through it, but from what I see and what I hear, it seems like a very good text. (I've never used Common Lisp, so I don't feel qualified to talk about it, but if someone wants to put in a good word for it, that might be helpful.) After you get a handle on that, you would almost certainly be able to pick up Arc in its undocumented state.

And if you really want a challenge, of course, you could always jump right into Arc; sometimes that is the best way to learn something.

Hope that helps!

-----

4 points by eds 6064 days ago | link

Personally, when learning Lisp, syntax wasn't a big issue. While the infix syntax of most languages is fairly intuitive, the rest of syntax (of e.g. C++ or Perl) is scary compared to Lisp's parens. (Although perhaps what puts people off is the frightening simplicity of Lisp's lack of syntax after using a conventional language.)

I started learning Lisp with Common Lisp, so I can make a couple of points there. pg's ANSI Common Lisp (http://paulgraham.com/acl.html) and Peter Seibel's Practical Common Lisp (http://gigamonkeys.com/book/) are both good texts, and go a long way toward getting you into Lisp. I also like Pascal Costanza's Highly Opinionated Guide to Lisp (http://p-cos.net/lisp/guide.html) and Steve Yegge's Lisp Wins (I think) (http://steve.yegge.googlepages.com/lisp-wins).

One the things that proved difficult about learning Lisp was choosing an implementation. There is no canonical implementation and as such I had to try several out before I learned which ones I enjoyed using. This survey of CL implementations (http://common-lisp.net/~dlw/LispSurvey.html) helped me when deciding which implementations to try. I recommend both CLISP (http://clisp.cons.org/) and SBCL (http://www.sbcl.org/), but that is just personal preference.

Also, the IDE was a difficult issue. I eventually settled on emacs with slime (http://common-lisp.net/project/slime/), although I have occasionally used Cusp, a Lisp plugin for Eclipse (http://bitfauna.com/projects/cusp/index.html). The main problem here was a lack of (thourough, easy to follow, up to date) instructions. Over the last couple of years I have gradually found good instructions on slime, but I can't seem to find any of them right now...

-----

2 points by absz 6064 days ago | link

I wasn't saying that the prefix syntax was an issue, just that it hampered popularity. Perception ≠ reality, after all. I too quite like the prefix syntax. I still slightly miss the simplicity of some of the Ruby code that I wrote, but the prefix syntax always wins me over; its benefits (macros) outweigh the minor downsides. Especially with []s and ssyntax.

And thanks for the CL thoughts! Regarding IDEs, I myself have ended up working just from the Mac OS X text editor TextMate (using Visor, which puts Terminal on a hotkey), and haven't found it problematic.

-----

2 points by Zak 6063 days ago | link

I'll second the recommendation for Scheme in general and PLT Scheme in particular. Arc is built on top of PLT Scheme at the moment. Another great book is The Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/).

-----

5 points by bOR_ 6064 days ago | link

Try arc, and if the languages confuses you, step down a bit to a language which is easier but somewhat less powerfull.

To me, that was ruby (I tried lisp about 4 years ago, but found it confusing still, and then went ruby, and now am back in a lisp), which is nearly a written language and might be one of the easiest ways to learn programming.

http://poignantguide.net/ruby/chapter-3.html

As to your question on popularity.. maybe only those people take up lisp (and the odd syntax) if they run into the limitations of less powerful programming languages. Most people might never run into the limitations or realize that they're limited, and keep on using whatever popular computer language they were using.

-----

2 points by daniel-cussen 6053 days ago | link

In my case, getting started took about a year, between installing different things, running into dead-ends, and getting things to work.

There are ways of getting a lisp environment running that are noob friendly, but there are so many dead ends that it can be pretty frustrating.

Your mileage may vary, and I hope it does, but as far as I can tell, going from noob to lisp is a steep learning curve.

-----

2 points by shmay 6064 days ago | link

Thank you guys. This is all extremely helpful.

-----