История изменений
Исправление monk, (текущая версия) :
А чем лучше?
Именно в данном случае ничем. Просто не хуже. А в комбинациях типа:
(with-transaction
(let ((val (sql select ...)))
(sql insert into result set values (f, g) ((my-calc val) (my-calc2 val val2)))))
уже лучше. Когда вся интеграция SQL и кода под капотом. В C# есть LINQ, но он предопределённый. Если мне понадобится интеграция с системой правил Пролога, а не SQL, уже не получится.
И почему весь такой из себя хороший Лисп так редко встречается в коммерческом программировании?
Во-первых, исторически. Корпорации в своё время отказались от лиспа, так как причину неудачи проекта AI спихнули именно на него. Сейчас лисп в том же положении, что и Haskell или Zig. Много на них коммерческого программирования?
Во-вторых, если речь про Common Lisp, его очень тяжело ограничить. То есть в руках неумелого программиста влияние на проект такое же как в C++ (там UB, здесь запись в чужие модули). Есть Racket, в котором нормальные модули, но он очень молод (c 2010 года).
В-третьих, в лиспах не принято писать в ООП стиле, что затрудняет миграцию с других языков программирования.
В-четвёртых (и, как бы, не главное), не хватает библиотек. Если для Java, Golang или C# корпорации создали огромный пласт стандартных библиотек, для C/C++ библиотеки создавались десятилетиями и всем миром, то у лиспов подход достаточно отличается от C и Java, чтобы делать прямое использование их библиотек неудобным, и программистов слишком мало, чтобы написать всё самостоятельно.
Исходная версия monk, :
А чем лучше?
Именно в данном случае ничем. Просто не хуже. А в комбинациях типа:
(with-transaction
(let ((val (sql select ...)))
(sql insert into result set f = (my-calc val))))
уже лучше. Когда вся интеграция SQL и кода под капотом. В C# есть LINQ, но он предопределённый. Если мне понадобится интеграция с системой правил Пролога, а не SQL, уже не получится.
И почему весь такой из себя хороший Лисп так редко встречается в коммерческом программировании?
Во-первых, исторически. Корпорации в своё время отказались от лиспа, так как причину неудачи проекта AI спихнули именно на него. Сейчас лисп в том же положении, что и Haskell или Zig. Много на них коммерческого программирования?
Во-вторых, если речь про Common Lisp, его очень тяжело ограничить. То есть в руках неумелого программиста влияние на проект такое же как в C++ (там UB, здесь запись в чужие модули). Есть Racket, в котором нормальные модули, но он очень молод (c 2010 года).
В-третьих, в лиспах не принято писать в ООП стиле, что затрудняет миграцию с других языков программирования.
В-четвёртых (и, как бы, не главное), не хватает библиотек. Если для Java, Golang или C# корпорации создали огромный пласт стандартных библиотек, для C/C++ библиотеки создавались десятилетиями и всем миром, то у лиспов подход достаточно отличается от C и Java, чтобы делать прямое использование их библиотек неудобным, и программистов слишком мало, чтобы написать всё самостоятельно.