1. 18
    1. 13

      <curmudgeon> I’m not a fan of the word “pragmatic” when it comes to a language. What’s that mean? Pragmatic, to me, means that it makes a bunch of inconsistent decisions based around short-term gains in ease of use and in 10 years we’ll be in the same boat as Java. </curmudgeon>

      <curmudgeon_tangent> I also really hate how people use the word “modern”. Like a “modern web framework”. Does that mean tomorrow it’s no longer good? Will it always be modern? What values does “modern” encompass? Why is being “modern” better? </curmudgeon_tangent>

      Kotlin feels to me like a direct reaction to the complexity of Scala, which is good. The strong focus on making Java interop easy will probably help adoption but it also probably comes with some ugly corners in order to interop with it. Anyone have a good review of Kotlin?

      1. 9

        <curmudgeon> I’m not a fan of the word “pragmatic” when it comes to a language. What’s that mean? Pragmatic, to me, means that it makes a bunch of inconsistent decisions based around short-term gains in ease of use and in 10 years we’ll be in the same boat as Java. </curmudgeon>

        I think that’s entirely accurate as a description of Kotlin’s design. There are valid use cases for a language like that, and it’s good of them to say so up front.

        Kotlin feels to me like a direct reaction to the complexity of Scala, which is good. The strong focus on making Java interop easy will probably help adoption but it also probably comes with some ugly corners in order to interop with it. Anyone have a good review of Kotlin?

        I think the interop is necessarily worse than Scala’s since Kotlin doesn’t have existential types (which are necessary to express the return types of many Java methods). And I don’t think it’s really any simpler than Scala - they’ve just “un-generalized” some Scala features without actually making it any more consistent. I’d look to Ceylon if you want a language that actually simplifies on Scala.

        1. 4

          I think they added special hacks like @JvmWildcard or @JvmSuppressWildcards for that reason. I agree on the lack of generality.

          I think the general sentiment we see is based on including only features in the language that is considered “popular” by people, which means many people have already been exposed to those features elsewhere.

          It is both a blessing and a curse: The language feels less threatening to those “Java senior developers”, but in many cases there is a huge difference between what people want (“popular”) and what people need (something that might be less well-known but better designed).

          Extension methods are a good example. The worse-is-better syntax for Generics is another one.

        2. 2

          I have used Kotlin briefly, and generally like it. It makes programming “fun” again, compared to the same Java code. But this does not include any real projects that are meant for a serious purpose.

          1. 2

            I like ‘pragmatic’ because it suggests a certain stance on the part of the language designers. Perl4/5? Pragmatic. Built to practically and quickly automate tedious industrial nonsense. PHP? Pragmatic. Just get some dynamic HTML up on a shared VPS for this restaurant client, today. It tells you there will be shortcuts in the language and that it’s not designed to be the sexy latest thing. Go? Pragmatic. Erlang? Pragmatic.

            The only problem I see is that much language discussion is zero-sum, and in that world, saying that this language is ‘pragmatic’ suggests that that language is unpragmatic, which then makes people angry because really, all languages are pragmatic in some respect, and nobody wants their favorite language denigrated.

            1. 2

              I like to refer to Common Lisp as pragmatic. It is a design-by-committee language (but what a committee!) and has a warts and issues but the decisions made for it were long term. It has had an ANSI standard since 1994 and even Lisp code from the 1960’s can usually be made to work without too much work.

              The two things I like best (and what makes it a pragmatic language IMHO) is that it is multi-paradigm, so it doesn’t force you into a specific paradigm like OO or functional, and it comes with a lot of batteries included (http://www.lispworks.com/documentation/lw60/CLHS/Front/X_AllSym.htm) which might make it overwhelming at first but one should just pick things up as one goes along.

              It’s also a high-level language that can be made to go fast and there’s implementations available for a lot of platforms (PC, Raspberry PI, mobile).

            2. 1

              Only mentioning this because it wasn’t in the title, but Kotlin also has options to compile to javascript.

              1. 1

                I think they don’t really work yet. At least they said that they were postponing any work on JS until 1.0 was released.

                1. 1

                  Ah ok. I had tried some demo stuff before and it seemed functional, but I hadn’t used it in any real projects.

            🇬🇧 The UK geoblock is lifted, hopefully permanently.