Elixir vs. Java, Ruby, and PHP - Seeking case studies or an interview with a community member

heh, didn’t realize that was you. Hopefully I should be fixing it shortly. I’m pretty sure I know what the issue is.

No problem. Just glad it is useful to people.

2 Likes

I am already working through LYSE. :thumbsup:

that will be very useful for us! Thanks again!

1 Like

What about Python? JS, ES? Python is taught everywhere and clean, used everywhere (Pi, AI, Web…), JS/ES has Node.JS now, so one shouldn’t focus on Java, PHP, Ruby…?

We tried to start a CMS from Python/Django, I wanted to give a try to Elixir and ELM but too few web libraries, we finally made “the horrible choice” with JS but with Node and React, we actually found a very productive (and dynamic) tooling, community, ecosystem… and ES6, TypeScript or even Dart are cleaning the JS, so all in all… we finally didn’t get the best tool but “the less worst” for any scenario, whatever the platform, Server Web iOS or Android…
Code everywhere (you find JS coders easily), run everywhere… I don’t see anymore place for Java, PHP or Ruby, but in legacy systems…

With WebAssembly coming, I’m waiting for such a universal stack…: Elixir on both the terminal and the server, or ELM on BEAM? :wink:

Elixir and Elm aren’t really a package deal. I use Elm on a static site to build a search box for example. That said, I use React with all of my Elixir and Ruby projects.

Hello @ChaseGilliam

I am curious about the way You bind Elixir and React. Do You use Relay/GraphQL or Redux/REST?

@kokolegorille

I’ve used Apollo which you can see a rough POC of here and I’ve used just plain React hung on a dom node with state pulled down by using Axios or just plain JS http calls.

2 Likes

I would like to thank everyone in this group for their answers, explanations, and opinions. I will be publishing a white paper soon, taking all of your feedback into account. In a matter of weeks, I learned a lot about not only Elixir-Phoenix but where it fits into the functional programming hierarchy and why it’s a natural choice going forward.

Although not a one-size-fits-all solution, it will be an important part of any IT company portfolio or freelancer skillset to address issues are concurrency and scaling.

Once again, this Business Analyst/Delivery Manager appreciates your help, teaching me about the future.

7 Likes

Glad the community could help! Come back and ask questions any time.

4 Likes

Just wanted to chime in, you are specifically talking about JavaEE here, which is not the modern way to write a web app with Java - Spring (Spring Boot specifically) with an embedded server (jetty is good) is much better and more common nowadays. Also, Spring Boot is really fast in terms of development speed and with things like JHipster and kotlin + Spring 5 reactive, you are basically developing at the speed of rails. The real reason I don’t like taking Java jobs is because they are often legacy Spring (before 4.0!) jobs or JEE, and Elixir makes me happy :slight_smile:

1 Like

Hello, our white paper, discussing Elixir-Phoenix in business terms is here https://restack.io/wp-content/uploads/2017/08/Elixir-and-Phoenix-for-Decision-Makers-Restack-AS-visit-restack.io-7.8.2017.pdf

I would like to thank everyone for their help, contributing to this article.

Mvh,

Alex.

4 Likes

This looks like a great initiative. I’ve read the document and think
overall it is pretty good.

A few comments (which turned out to be more than I thought).

  • I think it is unnecessary to downtalk erlang the language in one of the
    opening paragraphs. That erlang is difficult and not intuitive for
    seasoned /languagues/ developers sounds like a statement without any
    proof. I don’t see the need for the paragraph. And it may be
    detrimental to erlang adoption.

  • The paper seems more like “Elixir and Phoenix for Decision Makers who
    is currently using Ruby and Ruby on Rails (or other web stacks)”.

  • The technological comparison seems a bit superficial and you might
    want to work on the Pros and Cons for the languages. They seem more
    based on rumours of the languages than well reasearch bullet points.
    They don’t give me lots of information and a number of items seems a
    bit wrong to me.
    A few examples:

    • Elixir/Pro = “Extremely fast”. Misleading at best. Elixir is probably in
      the middle some where. It handles IO and concurrency well and can
      achieve low and even latency in network servers.

    • Elixir/cons = difficult to deploy. I hear this a lot and just don’t
      get it. create release, scp tarball to server, unpack, start/upgrade.
      Can’t be much easier? Perhaps. Different deployment than what you
      are used to if used to ruby/python tooling?

    • Ruby/cons - Not meant for longevity. What does that even mean?

    • Java/cons - Lacks modern features? Such as? This sounds like FUD.

    • Python/pros - Ideal for number crunching. Not at all. There are some
      good libraries with C bindings (NumPy). But overall python is slow
      and not suitable at all for number crunching.

  • You may want to add a section about support options. As a decision maker
    I care about having well supported software that can stand the test of
    time.

In section challenges:

Number crunching - Is not really a challenge unless you are actually
implementing something like crypto or other very heavy. Again I wouldn’t
mention python as elixir has better number crunching capabilities than
python (numpy is written in C). Python is used in scientific compution
thanks to its great C library bindings. Not because python is good at
number crunching.

Databases: Elixir is not “coupled” with postgresql. The most mature
drivers for Elixir are for postgres but I’ve used erlang/elixir to
connect to all of the big ones (SQL Server, MySQL, Oracle and Postgres).
The only thing included (and only if you compile them in) are the erlang odbc module which gives basic access to any ODBC based database system (usually SQL server and oracle).

Security: “Examined Elixir’s security aspects in detail”. Focus on web
sockets? I assume this means they looked into phoenix frameworks
implementation of web sockets. In terms of security normally distributed
erlang comes up as the most likely “weakness”. Also remote shell into
running erlang servers and similar. I would be careful to mix Elixir the
language, the BEAM with the implementation of language agnostic
protocols (such as web sockets) in the security section.

Please don’t take my comments to harshly. I think this sort of document
is needed and I am just pointing out a few things that stuck out as odd
to me.

4 Likes

The paper is interesting and makes a good case for elixir. However, I would think about the following topics:

  1. You claim that “looking like ruby” is one of Elixir’s strong points and key improvements over Erlang. If I were you, I’d focus on the build system (Mix, which I don’t even see mentioned) and the easy-to-use macro system (the AST is simple to manipulate). Erlang does have macros, and I’m not familiar with enough with the language to comment, but from reading the documentation they don’t seem as nice as Elixir macros (comparing both approaches to macros might be interesting). From your point of view, this may translate into higher productivity and less code repetition, which are important advantages. “Looking like ruby” is in my opinion not what you’d like to highlight, especially because the similarities are very superficial, and quickly break down.

  2. You describe python as being “ideal for number crunching” in the comparison table. In the following text, you reinforce this by saying: “Elixir-Phoenix does not offer the full computational capability as Java or Python”. Python doesn’t have “full computational capabilities” - it’s actually very slow for actual computation. What it has is great bindings to C or FORTRAN libraries. Almost everything that’s very fast in Python is actually a binding to libraries written in other languages. I’d emphasize the fact that Python offers you bindings to fast libraries, and not actual speed. People not familiar with Python might get the wrong idea. Also, please do not talk about “Elixir-Phoenix” in the context of number crunchung… Phoenix is a web framework, it does not number crunching. Elixir is a porgramming language, which might or might not be used for number crunching (It shouldn’t, of course, because it’s not optimized for those kinds of tasks)

  3. Regading databases, you write: “Coupled mostly with PostgreSQL”. This doesn’t even make much sense… A programming language can’t be coupled toa database. Are you talking about Elixir or Phoenix? Phoenix isn’t coupled to any kind of database. It can use the Ecto library, an Elixir library that can connect to several databases. The PostgreSQL driver is probably the one with the most features, but some people, like @OvermindDL1 use it with other databases (Oracle, if I’m remembering correctly). He does say it’s harder to integrate with legacy systems, but that’s probably true about any database wrapper.

  4. You write: “Nevertheless, the shift from Ruby to Elixir is in motion” What does this mean? That people are dropping Ruby for Elixir? This sentence needs quantitative data to amke sense. Yes, some people might be replacing one with the other, but how does the math work out? More Elixir adoption doesn’t mean less ruby adoption.

2 Likes

As much as I still feel I’m not, I’d think I’d qualify as a seasoned language developer, and Erlang is easy, it is simple prolog’y syntax wrapper a dynamically typed ML language, it is really easy. If you want ‘difficult and not intuitive’ I can point you to other languages. :wink:

Entirely agree. Elixir is a bliss to deploy! Compared to erlang or ruby or node or any other horror of things, Erlang is by far the easiest to deploy short of simple setup scripts.

Have to agree here too. The JVM has so many great languages on it, and even recent Java has got so many ‘modern’ features that it has become quite nice as well.

I’d pick a good blas library in C++/Rust over Python for number crunching any day. Python is still interpreted and has to marshall data to the numpy library, it just has an easier syntax of it (and even that is debatable).

As well as the BEAM’s Ports are fantastic to interoperate with anything! ^.^

Yeah, no coupling here whatsoever, even Ecto comes with postgresql and mysql both.

I think most use postgresql just because postgresql is amazing.

Erlang does have ‘macros’ called Parse Transforms. Overall they are actually ‘more’ powerful than Elixir’s macro’s, however they are an utter pain to use. >.<

Like I said, PostgreSQL is amazing! ^.^
I have mine FDW’d to an Oracle database and soon an old MySQL database too!!

3 Likes