https://groups.google.com/g/comp.lang.tcl/c/7JXGt-Uxqag/m/vQ...
https://groups.google.com/g/comp.lang.tcl/c/7JXGt-Uxqag/m/vQ...
> This is the proposition that you should use two languages for a large software system: one, such as C or C++, for manipulating the complex internal data structures where performance is key, and another, such as Tcl, for writing small-ish scripts that tie together the C pieces and are used for extensions.
Thankfully, today, we have great programming languages, like Python, that people enjoy using both for large software systems and for writing small-ish scripts.
So, I suppose Stallman was right? I definitely agree with him that Unix shell syntax is awful.
Python is absolutely terrible to use as a stand alone language. Almost everywhere it is used (ML, Data Science, Scientific computing, etc.) it is used to call C or C++. The amount of serious Python software that doesn't makes extensive use of calling to other languages is very small.
Python alone has very severe shortcomings, that make it totally unsuited for stand alone development.
I have worked on lots of huge python codebases, so I don't buy this argument.
For example, all of YouTube, Instagram, Dropbox, Spotify, Reddit, Pinterest, Quora and Netflix is mostly build in Python.
Do many of the libraries that are optimized for speed call some C and C++ code? Sure. But so do many Java libraries. And ML libraries these days have to call CUDA code anyway, so you can't even do "stand alone development" in C.
Python seems to be used more often to call performance optimized libraries (NumPy, opencv, TensorFlow) and so on.
I have seen TCL and LUA more often used the opposite way around: A complied core (e.g. C or C++) which allows extensions to be written quickly in the scripting language.
Both seems to work well but the use case is a different one.
I think my comments are pretty well accepted and substantiated if you look at what people are actually using python for. Right now AI is big, Python is at the center of that, to glue C++ together...
Follows from the others.
>Almost everywhere it is used (ML, Data Science, Scientific computing, etc.) it is used to call C or C++.
See the big libraries in those fields. Do you think tensorflow or numpy are native python. If you are using python for scientific computing you will be using libraries which call out to native code.
>The amount of serious Python software that doesn't makes extensive use of calling to other languages is very small.
Given the above and that Python is most prominently found in those fields it seems pretty certain. There is standalone Python software, but usually only as a replacement for shell scripts or for relatively small applications.
>Python alone has very severe shortcomings
To name a few: GIL, lack of common default types (e.g. C like integers), enormous interpreter overhead, no mandatory typing (which introduces a whole range of runtime errors impossible in strictly typed languages). These alone make it totally unusable for many applications, unless you call to an external library.
>that make it totally unsuited for stand alone development.
See above.
>Python is absurdly slow, for naive array task you can easily get a 100x to 1000x speedup compared to any native language.
Personal experience.
>The GIL doesn't really help either...
It really does not...
>Right now AI is big, Python is at the center of that, to glue C++ together...
See e.g. what numpy, tensorflow, pytorch are written in. Spoiler, the matrix multiplication isn't implemented in python.
I have no idea why these languages are considered "easy". I find them a pain to use for anything larger than a couple hundred lines of code.
On its own it is simply too slow.
It's a silly argument, though. If you have a million lines of Python code, and some of it calls some library that contains lower-level code, does that mean Python is a "scripting language"? I wouldn't say so.
Did you ever try writing a large 1mil+ line codebase in Tcl or Bash? I'm pretty sure you'd prefer Python.