Hacker News new | past | comments | ask | show | jobs | submit login
Anyone interested in teaching arc?
11 points by jackcouch on Jan 18, 2015 | hide | past | favorite | 17 comments
I would like to learn Arc and could use some help and I'm willing to pay for it. I'd like someone that is a really great programmer (I hope to learn from one of the best) to commit to helping me for 3 hours per week. My programing experience is limited to 6 months pasting together a C# asp.net app 10 years ago. My wife and son are also going to be learning, but I'll be the interface for them.

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).




Writing a Lisp is not uncommon. Finishing one is somewhat rare. Building a dialect that people will widely adopt is an extreme edge case: Common Lisp, Scheme, Racket and Clojure are about the only consensus successes after 50 years of Lisp. Yes, there's Chicken and AutoLisp and eLisp that are useful for writing against an API, and I've been vague with "Common Lisp".

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.


To provide a little more context my goal is to be as effective as possible building difficult web apps in 3 years. I'm sure Arc is the wrong choice if I want to be as effective as possible in 6 months. If Arc is only the best choice if I want to be as effective as possible in 5+ years someone save me ;)

Also to sweeten the deal I'd be happy to publish what I learn and give credit to my tutor.


I just responded at the arc forum. Email in profile.


I've recently gained a sort of morbid fascination with Arc (morbid because of the lack of documentation, libraries, example projects, etc).

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 a Lisp, it has macros and treats data as code. Other languages don't.

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.


Do you mind if I ask why you want to learn Arc specifically? In my opinion there are better languages one can learn from the get-go, and in terms of usefulness.


Better by what measure? If you accept succinctness is power, Arc is the most powerful language there is. Python's goal seems to contradict wanting to be powerful. http://paulgraham.com/power.html

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.


Sure, I could pick any language and learn it as a first time programmer (essentially). I could learn Haskell as a first time developer too. But should I? Comparing Arc to Python is not only a comparison of syntax and coding style, which by any means is a minute detail in this case seeing as they are both easy to grasp and relatively succinct, but a comparison of resources and community as well. Python for example is the language of choice at many schools and universities for first time programmers. The community is much larger and more developed. There are many more resources for python that I can find and know of than for Arc.

Arc might be a powerful language, but I find little reason to choose it over Python, Java, JavaScript, etc.


Correct me if I'm wrong, but you seem to be of the opinion that Arc is more "powerful" (by the standards PG laid out in the linked essay). Would you further suggest that it is more productive? If so, what exactly about Arc gives it that advantage, specifically over a language with such a rich ecosystem?


I guess that is it primarily the essays by Paul Graham and secondarily (very minor) that I really like the simplicity of the way that it looks.


Arc will be tricky to get a hang of learning to code (essentially) for the first time, I would recommend a language like Python. The syntax makes a lot of sense, it starts out easy to learn, but is extremely powerful.


Thanks Gyonka. Does my 3 year timeline (comment above) change your recommendation?


No problem - I think you will really be able to do anything you like, 3 years or not. If you are really set on learning Arc I know you will do fine. Since you aren't looking for a job or anything, and I guess just want to learn in you spare time, Arc should be completely O.K to learn.


I have taught Clojure to people. I didn't know there was any demand for Arc in industry. Are there any online resources for learning it?


I think it's pretty limited. There is this tutorial: http://old.ycombinator.com/arc/tut.txt

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 I could give you some unsolicited advice, I'd say focus on learning how to program, and not on a particular language. Use whichever language will help you to program the best. Once you understand programming, particularly in the functional paradigm, picking up a language like Arc, or Clojure, Python, or Scala is a quick study (ok, maybe not Scala).

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...

4. http://visualgo.net/


Thanks a lot. I'll definitely check these out. Really appreciate the info.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: