LINUX.ORG.RU

История изменений

Исправление 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, чтобы делать прямое использование их библиотек неудобным, и программистов слишком мало, чтобы написать всё самостоятельно.