Once I get a handle on the basics I'm thinking that the best way for me to learn is to try to build a contact management app I've been thinking about for a long time. My hope is that within a month or two my tutor can spend most of his time showing me how to improve my code and letting me read code he/she wrote as part of this "class project."
Since I don't have the expertise to know who is an expert and who is not, I'm hoping the folks on this forum will help me with that.
Thanks in advance for any advice (cross posted from arc forum).
Arc has a minimalist aesthetic but it has so few resources that it is hard to discuss it as an ecosystem.
Arc was intended to be a 100 year language. Like Clojure the easy starter kit hasn't been built. Its terseness means expressing yourself requires a grasp of Lisp nuance. Arc is not analogous to Racket's Student Languages. Knowing Lisp already is a good predictor of success. There aren't a lot of Arc libraries. There are no Arc books. Maybe there's more than one tutorial, now. The community is not as vibrant as that of the other Lisps previously mentioned.
About the same time [the very distant past in Internet Years] both Paul Graham and Rich Hickey set about killing conversation at cocktail parties with "I'm writing a dialect of Lisp."
Rich Hickey didn't just write a dialect. He didn't just design it from the ground up with no cobs. He built a language community. Paul Graham wrote Arc and then dedicatedly built a community. It just wasn't a language community. It was the YC program and HN and all the common interest that connects to that.
I would not recommended Clojure as a first Lisp for most people. Emacs knowledge, Java Experience, and some Lisp already, are helpful. There's a lot more assumption of Computer science as well. But I would over Arc because you can use Google with Clijure. You can use IRC. You can use StackOverflow. There are Clojure conferences, Clojure consultants and Clojure meetings. There are even listservs.
Good luck.
With many other languages already under my belt, I feel confident that I can learn it on my own - at this point in my career I have to ask though, why should I?
I'd love to hear a compelling reason to learn Arc, as opposed to my current next target (Rust).
As an improvement over Lisp, it's succinct. You use fewer tokens, which helps write less code. You couldn't write less code in a different language even if you wanted to. (Try it.) There's no other Lisp that is more succinct.
For web apps, html templates are code in Arc, not files you have to edit and maintain separately. This helps keep all code in one file, and combined with macros helps shrink code. More code fits in your head, which frees you to think of writing programs that would otherwise have been so disturbing to think about, because of how much code or html you would need to write manually that would also be more complicated code, that you wouldn't attempt to write them. Like programs you must autogenerate: programs that write themselves.
Besides writing programs that write new programs, you can also write programs that change existing programs. You can parse programs and automatically transform them. 99% of programmers probably spend their entire lives never attempting this. Although too strong, this is an example of what separates a programmer who is exceptional from one that is merely competent. An advantage of Arc here is that, because it's more succinct than Lisp, it takes less work to transform an Arc program instead of a Lisp program. There's less to deter you from doing it when the opportunity arises and some types of problems can only be solved if you transform programs, especially programs written by others.
A huge advantage of Arc is simulating continuations in web pages with closures, which you end up needing in pages that contain a form. Write the following example in another language and see how many lines of code it takes: http://paulgraham.com/arcchallenge.html
You can work around a lack of libraries. You can call the system function, that calls some other programming language that returns results. But you cannot work around a lack of macros in a language that isn't Lisp without adding macros to the language. Though if you do that, you are basically back to using Lisp.
All roads lead to Lisp and Arc is the most powerful one.
Also to sweeten the deal I'd be happy to publish what I learn and give credit to my tutor.
And if what you are writing is web apps, you don't know how useful Arc is unless you used it.
Any language looks extremely powerful when you first start to program because programming itself does. You don't have a baseline of comparison at that point. So it's easy to be tricked into using a less powerful language when you are inexperienced.
What's surprising in this thread is inexperience in programming didn't sway jack into picking a less powerful language. It even caused him to feel guilty about this advantage: "secondarily (very minor)". That's impressive already. He's already ahead of those who don't hack in Arc and stay mislead they shouldn't.
Arc might be a powerful language, but I find little reason to choose it over Python, Java, JavaScript, etc.
I can invest two or three years before I need to be as good or better at building something for the market than I would if I started with something like ROR. And at that point it would be a startup where I can use whatever is fastest.
If you think Arc will help motivate you to learn to program, and has sufficient resources to teach you, then by all means go for it. Otherwise, there are a lot of similar language that have tons of learning resources. Racket in particular, as well as MIT Scheme, are two languages related to Arc, both with great, open-source books (How to Design Programs and SICP) that teach you how to truly program, not just hack up a web site like many programming books do [1, 2]. Really, these are probably two of the greatest programming books, albeit with very different teaching approaches. And like Arc, both of those languages are schemes, or at least very close.
Finally, one additional unsolicited word of advice: don't put off learning data structures and algorithms (particularly their time and space complexity). Both of the two books above will teach you the fundamentals of these topics. I'm a self-taught programmer who put learning these things off for several years, saying to myself, "eh, I don't need them, what do they have to do with real programming?". I confused them with the "interview puzzles" everyone was (rightly) criticizing.
Well, I was wrong, and now that I have a better grasp of the things a good CS education can give you, I'm advancing at a much quicker rate, and I understand programming at a much deeper level. I wish I knew back when I started teaching myself that these were important things to learn. Coursera has some excellent algorithm courses. Khan Academy also has some very good algorithm learning materials [3]. Finally, VisuAlgo is an excellent site for visualizing algorithms [4].
In addition, if you ever decide to become a professional programmer, you'll have to know algorithms and data structures for most interviews.
1. http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html
2. http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#...
3. https://www.khanacademy.org/computing/computer-science/algor...