@Kabie I disagree with you: For one, programming languages themselves usually disappear from the application, while the method of thinking they impose on developers using them definitely makes it to the application. On the other hand, tools definitely have an impact on what you make: If you try to sculpt using a sledgehammer instead of a chisel, your final sculpture will definitely be more rough-hewn.
While editing environments definitely are also tools (and arguably more interchangeable ones than languages are), they also have an impact on what you make. An simple example: when you are writing a program in C and use
clang-tidy, the chance of common memory errors will be lowered (somewhat).
However, I actually find the ‘tool’ metaphor to be limiting, because:
- what about metaprogramming? Tools to build tools (to build tools to build tools… ?)
- what about a compiled application? Isn’t this just another tool/means to do something useful? (Isn’t the ‘something useful happens’ the thing we want to archieve, rather than ‘we have an application’?).
This is why I prefer a different phrasing of “a programming language is just a tool”, which is: “programming languages are a means, not an end”. I think that captures the essence more clearly (and has a smaller chance of being misunderstood).
It happens with some frequency that people are fooled by “All (general purpose) programming languages are Turing-Complete, so are they not 100% interchangeable?”: while it is true that this means that all programming languages can calculate everything that other languages can,
- certain calculations will be simpler to conceptualize and implement in language (a) than in language (b) (and others might be simpler in language (b)).
- Turing-Completeness only talks about single-threaded, serial execution. Programming languages are definitely not created equal when talking about their approach to multithreading.
- is all programming language are the same tool ?
No, they are all different!
- if it so, why there is more than 50 programming language exist in this world
- and why new language are keep coming and coming
Programming languages reflect the state of mind of their creators (and, to a certain degree, their users). This is why so many different languages with different approaches and concepts exist.
- why Keras Framework are written in Python, not C/Assembly ?
This is an educated guess (if you want to be sure, ask the maintainers of Keras), but looking at their homepage, it seems that user friendlyness is an important guiding principle of the library. Python is generally considered as more approachable and user-friendly than C or assembly because of the manual work required and non-existent or highly leaky abstractions in C/assembly.
- why X framework/application are written in X language not in Elixir language
Either or both of the following:
did not know about it.
- Elixir would not have been a good match for the concept. Things that Elixir is notably bad at are:
- Computation-heavy applications.
- Libraries in which you want to work with/create a very strongly typed API.
- Elixir would have been a good match, was not around when the thing was first created, or the developer(s)