Go vs Scala vs Swift

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

Go

11.4K
9.6K
+ 1
3K
Scala

6.5K
4.9K
+ 1
1.5K
Swift

11.4K
7.9K
+ 1
1.2K
Decisions about Go, Scala, and Swift
Kirill Mikhailov

Go is a way faster than both Python and PHP, which is pretty understandable, but we were amazed at how good we adapted to use it. Go was a blessing for a team , since strict typing is making it very easy to develop and control everything inside team, so the quality was really good. We made huge leap forward in dev speed because of it.

See more
Chose
PythonPython
over
ScalaScala

I am working in the domain of big data and machine learning. I am helping companies with bringing their machine learning models to the production. In many projects there is a tendency to port Python, PySpark code to Scala and Scala Spark.

This yields to longer time to market and a lot of mistakes due to necessity to understand and re-write the code. Also many libraries/apis that data scientists/machine learning practitioners use are not available in jvm ecosystem.

Simply, refactoring (if necessary) and organising the code of the data scientists by following best practices of software development is less error prone and faster comparing to re-write in Scala.

Pipeline orchestration tools such as Luigi/Airflow is python native and fits well to this picture.

I have heard some arguments against Python such as, it is slow, or it is hard to maintain due to its dynamically typed language. However cost/benefit of time consumed porting python code to java/scala alone would be enough as a counter-argument. ML pipelines rarerly contains a lot of code (if that is not the case, such as complex domain and significant amount of code, then scala would be a better fit).

In terms of performance, I did not see any issues with Python. It is not the fastest runtime around but ML applications are rarely time-critical (majority of them is batch based).

I still prefer Scala for developing APIs and for applications where the domain contains complex logic.

See more
Chose
GoGo
over
RustRustPythonPython

Context: Writing an open source CLI tool.

Go and Rust over Python: Simple distribution.

With Go and Rust, just build statically compiled binaries and hand them out.

With Python, have people install with "pip install --user" and not finding the binaries :(.

Go and Rust over Python: Startup and runtime performance

Go and Rust over Python: No need to worry about which Python interpreter version is installed on the users' machines.

Go over Rust: Simplicity; Rust's memory management comes at a development / maintenance cost.

Go over Rust: Easier cross compiles from macOS to Linux.

See more
Pros of Go
Pros of Scala
Pros of Swift
  • 511
    High-performance
  • 375
    Simple, minimal syntax
  • 343
    Fun to write
  • 289
    Easy concurrency support via goroutines
  • 261
    Fast compilation times
  • 183
    Goroutines
  • 173
    Statically linked binaries that are simple to deploy
  • 144
    Simple compile build/run procedures
  • 129
    Backed by google
  • 125
    Great community
  • 46
    Garbage collection built-in
  • 40
    Built-in Testing
  • 36
    Excellent tools - gofmt, godoc etc
  • 33
    Elegant and concise like Python, fast like C
  • 28
    Awesome to Develop
  • 22
    Flexible interface system
  • 21
    Used for Docker
  • 21
    Great concurrency pattern
  • 18
    Deploy as executable
  • 17
    Open-source Integration
  • 14
    Fun to write and so many feature out of the box
  • 11
    Its Simple and Heavy duty
  • 11
    Easy to read
  • 10
    Powerful and simple
  • 9
    Go is God
  • 9
    Safe GOTOs
  • 9
    Easy to deploy
  • 7
    Hassle free deployment
  • 7
    Rich standard library
  • 7
    Concurrency
  • 7
    Best language for concurrency
  • 7
    Easy setup
  • 6
    Used by Giants of the industry
  • 6
    Simplicity, Concurrency, Performance
  • 6
    Clean code, high performance
  • 6
    High performance
  • 6
    Single binary avoids library dependency issues
  • 5
    Simple, powerful, and great performance
  • 5
    Cross compiling
  • 4
    Garbage Collection
  • 4
    Excellent tooling
  • 4
    Very sophisticated syntax
  • 4
    Gofmt
  • 4
    WYSIWYG
  • 3
    Kubernetes written on Go
  • 2
    Keep it simple and stupid
  • 1
    Widely used
  • 0
    No generics
  • 0
    Operator goto
  • 187
    Static typing
  • 177
    Pattern-matching
  • 177
    Jvm
  • 170
    Scala is fun
  • 137
    Types
  • 93
    Concurrency
  • 88
    Actor library
  • 84
    Solve functional problems
  • 83
    Open source
  • 80
    Solve concurrency in a safer way
  • 42
    Functional
  • 22
    Generics
  • 22
    Fast
  • 17
    It makes me a better engineer
  • 15
    Syntactic sugar
  • 12
    Scalable
  • 10
    Type safety
  • 10
    First-class functions
  • 9
    Interactive REPL
  • 8
    Expressive
  • 7
    SBT
  • 6
    Implicit parameters
  • 6
    Case classes
  • 4
    Rapid and Safe Development using Functional Programming
  • 4
    Object-oriented
  • 4
    JVM, OOP and Functional programming, and static typing
  • 4
    Used by Twitter
  • 3
    Functional Proframming
  • 2
    Beautiful Code
  • 2
    Safety
  • 2
    Spark
  • 2
    Growing Community
  • 1
    DSL
  • 1
    Rich Static Types System and great Concurrency support
  • 1
    Naturally enforce high code quality
  • 1
    Mill build tool
  • 1
    Akka Streams
  • 1
    Akka
  • 1
    Reactive Streams
  • 1
    Easy embedded DSLs
  • 0
    Freedom to choose the right tools for a job
  • 248
    Ios
  • 175
    Elegant
  • 123
    Not Objective-C
  • 105
    Backed by apple
  • 89
    Type inference
  • 57
    Generics
  • 51
    Playgrounds
  • 47
    Semicolon free
  • 37
    OSX
  • 34
    Tuples offer compound variables
  • 21
    Clean Syntax
  • 21
    Easy to learn
  • 19
    Open Source
  • 19
    Functional
  • 16
    Beautiful Code
  • 10
    Linux
  • 9
    Dynamic
  • 9
    Promotes safe, readable code
  • 7
    Protocol-oriented programming
  • 7
    No S-l-o-w JVM
  • 7
    Explicit optionals
  • 5
    Storyboard designer
  • 4
    Best UI concept
  • 4
    Super addicting language, great people, open, elegant
  • 3
    Faster and looks better
  • 3
    Type safety
  • 3
    Optionals
  • 2
    Swift is faster than Objective-C
  • 2
    Native
  • 2
    Highly Readable codes
  • 2
    Feels like a better C++
  • 2
    Its fun and damn fast
  • 2
    Protocol extensions
  • 1
    MacOS
  • 1
    Optional chain
  • 1
    Protocol as type
  • 1
    Protocol oriented programming
  • 1
    Type Safe
  • 1
    Objec
  • 1
    Actually don't have to own a mac
  • 1
    Strong Type safety
  • 1
    Powerful
  • 1
    Fail-safe
  • 1
    Can interface with C easily
  • 1
    Easy to learn and work
  • 1
    Its friendly
  • 1
    Easy to Maintain
  • 1
    Much more fun
  • 1
    Esay
  • 1
    Numbers with underbar
  • 0
    Swift is easier to understand for non-iOS developers.

Sign up to add or upvote prosMake informed product decisions

Cons of Go
Cons of Scala
Cons of Swift
  • 38
    You waste time in plumbing code catching errors
  • 23
    Verbose
  • 22
    Packages and their path dependencies are braindead
  • 15
    Dependency management when working on multiple projects
  • 12
    Google's documentations aren't beginer friendly
  • 10
    Automatic garbage collection overheads
  • 7
    Uncommon syntax
  • 6
    Type system is lacking (no generics, etc)
  • 2
    Collection framework is lacking (list, set, map)
  • 9
    Slow compilation time
  • 5
    Multiple ropes and styles to hang your self
  • 3
    Too few developers available
  • 3
    Complicated subtyping
  • 1
    My coworkers using scala are racist against other stuff
  • 2
    Must own a mac
  • 2
    Memory leaks are not uncommon
  • 1
    Its classes compile to roughly 300 lines of assembly
  • 1
    Complicated process for exporting modules
  • 1
    Very irritatingly picky about things that’s
  • 1
    Is a lot more effort than lua to make simple functions
  • 0
    Overly complex options makes it easy to create bad code

Sign up to add or upvote consMake informed product decisions

What is 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.

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.

What is Swift?

Writing code is interactive and fun, the syntax is concise yet expressive, and apps run lightning-fast. Swift is ready for your next iOS and OS X project — or for addition into your current app — because Swift code works side-by-side with Objective-C.

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

What companies use Go?
What companies use Scala?
What companies use Swift?

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

What tools integrate with Go?
What tools integrate with Scala?
What tools integrate with Swift?

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

Blog Posts

Dec 8 2020 at 5:50PM
https://img.stackshare.io/company/93/8a444d2b7ec5dd7a4f3fc1819136e05178b964c8.png logo

DigitalOcean

GitHubMySQLMongoDB+11
2
1497
Nov 20 2019 at 3:38AM
https://img.stackshare.io/stack/517248/default_4bf5f3d2d3ef627f563fd3b2e94dee6cc37a38d6.jpg logo

OneSignal

PostgreSQLRedisRuby+8
7
3620
Oct 3 2019 at 7:13PM
https://img.stackshare.io/stack/511159/default_5f04358e03a27bf2607a39dd9b409dd7830ce4d3.png logo

Ably Realtime

JavaScriptPythonNode.js+8
4
3123
Aug 28 2019 at 3:10AM
https://img.stackshare.io/stack/505487/default_e35b8bd5e615e01dc9b420dbd2a444fcbaeff755.png logo

Segment

PythonJavaAmazon S3+16
5
1891
DockerAmazon EC2Scala+8
6
2142
What are some alternatives to Go, Scala, and Swift?
Python
Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
Rust
Rust is a systems programming language that combines strong compile-time correctness guarantees with fast performance. It improves upon the ideas of other systems languages like C++ by providing guaranteed memory safety (no crashes, no data races) and complete control over the lifecycle of memory.
Java
Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
Node.js
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
JavaScript
JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles.
See all alternatives
Interest over time