The big downside I see to Scala here is one of how many current committers know 
it and how many potential contributors know it.  If you are the only committer 
who knows it, that leaves you to do all the bug fixes, etc. until you can 
attract others.

A bit off topic, but it seems to me that the ML stuff could be abstracted a bit 
such that different implementations are pluggable.  This way, you could go for 
Scala if you want, but others could plug in there own classifiers, etc.  Is 
that part of this plan?  

On Jan 3, 2012, at 12:00 AM, Jason Baldridge wrote:

> That is an interesting post that spurred a lot of discussion months back.
> David Pollack has a good follow up to that article that goes into some more
> detail about that post:
> 
> http://goodstuff.im/scala-use-is-less-good-than-java-use-for-at-l
> 
> The focus is really on the culture of programmers and different types of
> programmers and which ones Java, PHP, or Scala might be best suited for. He
> ends it with this comment:
> 
> Oh... and all you wicked smart people who are pushing the boundaries (or
> think you will) with data size, event frequency and real-time stuff, you'll
> find Scala to be a dream come true and there will be nothing like it that
> you've ever used (okay, except maybe Haskell).  So, come, build your cool
> thing on Scala and succeed.
> 
> That's exactly where opennlp.ml should be. And, it is perfectly possible to
> have such a library be written in Scala but provide a Java API to it, like
> Akka <http://akka.io/> does. (Incidently, Akka is a good reason to use
> Scala, though one can use it with Java too, just more painful that way.) In
> fact, opennlp.ml would have to be written that way since the first "user"
> of it would be the OpenNLP toolkit.
> 
> Also, there is a good discussion involving David Pollack and Dick Wall here:
> 
> http://www.infoq.com/articles/barriers-to-scala-adoption
> 
> Regarding the title of the original blog post ("Yes, Virginia, Scala is
> hard"), Dick Wall notes that:
> 
> Yes, but I would choose to expand the title to "Software Development is
> hard" or perhaps "Vigorous software development is hard". When you set out
> to complete a project or write a system, you have a problem to solve.
> Chances are that if it is something good and new, it's going to be pretty
> hard. The complexity of the delivered item will be dictated to some degree
> by the problem to be solved, and that complexity bar will be about the same
> height no matter how you tackle it.
> 
> Choosing a language with more power is the first way you can get a boost on
> reaching that bar. Choice of libraries is the next, and the remainder you
> fill in yourself. In Java, the power is (by modern standards) fairly low,
> leaving a larger gap to reach the bar. Most people fill in with libraries,
> e.g. JPA, Wicket, Spring or perhaps full blown Java EE. These bring their
> own significant complexity to the project (not to mention their own
> learning curve). Then the work begins on the final part, the custom work
> necessary to reach the bar.
> 
> If you are writing something like a web application, the chances are that
> the libraries available (of which there are many in Java) will get you
> almost all the way there, albeit with a significant investment in learning
> the libraries the first time you do it. If the task is something a little
> less commonplace, perhaps a scientific or mathematical project, or just
> some totally new idea or approach, you have even more to do. At this point
> you want the most power, flexibility and expressiveness you can get, and
> that comes back to the language you choose.
> 
> I have found the value that coding in Scala brings has far outweighed the
> effort to learn it and its complexities (which I greatly enjoyed learning
> about, and continue to enjoy learning about). I now pretty much have to
> stop myself from gagging when forced to write code in Java.
> David notes in that:
> 
> If you're doing some form of event processing (trading floor, sports
> betting, near-real-time data analysis, social networking), Scala is a huge
> win over Java. If you've got complex, distributed systems, Scala and
> immutability is a huge win. In these scenarios, the costs of using Scala
> (learning curve, poor tooling, etc.) are small in comparison to the
> benefits of Scala (immutability, composability, good event processing,
> excellent libraries/frameworks that provide a starting point for these
> kinds of systems.)
> 
> Again, the nature of many machine learning algorithms makes this a good
> fit. Add to that the existence of systems like Spark and relatively new
> front-ends for Hadoop such as Scrunch and Scoobi, which makes developing
> MapReduce algorithms w/ Scala much nicer and far far preferable to the pain
> of coding them up in Java.
> 
> Note that these discussions are from many months ago. The Scala ecosystem
> has continued to evolve, including continual improvements to IDE support
> for Scala development with Eclipse (and probably for Intellij as well).
> 
> I would also note that Java lacks a truly wonderful feature of languages
> like Scala, Python, Clojure and others: a REPL that allows you to try out
> code snippets interactively. This is a great way of testing example code
> before actually putting it into your system, knowing that it will work.
> It's also a great teaching tool for people new to the language.
> 
> FWIW, here's Aliaksandr's example in Scala, which can be tried out in the
> Scala REPL.
> 
> (List("I", "l", "v", " ", "P") zip List(" ", "o", "e", "F", "!")) map {
> case(x,y) => x+y } mkString
> 
> Once you get functional programming, it is truly painful to do without it!
> 
> Jason
> 
> On Mon, Jan 2, 2012 at 2:51 PM, Aliaksandr Autayeu
> <[email protected]>wrote:
> 
>> An interesting post about Scala:
>> http://goodstuff.im/yes-virginia-scala-is-hard
>> 
>> Jason, by the way, from what I saw following your link, I might love Scala
>> as much as... StringJoin @@ (MapThread[#1 <> #2 &, {{"I", "l", "v", "
>> ", "P"}, {" ", "o", "e", "F", "!"}}]) (that's in Mathematica language) but
>> I would consider the article above, keeping in mind the audience of the
>> project.
>> 
>> Aliaksandr
>> 
>> 
>> On Thu, Dec 29, 2011 at 6:46 PM, Aliaksandr Autayeu <
>> [email protected]> wrote:
>> 
>>> IMO, Java advantage is that of being a standard de-facto, with mature
>>> tools, infrastructure and other things. I'm sure, there are many cool toys
>>> out there (git was a cool toy once, and SVN is still a standard de-facto in
>>> many places), but ease of use of OpenNLP (standard Java without excessive
>>> dependencies + maven) is an enormous advantage of OpenNLP in most of my use
>>> cases.
>>> 
>>> Aliaksandr
>>> 
>>> P.S. The link is a nice collection of material!
>>> 
>>> On Thu, Dec 29, 2011 at 6:27 PM, Jason Baldridge <
>>> [email protected]> wrote:
>>> 
>>>> I'd really like to use Scala in the opennlp.ml rewrite, for reasons I've
>>>> already stated on the list. My thinking on this is to do the first
>>>> reorganization for opennlp.ml in pure Java, make a release, and then
>>>> starting mixing in Scala. I've been happily mixing Scala and Java on a
>>>> number of projects without much fuss. However, I do so in the context of
>>>> using SBT (simple build tool), rather than maven (SBT can read Maven
>>>> declarations, FWIW). It is quite straightforward to use, and I'm now
>>>> using
>>>> Eclipse with the Scala IDE for Eclipse to build Java/Scala projects - so
>>>> it
>>>> should be straightforward for others to get up and running with it.
>>>> 
>>>> I'd be interested in hearing whether anyone has any particular concerns
>>>> or
>>>> objections about this plan. Also interested in hearing whether anyone is
>>>> particularly keen on the use of Scala.
>>>> 
>>>> BTW, if you haven't seen much of Scala before, I have some very gentle
>>>> introductions (aimed at first time programmers) for getting started with
>>>> it
>>>> on my blog. You can find links to the posts, plus to lots of other
>>>> resources here:
>>>> 
>>>> http://icl-f11.utcompling.com/links
>>>> 
>>>> --
>>>> Jason Baldridge
>>>> Associate Professor, Department of Linguistics
>>>> The University of Texas at Austin
>>>> http://www.jasonbaldridge.com
>>>> http://twitter.com/jasonbaldridge
>>>> 
>>> 
>>> 
>> 
> 
> 
> -- 
> Jason Baldridge
> Associate Professor, Department of Linguistics
> The University of Texas at Austin
> http://www.jasonbaldridge.com
> http://twitter.com/jasonbaldridge

--------------------------------------------
Grant Ingersoll
http://www.lucidimagination.com



Reply via email to