Am 07.02.2021 um 11:28 schrieb Pascal Bourguignon pjb@informatimago.com:
Le 07/02/2021 à 10:10, Marco Antoniotti a écrit :
... and I can always CHANGE-CLASS, can't I?
Of course. There are a lot of features of CL that renders most of the software engineering fad entirely useless or obvious.
This is part of the reasons why lisp is not more popular: there's no PhD to work on when you work with lisp, since the problems they solve don't occur or are solved trivially in lisp; there's no software engineering technique to be developed and evangelized (with books or expensive conferences) when you work with lisp because there are no deficiencies so dire in the language to require them; there's no need for sophisticated tools and IDE to be developped and sold to lisp programmers, since the syntax is so trivial just a few hacks in emacs are enough for 99% of the needs.
I’ve come to appreciate this during the last 2 years since I’ve started with Common Lisp. Coming from 20 years of static types this is quite a difference. I tend to think too complicated. But most of the things that are more simple stem from the dynamic nature IMO. To some extend this (CHANGE-CLASS, etc.) is also possible in Python, Clojure or Groovy. Though it’s really simple and convenient in Common Lisp. I also do Scala development in Emacs. So this sophistication (and maybe bloat) is not always necessary. But IDEs like IntelliJ are really very specialized and are super productive. Maybe just trying to mimick what Common Lisp can do with far simpler tooling. Statically typed systems also have some benefits. Like, when all compiles you have some guaranties about the soundness of your type model in the system. Some of the technologies (like dependency injection) are geared towards making things simpler in large projects where you have different teams working in different parts of the application and interfaces in a statically typed language.
Manfred