I'm interested in learning Go. I'm wondering what the difference is between Go and Python, and what are the advantages of Go over Python. I'm also wondering if I can implement data structures and automate jobs of linux with Go.
And what are some best resources for learning go
Thanks in advance for your help!
I am not liking JS/TS with express or Nest for backend. I think its better to use it for frontend only.
I have been thinking to opt python for backend like writing APIs and my future plan is to work on cloud and data engineering, probably more cloud. I have seen many videos on YT and read a few posts on reddit but its not clear whether I should choose python or golang based on my future plans. I have no plans for AI btw.
Please share your thoughts on this as I am very confused. Also I believe that if someone is comfortable with golang, he/she should be doing golang and same goes for python. I am comfortable with both. I tried golang and i felt comfortable.
I need to decide based on the market needs and future requirements in the industries and stick to it, not roaming around for days on what to choose. It feels so depressing not land on a language for sure.
Few people says the companies are moving from python to golang, python is much slower, you need imported libraries and in golang these are not an issue. Golang is better in terms of building cloud applications blah blah….
What should I do? Maybe after a few discussions and guidance from the well experienced developers I will be confident on either python or golang.
Videos
Hi everyone,
I’m looking for advice on how to choose between Golang and Python when starting new projects, especially for prototyping to validate ideas.
I mostly work as a backend developer, building CRUD-based systems with Golang, but I’ve recently started exploring AI solutions. From what I’ve seen, Python seems to have much wider adoption in the AI space. It feels easier to use Python for prototyping because of its rich ecosystem of libraries and tools specifically designed for AI and data workflows.
In contrast, with Golang, it seems like you often have to reinvent things that are already available in Python's libraries and ecosystem. Also, most of the Golang use cases I’ve seen are more on the infrastructure side—SRE/Ops teams often use Golang for automation tasks and infrastructure-related work.
Additionally, many AI projects rely heavily on data, and Python again seems to shine in this area with its mature ecosystem for data processing.
Am I understanding this correctly, or am I overlooking something about Golang's potential for AI development? How do you decide which language to use when starting on AI projects, especially for prototyping or building data-intensive systems?
I have 3 years of overall experience in Software and IT Engineering.
For automation, I have used Shell Scripting so far. But Now I want to learn a new language for Automation tasks and Software Development too.
The project I'm working on uses Golang extensively but the leads have given me free hand to explore any language I want.
My Initial thoughts were to learn Python, keeping in mind future career aspects, but Golang is used in my Project. Since I have planned to stay here for next 2 years, I'm confused which language to choose at this point of time.
Your opinions/suggestions/advices are most welcome!
I am doubting between Go, Python and Java as a first language. Looking for pure programming + web development later.
Looking for easy, concise and future proof language.
detail caption consider yoke ghost many thought file plate employ
This post was mass deleted and anonymized with Redact
I would appreciate it if you could explain why you chose Python over Go for backend development. I want to start learning one of them, either Python (Django, FastAPI) or Go (its lovely standard library and some of its frameworks), and I don't know which one to choose.
I know this is an old question or debate
Here is the situation
I am an experienced .net developer who wanna switch to devops I have some certifications on azure but I am trying to expand etc.
I know it is possible to use powershell and azure for azure stack but I am currently going through kodekloyd and I am at the choosing between go and python.
Basically my heart wants go:) but somehow I think python will help me land a job easier.
You might think “you are an experienced dev just learn both “ but boy I am also an expat dad whom doesn’t have extra 2 minutes without planning.
So If you need to choose in 2024 as jr devops person which way would you go
Hi friends,
I really like both Python and Go.
Python is good for me for its simplicity and the reduced time it requires to develop applications.
Also, I really like Go for it’s powerfulness, because it’s a typed language and so on.
The most I develop is micro-services (mostly APIs) running into containers and deployed on Kubernetes.
I wanted to know, you guys when you use Python over Go and vice versa.
Thank you !
I'm just getting into python and so far I like it, I've used other languages over the years in small amounts but I wanted to settle on one, i was tossing up between Java and python.
So now that I'm reading more about python I'm seeing more and more post about ditching python and going go. It seems go is faster, smarter and all round more efficient. So I'm not sure if I should jump ship before getting to into python.
I don't really have an end goal for what i want to make but i am interested in web apps and web front ends and from what I'm reading, go's strength is more the back end server stuff.
So my question is, should I jump ship? Is go versatile? Is there a large support network like pythons? Is there anything wrong with python?
. .
EDIT: Thanks everyone for the interesting read, I'm more confused now :) I think I will stick with Python for now, there is more training material out there and larger community. Go does seem like a brilliant "new" language, but for web apps and web page front ends, python does still seem to be more mature. Thanks
As a python programmer by trade, here are three reasons not to use python:
-
Dynamic compilation can result in errors that exist in code, but are not detected:
This is perfrectly valid python:
def junk():
afdfaf
asdfd
fdafd / dsfsaf()
Of course if you add junk() to the end, it will fail with errors about missing functions and variables; but compiled languages like go don't suffer from this problem.
-
CPython really is very slow.
Very specifically, procedures that are invoked multiple times are not optimized to run more quickly in future runs (like pypy), they always run at the same slow speed. So operations like populating matricies and doing matrix maths are really slow. So slow in fact that future version (3.5? See http://legacy.python.org/dev/peps/pep-0465/#discussions-of-this-pep) will have an explicit operator for this.
You can get around this by calling c libraries, but it's irritating as a developer to write something in python, realize its too slow, and then have to rewrite it again in C. Very. Very. Irritating.
-
Python has a terrible distribution story.
Virtualenv, buildout, pip, easy_install, distribute: they all boil down to the same thing; it's really hard to ship all your python dependencies onto a new system.
...and even then, if you have a perfectly setup version pin for every library, it can still break when (for example) freetype upgrades and your old pinned version of Pillow doesn't compile any more. Oh? You had some dependencies on the old version of pillow? Upgrade all the things!
There are a few 'binary builders' for python like pyinstaller, cx_freeze; but they're pretty rubbish practically speaking. Even the best showcase of these tools ends up shipping simple GUI apps like Calibre that are hundreds of megabytes in size.
Let's not even talk about writing something in py3 and getting half way in to discover a core dependency hasn't been ported yet.
.
Go addresses those points pretty sharply; good distribution story with static binaries; repeatable build process (abit hindered by the same issues as python when you bind a c library; but at least you can statically link C libraries into go binaries), and it's really pretty fast.
So is it worth abandoning python?
Probably, professionally, not really; especially if you're looking at web development.
The ecosystem for python is really strong, and there are some really decent web tool kits like flask, pyramid, some great libraries like sqlalchemy, and a lot of support for it from the academic community for stuff like natural language processing.
...but would I build a GUI app or a game in it instead of Java or Go if I had to start tomorrow?
Absolutely fucking not.
There is nothing wrong with python except maybe that it is not staticly typed and might be a little slow (depends on the use case).
Go is the new kid on the block, and while Go is nice, it doesn't have nearly as many libraries as python does.
Personally I prefer Go the language, but when it comes to stable, mature third party packages, it can't beat python at the moment.
There are a significantly less jobs in Go than in Python and not many at a junior level. But is it a niche that could be tapped or should I just go with python at my level?
Some more context: I am looking for work as a grad (in Ireland). I'd been focused on getting into more on the front end of things. But, I'm noticing that the jobs available mostly seem to be full stack / backend. I was planning on learning Python as it seems more pleasant than Java which I don't think is for me after learning and coding with it a lot. But, I became more aware and interested in Go from coming across it in some processes. It seems to be really promising and gaining traction.
EDIT: Thanks everyone for your two cents and sharing your knowledge and experience. I think Python makes the most sense for now as it's much more widely used. Really appreciate that people took so much time and thought in replying. I'm sure others will read this too and find it helpful!
Hey guys I'm a beginner and learnt python basics and learning Rust now. I don't have formal tech degree and I'm learning from home.
I'm heard that Python has scalability issues and Go is Better than python in that regard. I'm confused between what back end framework to choose.
Can you tell me why I should choose and not choose Go over Python and Rust?
What is Go best suited for and what kind of companies prefer Go for their back end ?
Everyone knows that prototyping in python is the way to get something working fast - fantastic development time.
It seems to me that Go's dev time, while longer, is not that much longer once you are familiar with the libraries and frameworks you want to use. My question is, where do you think that falls? Just how much faster is it to build in python versus Go? 3x? 2x? 50%? Just depends on use case?
My background is in C++, Java and Python. Starting to learn Go.
A friend of mine told me I should write the backend of my booking app in Go instead of Python (using Django). Is this sound advice? I've heard Go is much more scalable. At how many users does this make a difference? What else should I consider?
To be honest if it's a personal project for fun i'd write it in whatever language you are trying to learn, if it a project for a customer/work/etc I would write it in the language I am better able to maintain and be productive in.
Will Go likely process more requests for the same amount of CPU/memory allocation? Surely!
Will python bottleneck your personal project ? Probably not. People have used python and ruby to build amazingly large scaled websites and APIs!
There isn't a number of users that will be the tipping point since much of it depends on what your app is doing and if your database will collapse first.
I would write it in Go personally, because that is what I am writing my backend APIs in right now. If you asked on a clojure forum or C++ forum you'd probably get answers advocating for those languages too.
When it comes to scalability of a web backend there is more at play than just the language you use. If you're comfortable with Go then sure go ahead and use it, but if you have a better understanding of Python then you'll be more productive in that.
If this app is something you're doing in your free time as a hobby, then sure you could go ahead and write it in Go as an educational exercise. The learning curve may be steep though as you get to grasp with the idioms of Go.
Below are some libraries that could help you with building a web app in Go:
-
gorilla/mux - Routing
-
gorilla/schema - Parsing form data into structs
-
jmoiron/sqlx - Parsing SQL row data into structs
When it comes to ORMs in Go most people recommend gorm, personally I've had better experience with query builders, something I've written about before.
Hey r/golang,
I will post to other subs if not quite on topic.
Context:
My brother has stated his intention to learn how to program with the desire of getting an entry level programming position once he has picked up enough skill. He currently is a novice with no prior programming experience.
I love Go at this point. I've learned 4-5 programming languages and have been working professionally for 6 or so years now. Which means I no longer trust my opinion on what it's really like to be just starting out. I don't want to lead my brother down the wrong path because I'm out of touch with what it's like to be a beginner.
Assertions:
-
Languages don't matter, just the ability to stick with it long enough to reach Minimum Viable Employability.
-
There are more jobs available for Python than Go for entry level developers.
-
"Software Engineer Python" filtered for entry level on linkedin: 59k Results
-
"Software Engineer Go" filtered for entry level on linkedin: 5k Results
-
-
Python has more batteries included libraries. This would allow someone to realize more results while being required to deeply understand less.
-
Python is more ubiquitous, so someone starting out will have more education resources to draw on.
I also think(with no evidence to support) that employers looking for python devs would be more willing to take on someone with no background in development than employers looking for Go devs.
To be clear I want to recommend that he learn Go. It's what I've been using daily for the last year. And it's honestly been the best experience I've had with a language.
But given his situation, I believe it's more likely he will succeed at finding his first job with python. He can do whatever he wants from there.
TLDR: I'm probably going to recommend Python over Go to someone with no programming experience. I think it's more likely they will land an entry level job given their lack of experience with that language. Please check my logic.
Edit1: a word
Edit2: I should clarify that he is an adult with an existing career/time obligations and is looking to make a career change. I appreciate the mentality of starting from first principals, but it's not necessarily practical in this scenario.
Hi, after completing my first production project in Go I'm a bit hyped about Go.
I love performance, simple and intuitive syntax, non-nested and explicit error handling, fast development time (compared to Python, no need to constantly debug/run+print to know what's going on), smooth package management and that Go produces a single binary ready for use with just a command.
Since my opinion on whether to use Go has weight, I want to know Go's no-go, the not-use cases over Python based on things like:
-
It's Go expected to rise in popularity/adoption?
-
Less obvious missing libraries and tools.
-
Things that are not out the box in Go std like cookies.
-
Go's gotchas and footguns, things I should warn team members about. For example, there was a problem with a Null pointer in this first Go project.
Right now I know heavy python. A decent amount of R. And a decent amount of SQL. I've been curious to learn Go for awhile just because an open source project I really like is all built in Go (LakeFS). In regards to the best tool for the task. When is Go a superior choice vs Python? I know it's not black and white, but just a rule of thumb I guess. I'm a data scientist and I do a lot of data engineering work too. I like building small tools and apps that make my life easier. Simple things like a custom uploader gui to drop data into a shared location. Or something more computationally intensive like something that hashes a bunch of files for version control that's not controlled by git etc.