История изменений
Исправление SZT, (текущая версия) :
Из того, что инструмент недостаточно мощный не следует его бесполезность.
Ну как сказать. Эти constexpr-ы например поощряют(приучают) писать код в особом стиле, когда мы не через указатели меняем некие данные, а через return-ы нечто возвращаем. Рассмотрим что-нибудь простенькое, например сортировку пузырьком http://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort#C и попробуем ее переделать на эти constexpr. Получится что-то вроде http://ideone.com/Kythll
Пришлось изменить сигнатуру функции и возвращать сотрированный массив через return. В constexpr можно засовывать только лишь чистые функции без побочных эффектов, а это значит что если я захочу взять некий готовый код и адаптировать его в эти constexpr, (а в коде этом будут всевозможные memcpy, malloc, и допустим он принимает указатели на массив из char, что-то в этот массив пишет и проч.) мне надо будет очень сильно его переделывать(возможно даже переписать с нуля). Если же я буду писать некий код с нуля, с прицелом на то, чтобы я этот код мог использовать в constexpr, мне придется придерживаться этих дурацких правил, что может пойти в ущерб читабельности и производительности кода. Так что эти constexpr можно даже назвать вредными, т.к. они приучают писать код в этом недофункциональном стиле.
Если D устраивает, то почему его не используешь? Ну и с каких пор там есть гомоиконность?
Потому что немейнстрим. Будет относительно трудно найти людей, которые будут готовы пилить код в этом D. В нем нет гомоиконности, но это явно лучше, чем то, что есть в С++
Исходная версия SZT, :
Из того, что инструмент недостаточно мощный не следует его бесполезность.
Ну как сказать. Эти constexpr-ы например поощряют(приучают) писать код в особом стиле, когда мы не через указатели меняем некие данные, а через return-ы нечто возвращаем. Рассмотрим что-нибудь простенькое, например сортировку пузырьком http://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort#C и попробуем ее переделать на эти constexpr. Получится что-то вроде http://ideone.com/Kythll
Пришлось изменить сигнатуру функции и возвращать сотрированный массив через return. В constexpr можно засовывать только лишь чистые функции без побочных эффектов, а это значит что если я захочу взять некий готовый код и адаптировать его в эти constexpr, (а в коде этом будут всевозможные memcpy, malloc, и допустим он принимает указатели на массив из char, что-то в этот массив пишет и проч.) мне надо будет очень сильно его переделывать(возможно даже переписать с нуля). Если же я буду писать некий код с нуля, с прицелом на то, чтобы я этот код мог использовать в constexpr, мне придется придерживаться этих дурацких правил, что может пойти в ущерб читабельности и производительности кода. Так что эти constexpr можно даже назвать вредными, т.к. они приучают писать код в этом функциональном стиле.
Если D устраивает, то почему его не используешь? Ну и с каких пор там есть гомоиконность?
Потому что немейнстрим. Будет относительно трудно найти людей, которые будут готовы пилить код в этом D. В нем нет гомоиконности, но это явно лучше, чем то, что есть в С++