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

Golang

23.4K
13.6K
+ 1
3.3K
Swift

21K
13.1K
+ 1
1.3K
Add tool

Go vs Swift: What are the differences?

Introduction

Go and Swift are both programming languages used for developing applications. While Go is primarily used for creating highly scalable and efficient server-side applications, Swift is designed for developing applications primarily for Apple platforms such as iOS, MacOS, and watchOS. Despite some similarities, there are key differences between Go and Swift that are worth noting.

  1. Syntax and Language Design Philosophy: Go and Swift have different syntaxes and language design philosophies. Go is known for its simplicity, readability, and focus on writing clear and concise code. It has a C-like syntax and emphasizes the use of explicit error handling. On the other hand, Swift is designed to be expressive and follows a more modern and concise syntax. It employs powerful features like Optional chaining and Type inference to make code easier to write and read.

  2. Concurrency and Parallelism: Go and Swift handle concurrency and parallelism in different ways. Go has built-in primitives like goroutines and channels that make it easy to write concurrent and parallel programs. It provides excellent support for writing efficient and scalable concurrent code. In contrast, Swift has a different approach to concurrency and parallelism. It introduces concepts such as async/await and structured concurrency, which make it easier to write asynchronous code and handle concurrency in a structured manner.

  3. Platform Compatibility: One significant difference between Go and Swift is their platform compatibility. Go is a cross-platform language that can be compiled and run on various operating systems, including Linux, macOS, and Windows. It emphasizes portability and has a strong focus on building applications that can run anywhere. On the other hand, Swift is primarily designed for Apple platforms, and its official support is limited to iOS, macOS, and watchOS. Although there are efforts to make Swift more cross-platform, its ecosystem and tooling are more tightly integrated with Apple's development environment.

  4. Community and Ecosystem: Go and Swift have different-sized communities and ecosystems. Go has a larger and more mature community with a vast number of open-source libraries and frameworks available for developers. It also has strong support from Google, which ensures regular updates and improvements to the language. Swift, although relatively newer, has gained popularity quickly, especially in the Apple development community. It has a growing ecosystem, and many popular libraries and frameworks are available specifically for iOS and macOS development.

  5. Memory Management: Memory management in Go and Swift is handled differently. Go uses a garbage collector and automatic memory management, relieving the developer from manually deallocating memory. It has a simple and efficient garbage collector that can handle large-scale applications effectively. On the other hand, Swift employs Automatic Reference Counting (ARC), which is a form of automatic memory management. It tracks and manages the memory automatically, but developers need to be cautious of strong reference cycles that could lead to memory leaks.

  6. Community Driven vs. Vendor Driven: Go is an open-source language developed by a community of developers. It is driven by the open-source community and has a focus on simplicity, performance, and scalability. Swift, on the other hand, is developed and maintained by Apple. It is considered a vendor-driven language, closely tied to Apple's development ecosystem. While both approaches have their advantages, the community-driven nature of Go allows for more contributions and faster progress.

In summary, Go and Swift differ in their syntax and language design philosophy, concurrency and parallelism handling, platform compatibility, community and ecosystem size, memory management approach, and development model. These differences make each language suited for specific use cases and development environments.

Advice on Golang and Swift
Caue Carvalho
Needs advice
on
GolangGolangPythonPython
and
RubyRuby

Hello!

I'm a developer for over 9 years, and most of this time I've been working with C# and it is paying my bills until nowadays. But I'm seeking to learn other languages and expand the possibilities for the next years.

Now the question... I know Ruby is far from dead but is it still worth investing time in learning it? Or would be better to take Python, Golang, or even Rust? Or maybe another language.

Thanks in advance.

See more
Replies (8)
Angel Ramirez
Recommends
on
GolangGolangPythonPython
at

Hi Caue, I don't think any language is dead in 2022, and we still see a lot of Cobol and Fortran out there, so Ruby is not going to die for sure. However, based on the market, you'll be better off learning Goland and Python. For example, for data science, machine learning, and similar areas, Python is the default language while backend API, services, and other general purpose Goland is becoming the preferred.

I hope this helps.

See more
Recommends
on
GolangGolangPythonPython

I feel most productive using go. It has all the features I need and doesn't throw road blocks in your way as you learn. Rust is the most difficult to learn as borrow checking and other features can puzzle a newcomer for days. Python is a logical next step as it has a huge following, many great libraries, and one can find a gig using python in a heartbeat. Ruby isn't awful, it's just not that popular as the others.

Another reason to use python is that it is not compiled. You can muck around in the interpreter until you figure things out. OTOH, that makes it less performant. You really need to think about your use cases, your interest in lower-lever versus high-level coding, and so on.

See more
Roman Glushko
Machine Learning, Software Engineering and Life · | 4 upvotes · 58.1K views
Recommends
on
GolangGolangPythonPythonRustRust

I enjoy coding in Python. I think it's minimalistic and readable syntax and lang features are just unparalleled. They are perfect for prototyping and for the software engineering in general. If I'm not wrong Gitlab marked Python as #2 popular language after JavaScript. Beyond that, Python ecosystem and areas of usage are enormous. In areas like ML/DL, it's important to know Python to leverage variety of existing tools and frameworks.

Then, I have learned and worked with Golang. I use it where I think I would need a slightly better performance than in Python. Plus, relatively small and self-contained executable is a great thing to have. If you plan to write distributed systems, extend Kubernetes or do similar things I think Golang is a great choice. It's also simple and straightforward, especially when you want to do effective multithreading. Although I don't like that Golang is more low-level than Python. Sometimes I feel like I need to implement myself too much things.

Now, about Rust. It's my second try to learn Rust. First time I decided to learn Golang as I understood it in 30mins or so while I was struggling to compile/do anything meaningful there for quite a bit. So I personally don't think Rust is super easy. I have got back to learning Rust as it's going to fill one of gaps in my problem solving toolkit - let me write low-level system programs (e.g. linux kernel modules). I don't want to learn "obsolete" C/C++ (my reasons are similar to why Google has recently introduced Carbon - a replacement for C/C++ codebases). If you are not going to tight your life with system-like programming, Rust may be an overkill for you.

Finally, I have never coded in Ruby, so are not going to comment it.

See more
Recommends

I'm almost same position as you. 8 years same company with c#. I tried both Python and Golang. I like working with Golang. Check this litte go doc. After reading this document and following its examples, I decided to work with "go" https://www.openmymind.net/assets/go/go.pdf

See more
Recommends
at

Since you are very experienced, picking up a language will not take you more than a week. Rust is a very new language. Many startups are still experimenting with it. Golang is very popular nowadays. You can see a lot of golang jobs in the market. The best part is, compiled code is single binary and has a minimal footprint. Rails is a compelling framework; believe me, many websites like Shopify, GitHub, GitLab, etc., are powered by the rails framework. You can also leverage the power of metaprogramming in Ruby. Python is memory and CPU intensive. It is not as performant as the other three. If you want to go into Data Science, Python is the language. Good luck, buddy. Feel free to connect with me: https://twitter.com/avirajkhare00

See more
Recommends
on
PythonPython

Because it opens endless possibilities you can do anything and everything you want to. from ai to app development to web development.

See more
Recommends
on
GolangGolangPythonPythonRubyRuby

it is highly recommended to take a look at that survey

https://survey.stackoverflow.co/2022/

See more
A Nielsen
Fullstack Dev at ADTELA · | 1 upvotes · 54.7K views
Recommends
on
GolangGolangPythonPython

Either Python or Golang, for all the enlightened reasons already mentionned in all advices/comments :) Enjoy!

See more
Needs advice
on
GolangGolangPerlPerl
and
RustRust

I intend to use a programming language which I'll use as AWS runtime and write a script that will comb through tons of files in a directory and its subdirectories and search for simple text regular expressions and process and write the matches in a file as output. I have heard that Perl is good for regex based search but I also want the performance to be good as it will have to go through tons of files for IO. In this post: https://filia-aleks.medium.com/aws-lambda-battle-2021-performance-comparison-for-all-languages-c1b441005fd1, I see that Rust works well as AWS Lambda runtime with very good performance. Which one should I choose as my AWS lambda runtime for this problem? Golang is also an option as it is fast as per the above link.

See more
Replies (1)
Recommends

I used to work in a Perl shop and must admit that the language is very simple for tasks like these, but as you mentioned it's not fast at execution time. I'm now a Go programmer professionally but I taught myself the language while in college purely out of interest and eventually found my way to the job, not the other way around. I've recently been learning a little rust because of how much that language comes up in conversations around Go. I find the concept of the borrow checker nice but I have to admit I feel lost like I am in most flavors of new fancy framework js. That's not to say Rust is really anything like js, but the learning appears the same to me as someone who's convinced they could learn just about any programming language if it was necessary (over time I've seen procedural, OOP, declarative and functional stuff but never programming logic outside of the prolog code I wrote in school).

Go isn't made for your specific task at hand but it's a very easy language to pick up and it has good directory traversal standard library code and good regex (even though with time perl's has been optimized to be faster and I think it's written in C++) but more than anything Go is "cloud native" programming in that an awful lot of new microservice tech stacks are centered around it, docker and kubernetes are written in it, and there's a thriving community whose focus is generally web-first and performance-oriented. This means for your use case there might already be a large cohort of gophers that have asked the stackoverflow questions for you

I personally would push you towards the NYT Profiler for Perl before I would towards Rest, but that's because I know you wouldn't waste any time being able to get to the task at hand and then make it go faster, and I expect all but a few rustaceans would be able to do so with the same speed.

Whatever you pick I wish you the very best of luck!

See more
Sachin K
Cloud Engineer and Developer · | 6 upvotes · 90.4K views
Needs advice
on
GolangGolangJavaJava
and
PythonPython

Hello Folks, my first time here, and for requesting advice. I am trying to create some automation from my cloud stack on AWS to something more cloud native. I have containerised the services, however, I am stuck at DB, my Data warehouse, and messaging. Would love some recommendations on how can I automate this for some future work too.

See more
Replies (1)
Simon Banks
Principal Software Engineer at AtCore Tech · | 3 upvotes · 86.8K views
Recommends

I recommend cloud-init for base setup of machines and configuring them.. Its simple (YAML file) and is industry standard. Even works on bare metal as well as cloud.

See more
Mahmoud Gabr
Software engineer at AlgoDriven · | 8 upvotes · 107.8K views
Needs advice
on
GolangGolangNode.jsNode.js
and
PHPPHP

I'm working in a company as a software engineer, Mainly we are focusing on PHP as the product is being developed in PHP (native) also there are a few products in Node.js, I tried to introduce Laravel but there is no luck to work on it. Now I have started learning Go language, should I focus more on Go or continue only with PHP and NodeJS. BTW I know PHP and NodeJS very well.

See more
Replies (1)
Recommends

Be flexible, be agile in your personal and professional life. Don't be afraid to learn new things and step outside of your confort zone BUT with reason. Reason can be a career path or just money. Does Go belongs to your career path? Does Go belongs to your company's toolset? Do yo seek for new job oportunities? Some people follow a complete career path by using a single language i.e, PHP or java, but if you want to standout in the crowd this is not enough. You already know PHP. This is an oportunity to learn something new. In general, I would advise you to learn at least one language & library/framework per stack . This will help you to lead a team someday.

See more
Needs advice
on
FlutterFlutterPythonPython
and
SwiftSwift

Hello, I am still a student and would like to ask a question. Currently, I am developing in mobile development with Flutter in the frontend and Python in the backend part. Right now I have to make a choice about developing a mobile app or developing a backend to progress more professionally. My questions are as follows:

1) If I prefer the mobile application area, will I only work with the Ui/Ux developer with the front-end and code the designs in Swift Kotlin languages, am I responsible for the back-end software?

2) I have a product that generates new ideas so I like to control the development and work there because the backend is the brain, but are they independent from each other in the backend mobile application? Is the mobile app developer responsible for the backend software?

3) I don't like graphic design because I don't like it if it's not perfect and I get stressed. Am I responsible for the graphic design in the mobile app?

4) Is a mobile app developer also a backend developer?

I know these are very simple questions, but they are very important to me. Thanks for your answers.

See more
Replies (3)
Benjamín Cáceres
Software Developer at Empirica Consultores · | 5 upvotes · 108K views
Recommends

Hi Hüseyin! 1-2) In my experience If you are a Mobile Applications Developer you will have the following responsabilities: - Develop (not designing) both functionality and screens of the app you are working - Consume (not develop) third party or self company owned APIs or Backend services - Distribution tasks. - Mantainance tasks. Now, there will always be companies wishing you know the whole thing (ui/ux, backend, frontend, mobile, cd/ci, data science, etc.). And of course it will be helpful for you to know a little bit of the stuff around mobile development, but it's not very common since it's not part of the responsabilities of a mobile app dev.

3) No, you are not responsable for the designs of your application, that's why companies have Product designers, ux designers, ui designers for preparing the screens, logos, color palettes, etc for products. As a developer your job is to see and examine the designs and take them from Figma, InVision, Zeplin, etc to the Code editor.

4) This is the thing, if you are working as a Mobile Developer you might know about Mobile development, not backend, not frontend, not ui ux. BUT if you know a little about backend that might be helpful although backend should not be your responsability.

I hope this makes sense to you. Cheers!

See more
Jake Hawken
Senior iOS Developer at Grailed · | 4 upvotes · 104K views
Recommends
on
SwiftSwiftXcodeXcode

As a mobile developer, I'm usually a member of a larger team and it's usually another person's responsibility to develop the backend/API, and another person's to do the UX/design. Very very few teams use cross-platform tools like Flutter or React Native, because tools like those tend to make mediocre apps that scale poorly and are impossible to debug, so make sure to get familiar with Swift/iOS or Kotlin/Android (or both).

See more
Preeti Yuankrathok
Software Consultant at CODIUM · | 2 upvotes · 79.4K views
Recommends

Hi! I think most of your questions led to these answers:

  • Mobile software developers don't responsible for the back-end part, or even graphic design. Of course, the back-end part should be done by a back-end developer. The graphic design, I'd say that if you work on a start-up, you might be the one who does since there isn't much manpower there, but in the larger company, they would have a designer especially in UI/UX. You'll have a mockup for the application that you need to follow. As a developer, you're expected to code, not design.

  • I've said that the responsibility isn't yours, but of course, you'll have an advantage over others if you know UI/UX, or back-end as well. That would help you a lot to be a good mobile developer.

Good luck!

See more
Adit Patel
Needs advice
on
RustRust
and
SwiftSwift

Hey there, we are looking to develop our own layer 1 blockchain. We're splitting the responsibilities for origination, clearing, and settlement across three independent but cooperating node networks. We've gotten our Proof of Concept up using Ruby on Rails for the nodes, you can see it as the attached link. So far, so good. Now we are looking to convert it into a distributable and are trying to figure out which language is the best for this.

Essentially our needs from the language are: solid networking tools and speed, very fast execution of basic actions, some parallel execution, and able to compile the end product into an easy to distribute and use package for end users.

I was learning Rust, but I have a healthy amount of experience with Swift and right now, it's only me coding. I've only done iOS coding, but have built a fintech app from scratch that's now in the app store so I'm pretty familiar with the language and its benefits. Haven't experimented with Vapor or any of the application development tools, and I wanted to know if it is a crazy idea to develop a blockchain node in Swift instead.

See more
Replies (2)
Recommends
on
RustRust

Pick Rust. Rust can provide all what you need and has been a major language in blockchain/cryptocurrency industry. Swift is slower than Rust and does not have such support in the networking and domain field. Swift tooling is great only on macOS, therefore you are likely to have troubles on other platforms.

See more
Peter Suwara
Director at Realityworks · | 6 upvotes · 109.3K views
Recommends
on
C++C++GolangGolangSwiftSwift

You can use swift of course. It’s more of a question of being performant.

You really want to try some basic operations and find what’s most performant for you.

Rust is wonderful for cloud applications requiring heavy concurrency, it has compile time checking for such things.

Go and C++ could be more performant in your case. Swift is really quite an obtuse language, with a lot of features, some which may complicate your implementation.

Also, you want to consider the market of developers who could help build it. If you use Go or C++ there is a larger collection of people who know the languages than there is with swift.

See more
Needs advice
on
ElixirElixirGolangGolang
and
PythonPython

Hi! I'm currently studying Flutter for mobile apps, but I also have a demand to automate some tasks on the web and create backends' for my apps, so thinking about which one of those could be better? Considering the performance and how easy it's to learn and create stuff? (I'm already familiar with .NET stack but want something more "simple" to write)

See more
Replies (4)
Amit Mor
Software Architect at Payoneer · | 5 upvotes · 191.8K views
Recommends
on
PythonPython

Definitely Python. Lots of libraries, dead simple syntax. Lots of code examples and reference projects. Elixir is pure functional and takes time to grasp the concepts. Go is great, with simple syntax and performant runtime, but more strict as it is statically typed. For quick coding, nothing beats Python. As you come from .net I’d consider similar approach and be considering Java with SpringBoot as it makes Java faster and much more fun to code web servers

See more
Recommends
on
ElixirElixir

Elixir really has a good performance for the web (and in general). Its framework Phoenix for the web is a great tool, easy to install and to use, with features for websockets (and Pub/Sub) or LiveView to write reactive and real time app with only HTML (and Elixir) so basically everything is in one place

It can take some time to learn a few things in Elixir but I really think it's worth it, and it's very easy to go distributed and concurrent with Elixir. Also it's easier to code quickly with some features like the pattern matching or some operators like the pipe or the capture one

And in the case you need it you can still connect and interface Python and Elixir pretty quickly, and now Elixir has a lot of different frameworks : web, embedded or even neural networks now

Never went far with Go but I have some trouble with its syntax, I find it a bit messy

I don't have a lot of experience with the web with Python but I don't have a good experience with the little I did

See more
Recommends
on
GolangGolangPythonPython

Judging your previous experience we will benefit from Golang in terms of portability and speed. If you want to go simplier use Python. If it's only scripts use Python.

See more
Shivam kr Shiv

Hey Vitor, You can use Node and Express JS to create a backend for your app. You can create REST APIS to connect your front end with the backend. It is a very simple and scalable solution for building backend web apps.

See more
Brayden W
Needs advice
on
GolangGolangPythonPython
and
RustRust

Hey, 👋

My name is Brayden. I’m currently a Frontend React Developer, striving to move into Fullstack so I can expand my knowledge.

For my main backend language, I am deciding between Python, Rust, and Go. I’ve tried each of them out for about an hour and currently, I like Python and Rust the most. However, I’m not sure if I’m missing out on something!

If anyone has advice on these technologies, I’d love to hear it!

Thanks.

See more
Replies (4)
Recommends
on
GolangGolangPythonPython

Rust is still in low demand. It's a great language but you'll have a hard time finding jobs. Go is the mix of both Rust and Python. Great language with modern features, fast, scalable, fun to write, and at the same time it has high demand (not as much as python).

Python on the other hand is a language that you can't go wrong with. Look around you and see what your job market prefers. If there isn't much difference to you personally, pick the one with more demand.

See more

All of these are solid options, however considering your expertise currently, I would probably suggest Node.JS considering your past experience with JS. However Python offers a similar development environment to JS in my opinion, and Go is a good sort of intermediate between Rust and Node.JS and Python. It's fast, but not as fast as Rust, and offers a development experience that combines C-styled languages (like Rust), and Python-y languages... So: Rust for the fastest, Node for familiarity, Python for ease of development, and Go for a good middle ground. I have used all in personal projects... If you use Go, I suggest a easy to use web server framework like Fiber.

See more
Akihito KIRISAKI
Recommends
on
PythonPythonRustRust

Rust is a challenging choice, but worth to be chosen. It has strong memory-safety and type-safety, this gives you no bother about those errors. However, static typing languages often slow our developing speed down in early stage. In that case, it's effective to write prototype in an easy language like Python, and rewrite it in a hard language. It's important not to be afraid to throw away first code you write.

See more
Donald Tran
Software Engineer at T-Mobile · | 3 upvotes · 374.3K views
Recommends
on
RustRust

The other answers are excellent, but I want to be a bit of a contrarian and say you should learn Rust. While the number of jobs for it are (relatively) low(er), it is certainly expanding and you'd be surprised at which companies do use Rust (Discord, for example, is starting to move away from Golang to Rust!).

But the main reason is that learning Rust itself will teach you a lot about systems design (/backend) because of its borrow checker. You can try out a lot of ideas and make a lot mistakes and the borrow checker will always be there guide you to a better solution (thereby teaching you in the process).

Also, I wouldn't underestimated how important managing memory (and memory safety) is. While Golang is great in some ways, it doesn't protect you from pushing memory leaks into production. And eventually you'll come upon a scenario where you'll have to make your Python code run faster and the optimizations you'd have to do won't look pretty (or be very Pythontic).

And Rust is freakin fast! If you have Rust, you wouldn't need any other language for the backend (or any other systems level code). Check this blog post: https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f?gi=dd8bc5d669d. Discord found that even after spending months optimizing Golang code it still wasn't fast enough. But unoptimized, first-draft Rust code was (is) faster by an order of magnitude!

See more
Piusha Kalyana
Needs advice
on
GolangGolangPHPPHP
and
PythonPython

Hi

I want to build a tool to check asset availability (video, images, etc.) from third-party vendors. These vendors have APIs. However, this process should run daily basis and update the database with the status. This is a kind of separate process. I need to know what will be the good approach and technology for this?

See more
Replies (5)
Hannes Holst
at 365 Consulting Services Ltd. · | 7 upvotes · 342.6K views
Recommends
on
PythonPython

hi - I think this depends on how you want to provide the information to the user. If you want to build a Wordpress-plugin: PHP If you want to build your own website: Python+Django / PHP / JavaScript+Node.js As Desktop application?

See more
anas mattar
Technical Lead at DPO International · | 3 upvotes · 329.5K views
Recommends
on
PHPPHP

for what technologies you should use, this is depend on what technology do you prefer? your should think best structuing for your code because each API vendor has different to a nother one so it's better no merege code vendores together. your code must be using SOLID principle pattern and some design pattern such as Factory Pattern

See more
Recommends
on
GolangGolang

The major advantage of Go is that you can run queries in parallel. Fire off a Go thread for each vendor and each thread can check the availability of assets from a specific vendor and update the database. Go supports hundreds of threads with ease.

See more
anas mattar
Technical Lead at DPO International · | 1 upvotes · 325.6K views
Recommends
on
C#C#GolangGolangPHPPHP

your decision depend on what language do you know. if you know php you can use laravel framework

See more
Oluwafemi Lawrence
Recommends
on
GolangGolang

Hi, I would recommend Go because of strongly-typed nature which makes a developer more productive as it is less error prone compared to the other dynamic-typed language. Go also has cron-job library(powered by goroutines) that can help with your automated tasks.

See more
Needs advice
on
GolangGolangPythonPython
and
RustRust

I am a beginner, and I am totally confused, which of these 3 languages to learn first. Go, Rust, or Python. As my studies are going which of them will be easy to learn with studies that is, I can learn and do my studies also. Which one of them will be easily handled with my studies, and will be much much useful in future?

See more
Replies (17)
Recommends
on
PythonPython

python is a good language to start for the beginner.

See more
Will Vandebelt
Recommends
on
GolangGolangPythonPython

Python is a great language to learn as a beginner. However, Go is really easy to learn as well and has a much more powerful standard library that will allow you to build very complex and powerful applications in the future. Go is becoming a standard in Cloud computing and concurrency. Both of which are very advanced but important.

See more
Recommends
on
PythonPython

I have experience in all three languages, and you should learn python first. These are three different languages (read: tools) to solve different problems you may have. Python is a high level language you can use for writing cross-platform scripts, web servers, AI, websites (e.g. Django) and the list goes on. Python can be used for most programming tasks while being the easiest to learn of the three and probably the most productive as well.

A lot of tech companies start out with Python for their web services, but due to Pythons slow speed and the pain that comes with dynamically typed languages when the code base grows, switch to Go later on when they need to scale. Go is a systems language that thrives when used for high performance cloud/web or networking services. Go is used in performance critical networking situations such as Twitch's streaming services and Uber's geofence services. It's also very clean and simple syntax that makes it very easy to quickly understand what code does.

Python is an interpreted language and Go is a garbage collected language, but Rust is a highly performant and reliable compiled programming language without the extra baggage of runtime memory management. Rust forces you to follow coding patterns that assure memory safety. This makes Rust a perfect fit for high performance algorithms, game engines or safety-critical systems, but would be overkill for web servers or scripts on modern hardware.

See more
Recommends
on
GolangGolang

I'd definitely start with Go. I know Python, Go and quite a few other languages.

Rust is not easy to learn as a beginner.

Python has way too many features to be called "easy" to learn. While it is very forgiving to beginner mistakes it feels like playing in a puddle of mud. It does not teach you clean programming at all. Unless of course you like messy.

Go on the other hand is very easy to learn. As a professional you can learn the entire language in under 2 hours. I have already given the tour of Go (https://tour.golang.org/) to complete beginners and they went through it very thoroughly and thereby knew the entire Go language in less than 5 days. While it is very easy to learn and very easy to read, it is quite strict on other things, guiding you to write clean code. For one it is a typed language and it is good to learn very early about types.

Knowing the entire language is of course not all there is to know. There is the standard library and a lot of other libraries to get to know in every language. Also one has to learn patterns in every language, get experience on how to structure code, dig deeper into the language itself to understand its inner workings, etc. That takes years in every language.

That being said, it depends very much on what you want to do with a language. If you want to go into ML and science you definitely need Python. If you want to go into cloud computing, distributed servers (which in my opinion any server should be nowadays), use Go. If you want to do systems level programming, e.g in hardware programming, use Rust.

See more
Kudos Beluga
Recommends
on
PythonPython

Rust is probably a bad choice for starting out. It is a low level language where garbage collection is not done automatically, and has to get you thinking about all the technical aspects. It is statically typed and compiled, so it's very strict with how you code. I do love Rust though, it's a nice language. Golang is also compiled and statically typed, but it aims to be for quick development, which makes it a better choice for starting out.

Python though can be great for starting out and getting a hold on how to program. You don't need to worry about things such as types, garbage collection, or an overwhelming amount of data types. Since I'm a JavaScript fanboy I can't help but say another great popular choice to start is JavaScript 😁

See more
Recommends
on
C#C#PythonPython

If all you want is a gentle intro and have access to tools and libs that can help with your tasks, Python is the way to go. It's ecosystem is huge and the language is easy to pick up. However, if you are aiming to get into software industry, I'd highly recommend you also pick up another classic language like C++/C#/Java. It really helps you cement some CS & programming fundamentals and get more familiar with the concept of software design and software architecture. Not saying you cannot achieve good architecture in Python or Go, but traditionally you have more materials covering these classic OOP languages. And once you learn them, you can apply your knowledge to other languages and it helps you understand other languages faster.

See more
Recommends

Python has the broadest reach as it's been around the longest; rust is much more difficult for a beginner to learn; I work with Go every day and it's probably the most productive general use language.

See more
Stanislav Petrov
Senior Software Engineer at GfK · | 3 upvotes · 301K views
Recommends
on
PythonPython

If you start learning programming I'd suggest Python language. I have no experience with Go and Rust so I cannot give you advice for them.

See more
Recommends
on
PythonPython

Python is the easiest of the languages to learn, and while the slowest in production, it will teach many of the basic fundamental concepts of programming, especially if you're not going to be doing anything low level or at a system level.

See more
Amity International School Sec Gurugram
Vice Cyber Captain at Student · | 1 upvotes · 300.7K views
Recommends
on
PythonPython

Python, because its the easiest to learn as a beginer. Its often called "English without grammar" because its terms and writing style is quite similar to English. Python also has a diverse range of applications like Web App, Desktop App, Data Science etc

See more
Recommends

I agree with most of the other answers here. Python is the best choice because it is super user-friendly, has an easy syntax, and can do many complex things in relatively fewer lines.

While Rust is a more recent and a great language nonetheless, it is slightly more complicated as it involves compiling and the syntax isn't so great.

And Go is the not a great choice either. While it has a decent syntax, keep in mind that Go won't be of much use unless you plan on working in Google. Even if you want to learn it, you can do so later.

I hope this helped you in making your decision, and welcome to the world of programming! I hope you enjoy.

See more
Recommends
on
GolangGolangPythonPython

Go and Python are going to be much easier to learn than Rust. The memory management for Rust is pretty hard to wrap your head around when you are first learning how to do basic things with the language. Get familiar with programming first, then learn Rust.

See more
Recommends
on
GolangGolang

Study, machine learning = Python | High performance computing, safety-oriented programming = Rust | Backend, feel productive with less runtime performance drawback = Go

See more
Recommends

I'd choose python because with a good knowledge of python and it's libraries, you could do literally anything. Also it has a relatively simple structure, so it won't be tough for a beginner.

Later on if you wish to learn Rust and Go, please do by all means.

See more
Recommends
on
PythonPython

Python is a great language to start programming with, there is an awesome python course on coursera by Dr. Charles Severance called Programming for everybody, check it out :)

See more
Recommends

Learn/start with C; don't rush after buzz words. Python is easy to learn but you would not get the underpinnings of memory and pointers, an important aspect of programming.

See more
Recommends
on
PythonPython

Python is the best programming language for starting out as it is quite easy to learn, but it also is very powerful and you can do plenty with it. It will be useful for a long time. Python is my recommendation.

See more
Decisions about Golang and Swift
Piotr Czarnas

We have chosen a mix of Java and Python for building an open source data observability tool. The application can work as a standalone command line tool with a rich shell interface (using even command completion). The Java ecosystem is more mature when it comes to connectivity to various databases using JDBC. Also picocli with jline3 let us make a very dynamic shell interface with command completion. The definitions of data quality checks that should be executed are defined in YAML files, backed by a YAML (in fact JSON) schema files. Our YAML files can be edited in Visual Studio Code (and other code editors) with support of the code completion. It is possible because all the data model is defined as pure Java classes for which we are generating a YAML/JSON schema. There is still place for Python because it is very popular in the database space. We are simply starting a Python interpreter in the background (from a Java code). Python is used to evaluate validation rules (defined as Python functions) and render SQL queries from Jinja2 templates.

See more
Gonçalo Rodrigues
Chose
GolangGolang
over
PythonPython

As we're developing a critical piece of software, type safety is very important to minimize the errors we have. While Python supports type hints nowadays, Go makes it much more easy to work with and allows us to be confident in the software we ship.

Take look at our code in our github

See more
Migrated
from
PythonPython
to
GolangGolang

Ever since the introduction of the PWA, I felt forced to learn JS, React, and Angular. I encountered WASM, which compiles Go/Rust to JS. I decided to give go a shot and made a simple weather PWA that tells the weather of various Japanese cities. It was 40x faster than Transcrypt and 0.9x faster than regular JS. Go is even simpler than Python when coming to tools like list comprehension and Pandas.

See more

We chose Rust for our web API because the Warp crate makes it easy to compose high-performance and asynchronous APIs. Rust allows us to achieve high development velocity because it provides zero-cost abstractions and enforces strict type and memory-safety checks with high quality and actionable error messages.

See more
James Bender
Lead Application Architect at TekPartners · | 5 upvotes · 50.1K views

I've yet to see a non-native application that I felt performed as well and/or provided the same user experience with Cordova/PhoneGap/Xamarin. Frankly, at best they all seemed like underpowered web applications deployed to a sandbox that ran on a phone. They didn't feel "slick" or "mobile-first" and in some cases the performance was unacceptable. At previous companies, we built a few of these apps at the client's insistence, and in every case, they re-engaged us about 18 months later to re-write the app(s) natively.

We are doing some research on React Native and Flutter, but I am not yet convinced that they can provide the same level of experience and performance as native, though I am trying to keep an open mind.

See more
Ismael Ghanim
Senior Mobile Engineer at Homecoming · | 5 upvotes · 71.2K views

We chose React Native over native Android and iOS development because of React Native's cross-platform capabilities. React Native has really matured over the years, developing a native feel, with simple and intuitive APIs. The community is also huge, filling in any gaps in the default APIs. These are also the reasons why we didn't choose other hybrid mobile tools. Largely, other hybrid mobile tools don't have the same mobile feel and close connection to the underlying mobile APIs.

At a larger scale, the control that native development offers beats React Native's simplicity. However, at this early stage, it's worth the trade-off. Maintaining two mobile teams and two mobile apps, as we iterate the product rapidly would not be practical. Plus, there is always the escape hatch of native modules if more control is needed.

See more
Gabor Galazzo

As a startup, we need the maximum flexibility and the ability to reach our customers in a more suitable way. So a hybrid application approach is the best because it allows you to develop a cross-platform application in a unique codebase. The choice behind Ionic is Angular, I think that angular is the best framework to develop a complex application that needs a lot of service interaction, its modularity forces you (the developer) to write the code in the correct way, so it can be maintainable and reusable.

See more
Lucas Litton
Founder & CEO at Macombey · | 7 upvotes · 182K views

Expo was a tool Macombey really wanted to utilize from the beginning. I have been working with React Native since 2016 and originally I had to use simulators in Xcode, install pods on top of node packages, configure certificates, and more abundant objectives that take time away from actual development. As a development studio, we have to move quick and get projects to our clients and partners in a matter of months.

Expo made this easy for us. We now have a mobile app for clients to download and test their project on, there is no need to install pods or configure Xcode, and development is super fast and reliable now.

See more
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

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
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Golang
Pros of Swift
  • 547
    High-performance
  • 395
    Simple, minimal syntax
  • 363
    Fun to write
  • 301
    Easy concurrency support via goroutines
  • 273
    Fast compilation times
  • 193
    Goroutines
  • 180
    Statically linked binaries that are simple to deploy
  • 150
    Simple compile build/run procedures
  • 136
    Backed by google
  • 136
    Great community
  • 53
    Garbage collection built-in
  • 45
    Built-in Testing
  • 44
    Excellent tools - gofmt, godoc etc
  • 39
    Elegant and concise like Python, fast like C
  • 37
    Awesome to Develop
  • 26
    Used for Docker
  • 25
    Flexible interface system
  • 24
    Deploy as executable
  • 24
    Great concurrency pattern
  • 20
    Open-source Integration
  • 18
    Easy to read
  • 17
    Fun to write and so many feature out of the box
  • 16
    Go is God
  • 14
    Easy to deploy
  • 14
    Powerful and simple
  • 14
    Its Simple and Heavy duty
  • 13
    Best language for concurrency
  • 13
    Concurrency
  • 11
    Rich standard library
  • 11
    Safe GOTOs
  • 10
    Clean code, high performance
  • 10
    Easy setup
  • 9
    High performance
  • 9
    Simplicity, Concurrency, Performance
  • 8
    Hassle free deployment
  • 8
    Single binary avoids library dependency issues
  • 7
    Gofmt
  • 7
    Cross compiling
  • 7
    Simple, powerful, and great performance
  • 7
    Used by Giants of the industry
  • 6
    Garbage Collection
  • 5
    Very sophisticated syntax
  • 5
    Excellent tooling
  • 5
    WYSIWYG
  • 4
    Keep it simple and stupid
  • 4
    Widely used
  • 4
    Kubernetes written on Go
  • 2
    No generics
  • 1
    Operator goto
  • 1
    Looks not fancy, but promoting pragmatic idioms
  • 259
    Ios
  • 180
    Elegant
  • 126
    Not Objective-C
  • 107
    Backed by apple
  • 93
    Type inference
  • 61
    Generics
  • 54
    Playgrounds
  • 49
    Semicolon free
  • 38
    OSX
  • 36
    Tuples offer compound variables
  • 24
    Clean Syntax
  • 24
    Easy to learn
  • 22
    Open Source
  • 21
    Beautiful Code
  • 20
    Functional
  • 12
    Dynamic
  • 12
    Linux
  • 11
    Protocol-oriented programming
  • 10
    Promotes safe, readable code
  • 9
    No S-l-o-w JVM
  • 8
    Explicit optionals
  • 7
    Storyboard designer
  • 6
    Optionals
  • 6
    Type safety
  • 5
    Super addicting language, great people, open, elegant
  • 5
    Best UI concept
  • 4
    Its friendly
  • 4
    Highly Readable codes
  • 4
    Fail-safe
  • 4
    Powerful
  • 4
    Faster and looks better
  • 4
    Swift is faster than Objective-C
  • 4
    Feels like a better C++
  • 3
    Easy to learn and work
  • 3
    Much more fun
  • 3
    Protocol extensions
  • 3
    Native
  • 3
    Its fun and damn fast
  • 3
    Strong Type safety
  • 3
    Easy to Maintain
  • 2
    Protocol as type
  • 2
    All Cons C# and Java Swift Already has
  • 2
    Esay
  • 2
    MacOS
  • 2
    Type Safe
  • 2
    Protocol oriented programming
  • 1
    Can interface with C easily
  • 1
    Actually don't have to own a mac
  • 1
    Free from Memory Leak
  • 1
    Swift is easier to understand for non-iOS developers.
  • 1
    Numbers with underbar
  • 1
    Optional chain
  • 1
    Great for Multi-Threaded Programming
  • 1
    Runs Python 8 times faster
  • 1
    Objec

Sign up to add or upvote prosMake informed product decisions

Cons of Golang
Cons of Swift
  • 42
    You waste time in plumbing code catching errors
  • 25
    Verbose
  • 23
    Packages and their path dependencies are braindead
  • 16
    Google's documentations aren't beginer friendly
  • 15
    Dependency management when working on multiple projects
  • 10
    Automatic garbage collection overheads
  • 8
    Uncommon syntax
  • 7
    Type system is lacking (no generics, etc)
  • 5
    Collection framework is lacking (list, set, map)
  • 3
    Best programming language
  • 1
    A failed experiment to combine c and python
  • 5
    Must own a mac
  • 2
    Memory leaks are not uncommon
  • 1
    Very irritatingly picky about things that’s
  • 1
    Complicated process for exporting modules
  • 1
    Its classes compile to roughly 300 lines of assembly
  • 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 Golang?

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 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 Golang?
What companies use Swift?
See which teams inside your own company are using Golang or Swift.
Sign up for StackShare EnterpriseLearn More

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

What tools integrate with Golang?
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

DigitalOcean

GitHubMySQLPostgreSQL+11
2
2352
Nov 20 2019 at 3:38AM

OneSignal

PostgreSQLRedisRuby+8
9
4624
Oct 3 2019 at 7:13PM

Ably Realtime

JavaScriptPythonNode.js+8
5
3820
Jun 26 2018 at 3:26AM

Twilio SendGrid

GitHubDockerKafka+10
11
9936
What are some alternatives to Golang 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