So a friend of mine was considering either learning python òr go. What would be your advice to him?
For further actions, you may consider blocking this person and/or reporting abuse
So a friend of mine was considering either learning python òr go. What would be your advice to him?
For further actions, you may consider blocking this person and/or reporting abuse
Latest comments (36)
😄, I used to have questions like which language is better ? After discussing with my friends and listening to people online, I realized that Its better to stop asking these questions. Instead start asking which tool is better for current Job and Trend.
Choose the right tool for the Job.
C#
orJava
for building enterprise and large applications.JSF
you can think of usingAnuglar or
Reactor
Vueetc. for Front End
.Python
for Machine Learning.Go
for Micro Services based performant applications.In future maybe today's Languages and Framework may be outdated, so to survive you will be forced to learn new language of that time.
Conclusion:
Developer Happiness, stick to the language which make your life easier, like easy to read syntax, maintainable, has Good IDE. I like C# for current work, and its up-to you to decide what you like.
Its always good to be Open to learn any language as required and Choose the right tool for the Job.
Hope this helps.
Learn Rust.
Gran curso en desarrollar la habilidad de , para empezar a desarrollar programas en Python
.
Introducción a la programación con Python 3.6: Encribase hoy aqui:
udemy.com/introduccion-a-la-progra...
Depends on what he wants to achieve, Python is a simple Scripting/OOP(object oriented uses Classes (reference types)) language used as a Wrapper for AI/Machine Learning libraries, further more has Web Frameworks allowing it to be portable to the web scene. On the other hand Go, is a Simple and Powerful low level multi paradigm language instead of classes it has Structs (value types). Go can be used to build web apps from scratch no need for a Web Framework, highly used in Microservice architecture due to it's low memory foot print. When it comes to comparing the two a number MAJOR things standout:
OOP vs Multi Paradigm: Python is an OOP language that means it follows the classical OOP path; classes require constructor, you have to keep in mind the Inheritance structure (cumbersome for some large developer teams). On the other hand Go does not use classes instead it uses Structs/Interfaces.Well we can't fully say Go is not OOP since it's methods do handle things like encapsulation but no Inheritance
Multithreading vs Concurrency: Go uses Concurrency as a means of attaining multitasking. This makes Go powerful, why? You can track the lifetime of a task which is not possible with Multithreaded languages like Python. This means you can stop a task at any instance of the working.
Scripting vs Compiled: Yes back to this, Python stands out as it is a Scripting language, this makes it very easy to do some quick tasks. On the other hand Go is a compiled language, this means the language has to be compiled down to the machine level. Thus also a consideration as to why Go is faster than Python
Yooo! I had to write about this for the GCI (Google codeIn).
Here is a link to the article, idk if I should publish it.
docs.google.com/document/d/1HeUiJ-...
I would go for a simple answer:
Your friend should have a look at a hand full tutorials on both languages.
The one he feels most comfortable with and which he picks up more quickly should be the language of his choice.
Languages are made for people to solve problems. If he could pick up one language faster than the other he is faster in solving his problem.
The point in time, when hard benchmark numbers count is far in his future.
Every popular language is for most of the jobs "good enough". Many disadvantages could be compensated otherwise.
I wrote Django applications for 5 years and recently started learning Go (writing command line applications, web servers and going through the Go Programming language book)
Learn Go first. It's fast and type safe and the conversation with the compiler is more clear. Python has more cute abstractions. No one should write a large application in a programming language that is not type safe. If you aren't writing a large application and just want to hack together some scripts — go with Python. As soon as you need more than ~100 lines, you probably should switch to Go.
Take all that with a grain of salt. EVERYTHING has tradeoffs — just make a list of them based on what you want to do and then make your selection.
I used to present at Python conferences and now use a mix of go and other languages to fill what used to be my all-python workflow. Here's my opinion:
I really like Python for fast scaffolding for low-use items. Django REST framework is really easy to get working and maintain. The language is pretty simple and you could break out into async/await based workflows if you really wanted to -- the last framework I used for that was tornado. But increasingly I'm not seeing Python as a strong enough candidate for scaffolding. Rails has been very dominant in the fast to scaffold web app space and now some really clever solutions like Elixir/Phoenix have come along and DRF just isn't as special. I think right now, Python's position among other languages is highest in data science because you can break into ML and really high ceiling use cases. However, besides that, I wouldn't recommend it. Not for DevOps scripts, not for web services, not for general purpose apps. Here's why:
Python has some really old cruft around the way things used to be. It wasn't async from the get go like node, so it's single-threadedness feels more detrimental than node. It has a few neat syntactic sugars, but lambdas and functional based code is still kinda clunky. But the real pain point for me has been deploys. Python was the itch that Docker first scratched for me because python deployment and package management is such a pain. Getting coworkers to reliably build packages for you is even harder than the initial pain of getting a package to install correctly for yourself every time. The way python dumps package sources globally necessitates tools like Docker,pyenv,virtualenv on top of tools just to run multiple python versions since many systems rely on it for OS tooling. The versioning model of requirements.txt is simply not sufficient nor enforceable enough. I would say Docker is a requirement of modern production Python. Another oddity is that many modern languages have moved over to hosting web services with a reverse proxy in front of a fully capable HTTP server. Python has libraries like tornado, but you're essentially writing nodey python. The strong libraries like Django DRF want a WSGI based setup, which just feels like a lot of effort compared to other languages. gunicorn can help abstract that... but the idea of running uWSGI+nginx just feels very 2008, not 2018, it's hard to express -- but from DevOps side, I despise the idea of the AppServer/WebServer pair up where the web server forks app servers off. It's a bad model; Async won; Reverse proxies + suspended app+web server makes more sense and ends up being easier to host and manage.
Now onto Go; Go is my favorite language while simultaneously being one of the ugliest most utilitarian languages. Nothing in Go will ever feel elegant, but it will feel sturdy. It won't feel state of the art, but it feels fast and efficient. It's a strange dichotomy that it gets a lot of flak for. Understanding the origin of Go really helps with learning to love Go for it's weirdness, and I encourage people to do that -- because from the start it can seem awkward and weird.
Go, to me, isn't the C++ replacement that a lot of people herald it at. Go is a language which is absolutely built on the web, for the web, but more importantly, by back-end engineers at Google, where Java, Python and C++ have been king. At a very high level, each accomplishes a slightly different but partially overlapping task. Java has good speed and stability and is great for long running business logic; Python is great for quick mockups and fast turnaround times and ad-hoc tooling; C++ is blazing fast and can be deployed with few (if any) dependencies. Go is somewhere right in the middle of all that. It is very fast -- only marginally slower than well tuned C++; it is somewhat simple to write like Python or Java; It uses source based importing like Python and C++; It has moderate typing -- better than Python, worse than C++ or Java, but way faster compile times than even Java.
Because of these ties, you have some weirdness. Go has a strange import structure that resembles a monorepo, something common at Google. Go has a somewhat ugly exception handling strategy, like C (not C++). Go doesn't have strongly typed Generics (this again, is like C).
Go does have an insanely good stdlib with coroutines endemic throughout it, Blazing fast HTTP, a very quick compiler, a runtime that is GC'd so you don't have to worry (as much) about memory and some of the niceties that C and Python miss out on by not being Java/C++. That being said, there's something nice about it not being Java or C++. It's great that threading is handled and it's also not using all of the RAM on my box. It's great that binaries take seconds to build but don't depend on the deploy system having a VM installed. Go made a lot of sacrifices to get where it is in the ecosystem and I personally love it, but you might not. I'd recommend Go over Python, but I hope you can appreciate the oddities that make it good and see past some of its hideous features that make people blog about how it's not good.
Cheers!
I really appreciate this comment!
I did a lot of this. But now I'm tired of writing low-use applications :P
Use Go and then if your friend gets into building a reals project and it's much easier to build with python he would be able to jump to python and learn it quickly.
Python first and then Go.