4 ms·
Clojure and Scala? I know they are backed by companies, but those companies were founded to support them (ie. the companis grew with the language). Elixir woul
by NhanH 11y ago
Clojure and Scala? I know they are backed by companies, but those companies were founded to support them (ie. the companis grew with the language).
Elixir would be joining the B-class language really soon.
- jerf 11y agoNot in my B-list, no. Clojure and Scala are still going to get the "Never heard of it" from a lot of developers, and right now the developer who has heard of Elixir would be the exception, let alone being able to say "I wrote that in Elixir" to your boss with no eyebrow raises. YMMV depending on your boss, of course, but I think that's a fair characterization of the "average boss". I don't even put Go in list with Google's corporate support, since it still certainly produces eyebrow raises. The B list mostly consists of the 1990s-style dynamic scripting languages right now; Python, Ruby, PHP, etc. There's a lot of up-and-coming alternatives but nothing leaps to mind that won't likely need to be defended. There is, of course, no concrete definition of the B-list, so you are free to have your own; rather than arguing with me too much about what language falls where, if you want to propose a different definition for conversation, please do. It's a fun discussion, if ultimately pointless. I'd put what you mentioned in a separate C list, "the set of languages that are known about on HN and have been used for real projects but still generally need defending if you want to choose them". It's a much longer list. All the fun languages are on it. Erlang's still a C-list in my book, so first Elixir will have to pass Erlang before I'd even consider it in the B list.
- flatline 11y agoAgreed. The problem with Clojure and Scala is that they naturally target Java developers, due to their dependence on the JVM and tight integration with existing Java libraries. Companies choose Java for, among other things, the relatively simple syntax and ubiquity of Java developers. This is not a group that is, as a group, longing for change, for something new and more expressive. Java's selling points are static typing, corporate backing, large-scale adoption, memory safety, verboseness, and write-once-run-anywhere. Clojure gets rid of static typing and you can easily write completely opaque, unreadable code in Scala[0]. They are DOA in most large organizations off the bat for these reasons. And for someone looking for native compilation or predictable memory management, they are also off the table. [0] http://blog.fogus.me/2009/03/26/baysick-a-scala-dsl-implementing-basic/ http://blog.fogus.me/2009/03/26/baysick-a-scala-dsl-implemen...
- the_af 11y agoReally? Your example of "unreadable" Scala code is a DSL specifically designed to look like BASIC, complete with line numbers? Have you taken a look at the source code? It's extremely simple, short and easy to understand. It even says so in the blog post you linked to. The only way I can figure someone not understanding it is if they think "these don't look like Java keywords, I give up!". Also, I don't know about Clojure, but Scala isn't DOA in large organizations.
- flatline 11y agoMy point being, Scala is a powerful and expressive language in which you can write something like a basic DSL. I personally think this is great, but a lot of Java secs will take one look at that level of flexibility and faint when trying to imagine a group of 10 developers of wildly varying ability and experience trying to manage a large code base with a language like this. Really, I've tried to introduce Scala in Java teams before, and was surprised at the pushback over just the concept of a different language running on the JVM. Groovy is apparently an exception, but I have not seen it used as the primary language over Java.
- the_af 11y agoYes, but you picked an example which is extremely easy to understand, on multiple levels. The Basic DSL is trivial. The Scala implementation is short and simple (don't trust me, take a look, assuming you're passingly familiar with Scala!). Is your argument against DSLs in general? You don't need to write them at all if you don't want to. In fact, most Scala devs don't write DSLs. So is your argument "the Java devs I worked with were afraid of languages with unfamiliar syntaxes"? Um. It's hard to argue with that. I don't know what to say, other than "some of the Java devs I currently work with embrace and love Scala, and others don't". Maybe change jobs and go work with more open-minded people?
- pluma 11y agoNot sure why this is being downvoted. Even ClojureScript (which has JavaScript as a compilation target) runs on a JVM-based compiler and requires some buy-in into the greater Java ecosystem. Plus it is built around the Google Closure ecosystem which makes it largely incompatible with large parts of the modern JS ecosystem built around node (though there are ways to tap into these from CLJS but not vice versa). Java itself is a very conservative programming language. It is getting new language features as new releases come out but it's very much not on the "bleeding edge" as language trends go. Its main target audience are big enterprises that need a reliable platform with a large market of competent developers (with qualifications available in the form of various well-established certifications). That doesn't mean you can't do anything "cool" in Java or that there can't be any startup that starts out on Java, but it means the acceptance of non-Java JVM languages is a non-issue. That these companies already use the JVM as a platform just makes other JVM-based languages slightly more palatable.
- meric 11y agoIn that case, Ruby, Python and Lua wouldn't be in your B-list of 1999 either. I think it's going to take time, that's all.
- mastazi 11y agoIs Lua in your 2016 B-list? Not trying to criticise, just curious (I don't know Lua or its ecosystem well).
- meric 11y agoIn game development, I'd say it's on the A-list and you'll asked "Why did you do that?" if you chose to embed Python or Ruby into your commercial game instead of Lua, especially if your company is a large enterprisy game development house. Python & Ruby are languages widely web development, but only to the level below enterprise.
- mastazi 11y agoI see, thanks, this is interesting. I'm wondering why some languages become associated to specific fields (e.g. Python in scientific computing, PHP and Ruby in web development etc.), I suppose it is a combination of language characteristics and ecosystem. For reference, here's a link to a list of game engines with Lua scripting: http://gamedev.stackexchange.com/questions/56189/why-is-lua-so-important-frequently-used-in-game-development http://gamedev.stackexchange.com/questions/56189/why-is-lua-...