Trying to prove java sucks by showing code that uses the DOM library
is stupid.

The DOM library sucks. That's what its designed to do; utter bilge for
manifestly typed languages. Fortunately, there's XOM, JAXB, XPath, and
many other alternatives. Not a valid example, unless you want to
highlight that java tends to suck when attempting to use it as some
sort of DSL, in which case: Absolutely right, but coin isn't going to
change this, and there's plenty of resistance to expanding language
flexibility to address such an issue, because it also has many
disadvantages. So, that's a completely different argument.

On May 7, 4:48 am, Josh Suereth <[email protected]> wrote:
> Perhaps a better example of scala making life easier.  Here I'm use "for
> expressions" along with "operator syntax" and "lambda expresisons" on the
> Scala XML dom to parse out all link URLs from a web document that end with
> rpm
>
> val urls = for {  link <-   webpageDom \\ "a"
>                      location <-  link.attribute("href").map(_.text)
>                      if location.text.endsWith("rpm")
>                } yield location.text
>
> Here's similar java (but using a different path)...
>
> List<String> urls = new ArrayList<String>();
> NodeList links = webpageDom.getElementsByTagName("a");
> for(int i =0; i < links.getLength(); i++) {
>     Node link = links.item(i);
>     if(link instanceof Element) {
>           Element linkAsElement = (Element)link;
>           if(linkAsElement.hasAttribute("href") &&
> linkAsElement.getAttribute("href").endsWith("rpm")) {
>               urls.add(linkAsElement.getAttribute("href");
>           }
>     }
>
> }
>
> Groovy provides an "XmlParser" for nicer syntax as well....  However, I'll
> let a Groovy expert show the simplified code for this (I'm pretty sure it's
> close to a one liner using a depthFirst call with a closure filter.
>
> Lastly, here's a JavaScript example (using jQuery):
>
> var links = [];
> $('a').each( function(idx, link) {
>                  if(link.href && link.href.match(/.*rpm/)) {
>                       links.push(link.href);
>                  }});
>
> //Note we are not using map because we want to filter based on link ending!
>
> Anyway, on to the point:   Which of these has the least signal to noise
> ratio?  Which one is the clearest?  I leave that for you to decide.
>
> I also want to point out that this expressiveness (of other languages vs.
> java langauges) is not limited to XML parsing.  I would also be remiss if
> not mentioning that I neglect to include a C version of the XML code because
> I just didn't feel like taking the time to write one, and then make sure it
> compiled/ran.  I'd love to see a JavaFX script version of this code, as I
> have a sinking suspicision it will still have higher SNR than Java.
>
> -Josh
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to