Сообщение Re[45]: Nemerle через 5 лет - выстрелит или скончается? от 09.10.2014 13:20
Изменено 09.10.2014 13:35 Evgeny.Panasyuk
Здравствуйте, VladD2, Вы писали:
VD>Да, несомненно. Если мериться с C#, то кое какая гибкость есть. Правда платить за это приходится массой неудобств и костылей/велосипедов для решения даже базовых задач вроде передачи ссылки на метод или долгоживущих объектов в функцию.
Что конкретно имеется в виду? То что можно использовать библиотеки, там где у C# фичи прибиты в язык гвоздями?
EP>>Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
VD>Ну, это преувеличение. Проще писать как раз на C#. C# обладает всегда достаточной гибкость. Но случаи когда ее не хватает не так уж часты.
Даже если из примера с apply убрать переменное число параметров — то на C# всё равно будет много проблем. Пример же в действительности простейший.
VD>У Nemerle же и эти недостатки дотнета компенсируются еще и макросами. Шаблоны C++ можно рассматривать как подмножество макросов Nemerle.
Не уверен что строгое надмножество. Макросы Nemerle живут в отдельной сборке, шаблоны — в том же translation unit что и обычный код.
Результат работы шаблона может зависеть от него самого же (не считая вставки в цитату). Или другой вариант — действия шаблона зависят от результата функции которая использует этот шаблон. Такая вот особаяуличная магиямета-рекурсия.
Если абстрактно, то представь что папа Карло (метапрограмма) вырезает из полена Буратино (программа), и ещё не созданный до конца Буратино, помогает вырезать себя же. Какого-то хорошего примера пока не придумал, но думаю что суть ясна.
В случае же Nemerle — макрос даже и сослаться на эту функцию не может, так как нет соответствующей сборки, а появится она когда макрос уже не будет работать.
VD>Вот только это довольно надуманный пример. На практике он мало что дает.
Это самый обычный FP-style.
EP>>И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней

EP>>Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого
VD>Ну, тебе все время что-то подсказывает не верные выводы.
Ты бы лучше меньше слушал бы это что-то. 
Как раз хорошая демонстрация того, что я имел в виду.
Вот есть у нас функции, и мы их используем.
Чуть сложнее пример — ок, берём generic'и. Всё практически то же самое — такие же обычные параметры, такой же обычный код.
Ещё чуть сложнее — и вот уже приходится использовать макросы, лезть в отдельную сборку. И параметры уже не параметры, а куски распаренной грамматики, которые нужно сплайсить в код, который кстати тоже уже не код, а квазицитата. И при этом при использовании одного параметра несколько раз, нужно подставлять костыли чтобы он не вычислялся несколько раз и т.д и т.п.
Хотя усложнение — минимальное. Были бы generic'и и система типов мощнее — не пришлось бы лезть в макросы.
Или, например, если нужно вернуть/передать/сохранить этот apply куда-нибудь — тоже начнутся пляски.
Да, язык можно расширять макросами, но была бы основа мощнее и гибче — к этому пришлось бы прибегать реже. Например — вот есть же generic'и — вы же их просто берёте и используете, а не было бы — пришлось бы точно также эмулировать.
VD>Причем даже если одно и то же можно сделать и на шаблонах, и на макроса, то решение на макросах, обычно, будет более качественным за счет более тесной интеграции с компилятором.
Вот выше и был пример "более качественного" решения — приходится жонглировать вручную кусками не типизированного AST, вместо простого и понятного параметрического полиморфизма.
VD>Я не просто так говорю, что Nemerle мощнее C++ и всех остальных мэйнстрим-языков. Я бы не сменил C++ на C#, а потом C# на Nemerle, если бы на то не было бы весомых оснований. Так что лучше пытаться тягаться длинной пенисов (у меня все равно он длиннее окажется
), а заняться изучением того что ты решил покритиковать. По крайней мере критика станет конструктивнее, да интересные знания лишними не бывают.
В общих чертах и так уже изучил, мощь действительно большая — и об этом я уже не раз говорил в этом, да и в других топиках.
VD>Да, несомненно. Если мериться с C#, то кое какая гибкость есть. Правда платить за это приходится массой неудобств и костылей/велосипедов для решения даже базовых задач вроде передачи ссылки на метод или долгоживущих объектов в функцию.
Что конкретно имеется в виду? То что можно использовать библиотеки, там где у C# фичи прибиты в язык гвоздями?
EP>>Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
VD>Ну, это преувеличение. Проще писать как раз на C#. C# обладает всегда достаточной гибкость. Но случаи когда ее не хватает не так уж часты.
Даже если из примера с apply убрать переменное число параметров — то на C# всё равно будет много проблем. Пример же в действительности простейший.
VD>У Nemerle же и эти недостатки дотнета компенсируются еще и макросами. Шаблоны C++ можно рассматривать как подмножество макросов Nemerle.
Не уверен что строгое надмножество. Макросы Nemerle живут в отдельной сборке, шаблоны — в том же translation unit что и обычный код.
Результат работы шаблона может зависеть от него самого же (не считая вставки в цитату). Или другой вариант — действия шаблона зависят от результата функции которая использует этот шаблон. Такая вот особая
Если абстрактно, то представь что папа Карло (метапрограмма) вырезает из полена Буратино (программа), и ещё не созданный до конца Буратино, помогает вырезать себя же. Какого-то хорошего примера пока не придумал, но думаю что суть ясна.
В случае же Nemerle — макрос даже и сослаться на эту функцию не может, так как нет соответствующей сборки, а появится она когда макрос уже не будет работать.
VD>Вот только это довольно надуманный пример. На практике он мало что дает.
Это самый обычный FP-style.
EP>>И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней
EP>>Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого
VD>Ну, тебе все время что-то подсказывает не верные выводы.
Как раз хорошая демонстрация того, что я имел в виду.
Вот есть у нас функции, и мы их используем.
Чуть сложнее пример — ок, берём generic'и. Всё практически то же самое — такие же обычные параметры, такой же обычный код.
Ещё чуть сложнее — и вот уже приходится использовать макросы, лезть в отдельную сборку. И параметры уже не параметры, а куски распаренной грамматики, которые нужно сплайсить в код, который кстати тоже уже не код, а квазицитата. И при этом при использовании одного параметра несколько раз, нужно подставлять костыли чтобы он не вычислялся несколько раз и т.д и т.п.
Хотя усложнение — минимальное. Были бы generic'и и система типов мощнее — не пришлось бы лезть в макросы.
Или, например, если нужно вернуть/передать/сохранить этот apply куда-нибудь — тоже начнутся пляски.
Да, язык можно расширять макросами, но была бы основа мощнее и гибче — к этому пришлось бы прибегать реже. Например — вот есть же generic'и — вы же их просто берёте и используете, а не было бы — пришлось бы точно также эмулировать.
VD>Причем даже если одно и то же можно сделать и на шаблонах, и на макроса, то решение на макросах, обычно, будет более качественным за счет более тесной интеграции с компилятором.
Вот выше и был пример "более качественного" решения — приходится жонглировать вручную кусками не типизированного AST, вместо простого и понятного параметрического полиморфизма.
VD>Я не просто так говорю, что Nemerle мощнее C++ и всех остальных мэйнстрим-языков. Я бы не сменил C++ на C#, а потом C# на Nemerle, если бы на то не было бы весомых оснований. Так что лучше пытаться тягаться длинной пенисов (у меня все равно он длиннее окажется
В общих чертах и так уже изучил, мощь действительно большая — и об этом я уже не раз говорил в этом, да и в других топиках.
Re[45]: Nemerle через 5 лет - выстрелит или скончается?
Здравствуйте, VladD2, Вы писали:
VD>Да, несомненно. Если мериться с C#, то кое какая гибкость есть. Правда платить за это приходится массой неудобств и костылей/велосипедов для решения даже базовых задач вроде передачи ссылки на метод или долгоживущих объектов в функцию.
Что конкретно имеется в виду? То что можно использовать библиотеки, там где у C# фичи прибиты в язык гвоздями?
EP>>Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
VD>Ну, это преувеличение. Проще писать как раз на C#. C# обладает всегда достаточной гибкость. Но случаи когда ее не хватает не так уж часты.
Даже если из примера с apply убрать переменное число параметров — то на C# всё равно будет много проблем. Пример же в действительности простейший.
VD>У Nemerle же и эти недостатки дотнета компенсируются еще и макросами. Шаблоны C++ можно рассматривать как подмножество макросов Nemerle.
Не уверен что строгое надмножество. Макросы Nemerle живут в отдельной сборке, шаблоны — в том же translation unit что и обычный код.
Результат работы шаблона может зависеть от него самого же. Или другой вариант — действия шаблона зависят от результата функции которая использует этот шаблон. Такая вот особаяуличная магиямета-рекурсия.
Если абстрактно, то представь что папа Карло (метапрограмма) вырезает из полена Буратино (программа), и ещё не созданный до конца Буратино, помогает вырезать себя же. Какого-то хорошего примера пока не придумал, но думаю что суть ясна.
В случае же Nemerle — макрос даже и сослаться на эту функцию не может, так как нет соответствующей сборки, а появится она когда макрос уже не будет работать.
VD>Вот только это довольно надуманный пример. На практике он мало что дает.
Это самый обычный FP-style.
EP>>И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней

EP>>Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого
VD>Ну, тебе все время что-то подсказывает не верные выводы.
Ты бы лучше меньше слушал бы это что-то. 
Как раз хорошая демонстрация того, что я имел в виду.
Вот есть у нас функции, и мы их используем.
Чуть сложнее пример — ок, берём generic'и. Всё практически то же самое — такие же обычные параметры, такой же обычный код.
Ещё чуть сложнее — и вот уже приходится использовать макросы, лезть в отдельную сборку. И параметры уже не параметры, а куски распаренной грамматики, которые нужно сплайсить в код, который кстати тоже уже не код, а квазицитата. И при этом при использовании одного параметра несколько раз, нужно подставлять костыли чтобы он не вычислялся несколько раз и т.д и т.п.
Хотя усложнение — минимальное. Были бы generic'и и система типов мощнее — не пришлось бы лезть в макросы.
Или, например, если нужно вернуть/передать/сохранить этот apply куда-нибудь — тоже начнутся пляски.
Да, язык можно расширять макросами, но была бы основа мощнее и гибче — к этому пришлось бы прибегать реже. Например — вот есть же generic'и — вы же их просто берёте и используете, а не было бы — пришлось бы точно также эмулировать.
VD>Причем даже если одно и то же можно сделать и на шаблонах, и на макроса, то решение на макросах, обычно, будет более качественным за счет более тесной интеграции с компилятором.
Вот выше и был пример "более качественного" решения — приходится жонглировать вручную кусками не типизированного AST, вместо простого и понятного параметрического полиморфизма.
VD>Я не просто так говорю, что Nemerle мощнее C++ и всех остальных мэйнстрим-языков. Я бы не сменил C++ на C#, а потом C# на Nemerle, если бы на то не было бы весомых оснований. Так что лучше пытаться тягаться длинной пенисов (у меня все равно он длиннее окажется
), а заняться изучением того что ты решил покритиковать. По крайней мере критика станет конструктивнее, да интересные знания лишними не бывают.
В общих чертах и так уже изучил, мощь действительно большая — и об этом я уже не раз говорил в этом, да и в других топиках.
VD>Да, несомненно. Если мериться с C#, то кое какая гибкость есть. Правда платить за это приходится массой неудобств и костылей/велосипедов для решения даже базовых задач вроде передачи ссылки на метод или долгоживущих объектов в функцию.
Что конкретно имеется в виду? То что можно использовать библиотеки, там где у C# фичи прибиты в язык гвоздями?
EP>>Обобщённый код (это даже не метапрограммирование) на C++ получается разы короче и проще.
VD>Ну, это преувеличение. Проще писать как раз на C#. C# обладает всегда достаточной гибкость. Но случаи когда ее не хватает не так уж часты.
Даже если из примера с apply убрать переменное число параметров — то на C# всё равно будет много проблем. Пример же в действительности простейший.
VD>У Nemerle же и эти недостатки дотнета компенсируются еще и макросами. Шаблоны C++ можно рассматривать как подмножество макросов Nemerle.
Не уверен что строгое надмножество. Макросы Nemerle живут в отдельной сборке, шаблоны — в том же translation unit что и обычный код.
Результат работы шаблона может зависеть от него самого же. Или другой вариант — действия шаблона зависят от результата функции которая использует этот шаблон. Такая вот особая
Если абстрактно, то представь что папа Карло (метапрограмма) вырезает из полена Буратино (программа), и ещё не созданный до конца Буратино, помогает вырезать себя же. Какого-то хорошего примера пока не придумал, но думаю что суть ясна.
В случае же Nemerle — макрос даже и сослаться на эту функцию не может, так как нет соответствующей сборки, а появится она когда макрос уже не будет работать.
VD>Вот только это довольно надуманный пример. На практике он мало что дает.
Это самый обычный FP-style.
EP>>И, что-то мне подсказывает, если это и получится на Nemerle, то не так складно, ибо система типов .NET — примитивней
EP>>Ожидаю блаб-объяснений что это и не нужно, потому что можно без этого
VD>Ну, тебе все время что-то подсказывает не верные выводы.
Как раз хорошая демонстрация того, что я имел в виду.
Вот есть у нас функции, и мы их используем.
Чуть сложнее пример — ок, берём generic'и. Всё практически то же самое — такие же обычные параметры, такой же обычный код.
Ещё чуть сложнее — и вот уже приходится использовать макросы, лезть в отдельную сборку. И параметры уже не параметры, а куски распаренной грамматики, которые нужно сплайсить в код, который кстати тоже уже не код, а квазицитата. И при этом при использовании одного параметра несколько раз, нужно подставлять костыли чтобы он не вычислялся несколько раз и т.д и т.п.
Хотя усложнение — минимальное. Были бы generic'и и система типов мощнее — не пришлось бы лезть в макросы.
Или, например, если нужно вернуть/передать/сохранить этот apply куда-нибудь — тоже начнутся пляски.
Да, язык можно расширять макросами, но была бы основа мощнее и гибче — к этому пришлось бы прибегать реже. Например — вот есть же generic'и — вы же их просто берёте и используете, а не было бы — пришлось бы точно также эмулировать.
VD>Причем даже если одно и то же можно сделать и на шаблонах, и на макроса, то решение на макросах, обычно, будет более качественным за счет более тесной интеграции с компилятором.
Вот выше и был пример "более качественного" решения — приходится жонглировать вручную кусками не типизированного AST, вместо простого и понятного параметрического полиморфизма.
VD>Я не просто так говорю, что Nemerle мощнее C++ и всех остальных мэйнстрим-языков. Я бы не сменил C++ на C#, а потом C# на Nemerle, если бы на то не было бы весомых оснований. Так что лучше пытаться тягаться длинной пенисов (у меня все равно он длиннее окажется
В общих чертах и так уже изучил, мощь действительно большая — и об этом я уже не раз говорил в этом, да и в других топиках.