Jedną z rzeczy, która sprawia, że Ruby świeci, jest możliwość lepszego tworzenia języków specyficznych dla domeny
Chociaż można duplikować te biblioteki w LISP za pomocą makr, myślę, że implementacja Ruby jest bardziej elegancka. Niemniej jednak myślę, że zdarzają się przypadki, że makro LISP może być lepsze niż Ruby, chociaż nie mogłem wymyślić żadnego z nich.
Więc w jakim obszarze makro LISP jest lepsze niż „zdolność” Ruby do tworzenia DSL, jeśli w ogóle?
aktualizacja
Poprosiłem o tym, ponieważ nowoczesne języki programowania są zbliża osobliwość LISP , jak
- C ma preprocesor ekspansji makr , choć bardzo prymitywny i podatny na błędy
- C # ma atrybuty, choć jest to tylko do odczytu, ujawnione przez odbicie
- Python dodał dekorator, który może modyfikować zachowanie funkcji (i klasy dla v 3.0), choć wydaje się dość ograniczony.
- Ruby TMTOWTDI, który tworzy elegancki DSL, jeśli zastosowano ostrożność, ale w sposób Ruby.
Zastanawiałem się, czy makro LISP ma zastosowanie tylko w szczególnych przypadkach i czy inne funkcje języka programowania są wystarczająco potężne, aby podnieść abstrakcję i sprostać dzisiejszym wyzwaniom związanym z tworzeniem oprogramowania.