Czytałem artykuł tutaj: http://www.paulgraham.com/avg.html, a część o „paradoksie blub” była szczególnie interesująca. Jako ktoś, kto głównie koduje w c ++, ale ma kontakt z innymi językami (głównie Haskell), jestem świadomy kilku przydatnych rzeczy w tych językach, które trudno jest powielić w c ++. Pytanie skierowane jest głównie do osób biegle posługujących się zarówno językiem c ++, jak i jakimś innym językiem. Czy istnieje jakaś potężna funkcja lub idiom językowy, którego używasz w języku, który trudno byłoby pojąć lub wdrożyć, gdybyś pisał tylko w języku c ++?
W szczególności ten cytat przykuł moją uwagę:
Dzięki indukcji jedynymi programistami, którzy mogą zobaczyć wszystkie różnice w mocy między różnymi językami, są ci, którzy rozumieją ten najsilniejszy. (Prawdopodobnie to właśnie miał na myśli Eric Raymond o tym, że Lisp uczynił cię lepszym programistą.) Nie możesz ufać opiniom innych, z powodu paradoksu Blub: są zadowoleni z dowolnego języka, którego używają, ponieważ to dyktuje sposób, w jaki myślą o programach.
Jeśli okaże się, że jestem odpowiednikiem programisty „Blub” dzięki użyciu c ++, powstaje następujące pytanie: Czy są jakieś użyteczne koncepcje lub techniki, które napotkałeś w innych językach, które trudno byłoby ci pojąć, gdybyś pisałeś lub „myślałeś” w c ++?
Na przykład paradygmat programowania logicznego widziany w językach takich jak Prolog i Mercury można zaimplementować w c ++ przy użyciu biblioteki castor, ale ostatecznie uważam, że koncepcyjnie myślę w kategoriach kodu Prolog i tłumacząc na odpowiednik c ++ podczas korzystania z tego. W celu poszerzenia mojej wiedzy programistycznej próbuję dowiedzieć się, czy istnieją inne podobne przykłady użytecznych / potężnych idiomów, które są bardziej efektywnie wyrażane w innych językach, o których być może nie jestem świadomy jako programista c ++. Innym przykładem, który przychodzi mi na myśl, jest system makr w lisp, generowanie kodu programu z poziomu programu wydaje się mieć wiele zalet w przypadku niektórych problemów. Wydaje się to trudne do zaimplementowania i przemyślenia z poziomu c ++.
To pytanie nie ma być debatą „c ++ vs lisp” ani żadną debatą typu wojny językowe. Zadanie takiego pytania to jedyny sposób, w jaki mogę dowiedzieć się o rzeczach, o których nie wiem, o których nie wiem.
there are things that other languages can do that Lisp can't
- Mało prawdopodobne, ponieważ Lisp jest ukończony w Turingu . Być może chciałeś powiedzieć, że są pewne rzeczy, które nie są praktyczne w Lisp? Mógłbym powiedzieć to samo o każdym języku programowania.