

Anyone interested in teaching arc? - jackcouch

I would like to learn Arc and could use some help and I&#x27;m willing to pay for it. I&#x27;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&#x27;ll be the interface for them.<p>Once I get a handle on the basics I&#x27;m thinking that the best way for me to learn is to try to build a contact management app I&#x27;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&#x2F;she wrote as part of this &quot;class project.&quot;<p>Since I don&#x27;t have the expertise to know who is an expert and who is not, I&#x27;m hoping the folks on this forum will help me with that.<p>Thanks in advance for any advice (cross posted from arc forum).
======
brudgers
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.

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

~~~
read
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](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.

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

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

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

~~~
read
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](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.

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

------
zubairq
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?

~~~
jackcouch
I think it's pretty limited. There is this tutorial:
[http://old.ycombinator.com/arc/tut.txt](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.

------
jnbiche
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](http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html)

2\. [http://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-4.html#...](http://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-4.html#%_toc_start)

3\. [https://www.khanacademy.org/computing/computer-
science/algor...](https://www.khanacademy.org/computing/computer-
science/algorithms)

4\. [http://visualgo.net/](http://visualgo.net/)

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

