Disney Count support may be spotty from here. We apologize for the inconvenience.

Scala debate

http://codemonkeyism.com/scala-unfit-development/

He points out that Scala can't be used for commercial development because the language itself is a moving target with syntax and included classes changing on point releases so that all software and all dependent libraries have to be rewritten for each point release.

The developer responds to him and says that's not true at all, the latest 2.8 version is not quite done yet so stop using release candidates, and the other problems will be solved sometime in the future after 2.8 is finally released, for which there is no date.

It seems to me though the developer confirmed that he was right. It isn't ready. Saying things will be fixed many years in the future is not the same as pointing out that they are working right now.
Permalink Weevil 
November 14th, 2010 1:58pm
>> "Scala’s developers are interested in language research and writing papers, not in making a language for real development."

> "That one you got totally wrong. In fact I am about to take a leave from university..."

*lol*
Permalink Wayne 
November 14th, 2010 4:52pm
++
Permalink Weevil 
November 14th, 2010 5:03pm
He didn't really make a point.

It is an emerging language on top of the JVM.  The whole concept is to add new features on top of an existing platform.

Java suffers from remaining stagnant.  I don't see an issue with an evolving language.

The only main issue would be if you add new types that don't work on existing libraries.  For example, 2.8, may add features that don't work with code compiled with 2.5

This hasn't happened that often so I don't see the authors point.

Scala IDE for Eclipse is a bad platform and everyone complains about it.  That is a problem.  But the IDEA IDE with Scala plugin is decent.
Permalink Bot Berlin 
November 14th, 2010 8:05pm
"4. Binary compatibility: Yes, it’s a tricky issue. I have said in the past that we will address this issue for releases from 2.8 onwards. And that’s still the plan."

From one of the creators.
Permalink Bot Berlin 
November 14th, 2010 8:07pm
"fun" languages usually don't cut it in the real world.  Either "kitchen sink" languages (e.g. C# and VB) or simple languages (e.g. C) due.  Of course niche language have their place too.
Permalink ... 
November 14th, 2010 8:16pm
What is a fun language?  Scala is very viable.  Plus, it already runs on top of an existing enterprise platform.

For all we know, a large majority of Java libraries/(jar files that run on the Java platform) could be written in Scala.
Permalink Bot Berlin 
November 14th, 2010 8:18pm
> For all we know, a large majority of Java libraries/(jar files that run on the Java platform) could be written in Scala.


Are you suggesting that someone has secretly launched a project to rewrite all the traditional jar files be know and love in scala, successfully rewriting a "large majority" of them without anyone noticing?
Permalink Nerdtree 
November 14th, 2010 8:21pm
"He didn't really make a point. ... It is an emerging language."

He did make a point and you seem to understand it. Scala is changing rapidly and therefore can not be used for commercial products. Why is it changing rapidly? Real reason is the developers didn't know anything about language design when they started and the whole thing is an educational process for them. That's all fine. It's a fun game for hobbiests. But it's not a production language. That was the point of the article. There's not even a point to arguing against it since the language maintainers themselves admit this. Where they have gone rogue is claiming it can be used for commercial products which is plainly wrong.

Now maybe when it stops emerging it will stabilize. Or maybe by then constant change will be considered one of the unquestionable values held dearly by those responsible for it.
Permalink Weevil 
November 14th, 2010 8:32pm
"He did make a point and you seem to understand it. Scala is changing rapidly and therefore can not be used for commercial products. "

He didn't make a valid point backed by research.  Or at least he didn't present any research or case studies.  And neither did you.
Permalink Bot Berlin 
November 14th, 2010 8:41pm
Right,  I think you nailed him by explaining that all the jars in modern java might actually BE SCALA! GASP!
Permalink Nerdtree 
November 14th, 2010 8:44pm
Here are some Enterprise shops and case studies where Scala is used.

Functional languages like Scala evolve but the core concepts are there and libraries.

It is kind of Java.  If Java adds the nio library in version Java5 or generics.  It doesn't mean you can't use the standard file io.

If Scala adds polymorphic arrays.  It doesn't mean you can't use the standard arrays from earlier versions.

http://www.scala.com/news/studies
Permalink Bot Berlin 
November 14th, 2010 8:44pm
OH.  Bot is talking about the digital sign company at http://www.scala.com/

I thought we were talking about the functional language at http://www.scala-lang.org/
Permalink Nerdtree 
November 14th, 2010 8:47pm
His point was that Scala is unfit for development.  My point is that Scala is built to Java bytecode.  So once you compile, you don't need upgrades to the Scala compiler or runtime anymore.

HSBC could build their site on Scala(they do).  Or twitter could be build their site with Scala 2.7 and their site will never need an upgrade from Scala.  And their jar libraries will exist like other Java libraries.

twitter.jar (built from Scala) will exist without a need from Scala 2.8 or 2.9.
Permalink Bot Berlin 
November 14th, 2010 8:47pm
"OH.  Bot is talking about the digital sign company "

OK, copy paste fail.

But twitter.com is an example case study.
Permalink Bot Berlin 
November 14th, 2010 8:48pm
http://www.artima.com/scalazine/articles/twitter_on_scala.html
Permalink Bot Berlin 
November 14th, 2010 8:49pm
> OK, copy paste fail.

Because you're a zealot looking to "win" this argument, not a normal person trying to have a conversation.  Plus, you're a fucking moron.
Permalink Nerdtree 
November 14th, 2010 9:19pm
So far, I have mentioned:

- Scala compiles to Java bytecode.  So you call your existing Java applications or call libraries built from Scala easily.  This  functionality is built in.

- IntelliJ IDEA, NetBeans, and Eclipse all have working Scala support (IDEA is the best, but the Scala IDE for Eclipse is still usable).

- The core features of Scala will work with Scala.  The functional, object oriented language.  The concept of functional programming (map, high order functions, composition, currying...will always exist with Scala).

- Twitter uses Scala and has had a lot of success with it.  One of the twitter developers wrote a book on Scala.

OK here are some sites that use Scala.

http://twitter.com
http://foursquare.com/

http://www.appliedstacks.com/NewestFirst/Scala


...you sure are the moron.  That, or put up an argument a point worth discussing.

DING, DING, more conversation about me!!!! Bot, bot, more Bot all the time.
Permalink Bot Berlin 
November 14th, 2010 9:47pm
As a test of the software technical ability of the CoT posters.  I want to see how many of the next responses are about:

Scala
Sites that use Scala
CoT posters...that have used Scala.
Java
or...Bot.

I have may theories.
Permalink Bot Berlin 
November 14th, 2010 9:55pm
You have said that it's possible that the majority of jar files are written in scala.

You have posted a site about digital signs as support for your programming language.

I haven't said scala is bad.  Only that you're a fucking moron.  The evidence supports that.
Permalink Nerdtree 
November 14th, 2010 10:06pm
"I haven't said scala is bad.  Only that you're a fucking moron.  The evidence supports that."

IT IS A POST ABOUT BOT!!!!!  I knew it.  You haven't posted about Scala, JVM, Java or anything related to the language or much of anything.

You are a moron.

"You have said that it's possible that the majority of jar files are written in scala."

Obviously, that isn't the case.  Because, Java has been around since 1995 and Scala hasn't.  But because of Scala building JVM bytecode that works with Java version5+.  All you need is a Java runtime to run code built with Scala.  In theory you couldn't distinguish between code written from the Scala language that written from the Java programming language.

Yea, I did google scala case studies and got that site.  It doesn't change my main argument that Scala is more than a "fun" language.
Permalink Bot Berlin 
November 14th, 2010 10:15pm
Edited: "In theory you couldn't distinguish between code written from the Scala language and code written from the Java programming language"
Permalink Bot Berlin 
November 14th, 2010 10:17pm
I'm not trying to say anything about Scala.

I'm trying to make you learn that you're a moron.

You say things like:
"For all we know, a large majority of Java libraries/(jar files that run on the Java platform) could be written in Scala."

When, of course, everyone who's not stupid like you, knows that to be false.

You try to argue your points by saying very stupid things.  It's because you're a fucking moron.
Permalink Nerdtree 
November 14th, 2010 10:19pm
ANOTHER POST ABOUT BOT.  DING. DING!! How gay.

"I'm trying to make you learn that you're a moron."

Fine, I am a moron talking the Scala programming language and Java programming language and JVM platform.

What else do you want to talk about?  Scala or the JVM?
Permalink Bot Berlin 
November 14th, 2010 10:21pm
"When, of course, everyone who's not stupid like you, knows that to be false. "

It has to be false because it doesn't make any sense. 

But let me say it again.  A lot of sites and software uses Scala.  You could find that to be the case.  You could download an app and see if the Scala runtime is included.  I bet a lot of applications use Scala.

That is my point.
Permalink Bot Berlin 
November 14th, 2010 10:23pm
"It's because you're a fucking moron."

You are a fucking moron because you are moron.  I am moron because there is not way to prove that I am a moron or not but I like agreeing with your moronic comment.
Permalink Bot Berlin 
November 14th, 2010 10:24pm
I have been programming with Perl and CPython for 20 years.

CPython is way more awesome than Scala because it also runs on Java and Ruby.

Take that you fucking moron.
Permalink Nerdtree 
November 14th, 2010 10:26pm
Let's settle this amicably: you're all morons, albeit for differing reasons.
Permalink Full name: Remember me 
November 14th, 2010 10:29pm
"I have may theories."

Yes Bot, Scala is indeed a May language, not a mature December language. That's the whole point. And May December romances don't last.
Permalink Weevil 
November 14th, 2010 10:33pm
I think he meant "gay theories".
Permalink Full name: Remember me 
November 14th, 2010 10:34pm
Scala and Clojure both are offering advantages over the Java programming languages and the interoperability is seamless.
Permalink Bot Berlin 
November 14th, 2010 10:35pm
From the site.

Scala 2.8 Preview
Created by admin on 2009-04-23. Updated: 2009-08-12, 21:16

After 2.7.4, the next major release of Scala will be 2.8. This version will make a rather bigger jump ahead than previous releases. It will fix many outstanding tickets, and include several changes and additions. Read below for more!
Features Included in Scala 2.8

At least the following new features will be included:

    * Redesigned collection libraries. Scala's collection class hierarchy has been redesigned to be more regular, expressive, and performant.  A snapshot of the new design is contained in the 2.8.0x branch of Scala's subversion repository. A white paper explaining the new design is forthcoming. The redesign is done so that most user code should  be unaffected. However, implementations of collections such as sequences, sets or maps will need to be re-adapted to the new framework to use its full functionality.
     
    * Named and default arguments. Method arguments can be passed by names, and method parameters can have default values.
     
    * Package objects. Packages can now be defined not just by files in some directory, but in addition by a special object that lists additional members of the package. For instance, you could add a number of type aliases, which would then be visible as members of the package. This functionality is used in the new collection libraries to ensure backwards compatibility. For instance class List in the new library will live in package scala.collection.immutable. But code that accesses it as a scala.List will still work, because there is a package object definition like this:

      package object scala
        type List[+A] = scala.collection.immutable.List[A]
        val List = scala.collection.immutable.List
          ...
      }

     
    * Beefed up Scala Swing libraries. There will be new functionality and better documentation in the scala.swing package.
     
    * Support for continuations. A compiler plugin will support continuations as an optional feature of Scala, using a type-directed continuation passing transform. Continuations are useful to implement advanced control constructs, for instance for asynchronous I/O, user interface event handling, or dataflow concurrency.
     
    * Type specialization. A new @specialize annotation on a type parameter will produce specialized versions of the generic code for primitive types. This makes it possible to avoid costly boxing and unboxing operations for higher-order functions or generic data structures such as arrays. It can lead to important speedups.
     
    * Revamped REPL. Scala's interpreter loop will have a lot of new functionality. In particular command completion will work.
     
    * Packrat parser combinators Scala's combinator parser library will be upgraded to "packrat parsing". This helps efficiency and also permits more grammar styles to be expressed as parsers. For instance, left-recursive productions can now be handled.

The 2.8 version will also drop most operations that were deprecated in earlier versions, and will no longer support the old version 1.4 of the Java Virtual Machine. The class file format and compilation internals will be changed to some degree, so that programs compiled under 2.8 will not be compatible with binaries compiled earlier. Source compatibility should be by and large assured, however.

Finally, concerning the timeframe, we want to have the first beta out at the beginning of June. So that's just 6 more weeks!
Permalink Bot Berlin 
November 14th, 2010 10:36pm
> I have been programming with Perl and CPython for 20 years.

First imposter on this nick.
Permalink formerly known as Nerdtree 
November 14th, 2010 10:38pm
I wanted to make another point to my comment about all jars could be written in Scala.  Even though nerdtree is dumb as dog shit, for anyone else that google's this post,

In theory, you could port your Java applications written in the Java programming language to Scala and you wouldn't have to change your Java runtime environment assuming you are running on Java version 5 or higher.  The Scala compiler generates fully compliant Java bytecode.
Permalink Bot Berlin 
November 14th, 2010 11:06pm
Or, you could write part of project in Scala and the rest in pure Java programming language.
Permalink Bot Berlin 
November 14th, 2010 11:08pm
Generating Java bytecode and being a real programming language are not the same thing. I'm sure you could get INTERCAL programs to run on the JVM, but that doesn't stop it from being a deliberate joke...
Permalink Full name: Remember me 
November 14th, 2010 11:12pm
All those things are true Bot, but it still doesn't mean that a large majority of jars could be scala, right now.
Permalink formerly known as Nerdtree 
November 14th, 2010 11:21pm
Have you used the general purpose Scala programming language?

Or worked with any of the IDE's for the language and/or written a library and integrated it with an existing Java library, web framework?

It is easy to write bits of pieces of an API in Scala and then invoke the Scala service or api.  It be as simple as:

1. scalac MyCode.scala
2. jar *.class
3. add the jar to the classpath of your app
4. call the scala code from java

File.java
import org.pack.MyClass;
...
MyClass.run();

That is calling Scala from Java.  The language itself is a mature, general-purpose, object oriented/functional language.

Java JVM language interoperability normally means you can drop code (probably compressed into a jar file, compiled to JVM bytecode) like you would any other Java library.  There is no JNI (Java Native Interface/C++) code or web services or network interfaces or any of that.  You call Scala code in Java just as easily as you would java code or vice verse.

Not all technology is easy to interoperate with Java.  It is difficult with JVM languages like ABCL (uses Reflection, which is slow).  With CPython, it is difficult because you have to generate a DLL or some other shared library and then write JNI code to invoke the Python lib.  It is cumbersome.  I am sure with INTERCAL, it is impossible.

An example usage of Scala in Java:

File.java
import org.pack.MyClass;
...
MyClass.run();

An example usage of Java in Scala:

File.scala:
import org.pack.MyClassFromJava

MyClassFromJava.run

"Twitter hopes to have a set of services in the back end that are written entirely in Scala."

http://www.technologyreview.com/blog/editors/23282/?nlid=1908
Permalink Bot Berlin 
November 14th, 2010 11:26pm
My comment was for: Full name: Remember me
Permalink Bot Berlin 
November 14th, 2010 11:27pm
The syntax with Scala is procedural (Java like) and object oriented.  You have the concepts of the object oriented nature of Java programming language code:

MyObject.scala:

class MyObject(xc: Int, yc: Int) {
}

In Java

MyObject.java:

public class MyObject {
  private final int xc;
  private final int yc
  public MyObject(final int a, final int b) {
    xc = a;
    yc = b;
  }
}
....
Permalink Bot Berlin 
November 14th, 2010 11:30pm
The syntax with Scala is procedural (Java like) and object oriented.  You have the concepts of the object oriented nature of Java programming language code
...
...
If you are getting familiar with the language (Scala), then you can write code just as you would in Java.

Procedural Scala:

myClass.run();
var n = new MyClass();
n.run2();

...
Permalink Bot Berlin 
November 14th, 2010 11:31pm
Procedural Java, similar syntax:

myClass.run();
final MyClass n = new MyClass();
n.run2();
Permalink Bot Berlin 
November 14th, 2010 11:32pm
Until this thread Scala was, to me, this -- http://en.wikipedia.org/wiki/Scala,_Inc -- so no, I've not written anything in it, I am merely trolling and calling you all morons for starting a religious war about a programming language.

That aside, your main argument that it's a REAL language seems to be that it runs in the JVM, whereas the arguments against it seem to be that the people behind it never originally intended it to be production-ready and have therefore broken it several times in the past, so on the basis of this limited knowledge I'm nominating you as the biggest moron.
Permalink Full name: Remember me 
November 14th, 2010 11:38pm
In this thread, yes.  You can extend, use, call, learn from Java programming language code from Scala.  Interoperability is important for working with existing legacy code from pure Java.

If your argument that Scala isn't a real language would be like saying C++, C, C# aren't real languages.  Syntactically, Scala has most of the elements from Java with the addition of the new Scala language features.

I haven't done it, but you could take easily take pure Java code almost line for line and convert that code to Scala.  You would have to change the variable and method declarations, but that is mostly it.


Java
class Person {
  // members here
}

Scala

class Person {
  // members here
}



Java
class Employee extends Person {
    public Employee(String name, int age, String degree) {
        super(name, age);
    }
}


Scala:


class Employee(name: String , age: int, degree: String)
    extends Person(name, age) {
}
Permalink Bot Berlin 
November 14th, 2010 11:51pm
I guess as part of my argument, I don't make the case that the output runtime bytcode from Scala is optimized.  I am not qualified to make that argument because I haven't tested it.

But there are articles out there that the bytecode code generated from Scala is more optimized than Java language code with the default settings (scalac default settings and javac default settings, no optimization flags).

I might do a side by side comparison in terms of bytecode generated from Java and Scala for the most basic Java oriented coding techniques.

So, not only can you generate fast code as you would with pure Java. If you are used to a Java style procedural style of coding, you can do that in Scala.  If you want to use more of the Scala syntactical sugar, you can use that as well.

...

I have heard there are issues with lazy initialization, but I haven't really seen it first hand.
Permalink Bot Berlin 
November 15th, 2010 12:01am
"you could take easily take pure Java code almost line for line and convert that code to Scala"

Alternatively I could not do that and save myself a lot of effort.

Anyway you're still not addressing the central issue of the OP, specifically points 3 and 4, which -- if they're true -- mean serious development could be a royal pain in the ass; also, as noted, I don't really care.

I'm bored. Dance for me, Bot!
Permalink Full name: Remember me 
November 15th, 2010 12:07am
And I terms of production ready, I mention twitter and foursquare.

Twitter receives 190 million visitors a month and is using Scala for some back end code.

http://en.wikipedia.org/wiki/Twitter

And I guess the Twitter developer, Alex Payne was so invested he decided to write a book on Scala.

http://www.scala-lang.org/node/959
Permalink Bot Berlin 
November 15th, 2010 12:08am
"The developers do not care about binary compatibility, deprecated, soft migration or API compatibility."

That isn't engineering.  I can't ask the developers if they care about binary compatibility or not.  It isn't a very provable statement is it?

"They remove and add classes just as they see fit"

Once again, same argument.  Shit changes from version to version.
Permalink Bot Berlin 
November 15th, 2010 12:10am
Yes, if you compile binaries from Scala 1.0 and compile against Scala 2.8rc3, and you try to run it, your shit will break.

What do you do? Recompile with the newer version.
Permalink Bot Berlin 
November 15th, 2010 12:12am
If you compile Scala 1.0, have a jar library, try to run that against code compiled with Scala 2.8, yes your shit will break.

This has nothing to do with production readiness.  It just means that a language feature was added, recompile your shit.
Permalink Bot Berlin 
November 15th, 2010 12:14am
http://james-iry.blogspot.com/2010/07/code-monkeyisms-post-is-unfit-for.html

"3. The developers do not care about binary compatibility, deprecated, soft migration or API compatibility. Things are changed on a whim - from one RC to the next, and they change major parts of the language/libraries in point releases.

There is a significant technical challenge to maintain binary compatibility given the fact that the JVM has no multiple-inheritance mechanism. But that shouldn't be confused with a lack of caring. Martin Odersky has promised that the next major release will focus on solving the binary compatibility issue once and for all. Deprecation - could have been done better. Definitely. Then again, Schmidt is playing with beta software where API INcompatibility are pretty much guaranteed."
Permalink Bot Berlin 
November 15th, 2010 12:16am
The most important question has not been asked in this thread: can I make money off of it?

I don't see any lucrative positions out there asking for Scala. Until then, who cares?
Permalink not CC 
November 15th, 2010 8:44pm
You guys miss the fact that Scala is open source. You can influence the future of the language, especially if you are or belong to an important figure of the industry, say Google or Twitter.
Permalink Rick Tang 
November 15th, 2010 10:43pm

This topic is archived. No further replies will be accepted.

Other topics: November, 2010 Other topics: November, 2010 Recent topics Recent topics