Need advice about which tool to choose?Ask the StackShare community!
Node.js vs Python: What are the differences?
Introduction
In this article, we will explore the key differences between Node.js and Python. Node.js and Python are both popular programming languages used for web development, but they have distinct features and use cases. Understanding their differences will help developers choose the right tool for their projects.
Runtime Environment: Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine, while Python is an interpreted programming language. Node.js allows developers to write server-side applications in JavaScript, enabling them to use the same language on both the front-end and back-end. On the other hand, Python is a versatile language that can be used for web development, data analysis, artificial intelligence, and more.
Asynchronous Programming: Node.js is particularly known for its ability to handle asynchronous operations efficiently, thanks to its event-driven, non-blocking I/O model. This makes it suitable for applications that require high concurrency and real-time data updates. Python, on the other hand, supports asynchronous programming through libraries like asyncio and Twisted, but it does not have the same level of built-in support for handling large numbers of concurrent connections as Node.js.
Performance and Scalability: Node.js is often praised for its performance, especially in handling I/O-intensive tasks. It can efficiently process a large number of requests without blocking the event loop, making it a good choice for building highly scalable applications. Python, while capable of delivering good performance, may struggle with large-scale, highly concurrent applications due to the Global Interpreter Lock (GIL) in CPython, the default implementation of Python.
Community and Ecosystem: Node.js has a large and active community, with a vast ecosystem of libraries and frameworks available for developers to leverage. The npm package manager makes it easy to install and manage third-party modules. Python also has a strong community and a rich ecosystem of libraries, thanks to the extensive Python Package Index (PyPI) repository and the ease of package management using tools like pip. However, Node.js has gained popularity in recent years, especially in the web development domain.
Ease of Learning: Python is often considered one of the most beginner-friendly programming languages due to its clean syntax and readability. Its simplicity makes it a popular choice for beginners and those coming from a non-technical background. Node.js, while not as beginner-friendly as Python, benefits from the widespread familiarity with JavaScript, making it easier for web developers who already know JavaScript to transition to server-side development.
Use Cases: Node.js is well-suited for building real-time applications like chatbots, collaborative tools, and streaming servers. Its event-driven architecture and non-blocking I/O model make it efficient for handling concurrent connections. Python finds great use in scientific computing, data analysis, machine learning, and web scraping. Its rich libraries, such as NumPy, Pandas, and Scikit-learn, make it a powerful tool for data-driven applications.
In summary, Node.js and Python differ in their runtime environments, support for asynchronous programming, performance and scalability, community and ecosystem, ease of learning, and use cases. Developers should consider these differences to choose the appropriate language for their specific project requirements.
What will be better Laravel or Node.js to handle a logistics portal which displays thousands (20-50k) of delivery data information in an interactive table (searchable, filterable), live delivery tracking, basic user management, and report creation?
Data comes usually in CSV (manually uploaded or via API from courier companies). Live tracking uses checks tracking numbers on the courier page using API.
My question for you is: "Which one are you familiar with?" Following your needs, both could do it, but think about it. Now talking about Node.js, in my opinion, if you use JavaScript, there are lots of packages to support your entire project, including native ones for testing TDD and others for BDD. Also the best support on AWS (Amazon Web Services) and GCP (Google Cloud Platform).
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.
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.
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.
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.
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!
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?
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?
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.
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
your decision depend on what language do you know. if you know php you can use laravel framework
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.
I am starting a new project to build a simple ERP system for small businesses, where the owners can also manage orders on their phones.
I have decided to use JavaScript & React on the front-end and MySQL for the database. But I am really struggling to pick a backend language. I'm familiar with Node.js, but when I search for ERP (CRM & order mgt) projects on Youtube, I see that most build with Python (Django). Many also recommend Java.
So I'm a little confused. Please advice.
There is no problem to keep using node.js for your backend. Keep in mind that you already have expertise in it, so you could focus on development instead of to learn a new syntax/framework. There are good libraries in node.js that could help you in the development (services, validations, integrations, etc) also keeps you with a single language to the whole system. Django, as far as I know, it will provide a solid base for you, but it could be too much for your purpose, also could be more complex than you could need. Java provides to you many frameworks to simplify your integrations also could achieve a good performance. Anyway, I recommend you to follow using node.js, since you already know the syntax/platform.
Django is best suited for your requirement and has a very good community base to reach out for any queries. I have myself built and seen a lot of stuffs which match your requirement.
Hello, Node.js is simply a better option than python if you wish to make your application real-time operations. Also Node.js is a better choice than python for server side development.
But let's get your problem now. For most ERP projects, Node.js is a better choice. Also, since you are already familiar with Node.js, continue with it. Personally, I think Node.js is way better than Django mainly because JS is the god of ERP projects. Java is a good counterpart though.
I personally suggest NodeJs as you are also familiar with it. Even nodeJS has its own strong frameworks such as NestJS, Loopback etc. And the community is pretty much strong though. If you are looking for a faster development , then always you can go for NodeJS. And its pretty fast though.
Will you build it from scratch? There are some open source ERP/CRM solutions that you can use as a base for your solution. SugarCrm is an example. By looking at those, you can then decide which language you'll use for the backend.
I can recommend you a flexible constructor for this purpose. To create a system, you only need sql, and you can connect to any database without any problems. Please see the introductory article about the features, and if you are interested, I can provide access to the test site. My contacts for communication are on the site page https://falconspace.site/docs/vvedenie-v-falcon-space--c-chego-nachat https://falconspace.site/for-it
Hey if you are allready familar with nodejs then just go with it. There are some very nice frameworks out there that can be hold with the big ones.
Examples: AdonisJS or SailsJS
AdonisJS is even very similar like django.
Go with Node.js and use a framework. I can recommend NestJS or Fastifiy as a Backend Framework. They both have a strong community and Fastify is the successor of Express but much faster.
I prefer to use Node.js because you have experainse in it and also you can do anything for this language.
I am technical support. I work daily with Windows Server / Exchange, Active directory. I would like to learn scripting and automation to make my life easier. I just started learning PowerShell but not really sure about the correct study path from where I can start. I am taking some courses on Udemy and YouTube. Is it enough?
My first foray into programming was with powershell and it continues to be an enormous help for me in my career (caveat being that I have primarily worked on windows boxes). That being said, PowerShell is a weird language that has some unique syntax and operators that don't translate well to other languages. Python is weird too, but for other reasons (spacing!). I suspect you'll get more immediate benefit spending some time on Powershell since your working in an environment that fully supports the ps toolset.
As for learning, I read "PowerShell Toolmaking in a Month of Lunches" and found that helpful. However, I think your course of study is sufficient. Think the most return for the effort was just messing around in the powershell IDE on my local computer and working the Microsoft documentation.
Taking courses on Udemy and YouTube will be helpful I'm sure, but don't neglect the power of practice. If you work largely with Windows right now, pick powershell. Take opportunities to convert the knowledge you already have (example: unlocking an account in Active Directory or adding an email alias in Exchange) from a manual process to a powershell method. Sometimes that's a single cmdlet (Unlock-AdAccount) and sometimes it's a script.
Once you have a good understanding of variables, the pipeline, and foreach loops, you'll be in a position to accelerate your learning. Looking up Microsoft docs is part of the process :)
I would consider reading "Powershell for sysadmins" from No Starch Press. Start small with the ActiveDirectory and AzureAd modules. Start with read only operations like pulling AD Group Members into a variable and then pipe that variable into a .csv file with Export-CSV cmdlet. Once you feel more comfortable with the syntax, specific cmdlets, and piping data start looking at specific techniques like using hashtables (dictionaries) and globbing. From there you can begin to construct your own functions and modules. Just start small and don't let yourself get overwhelmed.
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?
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.
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.
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.
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.
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 😁
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.
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.
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.
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.
Study, machine learning = Python | High performance computing, safety-oriented programming = Rust | Backend, feel productive with less runtime performance drawback = Go
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.
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.
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.
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 :)
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.
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
I am looking to make a website builder web app, where users can publish built websites with a custom or subdomain (much like Wix, Weebly, Squarespace, etc.), and I was wondering about any advice on which web framework to build it on? I currently know Node.js, but I would be excited to learn Laravel or Django if those would be better options. Any advice would be much appreciated!
The tools you mentioned are all backend focused frameworks. I will say, you can choose one of them as you may prefer (maybe Laravel and Django will be better since it's more organized than Node.js). But no matter what, if you will create a website builder application, today you'll need a frontend framework like Vue.js, React or Angular - or maybe Ember.js, Svelte and Meteor.
If you use Nodejs, you should use one more frontend language like reactjs or angularjs. Laravel is the better option. They are more power for rendering.
I am provided with the opportunity to learn one of these technologies during my training. I have prior experience with Spring and found it tough and still haven't figured out when to use what annotations among the thousands of annotations provided. On the other hand, I am very proficient in Java data structures and algorithms (custom comparators, etc.)
I have used Node.js and found it interesting, but I am wondering If I am taking the risk of choosing a framework that has a comparatively lesser scope in the future. One advantage I see with the node.js is the number of tutorials available and the ease with which I can code.
Please recommend which path to take. Is Spring learnable, or should I spend my energy on learning Node.js instead?
I do not know Spring or your company/specialty. Of course it must be learnable and I won't tell you to give up on anything. Java is and will remain valuable.
Regardless, I don't think "lesser scope" is a valid strike against Node.js here. Node.js fulfills JavaScript's original vision of an everywhere language and can run anywhere that Java can. It serves webpages, communicates with hardware, powers command line tools, and builds desktop applications. A huge complexity-saver for teams running many environments (my biggest regret is that it cannot run a microcontroller).
Node.js' biggest practical weakness is that JavaScript is less structured than Java. Luckily, the large influx of Java developers has been helping with this: gaps like constants and private properties are gradually filling in, and TypeScript firms up the types to the point where JavaScript looks a lot like Java.
Probably more potential competition from the larger pool of JS developers, but the compensation is allegedly similar so I guess there is a similar supply/demand situation.
hi this depends where you want to advance . If you want to work for an big aged company with a lot of legacy go the spring way (banks, insurances netflix etc ) if you want to go the new agile fast cloud way learn node js it is much more suited for cloud and micro service even spring cloud can do that as well but it is much more heavier
Hello Tech Stack Experts,
I received two tech stack proposals for a Global Social Network, which is being developed for the web only for its first release. The platform has usual social networking features such as live streaming, audio/video chat, tagging, community/followers, and a bit of AI here and there.
- AngularJS, Python, MySQL, or PostgreSQL
- React, Node.js, MongoDB
I need expert advice on choosing the right technology stack keeping the scalability, time to market a and robustness factors in mind.
Any suggestions here will be very helpful. Thanks in advance.
Choose a RDMS if you want long term productivity. Backend languages doesn't matter. You don't get any significant benefit of using JS on backend. Frontend doesn't matter. Use Vue.js for best performance, Agular for larger team, React for easier hiring.
Why do I need to add fluff just to give advice. Stupid stackshare.
For social networking which is so hungry about realtime communications, I will recommend looking into RethinkDB, which is realtime focused database system. I would say, that Python and Node.js, you should select the one, you are most familiar with, likewise with Angular and React. But use technologies like WebSockets (or the successor WebTransport) and RethinkDB, or PostgreSQL/MySQL with a MQ system to ensure realtime features.
MERN is probably a good robust solution which can be scaled. The best choice will depend upon the expertise of your development team unless you have unlimited time. I've checked Python here because I've found Python on the back end can improve productivity beyond that achievable with Javascript, especially if you are delving into AI (and probably statistical analysis). For something like this I'd favor Mongo over an SQL database as long as you have developers who are well versed in its use.
Hi all, I have been working on the development and automation of construction software using C# and Python. Recently I have started working on Django python web framework and basic frontend for web development. I am really confused to choose between C# and Python to move forward in my career. Seeking your advice on these technologies and their future market value from a career perspective. Thanks,
In my opinion, a modern developer should have deep knowledge about Object Oriented (OOP) and Functional Programming (FP). The programming language is something that must come later. Any good programmer should be able to switch from one programming language to another easily, if they follow OOP and FP. There are languages, though, that must absolutely be in the portfolio of a modern developer: Java, C#, Python and JavaScript. But be prepared to know also Scala, Kotlin, Swift, Go, Ruby, Rust and TypeScript.
It depends on your preferred career path, if you want to work in start-up/scale-up environments, you probably want to go with a language like Django for the rapid development (fast to production). On the other hand, C# or Java would be better for building long term and large scaled applications, although, Django could certainly achieve this as well. I also want to second that it won't hurt to know both languages, pick your technologies wisely according to the use case, don't stick to a single technology stack. :)
C# and Python are both great languages. With great communities, libraries, frameworks, opportunities. I think it will be the same in a near future.
It’s matter of your likes, and your next jobs.
Dot net core is a little faster on performance. Python more popular with dynamic types. Probably the most lovable language.
We choose Next.js for our React framework because it's very minimal and has a very organized file structure. Also, it offers key features like zero setups, automatic server rendering and code splitting, typescript support. Our app requires some loading time to process the video, server-side rendering will allow our website to display faster than client-side rending.
Python has become the most popular language for machine learning right now since almost all machine learning tools provide service for this language, and it is really to use since it has many build-in objects like Hashtable. In C, you need to implement everything by yourself.
C++ is one of the most popular programming languages in graphics. It has many fancy libraries like eigen to help us process matrix. I have many previous projects about graphics based on C++ and this time, we also need to deal with graphics since we need to analyze movements of the human body. C++ has much more advantages than Java. C++ uses only compiler, whereas Java uses compiler and interpreter in both. C++ supports both operator overloading and method overloading whereas Java only supports method overloading. C++ supports manual object management with the help of new and delete keywords whereas Java has built-in automatic garbage collection.
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.
I am working in the domain of big data and machine learning. I am helping companies with bringing their machine learning models to the production. In many projects there is a tendency to port Python, PySpark code to Scala and Scala Spark.
This yields to longer time to market and a lot of mistakes due to necessity to understand and re-write the code. Also many libraries/apis that data scientists/machine learning practitioners use are not available in jvm ecosystem.
Simply, refactoring (if necessary) and organising the code of the data scientists by following best practices of software development is less error prone and faster comparing to re-write in Scala.
Pipeline orchestration tools such as Luigi/Airflow is python native and fits well to this picture.
I have heard some arguments against Python such as, it is slow, or it is hard to maintain due to its dynamically typed language. However cost/benefit of time consumed porting python code to java/scala alone would be enough as a counter-argument. ML pipelines rarerly contains a lot of code (if that is not the case, such as complex domain and significant amount of code, then scala would be a better fit).
In terms of performance, I did not see any issues with Python. It is not the fastest runtime around but ML applications are rarely time-critical (majority of them is batch based).
I still prefer Scala for developing APIs and for applications where the domain contains complex logic.
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.
I use Powershell for everyday scripting, text manipulation, simple REST api testing and other tasks. My choice to use Powershell was primarily based on availability. At the time (2010), every company machine I was using or going to use was Windows and guaranteed to have Powershell. Python was an option but not guaranteed to be installed on every machine. The choice was not based on ease of use, flexibility or support.
We’re a new startup so we need to be able to deliver quick changes as we find our product market fit. We’ve also got to ensure that we’re moving money safely, and keeping perfect records. The technologies we’ve chosen mix mature but well maintained frameworks like Django, with modern web-first and api-first front ends like GraphQL, NextJS, and Chakra. We use a little Golang sparingly in our backend to ensure that when we interact with financial services, we do so with statically compiled, strongly typed, and strictly limited and reviewed code.
You can read all about it in our linked blog post.
We have a lot of experience in JavaScript, writing our services in NodeJS allows developers to transition to the back end without any friction, without having to learn a new language. There is also the option to write services in TypeScript, which adds an expressive type layer. The semi-shared ecosystem between front and back end is nice as well, though specifically NodeJS libraries sometimes suffer in quality, compared to other major languages.
As for why we didn't pick the other languages, most of it comes down to "personal preference" and historically grown code bases, but let's do some post-hoc deduction:
Go is a practical choice, reasonably easy to learn, but until we find performance issues with our NodeJS stack, there is simply no reason to switch. The benefits of using NodeJS so far outweigh those of picking Go. This might change in the future.
PHP is a language we're still using in big parts of our system, and are still sometimes writing new code in. Modern PHP has fixed some of its issues, and probably has the fastest development cycle time, but it suffers around modelling complex asynchronous tasks, and (on a personal note) lack of support for writing in a functional style.
We don't use Python, Elixir or Ruby, mostly because of personal preference and for historic reasons.
Rust, though I personally love and use it in my projects, would require us to specifically hire for that, as the learning curve is quite steep. Its web ecosystem is OK by now (see https://www.arewewebyet.org/), but in my opinion, it is still no where near that of the other web languages. In other words, we are not willing to pay the price for playing this innovation card.
Haskell, as with Rust, I personally adore, but is simply too esoteric for us. There are problem domains where it shines, ours is not one of them.
With Python + Django it was so much faster to create a typical website like this. Using Go would take to long to launch the initial version. For example, Python could handle complex data type with less line of code. Django also has many built-in libraries and a huge ecosystem of libraries that can be easily used to build a feature.
We changed to Python instead of Java to have the back-end processing in the same language as our data analysis module. In addition, Python has a lot of libraries for data-processing. We intend to use Flask for our back-end web development. Flask is a simple, straight-forward framework for our purposes. Flask also has a large community which is beneficial to the development process.
Pros of Node.js
- Npm1.4K
- Javascript1.3K
- Great libraries1.1K
- High-performance1K
- Open source805
- Great for apis486
- Asynchronous477
- Great community423
- Great for realtime apps390
- Great for command line utilities296
- Websockets84
- Node Modules83
- Uber Simple69
- Great modularity59
- Allows us to reuse code in the frontend58
- Easy to start42
- Great for Data Streaming35
- Realtime32
- Awesome28
- Non blocking IO25
- Can be used as a proxy18
- High performance, open source, scalable17
- Non-blocking and modular16
- Easy and Fun15
- Easy and powerful14
- Future of BackEnd13
- Same lang as AngularJS13
- Fullstack12
- Fast11
- Scalability10
- Cross platform10
- Simple9
- Mean Stack8
- Great for webapps7
- Easy concurrency7
- Typescript6
- Fast, simple code and async6
- React6
- Friendly6
- Control everything5
- Its amazingly fast and scalable5
- Easy to use and fast and goes well with JSONdb's5
- Scalable5
- Great speed5
- Fast development5
- It's fast4
- Easy to use4
- Isomorphic coolness4
- Great community3
- Not Python3
- Sooper easy for the Backend connectivity3
- TypeScript Support3
- Blazing fast3
- Performant and fast prototyping3
- Easy to learn3
- Easy3
- Scales, fast, simple, great community, npm, express3
- One language, end-to-end3
- Less boilerplate code3
- Npm i ape-updating2
- Event Driven2
- Lovely2
- Creat for apis1
- Node0
Pros of Python
- Great libraries1.2K
- Readable code962
- Beautiful code847
- Rapid development788
- Large community690
- Open source438
- Elegant393
- Great community282
- Object oriented272
- Dynamic typing220
- Great standard library77
- Very fast60
- Functional programming55
- Easy to learn49
- Scientific computing45
- Great documentation35
- Productivity29
- Easy to read28
- Matlab alternative28
- Simple is better than complex24
- It's the way I think20
- Imperative19
- Free18
- Very programmer and non-programmer friendly18
- Powerfull language17
- Machine learning support17
- 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
- Although practicality beats purity6
- Now is better than never6
- Great for tooling6
- Readability counts6
- Rapid Prototyping6
- I love snakes6
- Flat is better than nested6
- Fast coding and good for competitions6
- There should be one-- and preferably only one --obvious6
- High Documented language6
- Great for analytics5
- Lists, tuples, dictionaries5
- Easy to learn and use4
- Simple and easy to learn4
- Easy to setup and run smooth4
- Web scraping4
- CG industry needs4
- Socially engaged community4
- Complex is better than complicated4
- Multiple Inheritence4
- Beautiful is better than ugly4
- Plotting4
- Many types of collections3
- Flexible and easy3
- It is Very easy , simple and will you be love programmi3
- 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
- If the implementation is easy to explain, it may be a g3
- Can understand easily who are new to programming2
- Batteries included2
- Securit2
- Good for hacking2
- Better outcome2
- Only one way to do it2
- Because of Netflix2
- A-to-Z2
- Should START with this but not STICK with This2
- Powerful language for AI2
- Automation friendly1
- Sexy af1
- Slow1
- Procedural programming1
- Ni0
- Powerful0
- Keep it simple0
Sign up to add or upvote prosMake informed product decisions
Cons of Node.js
- Bound to a single CPU46
- New framework every day45
- Lots of terrible examples on the internet40
- Asynchronous programming is the worst33
- Callback24
- Javascript19
- Dependency hell11
- Dependency based on GitHub11
- Low computational power10
- Very very Slow7
- Can block whole server easily7
- Callback functions may not fire on expected sequence7
- Breaking updates4
- Unstable4
- Unneeded over complication3
- No standard approach3
- Bad transitive dependency management1
- Can't read server session1
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