Create a gist now

Instantly share code, notes, and snippets.

anonymous /response.md
Created Oct 6, 2016

What would you like to do?
Response to recent InfoQ article

Most of what's written in this article is deliberately biased and wrong. It is yet another in the stream of Scala-hating posts that people. I analyze the article below:

  1. TIOBE index is a metric based on search engine ranking policies and can be intentionally or unintentionally gamed.

    https://blog.timbunce.org/2009/05/17/tiobe-index-is-being-gamed/

    On these rankings, Scala is quite high:

    http://pypl.github.io/PYPL.html http://redmonk.com/sogrady/2016/07/20/language-rankings-6-16/

    The choice to mention only TIOBE in this article seems biased.

    In any case, when referencing a metric, you should pick a metric that is relevant for you. There is a discussion on programmers.stackexchange where one developer makes a correct assertion that C is second on the list because of projects like the Linux kernel, git, MySQL, Windows OS, ..., but are you writing your web app in C? Or your Spark query? Or your actor-based application?

    http://programmers.stackexchange.com/questions/195786/why-is-c-so-high-in-tiobe-index-of-popularity-while-c-is-just-under-here-too

  2. "The TIOBE index (www.tiobe.com) of software language popularity ranked Scala at #13 in 2012"

    I've been actually following TIOBE for the past 5-6 years, and I don't recall that Scala was ever so high according to the TIOBE index, so I was surprised to see this.

    After some digging, I found the following doc from October 2012 TIOBE index, where somebody copied the TIOBE page at the time, where Scala is at place 35:

    http://moodle.telhai.ac.il/mod/resource/view.php?id=45555&redirect=1

    I don't have information for entire 2012. But I'm fairly sure that this statement is bullshit.

  3. 0.6% of the community is using Scala - where did you get this information? Which community? For which use-cases?

    With the popularity of recently emerging Big Data frameworks, Scala is becoming more popular. People use it for more and more stuff, both in startups and in big companies.

    You should be more precise about what the numbers you mention mean, and cite the source, before presenting them.

  4. "Lightbend, its parent company, is now releasing new frameworks with a Java API before the Scala version"

    If you check the TIOBE, Redmonk, PYPL, or some other index, they all agree that Java, which has been around for a longer time, is more popular and more widely used. That means that there is more money in focusing on such customers first. If Lightbend, as a startup company, wants to survive, it needs to focus on Java users.

    However, Lightbend still develops their core technologies in Scala, and not in Java.

    You did not seem to mention that Databricks, a company which has all its products built in Scala, was almost sold out for 500 million dollars - an offer which they decided to refuse, and they are still growing. Even if Lightbend has to focus on Java customers to make a living, it is likely that Databricks would start investing into Scala development.

    You also did not mention the IBM recently hired ~300 engineers to work on Spark development. That means that IBM might become a Scala stakeholder in the future.

    And finally, you're not mentioning the Scala Center initiative at all. Which is getting a lot of traction and money currently, which is used to boost the Scala ecosystem to a higher level.

  5. Your explanation of the difference between programming paradigms, and functional programming, are presented on layman's term.

    In particular, to claim that Scala is a fully functional language is untrue. Scala borrows some functional features, and you can choose to write functional programs, but it is not fully functional like some other languages. Scala strives to be pragmatic. And so do most other modern programming languages, in fact.

    It might be a personal feeling, but it seems that you are not a language expert, nor an experience programmer, and have very shallow understing of functional programming, and of Scala (which is not necessarily functional).

  6. "Java has surpassed Scala as the preeminent functional programming language"

    Java is not really a functional language, and has quite a bit to go to reach the conciseness and clarity that Scala has.

  7. "Scala is a difficult language to master because its principles are based on mathematical type theory, which is fully understood by only the most academic and mathematically minded programmers."

    This statement is total bullshit.

    Nobody needs to know any mathematical type theory to program in Scala. Not even Scala compiler hackers.

    But, as a matter of fact, most languages are based on some sort of mathematical type theory. Java, for example, has an underlying type theory and even a calculus. When it comes to a formal specification document, JLS is much larger than the Scala specification.

  8. "Unlike Java, Scala has a flexible syntax, and typically offers many ways to achieve the same end result."

    This is true. However, it is unclear if this is curse or a blessing - probably both.

    And, as Java keeps evolving, it is following the same trend.

    You should watch Guy Steele's talk "Growing a Language" for some thoughts on this phenomenon.

  9. "Scala has not done a good job of maintaining compatibility"

    You don't seem to be very precise about what you mean by "maintaining compatibility".

    There were some binary compatibility problems 5 years ago, but nowadays this is fully fixed. There are no compatibility problems. And Scala 2.12, which is in front of the door, is fully JDK8-compliant.

Your post is clearly biased and attempts to spread false information. As a side remark, every now and then a carefully packed hate post like this happens somewhere, and what's common is that author does not know what he is talking about. It makes me think that there is a hidden agenda behind these kinds of articles

In any case, the attitude of complaining about something, instead of helping all those people who worked on it hard to make it better, is at the best counterproductive. I advise you to grab a keyboard, and submit a few pull requests to the Scala organization at GitHub.

And generally get more informed before you start writing InfoQ articles.

The response is concerning this article:

https://dzone.com/articles/the-rise-and-fall-of-scala

Regarding point 3 - If he is wrong that "0.6% of the community is using Scala" then what is the correct number? How much is Scala used in production settings?

While Scala itself may not be too difficult to learn as an OO language, if you try to learn functional programming and Scala at the same time that learning curve is much longer.

The arguments for FP are compelling. FP can remove the entire class of bugs from shared mutable state. But if FP is so compelling why has the adoption of Haskell (a pure FP language) been so slow? There isn't much of anything being done in Haskell relative to what is being done in the procedural / OO families of languages.

The slow adoption of FP may be the reason for the slow adoption of Scala. There's not much reason to use Scala as an OO language, but if the adoption of FP increased it would probably drive the adoption of Scala too.

jtdev commented Oct 6, 2016 edited

Scala also scores well here: http://stackoverflow.com/research/developer-survey-2016 and https://dzone.com/articles/scala-vs-java-another-view
Tiobe rank of Scala in/near 2012:

The author of the-rise-and-fall-of-scala talks about rank #13 at Tiobe, which is very likely incorrect.

However, the rank "13" does popup here: http://www.scala-lang.org/old/node/10923

"Various sources seem to rank Scala as being somewhere between the 13th and 29th most popular language while TIOBE curiously ranks it at 50 or more.

In September 2011 the team at Dataist.com used stackOverFlow questions and Projects on Github to position Scala as 13th."

Maybe the author incorrectly grabbed the number from here, and then mistakenly used the wrong number to draw hard conclusions.

Also note what is stated here: http://www.scala-lang.org/old/node/10923 from 2011about the Tiobe index:

TIOBE bases its popularity model on using a number of search engines with a standard structured search term +"languageX programming". So for Java this would be +"java programming" or Scala as +"scala programming". [...] Although others have attempted to point out some of the problems with the approach, for example, a while ago Tim Bunce blogged TIOBE or not TIOBE – “Lies, damned lies, and statistics”, the flaws still remain.

For the two languages, Haskell and Scala this uniform approach fails to accomodate developers everyday language usage. The Haskell and Scala communities are twice as likely to use the term "programming in Haskell" or "programming in Scala" than "Haskell programming" or "Scala programming" respectively. While in the Java community "Java programming" is used ten times more frequently than "programming in Java". If you try googling using the search terms +"languageX programming" and +"programming in languageX" you readily see this difference reflected in the search results.

Adding the two results together or taking the maximum value before creating the ranking would seem to give a ranking better tuned to the everyday language use by developers. Paul Jansens, the owner of the TIOBE index, acknowledges these problems and may well provide a solution in the future.

Meanwhile if we apply this correction then both Haskell and Scala would be expected to move up in the rankings to be somewhere beween 18 and 25, and be more consistent with the other methods of ranking the languages.[...]

dimitarg commented Oct 7, 2016 edited

Anti-intellectualism and taking pride in deliberate shallowness stuff is cool these days. Explaining to people how cool it is that you have the attention spam of a monkey, and can't even stomach a decent 30-minute reading to at least start to comprehend what FP is.

This whole dzone site is absolutely toxic. I'd ./h2load its ass from a couple of machines if i hadn't better things to do.

lare96 commented Oct 12, 2016

Great response, I've started seeing tons of these types of posts about Scala once Kotlin started gaining popularity. It's a bit odd to me.

👍

Little side note:

There were some binary compatibility problems 5 years ago, but nowadays this is fully fixed. There are no compatibility problems. And Scala 2.12, which is in front of the door, is fully JDK8-compliant.

It may be worth mentioning that Scala bytecode compiled from 2.11 is not compatible with bytecode compiled from 2.10 or 2.12. But: compatibility between versions is not intended, so there is no compatibility issues in that sense. It's just a tradeoff to help speed up development.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment