ASP.NET Core or Phoenix

Where are you prefer F# over elixir?

I think the main reason is because you get OCaml with most of it’s goodies that integrates really nicely with .NET with all of it’s windows libraries.

2 Likes

Elixir is mostly for distributed systems.
You can use F# anywhere you can use C# like:

1 Like

why are you learning haskell?

The only 2 people I know using F# both work at hedge funds. They use it mainly for risk analysis and quantitative modeling.

Every programmer should know Haskell :smiley: just joking.

Once I went on https://www.meetup.com/Monadic-Warsaw/ it was quite interested (warsaw meetup about functional programming and Haskell) so I wanted to give a try.
Sometime you heard scary terms like Monad, monoid, functor … and lately come this book http://haskellbook.com/ so I bought it and really enjoy it.
Once you learn Haskell you can rule them all:smiley:

last meetup

Re F#: we have an MS stack at work, and a set of our services that benefit from an FP approach are written in F#, with the majority of the remaining services in C#. From speaking to contractors at work and to other people working on MS stacks in the [geographic] area, this seems pretty normal. .Net based development stacks are in no way unusual, and I’d expect use of F# as and when it seems useful. Much as I would love it not to be the case, Elixir is difficult to use because of deployment/integration issues more than anything else - if you have an Azure/Team City/Octopus CI structure [for example], where do you put Erlang nodes? Do you have a separate deployment structure, how do they speak to the .Net stuff, where are they hosted, etc etc. It’s flat out easier to use F#, because the tooling is already in place. Not to mention that it’s much, much easier to train devs and make them productive.

2 Likes

How does sound for you? Not true?

Elixir does not have all concepts of functional programming, but it doesn’t need to. It well tuned language for it purpose.
As opposite Haskell is pure functional, lazy, static typed academic language not often used in production.
But I think I can give more accurate answer after I finish reading Haskell book :slight_smile:

Why it is good to know haskell, would I be a better programmer?

I cite intro from Haskell book (http://haskellbook.com/)

Why This Book
If you are new to programming entirely, Haskell is a great first lan-
guage. Haskell is a general purpose, functional programming 1 lan-
guage. It’s applicable virtually anywhere one would use a program
to solve a problem, save for some specific embedded applications. If
you could write software to solve a problem, you could probably use
Haskell.
If you are already a programmer, you may be looking to enrich
your skills by learning Haskell for a variety of reasons — from love
of pure functional programming itself to wanting to write functional
Scala code to finding a bridge to PureScript or Idris. Languages
such as Java are gradually adopting functional concepts, but most
were not designed to be functional languages. Because Haskell is a
pure functional language, it is a fertile environment for mastering
functional programming. That way of thinking and problem solving
is useful, no matter what other languages you might know or learn.
We’ve heard from readers who are finding this book useful to their
work in diverse languages such as Scala, F#, Frege, Swift, PureScript,
Idris, and Elm.

I assume you could pack Elixir as micro service into docker container.
In terms of speaking I assume you can use:

  • for sync REST JSON call
  • for assync some queue like Kafka

It would be nice if elxir has http://www.grpc.io/ implemented.

@mkunikow Something to add to missing tools and libraries?

I am jumping in on this thread, as we are about to make this exact choice in our company.
My heart says Elixir / Phoenix, but my brain is trying to silence my heart with sensible ASP.NET Core propaganda.

Can you help me make the right choice - and a few bulletpoints for the CEO?

I think .NET Core is not mature yet …
Now Microsoft have 3 separate platforms: .NET Framework, NET Core and XAMARIAN -> in future ->.NET Standard Library across them all

1 Like

We probably need more to go on - what kind of apps will you be developing? What do you currently find attractive about asp.core as well as about Phoenix?

Phoenix. Definitely Phoenix.

The only downside of Phoenix is that it’s not popular, which is not a problem whatsoever with developers but if you work with clients and people who focus more on profit and business then they will see this as a very bad thing.

Leaving that aside, I am amazed of how supportive and helpful the community is and how fast we are evolving.
I’ve started learning both Elixir and Phoenix about 14 days ago and I am already confident in doing TDD on my own without having to always doubt what I am doing.

I’ve been working with a lot of technologies in these past two years, I’ve switched from Python to Ruby and then to JS (Node.JS) and I was never satisfied with what I was doing and how I was working.

Python and Ruby are really fun, but as I do mostly web development work I had to work with Rails and Django.
They’re powerful frameworks, but I feel like they’re so heavy that they will, sooner or later, collapse under their own weight.
I had too many “Will this pass?”, “Will this work?” moments with both of those.

Then I switched to Node.JS.
I wasted more time configuring Node.JS frameworks than actually using them. And while there are generators as Yeoman, most generators weren’t fitting my style of organizing my code base / file structure.

I was quite annoyed by everything until I stumbled upon Elixir.
I loved the syntax from the first time I’ve seen it.
And while I might not understand all of the components of both Elixir and Phoenix, that is totally alright.
Because, for once in 2 years, I am feeling comfortable doing what I really like.

TL-DR: Choose Phoenix, you’ll thank me later.

6 Likes

Thank you!

1 Like

We are building mostly web apps, but sooner or later we will start building mobile apps as well.

A selection of the things I find attractive about.

Phoenix

  1. The abstraction seems so focused on the task at hand (web, api, websockets)
  2. Speed and fault tolerance
  3. Concise code
  4. Community
  5. Extremely short development loop (save -> fast compile -> auto refresh)

ASP.NET Core

  1. Statically typed with either C# or F#
  2. Third party libraries galore
  3. Great IDE support
  4. Speed
  5. Short development loop (save -> compile -> manual refresh)
2 Likes

There is also third option to consider go language :slight_smile:
Lately JetBrains announced new IDE https://www.jetbrains.com/go/

Go is good match for containers

PS
One problem with go is there is no versioning for libraries. You always get the latest version which can break your build.

1 Like