Need advice about which tool to choose?Ask the StackShare community!
Go vs Python: What are the differences?
Introduction
This Markdown code provides a comparison between the programming languages Go and Python, highlighting the key differences between them.
Concurrent Programming: One significant difference between Go and Python is their approach to concurrent programming. Go has built-in support for concurrent programming through Goroutines and channels, which allow for efficient parallel execution of tasks. On the other hand, Python provides concurrency through threads and asynchronous programming, but lacks the native support for parallel execution that Go offers.
Static Typing vs Dynamic Typing: Go is a statically typed language, meaning that variables are required to have explicit types and their types are checked at compile-time. On the other hand, Python is a dynamically typed language, which allows for more flexibility as the type of a variable can change during runtime. This difference affects aspects such as code reliability, performance, and ease of development.
Performance: Go is generally considered to be faster in terms of execution speed compared to Python. This is mainly because Go is a compiled language while Python is an interpreted language. The static typing and optimized memory management of Go also contribute to its better performance. However, Python excels in other areas, such as ease of development and prototyping.
Standard Library: Go has a comprehensive standard library that includes a wide range of packages for various needs, such as networking, cryptography, web development, and more. Python also has a rich standard library, known as the "batteries included," offering a wide array of modules and functionality. However, Go's standard library is more focused and concise, whereas Python's standard library is more extensive.
Error Handling: The error handling approach differs between Go and Python. In Go, the language encourages explicit error handling by returning error values that need to be checked. This approach promotes reliability and clarity in handling errors. On the other hand, Python uses exceptions for error handling, allowing a more flexible and concise coding style. This difference affects how developers handle and propagate errors in their applications.
Garbage Collection: Go has a garbage collector that automatically manages memory allocation and deallocation, minimizing manual memory management tasks for developers. This feature makes Go well-suited for systems programming and concurrent applications. In contrast, Python also includes garbage collection, but it relies on reference counting as its primary memory management strategy. This difference affects the memory usage and performance characteristics of the two languages.
In summary, Go and Python differ in their approach to concurrent programming, typing, performance, standard libraries, error handling, and garbage collection. Each language has its strengths and weaknesses, making them suitable for different use cases.
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.
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.
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.
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.
Because it opens endless possibilities you can do anything and everything you want to. from ai to app development to web development.
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
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
Either Python or Golang, for all the enlightened reasons already mentionned in all advices/comments :) Enjoy!
Hello Devs,
I am planning to implement a ETL test system for checking data quality and business use cases. I am confused on what stack to use. Any advice on the below will be very helpful.
- Any existing frameworks and its source code for help
- Any other stack apart from the mentioned stack (that might be suitable)
- Any ideas for features are welcomed.
- The usage of multiple BE stacks.
If you want to create using Python language, Robot Framework is one very helpful tool to improve your test scripting and we have a lot of methods created by the community. If you want to use Javascript, Cypress in terms of benefits is the better option to create and maintain tests, and run and generate reports in many browsers is really easy with them.
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.
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!
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.
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.
Hey everyone, I have a matrix chart drawn in HTML5/CSS 3 dominantly using CSS grid. I would like to add interactive features and am unsure about the best tool. My programming knowledge is limited to 2 semesters of Java in college, so I'd have to learn the language as I go. I am open to anything, but the selected languages would be useful in future projects.
Here are the features I am attempting to add to the site linked as my blog:
Assign over 120 attributes each to over 400 elements (probably in a DB)
Procedurally position elements in a matrix chart based on user-inputted filters (filtering and searching)
Procedurally position matrix elements based on attributes weighted by user-input
Change style of elements based on user input (highlighting)
Allow saving matrix chart states to be revisited or shared
Provide a user-friendly interface for users to submit the above input
Build several columns or matrices that are separate but related and seamless to the viewer
PyCharm + Python + Flask + Jinja2 is enough to build web server/ajax and JavaScript + JQuery (maybe React). You can write small easy application but also extreme high scalable application.
I know Java but it need 4x time more code and code is not clear (too much forced use of @decorators) - too complex and takes more memory :)
Remember if you code in Python it is easy to code in Java but if you code in Java you must understand that Python is much more flexible and powerful - also easier to learn.
There are two main facets to interactivity - whether your frontend (Javacsript, HTML, CSS) is programmed to behave dynamically based on events and on any other preprogrammed behavior, and based on what information your server can send and receive and compute for the benefit of your frontend. For the former (a dynamic frontend) you'll need to use Javascript (or Typescript) in some form. For the latter (a server with custom behavior and data endpoints beyond just sending static HTML etc. files), any of the major languages can serve this purpose. However, if you are going to create a dynamic frontend with Javascript and don't know that language at all, then learning it will be a task in itself, and without knowing a backend language well either (probably the case with only two semesters of one language a while back), you ideally don't want to also have to learn a whole other backend language on top of that. That's where NodeJS comes in. It has essentially the same exact syntax as frontend Javascript (just different native libraries). Since you already need to learn Javascript to make the frontend behave dynamically, if you also want a custom backend, NodeJS will spare you a big learning curve on top of the existing learning curve of learning JS. NodeJS is also highly performant for low-compute high-volume requests, i.e. handling a large barrage of requests if each doesn't require a lot of complicated behavior on the backend. A lot of coding bootcamps teach this, commonly called "full stack JS", for this reason - it allows someone to learn a constellation of full stack web development skills from the mastery of one language syntax. NodeJS + ExpressJS is also one of the easiest backend languages + REST API library to use to build a backend. Look up "NodeJS Express Hello World", and you'll be shocked at how easy it is to build a basic server. As far as frontend frameworks go, if this project is very limited in scope, JQuery could be fine, but I'd highly recommend learning React for something more involved - it will be immensely easier to manage and maintain, and generally lends itself to much better and more intuitive code organization. Its use of components will also be somewhat familiar and intuitive from the object oriented programming you learned through Java. Create React App is great tool to use, especially when first learning React, to avoid all of the finicky nonsense in configuring transpilation etc.
React is hands-down the tool I recommend to add interactivity to your matrix. Because it is Javascript, it will leverage a lot of the formatting from Java. Python would be very foreign to you. React shines in allowing you to use OOP principles within the JavaScript language and it is really powerful, fast and browser friendly.
Use Javascript alongwith HTML CSS and you have complete set of application ready (even for future for PWA or bundled applications).
You can use charts.js library https://www.chartjs.org/ or https://apexcharts.com/javascript-chart-demos/. You can find many examples, you can have a look at https://codepen.io/ksarpotdar/pen/NWyqqZM?editors=0010
Ok. Clearly you forgot the best tool to give for interactive features. JavaScript! In particular I recommend the freeCodeCamp JavaScript course. Here it is.
I am unhappy. When doing my research, I heard Python is useless. Data science is an unworthy field thanks to TensorFlow, and web scraping has also become pointless since the introduction of the PWA. Since PWAs are only frontend, I feel forced to learn JavaScript, and to ditch Python. I love Python with all my mind, it's simplicity, conciseness, and easiness as a tool. Here are a few questions:
- Should I forget Python and move on?
- Are there any PWA alternatives to JavaScript/TypeScript. I've been thinking of using Python for WASM and use HTML+CSS for the DOM to create the PWA. Is this possible?
- Why is JavaScript such a pain in the butt
- What's the point of me learning Python if it's not useful for web development?
You should not ditch or forget Python because of what you hear or because of one particular project. It's probably going to stay relevant and useful for the coming 20 years. If you're a programmer, you should however be prepared to use several tools, and programming languages are just part of the toolbox (like HTML or CSS, but also your IDE, powershell, linux commands, etc.) It's not for nothing that this site is called "stackshare".
Python is great for data science but it's not very performant and eats up loads of resources. I recommend that you give Go a go. It's easy to learn and very fast!
JavaScript is reduced Python. Python is powerful. If Python is not powerful you can mix it with C/C++ - this is not available in JavaScript in easy way. I am programmer and electrical engineer too - I think for research Python is the best thing. JavaScript is better for Web. I code in both very good.
Python is definitely not useless, It has a ton of usecases, with a huge community behind it, but not that performant and consumes lots of resources, I don't think you should abandon it, and PWA is kind a in its early stage, so I doubt that there will be any language better than js for developing it any time soon, so I guess there are no alternatives, but I guess you will like js/ts if you spend a little more time playing with it, and the same goes for wasm it is also in its early stage, and i guess web assembly and rust will be used a lot for that, and lets say you have built a frontend web app , now with the help of python + django or flask you can write server code, and learn a little bit about databases, then bravo you are a full stack dev.
Actually, I'll add, C++ and C# as well.
Well, I'm into Computer Science since 1996, so I understand a bit of everything plus a lot of different OSs, I study 10 hours per day every day. However back in the 90s we didn't have books or universities about programming, all were passed through if you knew somebody in that profession. Which I did and in that time, he showed me .NET and MySQL, and that offered a lot of jobs also Java. Today you have a lot of options but I'm already discarding new languages as I believe they will jot succeed.
My always dream was to create game, and software. I don't understand all programming concepts and I'm studying all languages at the same time, so I'm heavy loaded. But that keeps me more aware.
I made a choice: use Python for everything but if you want performance, apps, security, compatibility, Multiplatform. What should I choose? The real question here is: which language should I go 100% and that language will teach me all I need about programming BUT without getting lost in that language forever (I discard any Assembly possibility) and one that has full documentation, support and libraries.
In my experience: I found a lot of info for python and java. But hardly I have ever found anything for C lang, C++ and, what about C# (it's only for Windows, is it easy, I saw a lot of documentation). Thanks!!
Python can be linked with C++ both language are similar in many places (using same libraries or concepts to build libraries) - except memory and static types. C++ is more assembler and have different syntax (need 3x-4x coding more).
If you do engineering it is perfect stack - Java is to slow in coding (4x more code) and little faster than Python - whatever it is hard to mix Java/C++ what is easy Python/C++.
In the most program you do not need super performance but if you need C++ is the best and have rich Object Language much richer than Java and more poor than Python. Python is true object language - everything is object.
Whatever sometimes more important is framework than language for specific use.
I would go with Python, it is fast to code, readable and very powerful without giving you too much to think about (e.g. memory management). If you're looking for speed, Cython is a fairly good way to get there, since Python is a C-based language it can be compiled to C using Cython and will get you a very significant boost in speed! You can also make use of C libraries if you prefer. The only downside to Cython over Python is that it is compiled and not interpreted, which can make debugging a pain (but you might find yourself doing most of the debugging in Python before switching to Cython). C languages are a bit of a pain to read up on (API, libraries etc.), but Stack Overflow has you covered in most cases!
All programming languages are cross platform except Java, but even that's not that bad. Performance: C(++), Go, Rust, Java, Ada, OCaml, Haskell, C# Apps: JS, TS, ReScript, Go, C(++), Java, Haskell, C#, Dart Security: Java, Go, Rust, COBOL, C(++), C# Compatibility: Java(due to it's VM), C(++), Go, C# Libraries: Java, Go, C(++), C# Documentation: Java, C(++) (since they are mature) What do you mean without getting lost in the language? I'd not advocate for C(or C++), considering it's hard to understand the memory, and it's for those into programming theory. You are looking for all you need. Go for Java, it has a library for everything, it has a reasonable learning curve, and pretty much you are going to encounter it everywhere- it's like a programming black hole you can't escape.
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.
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.
I want to create a mobile-first e-commerce platform app. I think Dart and Flutter is a way for me to build cross-platform apps from a single codebase but I might be wrong so what do you guys think?
I also don't know what to do about the back-end. I mean managing the database of products and users. handing orders and invoices. I think Firebase can be an answer to my problems but how far I can go with firebase and its user authentication and database tools? Just firebase is enough for all my back-end needs?
What suits my needs, a relational database or a non-relational database?
Do I need to learn another programming language for handling back-end, like Python or Go?
I would appreciate your opinion. Thanks
Hi, I have 3 years with Flutter and I can see that Flutter with Firebase will be a good choice for you, Just start with Firebase, it's a little bit expensive when you have a lot of users, but there you will have some money to build your own API using any other language, and here I recommend Elixir or Python.
And about what you need to learn: - Dart - Flutter - State management for Flutter - Firebase
Then you can publish your app finally, and I wish you a happy published app :)
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.
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!
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).
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!
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.
A developer and project manager from our team X says the following about our use of Rails at i22:
"We use Rails to build stable and flexible backend systems. Rails is extremely good for managing data structures and quickly setting up new systems. It is the perfect base for most use cases."
I asked the same Team X member why the team prefers to work with Ruby on Rails, rather than Python and Django:
"Because Python is a scripting language and from my point of view not suitable for building stable web services. Python is for me rather good for scripts and fast small tools. Not for stable business applications. And if I want it fast I prefer Go."
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
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.
Coming from a C/C++ background, I picked up PHP 20 years ago. Today, the language is still in constant evolution while still having a stable base. It powers all of my backend project. It is fast to prototype and get started, and is supported almost everywhere.
Python and Node.js do not provide anything that PHP cannot already offer, so there is no point for me to switch to those language. Mature framework like Laravel provides real ease and speed of development to kick-start any new web project, be it a simple API or a robust ERP running on server-less architecture. There are libraries available for machine learning, crypto, web3 and pretty much anything you can think of.
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.
Python will be used in order to train machine learning models from our data. We chose python for this task because it is the most common language for machine learning. It has very performant libraries like numpy and scikit-learn that provide functionality for manipulating data and creating models that you cannot get in other languages like JavaScript and Java. Additionally, it is the most familiar language for us to use for machine learning because almost every machine learning course teaches ml using python.
Javascript will be used for both our frontend and backend on the web service. JavaScript is ubiquitous as the language to use for the frontend. For the backend, we decided to create our server using JavaScript because of its easy setup; using Express we can create a server in just a few short lines of code. It is simple not only to run the server locally, but to host it as well because any major service will support the language. JavaScript is a simple language to code in and familiar among our team members, so using it will help speed up development. Using JavaScript allows us to use NodeJS and npm, so we can use packages to easily set up the server, connect to a database and other convenient utilities. We also considered Python for our server. It is also very simple to create a server in Python, especially using flask. However, the extra familiarity with the JavaScript language and the ease of using packages were enough for us to pick JavaScript as our language of choice.
MACHINE LEARNING
Python is the default go-to for machine learning. It has a wide variety of useful packages such as pandas and numpy to aid with ML, as well as deep-learning frameworks. Furthermore, it is more production-friendly compared to other ML languages such as R.
Pytorch is a deep-learning framework that is both flexible and fast compared to Tensorflow + Keras. It is also well documented and has a large community to answer lingering questions.
Python: The top language in machine learning area because of the various open-source libraries. Our company will rely on open-source libraries for development as well.
Amazon EC2: Training machine learning model needs to be running on independent 3rd party computing resources. AWS EC2 can provide a variety of virtual computing resources based on what users need.
React+Javascript: React is popular and everyone in the team is familiar with it. React is an open-source JavaScript library that is used for building user interfaces specifically for single-page applications.
ExpressJS: Everyone in the team has used expressJS for development. It can create server-side web applications faster and smarter.
Amazon RDS: relational database service and free to use
Postman: Tool for the team to test API endpoint.
Circle CI: is lightweight and open. Therefore for faster deployment jobs, one can execute their codes on CircleCI as it deploys on scalable and robust cloud servers.
Docker: Easily pack, ship, and run any application as a lightweight, portable, self-sufficient container, which can run virtually anywhere
Github+Git: Julian is from Github so no other choice for us 😎
Slack: Everyone likes it and it's free
Pros of Golang
- High-performance548
- Simple, minimal syntax395
- Fun to write363
- Easy concurrency support via goroutines301
- Fast compilation times273
- Goroutines193
- Statically linked binaries that are simple to deploy180
- Simple compile build/run procedures150
- Backed by google136
- Great community136
- Garbage collection built-in53
- Built-in Testing45
- Excellent tools - gofmt, godoc etc44
- Elegant and concise like Python, fast like C39
- Awesome to Develop37
- Used for Docker26
- Flexible interface system25
- Deploy as executable24
- Great concurrency pattern24
- Open-source Integration20
- Easy to read18
- Fun to write and so many feature out of the box17
- Go is God16
- Easy to deploy14
- Powerful and simple14
- Its Simple and Heavy duty14
- Best language for concurrency13
- Concurrency13
- Rich standard library11
- Safe GOTOs11
- Clean code, high performance10
- Easy setup10
- High performance9
- Simplicity, Concurrency, Performance9
- Hassle free deployment8
- Single binary avoids library dependency issues8
- Gofmt7
- Cross compiling7
- Simple, powerful, and great performance7
- Used by Giants of the industry7
- Garbage Collection6
- Very sophisticated syntax5
- Excellent tooling5
- WYSIWYG5
- Keep it simple and stupid4
- Widely used4
- Kubernetes written on Go4
- No generics2
- Operator goto1
- Looks not fancy, but promoting pragmatic idioms1
Pros of Python
- Great libraries1.2K
- Readable code961
- Beautiful code847
- Rapid development787
- Large community689
- Open source437
- Elegant393
- Great community282
- Object oriented272
- Dynamic typing220
- Great standard library77
- Very fast60
- Functional programming55
- Easy to learn49
- Scientific computing45
- Great documentation35
- Productivity29
- Matlab alternative28
- Easy to read28
- Simple is better than complex24
- It's the way I think20
- Imperative19
- Free18
- Very programmer and non-programmer friendly18
- Machine learning support17
- Powerfull language17
- Fast and simple16
- Scripting14
- Explicit is better than implicit12
- Ease of development11
- Clear and easy and powerfull10
- Unlimited power9
- It's lean and fun to code8
- Import antigravity8
- Print "life is short, use python"7
- Python has great libraries for data processing7
- Great for tooling6
- Rapid Prototyping6
- Readability counts6
- Fast coding and good for competitions6
- There should be one-- and preferably only one --obvious6
- High Documented language6
- I love snakes6
- Although practicality beats purity6
- Flat is better than nested6
- Now is better than never6
- Great for analytics5
- Lists, tuples, dictionaries5
- Easy to learn and use4
- Web scraping4
- Simple and easy to learn4
- Easy to setup and run smooth4
- Plotting4
- Beautiful is better than ugly4
- Multiple Inheritence4
- Complex is better than complicated4
- Socially engaged community4
- CG industry needs4
- Flexible and easy3
- Many types of collections3
- If the implementation is easy to explain, it may be a g3
- If the implementation is hard to explain, it's a bad id3
- Special cases aren't special enough to break the rules3
- Pip install everything3
- List comprehensions3
- No cruft3
- Generators3
- Import this3
- It is Very easy , simple and will you be love programmi3
- Can understand easily who are new to programming2
- Powerful language for AI2
- Should START with this but not STICK with This2
- A-to-Z2
- Because of Netflix2
- Only one way to do it2
- Better outcome2
- Good for hacking2
- Securit2
- Batteries included2
- Automation friendly1
- Sexy af1
- Slow1
- Procedural programming1
- Ni0
- Powerful0
- Keep it simple0
Sign up to add or upvote prosMake informed product decisions
Cons of Golang
- You waste time in plumbing code catching errors42
- Verbose25
- Packages and their path dependencies are braindead23
- Google's documentations aren't beginer friendly16
- Dependency management when working on multiple projects15
- Automatic garbage collection overheads10
- Uncommon syntax8
- Type system is lacking (no generics, etc)7
- Collection framework is lacking (list, set, map)5
- Best programming language3
- A failed experiment to combine c and python1
Cons of Python
- Still divided between python 2 and python 353
- Performance impact28
- Poor syntax for anonymous functions26
- GIL22
- Package management is a mess19
- Too imperative-oriented14
- Hard to understand12
- Dynamic typing12
- Very slow12
- Indentations matter a lot8
- Not everything is expression8
- Incredibly slow7
- Explicit self parameter in methods7
- Requires C functions for dynamic modules6
- Poor DSL capabilities6
- No anonymous functions6
- Fake object-oriented programming5
- Threading5
- The "lisp style" whitespaces5
- Official documentation is unclear.5
- Hard to obfuscate5
- Circular import5
- Lack of Syntax Sugar leads to "the pyramid of doom"4
- The benevolent-dictator-for-life quit4
- Not suitable for autocomplete4
- Meta classes2
- Training wheels (forced indentation)1