Arc Forumnew | comments | leaders | submitlogin
4 points by aw 5854 days ago | link | parent

A few (somewhat random) thoughts...

You know how when programming in e.g. Java, it's nice to have a good IDE to auto-insert common code patterns so you don't have to do a lot of typing? In Arc all the code patterns are already squeezed out, so I can write nice programs without a lot of typing in a plain editor. I find this makes writing programs in Arc a pleasure, so it's simply more fun for me :-)

I do find Arc particularly useful when I'm working on algorithms, where I'm trying to figure out what to do. The conciseness, simplicity, and transparency of Arc means that I can get close to working on a direct expression of the algorithm itself, instead of a more verbose translation of the algorithm into a more cumbersome verbose implementation. (See my write up on a parser combinator http://awwx.ws/combinator/ for an example). This makes it easier to change the algorithm, because I don't have to mentally translate the implementation back into the algorithm to work on it.

I think your question of Arc vs. .Net, Java, etc. may be a bit of a false dichotomy however. If I were writing a program, and to take Java as an example again, if there was some powerful Java library that I could use or some Java-based cloud computing environment would be useful to me, I wouldn't be thinking "OK, so should I use Arc or use Java?" Instead I'd be calling the Java library from Arc, or running Arc inside of the Java-based cloud computing environment.

There is some overhead to using Arc, it is slower than other languages so you may find that you need to work on optimization sooner than you otherwise would; calling a e.g. Java library from Arc can be less convenient than simply calling the library from the same language it's implemented in.

So for any particular project I think it comes down to a cost/benefit analysis. When I'm in a "known problem, known solution" kind of situation where I just need to crank out some code to get something done, I often will just grab Perl or Java or Python, whatever tool happens to be quickest to implement the particular task in because of the libraries the language has available or the environment it runs in. I'll probably end up writing some "boilerplate" type code, but I'm only writing it once and I know what to write, so I don't care all that much.

When I'm exploring, when I don't know what the solution is and I may not even have a good sense of what the right problem to be solving is yet, then I'm happiest when I can play around with the code very easily. I want as little of "boilerplate" type code as possible, because as I try "this, that, and the other thing" I don't want to be typing boilerplate stuff for each attempt.