Я читал статью здесь: http://www.paulgraham.com/avg.html, и часть о "парадоксе пузыря" была особенно интересной. Как человек, который в основном кодирует на c ++, но имеет знакомство с другими языками (в основном Haskell), я знаю о некоторых полезных вещах на этих языках, которые трудно воспроизвести в c ++. Вопрос в основном для тех, кто владеет как c ++, так и другим языком. Существует ли какая-то мощная языковая функция или идиома, которую вы используете в языке, который было бы трудно осмыслить или реализовать, если бы вы писали только на c ++?
В частности, эта цитата привлекла мое внимание:
По индукции, единственные программисты, которые в состоянии увидеть все различия в мощности между различными языками, - это те, кто понимает самый мощный язык. (Это, вероятно, то, что имел в виду Эрик Рэймонд о том, что Lisp делает вас лучшим программистом.) Вы не можете доверять мнению других из-за парадокса Blub: они довольны тем, каким языком они пользуются, потому что он диктует как они думают о программах.
Если окажется, что я эквивалентен программисту "Blub" благодаря использованию c ++, то возникает следующий вопрос: существуют ли какие-либо полезные концепции или приемы, с которыми вы столкнулись в других языках, которые вам было бы трудно осмыслить, если бы вы писал или "думал" на с ++?
Например, парадигма логического программирования, наблюдаемая в таких языках, как Prolog и Mercury, может быть реализована в c ++ с использованием библиотеки Castor, но в конечном итоге я нахожу, что концептуально я думаю в терминах кода Prolog и перехожу на эквивалент c ++ при использовании этого. В качестве способа расширения моих знаний в области программирования я пытаюсь выяснить, есть ли другие подобные примеры полезных / мощных идиом, которые более эффективно выражены в других языках, которые я мог бы не знать как разработчик на С ++. Другим примером, который приходит на ум, является макросистема в lisp, генерирующая программный код внутри программы, по-видимому, имеет много преимуществ для некоторых проблем. Кажется, что это трудно реализовать и думать изнутри c ++.
Этот вопрос не предназначен для дебатов типа "c ++ vs lisp" или каких-либо дебатов типа языковых войн. Задавать вопрос, подобный этому, - это единственный способ, которым я вижу возможность узнать о вещах, о которых я не знаю, о которых я не знаю.
there are things that other languages can do that Lisp can't
- Маловероятно, поскольку Лисп завершен по Тьюрингу. Возможно, вы хотели сказать, что есть некоторые вещи, которые не практичны в Лиспе? Я мог бы сказать то же самое о любом языке программирования.