Hello.
Am 09.12.2020 um 13:13 schrieb Hans Hübner hans.huebner@gmail.com:
Am Mi., 9. Dez. 2020 um 11:03 Uhr schrieb Jean-Claude Beaudoin jean.claude.beaudoin@gmail.com: On Wed, Dec 9, 2020 at 4:36 AM Hans Hübner hans.huebner@gmail.com wrote:
This is also where scalability comes into play, and that word certainly needs to be qualified before it can be discussed. If scalability simply describes the raw size of the problem that can be addressed with a tool, then there are limits to what a given language can do based on its inherent support for threads that execute in parallel. Parallelism is something that requires proper abstractions. Some say that these can be just on the library level, but my experience tells me a different story. I find it difficult to create robust parallel solutions in languages like Lisp, as the language itself assumes a single thread of control in how it makes variable bindings accessible and how information is passed between invocations of functions by reference.
I think parallelism is certainly possible in CL. The abstractions may not be given by the CL spec but library exist that have them. Like lparallel, and even „message passing“ frameworks like cl-gserver and others. The maturity of these may be a different thing, but they exist. From a runtime perspective CL uses OS threads in the same way as the JVM does. So whatever is possible in the JVM is possible in CL.
If scalability is about the number of people that one can bring into a team that develops a single system, Common Lisp is not a particular nice environment either. Due to its size, age and heritage, every program that is written in it basically subsets the language and, worse, often also extends it because the subset was found to be insufficient and extending the language is easy. The result is that unless a new person has already mastered a lot of Common Lisp, they will usually have a hard time finding their way around in a new system.
I wouldn’t see this as hindrance. Using a language in a company always comes with restrictions, rules and disciplines for which libraries to use, which style of code, etc.
Cheers, Manfred