4 ms·
I'm a bit perplexed at what exactly Paul's point was. What do I have to do in order to win the challenge? I think the source of your perplexity may be that yo
by pg 17y ago
I'm a bit perplexed at what exactly Paul's point was.
What do I have to do in order to win the challenge?
I think the source of your perplexity may be that you're misunderstanding who (or rather what) is being challenged. It's not a contest between people, but between languages. So you don't win it; a language does.
The way a language wins is if you can write the program shorter using it plus some standard libraries. The definition of "standard" doesn't have to be exacting; anything short of a library written specifically to win this contest would be ok; so e.g. any library that existed prior to the challenge obviously would be.
- axod 17y agoThe distinction between 'program' 'language' 'library' 'framework' is just arbitrary though. Just another vote for 'I have no clue what the point of this is'. The challenge seems to be: * Write a library with helper functions. Like the Arc library. * Now you can write a short program that uses that library to do things. Obviously that's possible in any language, so I don't understand how this measures languages at all. The example in Arc: (defop said req (aform [onlink "click here" (pr "you said: " (arg _ "foo"))] (input "foo") (submit))) Well this is a concise way to sum up what you want to do, but that could just be rewritten in any language of your choice. Then the appropriate libraries written. For example, java: createForm("click here", new Response("you said %foo"), new InputElement("foo"), new SubmitElement()); I think there's more important things to compare in languages. speed, error handling, stability, memory management etc
- floodyberry 17y agoIt wasn't supposed to measure anything, it was supposed to impress you with how awesome Arc is.
- pg 17y agoHere's the critical distinction: you can use only whatever's already provided by the language+libraries you use. That's what I did. I didn't go back and add stuff to the Arc libraries to make the answer to the challenge shorter. I just used what was there already. This will be clear to anyone familiar with the source of HN; all the language features used in the Arc version of the challenge are used throughout news.arc.
- axod 17y agoHrmmmm. But I could just write 'arc' for Java, and the above example would fall out. The solution for arc doesn't have anything unique in it that you can't do in other languages just as concisely. So I don't think it says anything at all about the language, it just says how well you designed the interface to helper libraries. >> "all the language features used in the Arc version of the challenge are used throughout news.arc." I don't see any 'language features' in the solution for Arc. It's just functions and parameters. They're not language features, they're helper libraries. They may be well designed good libraries, but that's what they are. The language used is irrelevant. You could have written arc in BASIC and the solution would be the same. Maybe I just don't understand why arc is referred to as a 'language' rather than a framework/library, and why that distinction is important.
- pg 17y agoOne language feature that's used here is lexical closures. This would be hard to implement concisely in a language without them. If you wrote an Arc implementation in Java, then ran the program on top of that system, surely that would count as an instance of Arc winning the the challenge, not Java.
- axod 17y agoThe Java example I gave didn't use them, and is more concise. I think it's pretty readable.
- DanielBMarkham 17y agoAnd it used fewer tokens.
- pg 17y agoI'm not even sure if you're serious at this point, but the important distinction here is that the hypothetical library function you created to make this work in Java is (like the even shorter version proposed here: http://news.ycombinator.com/item?id=1005199 http://news.ycombinator.com/item?id=1005199) not one that anyone ever would put in a library. Its only function is this one case. Whereas the Arc version is built by combining highly orthogonal components that can be recombined to solve completely different problems. Do you really not see the difference?
- jrockway 17y agoBut isn't Arc a library written specifically to win this contest? A well-balanced "contest" would probably include a bunch of specifics (web, 3d, computation, ...) or stick to generic "programming" ("implement a self-balancing binary tree"). I see the Arc contest as more of something like, "take a look at what happens when you think about a problem space in depth and write a domain-specific language to make solving problems in that space really easy". The only downside of Arc is that other domains are not as easy to work in. If you design a DSL on top of an existing language, then you don't have that limitation, which is what's good about the Haskell implementation. If I need to write a parser for part of my web app, I can use another nice DSL for that. If I used Arc, I would not have that option.
- pg 17y agoNo, actually. The Arc libraries were written to make general-purpose web apps. I didn't propose the challenge till after the first version of Arc was released. And the way I chose the problem was to think of the simplest stateful web app I could. If this isn't the hello world of stateful web apps, what is? There's nothing about this problem that's biased towards Arc's strengths. Take input from a form and print it on the next page. Every popular language already had libraries for such basic things. I suppose Arc was designed to win this contest in the sense that Arc is designed to make programs short, and winning in this contest is measured by brevity. Is that what you meant?
- jrockway 17y agoIs that what you meant? Not really. If I added a condition to the contest that you didn't take into account when writing Arc, Arc would no longer do as well. When the same person designs the programming language and the contest to "prove" it's the best, the contest is likely to prove that his programming language is the best. Not due to malice, but rather because both the language designer and contest designer think exactly the same way (as they are both the same person).
- pg 17y agoWhen the same person designs the programming language and the contest to "prove" it's the best, the contest is likely to prove that his programming language is the best. Ok. Now let's explore (or rather, return to) the question of whether that happened in this case. Since I was aware people would make this type of criticism when I proposed the challenge, I made a conscious effort to make the problem very generic-- in fact to be the simplest stateful web app I could think of. In your opinion, did I succeed? Is it a simple, generic problem to ask for input on one page and display it on the next? Or is this a complex problem that requires unusual, Arc-specific functionality to solve?