Node, Python, PHP, perl, C, Go, even COBOL - these are server-side languages. They run on a machine, running particular applications or codebases on that machine. Each language has its own strengths and weaknesses, each shines at something.
In the case of browser-based development, we are far more constrained, as the primary programming language of the front end is javascript. We can use libraries in other languages, using things like WASM, but they still can only interact with the web page… through javascript.
But on non-browser-based development? We can develop in all sorts of languages. There is no limit to what we can build, but in almost every language, we will need to import some functionality.
If we want to build an app that can interact with sensors and servos, running a greenhouse by detecting temperature, air quality and humidity and triggering fans, sprinklers, ceiling vents… Python can do that. We simply need to include some libraries written in hardware-specific languages. PHP can also do that - but we need to include similar libraries.
If we want to simulate weather patterns based on historical data going back over 100 years, and try to forecast coming weather patterns based on that? Python can also do that - with some additional libraries designed to optimize our data-munging. Perl can also do that… by including some additional libraries.
Most applications of any size or complexity will usually require some sort of additional libraries or extensions, simply because the core language might not fully implement the things the extension does - or because using that extension saves us the trouble.
Heck, when we’re using javascript in the browser, and we use the fetch
api or the IndexedDB
api? We’re using extensions to the language, written in a lower-level language like C or Go.