And where would you like to see it?
Will be interesting revisiting this thread years down the line too…
And where would you like to see it?
Will be interesting revisiting this thread years down the line too…
I think Phoenix will fulfill the prophecy of “the next Ruby on Rails” since it is so well-suited for web applications. If this happens, I believe it will push Elixir and functional programming into the mainstream. A good thing!
Hard to imagine 10 years down the line… That is longer than a lot of languages have been around. At the very least, by then, Elixir will have mature tooling and libraries which make it even more enjoyable to program in.
5 years from now… I see elixir being a top ten language. Why? Because it solves a problem that no other language has solve yet, distribution (at least not without a tremendous amount of infrastructure). There are plenty of other languages that do concurrency, but none of them that I know of, have a messaging system that is built into the language that will allow it be location unaware. Since we are pretty much “done” at 4ghz clock speeds, distribution is going to be the leading tenet of any software solution and that puts the erlang vm right in the sweet spot.
It’s funny to see buzzwords like “micro services”. In many cases, they are an attempt to solve the distribution problem by throwing a lot of infrastructure (which is a deployment nightmare) at it when the erlang vm solve it decades ago. Even though this is a solved problem, it takes a language like elixir to make it approachable
I hope to see Elixir as the replacement for Java in enterprise software development.
We would have much more robust, maintainable and better performing government/big business IT infrastructure.
These are the systems we interact with without realizing on a regular basis, and improvements could have large impacts on how modern societies function. Like how Erlang has done such a fantastic job making the phone system work with 0 downtime.
Large businesses and governments can ditch their wacky, expensive and hard to maintain mainframes for clusters of commodity hardware running robust OTP applications.
The biggest challenge will be for schools to start teaching it…
I am not a computer science or engineering student, and I have spoken to a number of them who have not even heard of Erlang, let alone Elixir…
It’s amazing how married some enterprises are to the Java platform despite its tendency to spawn hugely unmaintainable monolithic programs. I suppose it is not too surprising since we are still deploying massive software engineering failures, e.g. Healthcare.gov and the F-35 fiasco. We’ve really got to get away from the spaghetti code that no one can understand and toward simpler abstractions, which functional languages like Elixir can afford us.
Reasoning behind this is simple: The Oracle JVM is certified. Because of this certificate guarantees about reliability are made. Exactly this kind of certification is the cause, why there are still many overaged RedHat servers in the wild and running, as well as offered for very high prices…
Certified Systems really are a crux…
I don’t think so you can get rid of Java any time soon :).
Java has been long while and it has libraries almost for everything.
Java is slowly changing -> Java 8 lamdas, reactive programming, interesting new lagom
Java is static typed language so it is good for big projects -> Easy to refectoring, great tooling
Despite if you don’t wont to program in Java JVM is rock solid virtual machine and there many languages on top JVM like Scala, Clojure.
Java runs anywhere, Erlang runs forever - Joe Armstrong
While it’s true that Java is changing and adding new features, the way the features are added and the requirement of backwards compatibility really make those features half-baked. Java 8 may have lambdas, but functions are still not first-class and it’s missing the ‘everything is an expression’ philosophy that FP requires. The streams in Java 8 are a nice idea, but clunky to use compared to a real FP language.
I don’t agree that the JVM is rock solid. It doesn’t scale well. It’s garbage collection is OK until you start using most of the memory. A couple of months ago, I heard a co-worker presenting about a commercial learning management system he’s responsible for running on our campus. When I heard him talking about the memory leaks and the fact that on a 32GB server, he only allocated 16GB to the JVM and why – that was the moment when I realized that Elixir/Erlang was something our enterprise needs to seriously consider for our critical infrastructure.
OK but memory leak is not the problem of JVM virtual machine but the bug in software you run on JVM. I assume the same you can write bad software on Erlang VM. The other question is how the language itself prevent you from writing bad software.
I have heard that businesses used to often purchase IBM infrastructure, because:
No one has ever been fired for buying IBM
I feel like over the last couple decades many larger enterprises/governments have taken the same approach to picking a software stack and that:
No one gets fired for choosing Java
One driving factor for this decision is the availability of Java developers, especially in India. The cost of a single good developer in North America or Europe is about the same as a floor of developers in India…
Cannot seem to find anything about the JVM being certified by anyone but Oracle themselves which is hardy a valid certification. I can find Oracle Java programmer certifications, which would imply some level of consistency between developers that have these certifications. But really these certifications are just marketing tools concocted by Oracle to make it easier to Sell Java to businesses.
That gives me an idea, Elixir Certifications!
Maybe this is the way of the dinosaurs though… thoughts?
Of course that’s not really a justification for anything I do not have any resource I can share about that fact, except the buzzword “certified systems”. So far we did not care for them during study, and perhaps we will not do it either way. But But a co-student of mine who is working for a consulting agency has to deal with clients about every day that have a strong demand in “certified systems” and also already have strong opportunities about much stuff of the system stack.
You’re right, a memory leak is not specific to the JVM and I’m sure I could write bad software in any language The point I should have made was that one poorly written line of code affects the whole application – either it crashes and everything running on that JVM goes down, or it eats all the memory and the whole JVM needs to be restarted.
There are cases where that can happen using Elixir, but those are pathological deployments, not standard. The whole design philosophy and ecosystem work to isolate processes and prevent this.
@harmon25 I get where you’re coming from with Elixir Certifications but I think this would be useless for Elixir. Java can leverage and use certifications for its advantage because its a language heavily used in enterprises and comes from a company that has a lot to do with enterprise tools and software. Enterprises and corporative environments and people love their certifications and Java having this is no more than putting chocolate into a chocolate lover’s meal to make him want to buy it more.
Unless Elixir becomes a enterprise standard in the coming years I doubt an Elixir Certification could become a thing.
You can use akka if you want the same actor model as Erlang OTP has:)
I was not really present during the rise of Java in the enterprise. Could this be a chicken or the egg dilemma?
Which came first, the enterprise use of Java or certifications in Java resulting in more enterprise use of Java?
@harmon25 I was kind of young back then but from what I’ve always heard and researced it’s all because of the JVM. Java was hailed as the build once run everywhere language (IIRC Joe Armstrong - creator of Erlang - once said that Java is Build Once Run Everywhere and Erlang is Build Once Run Forever ).
Because of this level of portability Java was used heavily in enterprise software and also since it as such a large standard library that is built by a large organization it means a lot of stuff that may be needed comes out of the box and with reliable and optimized implementations.
Then as a consequence of this you see the snowball effect of using the same technology for years (similarly like banks using COBOL or whatever). Your corporation has used Java for 10 years and then someone says there’s a new technology that’s better. You don’t care because moving away from the technology you used for 10 years is just not feasible (the big bosses don’t care about the technology being good or bad they care about keeping things afloat and safe and generating revenue). Then another 10 years pass and this reasoning just becomes stronger and stronger until some reason comes along that will make you change technologies. For Java that hasn’t happened yet.
EDIT: Mind tat there are other reasons of course. You get more IDE’s and more mature and experienced developers. People who go to college or programming courses will most likely learn Java. Big corporations don’t want to wait 3 or 4 months to have the new recruit learn a new language, they want him to be able to work right away. All the new languages like Elixir/Rust/Red/Crystal/GoLang could be perfect and solve world hunger. Corporations don’t care. Changing languages means at least less revenue for a certain amount of time and Oracle gives them reasons to stay with Java through certifications and other means so they sleep cozy at night thinking their at the front line of software development technology,
I totally agree. But I see there two trends:
Beside this there many languages to choose based on JVM: Kotlin (some say Swift for Android), Scala, Clojure. All of these languages can use common java libraries as same as Elixir can use Erlang.
I haven’t seen any big/old styled organization use any of those besides JEE. Some more modern companies are using Scala right now (and I’ve seen some consulting companies promote Kotlin).
OK but what I wish Elixir in 5, 10 years :
About monitoring https://www.honeybadger.io/ has support for Elixir.
Thats all we can hope for really.