Skysoft13

Skysoft13

I want to develop caht app for mobile platform, but I want to be sure which programing language best for concurrency and Parallel programing like elixir, erlang or golang?

Showing Posts 1 to 10

entone

entone

The answers might be a bit biased here :slight_smile: Obviously Elixir.

kokolegorille

kokolegorille

The BEAM vm is good at this.

Between Erlang and Elixir, it’s just a question of syntax.

Rainer

Rainer

Maybe you want to consider that the people who did this already quite successfully (WhatsApp) used Erlang? :wink:

As @kokolegorille mentioned, whether Erlang or Elixir is a matter of taste.
Just if you’re considering a web-frontend you might want to go with Elixir/PhoenixFramework/LiveView…

mpope

mpope

While Erlang/Elixir is good for concurrency and there is a good amount of prior art for chat apps (like Ejabberd or Mongoose), I can give a cautionary scenario against choosing Elixir or Erlang.

If you work in an organization who has an existing ecosystem, and every person in the organization is reasonably familiar with that ecosystem, then languages and libraries in that environment might be best. For example, if you are in an example that uses mainly JVM with a mix of languages like Kotlin/Android on the front end, Java or Scala on the backend, then I’d reach for Akka or even Spring Boot + WebSockets. Consider the cognitive overhead for an organization to introduce a new paradigm, a new runtime, a new school of thought. If the ‘original developers’ who were interested in Elixir/Erlang leave, then will the existing JVM developers be able to debug the application in production? Add new features? Understand the severity of a VM alert?

Other questions to ask:

  • Does it need to ‘scale’? If the backend will have a max of 100 to 500 concurrent users at a time, do you need an ecosystem that is highly concurrent?
  • Do you need to develop it in house? Can you integrate in an existing OSS application?
  • What are the time constraints? Do you have time to learn a new ecosystem while also developing a new chat app.

Food for thought.

derek-zhou

derek-zhou

shameless plug: I have a toy chat application deployed here:

The code is here:

Thanks to Elixir, Phoneix, Liveview and Surface, I didn’t have to write a lot of code. It supports a reduced version of markdown in chat, opengraph preview of link and more.

Rainer

Rainer

Always a good recommendation if for some reason one needs to stick with java or c# :+1:

Sebb

Sebb

Thousands or billions of users?
You can easily build a chat app with a few lines of JS and firebase.
If you want to go big, BEAM is the obvious choice.

Regarding concurrency in general.
There are different models how to do that. The most important trait of those is: how do the parts of the system communicate with each other?

  1. through shared memory (multithreading+mutexes)
  2. messages

(1) tends to be easy at first but good chance it becomes a mess.
(2) harder to get started but better chance of a stable and clear system

(concurrency is hard, there is no easy perfect way)

So beeing on an Elixir forum its no stunner: I vote for message passing.

Go and Erlang/Elixir both use message passing for concurrency. But they are not the same. Go has Goroutines - functions that run concurrently - easy, solid and fun. Erlang/Elixir implement the Actor Model. Not that simple but therefore way more powerful.

Skysoft13

Skysoft13 OP

yes sure, like whats app, I guess js and firebase for small team

Skysoft13

Skysoft13 OP

no, I prefer chat app like whats app, it is not small app

derek-zhou

derek-zhou

Using firebase would be cheating :slight_smile:

My understanding of the gorotines is they are async/await in disguise. Just like async/await, there is no preemption so in a busy concurrent scenario it will suffer from latency spikes.

Where Next? Top

Trending in Questions Top

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
jaybe78
Hello, I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter). The diffic...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews