ErlangĀ vsĀ Scala

Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Erlang
Erlang

447
388
+ 1
252
Scala
Scala

3.6K
2.7K
+ 1
1.5K
Add tool

Erlang vs Scala: What are the differences?

Developers describe Erlang as "A programming language used to build massively scalable soft real-time systems with requirements on high availability". Some of Erlang's uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance. OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems. On the other hand, Scala is detailed as "A pure-bred object-oriented language that runs on the JVM". Scala is an acronym for ā€œScalable Languageā€. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them.

Erlang and Scala can be primarily classified as "Languages" tools.

"Real time, distributed applications" is the top reason why over 49 developers like Erlang, while over 177 developers mention "Static typing" as the leading cause for choosing Scala.

Erlang and Scala are both open source tools. Scala with 11.8K GitHub stars and 2.75K forks on GitHub appears to be more popular than Erlang with 7.74K GitHub stars and 2.1K GitHub forks.

According to the StackShare community, Scala has a broader approval, being mentioned in 437 company stacks & 324 developers stacks; compared to Erlang, which is listed in 70 company stacks and 47 developer stacks.

What is Erlang?

Some of Erlang's uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance. OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems.

What is Scala?

Scala is an acronym for ā€œScalable Languageā€. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Erlang?
Why do developers choose Scala?

Sign up to add, upvote and see more prosMake informed product decisions

    Be the first to leave a con
    What companies use Erlang?
    What companies use Scala?

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with Erlang?
    What tools integrate with Scala?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    What are some alternatives to Erlang and Scala?
    Elixir
    Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
    Haskell
    Go
    Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
    Clojure
    Clojure is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system.
    Akka
    Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM.
    See all alternatives
    Decisions about Erlang and Scala
    StackShare Editors
    StackShare Editors
    Consul
    Consul
    Elixir
    Elixir
    Erlang
    Erlang

    Postmates built a tool called Bazaar that helps onboard new partners and handles several routine tasks, like nightly emails to merchants alerting them about items that are out of stock.

    Since they ran Bazaar across multiple instances, the team needed to avoid sending multiple emails to their partners by obtaining lock across multiple hosts. To solve their challenge, they created and open sourced ConsulMutEx, and an Elixir module for acquiring and releasing locks with Consul and other backends.

    It works with Consulā€™s KV store, as well as other backends, including ets, Erlangā€™s in-memory database.

    See more
    Marc Bollinger
    Marc Bollinger
    Infra & Data Eng Manager at Thumbtack Ā· | 4 upvotes Ā· 157.8K views
    atLumosityLumosity
    Node.js
    Node.js
    Ruby
    Ruby
    Kafka
    Kafka
    Scala
    Scala
    Apache Storm
    Apache Storm
    Heron
    Heron
    Redis
    Redis
    Pulsar
    Pulsar

    Lumosity is home to the world's largest cognitive training database, a responsibility we take seriously. For most of the company's history, our analysis of user behavior and training data has been powered by an event stream--first a simple Node.js pub/sub app, then a heavyweight Ruby app with stronger durability. Both supported decent throughput and latency, but they lacked some major features supported by existing open-source alternatives: replaying existing messages (also lacking in most message queue-based solutions), scaling out many different readers for the same stream, the ability to leverage existing solutions for reading and writing, and possibly most importantly: the ability to hire someone externally who already had expertise.

    We ultimately migrated to Kafka in early- to mid-2016, citing both industry trends in companies we'd talked to with similar durability and throughput needs, the extremely strong documentation and community. We pored over Kyle Kingsbury's Jepsen post (https://aphyr.com/posts/293-jepsen-Kafka), as well as Jay Kreps' follow-up (http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen), talked at length with Confluent folks and community members, and still wound up running parallel systems for quite a long time, but ultimately, we've been very, very happy. Understanding the internals and proper levers takes some commitment, but it's taken very little maintenance once configured. Since then, the Confluent Platform community has grown and grown; we've gone from doing most development using custom Scala consumers and producers to being 60/40 Kafka Streams/Connects.

    We originally looked into Storm / Heron , and we'd moved on from Redis pub/sub. Heron looks great, but we already had a programming model across services that was more akin to consuming a message consumers than required a topology of bolts, etc. Heron also had just come out while we were starting to migrate things, and the community momentum and direction of Kafka felt more substantial than the older Storm. If we were to start the process over again today, we might check out Pulsar , although the ecosystem is much younger.

    To find out more, read our 2017 engineering blog post about the migration!

    See more
    Alex A
    Alex A
    Founder at PRIZ Guru Ā· | 3 upvotes Ā· 126.3K views
    atPRIZ GuruPRIZ Guru
    Grails
    Grails
    Play
    Play
    Scala
    Scala
    Groovy
    Groovy
    Gradle
    Gradle

    Some may wonder why did we choose Grails ? Really good question :) We spent quite some time to evaluate what framework to go with and the battle was between Play Scala and Grails ( Groovy ). We have enough experience with both and, to be honest, I absolutely in love with Scala; however, the tipping point for us was the potential speed of development. Grails allows much faster development pace than Play , and as of right now this is the most important parameter. We might convert later though. Also, worth mentioning, by default Grails comes with Gradle as a build tool, so why change?

    See more
    Sebastian Gębski
    Sebastian Gębski
    CTO at Shedul/Fresha Ā· | 7 upvotes Ā· 63.8K views
    atFresha EngineeringFresha Engineering
    Elixir
    Elixir
    Phoenix Framework
    Phoenix Framework
    Erlang
    Erlang
    Credo
    Credo
    Hex
    Hex
    AppSignal
    AppSignal

    Another major decision was to adopt Elixir and Phoenix Framework - the DX (Developer eXperience) is pretty similar to what we know from RoR, but this tech is running on the top of rock-solid Erlang platform which is powering planet-scale telecom solutions for 20+ years. So we're getting pretty much the best from both worlds: minimum friction & smart conventions that eliminate the excessive boilerplate AND highly concurrent EVM (Erlang's Virtual Machine) that makes all the scalability problems vanish. The transition was very smooth - none of Ruby developers we had decided to leave because of Elixir. What is more, we kept recruiting Ruby developers w/o any requirement regarding Elixir proficiency & we still were able to educate them internally in almost no time. Obviously Elixir comes with some more tools in the stack: Credo , Hex , AppSignal (required to properly monitor BEAM apps).

    See more
    Vadim Bakaev
    Vadim Bakaev
    Haskell
    Haskell
    Scala
    Scala

    Why I am using Haskell in my free time?

    I have 3 reasons for it. I am looking for:

    Fun.

    Improve functional programming skill.

    Improve problem-solving skill.

    Laziness and mathematical abstractions behind Haskell makes it a wonderful language.

    It is Pure functional, it helps me to write better Scala code.

    Highly expressive language gives elegant ways to solve coding puzzle.

    See more
    Interest over time
    Reviews of Erlang and Scala
    No reviews found
    How developers use Erlang and Scala
    Avatar of datapile
    datapile uses ScalaScala

    Scala is the God of languages. A legend. The Mount Rushmore of hybrid OO/functional languages is Scala's face four times over.

    Ok, honestly, we love Scala. We love(d) Java (and it's parents C and C++), and we love(d) all the languages that borrowed cough stole cough from Java over the years such as Groovy, Clojure, and C#.

    It may not be perfect (it totally is, but since programming languages don't have egos of their own, we don't want to paint it too bright), but it is awesome. It runs on the JVM, you can utilize Spring, it works great for data processing (which is sorta kinda the thing we do here, folks), and it just makes sense at all levels.

    If you don't like Scala, we feel sorry for the projects that are suffering due to your choices, meanwhile we are using Scala to write everything from JavaScript, CSS, SQL, and JSON directly within itself (go figure), so in the end no one will know the beauty of this powerhouse language (except for our engineers, of course).

    Avatar of Foursquare
    Foursquare uses ScalaScala

    Nearly our entire server codebase is written in Scala (if you haven't heard of it, it's a programming language that is basically what you would get if Java + ML had a baby). This has worked out super well. It enables us to write concise easy to deal with code that is typechecked at compile time. It's also been a big help with recruiting.

    Avatar of papaver
    papaver uses ScalaScala

    worked with scala for around 2 years. really enjoyed the language and getting back into the world of functional. unfortunately the community is heavily fragmented and the language itself broken and inconsistent. that with the various factions involved made it a put of for long term investment.

    Avatar of Stanislaus Madueke
    Stanislaus Madueke uses ScalaScala

    Scala, Akka and Spray (which became Akka-Http) provided the building blocks for the menu service.
    Akka's actors and finite-state machine were a natural way to model a USSD menu (a series of stateful interactions between a subscriber and the USSD gateway).

    Avatar of Giovanni Candido da Silva
    Giovanni Candido da Silva uses ScalaScala

    Replaces entirely the Java Language to build a much more expressive and powerful code on the backend, while leveraging at the same time the Java Platform Tools and Frameworks, is a mixture of old and mature with new and sexy.

    Avatar of Analytical Informatics
    Analytical Informatics uses ErlangErlang

    The central business logic and ETL engine is written in Erlang.

    Avatar of Mathias Vonende
    Mathias Vonende uses ErlangErlang

    Very nice programming language, used for backend integration.

    Avatar of Ryan Jennings
    Ryan Jennings uses ErlangErlang

    foundation VM for phoenix framework

    Avatar of Software Joint
    Software Joint uses ErlangErlang

    Cowboy web server serves content

    Avatar of KongHack Inc.
    KongHack Inc. uses ErlangErlang

    Custom plugins for ejabberd

    How much does Erlang cost?
    How much does Scala cost?
    Pricing unavailable
    Pricing unavailable
    News about Erlang
    More news