Здравствуйте, IT, Вы писали:
IT>Ты придрался к следующему:
IT>
Я считаю реализацию ООП в Окале неудобной.
IT>Ещё и выделил жирным шрифтом. Где тут Немерле?
Ты вырываешь фразы из контекста. Первоначально я указал Владу, что он в своем посте говорит о том, что не знает в достаточной степени OCaml, а затем говорит, что Nemerle по сравнению с OCaml более удобен, поскольку статически типизирован, типобезопасен и объектно-ориентирован. Но на самом деле OCaml так же статически типизирован, типобезопасен и объектно-ориентирован. Т.е. сравнение Nemerle с OCaml по этим критериям уже не выглядит убедительным.
Далее Влад подчеркивает, что по его мнению в OCaml-е неудобная реализация ООП. Но это мнение стоит еще меньше, поскольку у Влада нет реального опыта использования OCaml-а (был бы такой опыт, он бы не говорил про недостаточное знание OCaml). А опыт -- это такая штука, которая меняет наши поверхностные впечатления. То, что при чтении мануала может выглядеть странным, убогим и неудобным при использовании на практике, бывает, оказывается логичным и удобным. Например, после нескольких месяцев использования Ruby я был не самого высокого мнения о динамических языках (чему можно найти свидетельство, например, здесь
). Тем не менее, мой дальнейший опыт показал, что я сильно заблуждался. Поэтому мне кажется, что мнение Влада про ООП в OCaml может быть не менее ошибочным. К тому же даже не зная самого языка, просто прочитав половину главы про ООП в мануале по OCaml-у, мне показалось, что нормальная там поддержка ООП: и классы, и наследование, и закрытые методы, и виртуальные.
Вот и все. С моей точки зрения, Влад сделал не очень удачное и обоснованное сравнение Nemerle с OCaml-ом.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
.
VD>Ну, да ладно. Я так понимаю, что в остальном ты со мной согласен. И то не полохо.
Нет, не согласен Мне кажется, ты там особо ничего нового про Nemerle не сказал.
Просто я совершенно не сведущ в Haskell и OCaml чтобы как-то серьезно возражать тебе.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
eao197,
E>... А опыт -- это такая штука, которая меняет наши поверхностные впечатления. То, что при чтении мануала может выглядеть странным, убогим и неудобным при использовании на практике, бывает, оказывается логичным и удобным.
Да!^:_ Замечу, это справедливо везде и всюду, а не только в программировании.
Вообщем то, что тема уже давно ушла от первоначального вопроса (в кратце — что нам даст то, что мы перепишем, используя Nemerle, какой-либо проект, написанный, например на C# 2.0) — это понятно, и понятно почему — потому что ответ на него в принципе уже ясен наверное всем.
А вот то, что разошелся такой внушительный спор, мне например несколько не понятно. (ну т.е. все таки понятно, с одной стороны , bigger longer and uncut хочет доказать, что Nemerle никакой не ФЯ, т.е. доказать то, чего никто и не утверждал , а VladD2 пытается ему это объяснить, — что мол не стоит опровергать то, чего никто и не говорил (по крайней мере он сам)).
Ведь по сути весь разговор, начавшийся, можно свести к паре абзацев и все. Nemerle убийца всех остальный ФЯ? Да ни за что. Убийца ООЯ? Тоже ни в коей мере. Это просто другое средство, и не более...
Да, безусловно есть задачи где нужен истинный ФЯ и никто и не суется туда с тем же шарпом, равно как и есть задачи где ФЯзыкам делать нечего (как уже было тоже сказано), соль в том, что в последнее время в мэйнстриме все меньше места ФЯ, но оно есть... И если попробовать охватить широким взглядом этот самый мэйнстрим — то может показаться, что ФЯ несправедливо (ну или почти) несколько позабыты что-ли...
Так вот имхо Nemerle как раз и создан для того, чтобы перекрыть точку соприкосновения что-ли этих двух разных областей.
Влад на мой взгляд попал в точку, заметив:
Как приятный бонус я ей рад. Но как единственно-верное учение — увольте.
Это о возможности писать в функциональном стиле... и ведь верно, очень хорошо, что я могу не меняя язык, писать, как в одном стиле, так и в другом. И именно в этом прелесть Nemerle, а не в том, что он в плане функционального программирования лучше любого ФЯ (он не претендует на это звание) или что он в плане ООП лучше любого ОО языка (на это он тоже, как я понимаю, не претендует... хотя я могу и ошибаться ). А вот на что он претендует, так это на то, что один единственный такой... и Влад, говоря о том, что очень может статься так, что он займет очень большую нишу в мэйнстриме, как мне кажется имел ввиду именно эту его особенность, а не то, что он лучше любого ФЯ.
Ну и если уж совсем абстрагироваться от языков, то как мне кажется всем известно, что абсолютной панацеи не бывает...
И в Nemerle конкретно, мне нравится именно то, что он позволяет писать и в том и в другом стиле — раз.
Плюс позволяет делать то, для чего делался R# — два.
Ну и просто на выходе можно получить стандартную дот нет сборку, которую как я понимаю можно использовать из того же шарпа или бэйсика.нет если в этом есть необходимость.
И уже этого, больше чем достаточно для того, чтобы Nemerle занял очень большую нишу (возможно откусив ее у других языков).
________________________________
When in Rome, do as the Romans do...
Здравствуйте, AleXXus, Вы писали:
AXX>Это о возможности писать в функциональном стиле... и ведь верно, очень хорошо, что я могу не меняя язык, писать, как в одном стиле, так и в другом. И именно в этом прелесть Nemerle, а не в том, что он в плане функционального программирования лучше любого ФЯ (он не претендует на это звание) или что он в плане ООП лучше любого ОО языка (на это он тоже, как я понимаю, не претендует... хотя я могу и ошибаться )
C++ программисты стремяться программировать на отдельных островках языка, т.е. очень искусно использует некоторые возможности, избегая множества других. Хотя код более-менее переносим с компилятора на компилятор может быть очень тяжело перенести его от программиста к программисту. Великая сила C++ в том, что он поддерживат много совершенно разных стилей программирования, но при длительном использовании перекрывающиеся и несовместимые стили программирования становятся преградой.
Здравствуйте, eao197, Вы писали:
E>Не страшно, что подобная мультипарадигменность в Nemerle приведет к таким же последствиям, как в C++?
Как мне кажется, в случае с Nemerle к таким последствиям приведет скорее не очень разумное использование "мультипарадигменности", нежели само ее наличие
________________________________
When in Rome, do as the Romans do...
Здравствуйте, AleXXus, Вы писали:
AXX>Как мне кажется, в случае с Nemerle к таким последствиям приведет скорее не очень разумное использование "мультипарадигменности", нежели само ее наличие
Так ведь это и произошло в C++. Или есть основания полагать, что Nemerle будет использоваться "более качественными программистами", которые всегда все делают правильно и никогда ничего не ставят с ног на голову?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, AleXXus, Вы писали:
AXX>>Как мне кажется, в случае с Nemerle к таким последствиям приведет скорее не очень разумное использование "мультипарадигменности", нежели само ее наличие
E>Так ведь это и произошло в C++. Или есть основания полагать, что Nemerle будет использоваться "более качественными программистами", которые всегда все делают правильно и никогда ничего не ставят с ног на голову?
Да, вы правы, таких оснований нету. В моем предыдущем посте, я бы сейчас убрал Nemerle, т.к. не он определяет в данном случае И в принципе наверное действительно, вероятность того, что все придет к тому же — равна вероятности, с какой оно пришло к этому в С++.
Но тут есть другой момент. Раз уже есть печальный опыт (пришли один раз к такому), то можно попробовать использовать мультипарадигменность именно так, чтобы привела к "хорошему", а не "плохому"...
Хотя опять же — людей много, и так или иначе одни придут к "хорошему", другие к "плохому" итогу... И вот здесь — уже задача (возможно для авторов языка) — каким либо примером, или еще как, показать и научить, чтобы народ в массе своей чаще приходил к "хорошему", нежели к "плохому"
Да и вообще, всегда когда есть вариации — результаты будут разными. Один из кирпичей дом построит, а другой и себя и помошников под поддоном кирпичей похоронить может...
________________________________
When in Rome, do as the Romans do...
Здравствуйте, eao197, Вы писали:
E>Не страшно, что подобная мультипарадигменность в Nemerle приведет к таким же последствиям, как в C++?
Проблема С++ не в том, что в нем есть мультипарадигменность. Его проблема в том, что никто не думал о том, чтобы встроить мультипарадигменность в С++. Никто не проектировал, не думал о том, как сделать лучше.
Возможность использовать метапрограммирование, например, возникла просто как побочный эффект работы компилятора, а потом это уже научились использовать.
Вот и результаты — соответствующие.
Здравствуйте, Дарней, Вы писали:
Д>Проблема С++ не в том, что в нем есть мультипарадигменность. Его проблема в том, что никто не думал о том, чтобы встроить мультипарадигменность в С++. Никто не проектировал, не думал о том, как сделать лучше.
Сильное утверждение, однако.
Тем не менее, Nemerle поются диферамбы, хотя реальных проектов на Nemerle не видно (кроме самого Nemerle). А вот показательные примеры мультипарадигменных языков C++ (который только ленивый не ругает) и Lisp (который мало кто знает и еще меньше кто использует) почему-то в расчет не принимаются. Мол, мы уже ученые и ошибок темного прошлого не повторим.
Вот и посмотрим, что получится.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Дарней, Вы писали:
Д>а ты хочешь сказать, что возможность написания библиотек типа Локи была запланирована Страуструпом заранее? не верю (С)
Я хочу сказать, что вот здесь:
Проблема С++ не в том, что в нем есть мультипарадигменность. Его проблема в том, что никто не думал о том, чтобы встроить мультипарадигменность в С++. Никто не проектировал, не думал о том, как сделать лучше.
ты ничего не говорил ни про Локи, ни про метапрограммирование. С появлением шаблонов в C++ действительно была мультипарадигменность -- можно было писать в процедурном, объектно-ориентированном и обобщенном стиле. И писать нормально. И я думаю, что до года 1995, когда стало понятно, что именно в C++ будет стандартизированно, как раз думали о том, чтобы язык сделать лучше. По крайней мере я помню, насколько проще становилось пользоваться C++ по мере того, как в компиляторах становились доступны шаблоны, пространства имен, исключения, STL.
То, до чего C++ довели в Локи со компанией -- это уже последствие отсутствия тормозов у некоторых оголтелых апологетов (имхо).
Но если говорить о Nemerle, скажи мне, в Nemerle есть препятствия для того, чтобы Nemerle не превратили в такую же страшилку?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>ты ничего не говорил ни про Локи, ни про метапрограммирование. С появлением шаблонов в C++ действительно была мультипарадигменность -- можно было писать в процедурном, объектно-ориентированном и обобщенном стиле.
процедурный стиль — всего лишь подмножество ООП.
"Обобщенный" стиль.. а что ты имеешь под этим в виду, если исключить буст и локи? STL? Ну дык это просто очень урезанный вариант ФП. Или что-то другое?
E>Но если говорить о Nemerle, скажи мне, в Nemerle есть препятствия для того, чтобы Nemerle не превратили в такую же страшилку?
в страшилку можно превратить все что угодно, если поставить себе такую задачу. Намного хуже, когда программу приходится превращать в страшилку, потому что по другому нельзя
Здравствуйте, Дарней, Вы писали:
Д>процедурный стиль — всего лишь подмножество ООП.
Да уж...
И какое именно? Инкапсуляция? Полиморфизм? Не о наследовании же говорить?
Д>"Обобщенный" стиль.. а что ты имеешь под этим в виду, если исключить буст и локи? STL? Ну дык это просто очень урезанный вариант ФП. Или что-то другое?
Именно, другое. Обобщенное программирование в стиле Duck Typing-а.
Д>в страшилку можно превратить все что угодно, если поставить себе такую задачу. Намного хуже, когда программу приходится превращать в страшилку, потому что по другому нельзя
Тем не менее, ты мне не ответил.
Вообще Nemerle славословят, но не используют. Я припоминаю только одного участника обсуждений, который использовал Nemerle вместо Delphi.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Да уж... E>И какое именно? Инкапсуляция? Полиморфизм? Не о наследовании же говорить?
Например, инкапсуляция предполагает, что код будет выделен в отдельные процедуры, вызывающие друг друга.
E>Тем не менее, ты мне не ответил.
Дизайнеры C++ не думали о том, что C++ будут использовать для метапрограммирования. Дизайнеры Nemerle постулировали это с самого начала.
Это, конечно, не отменяет возможности использования Nemerle для чего-то совершенно третьего, о чём ни мы ни разработчики Nemerle не догадываются (чего они не планируют, точнее). И вот это-то и приведёт к проблеме использования неподходящих средств (средств, которые предполагалось использовать иначе) для решения проблемы. Но разговор сейчас о метапрограммировании, я так понимаю
E>Вообще Nemerle славословят, но не используют. Я припоминаю только одного участника обсуждений, который использовал Nemerle вместо Delphi.
Дык он же только-только становится известным. Потерпи чуток
eao197,
E>Но если говорить о Nemerle, скажи мне, в Nemerle есть препятствия для того, чтобы Nemerle не превратили в такую же страшилку?
К счастью для немерлистов препятствия есть. Это здравый смысл конкретного разработчика.
Как подходит программист на C++ к выбору библиотеки? Думает, выбирает, пробует. Если не подходит (кривая, неудобный апи, неэффективная) — откладывает в сторонку и переходит к следующей (или свою пишет).
Точно так же программист на Немерле (Не Перле) будет выбирать библиотеку макросов. Полагаю, что в будущем появятся тысячи синтаксических библиотек, заточенных под различные задачи. Вероятно, с библиотекой, скажем, алгоритмов на графах, будет идти и соответствующая настройка синтаксиса под эту библиотеку. Конечно, и реализация этих макросов будет ранжироваться от "упражнения для продолжающих" до "boost-like".
Картинка получается счастливой, радужной. Примерно как в "Мы" Евгения Замятина...
Здравствуйте, bigger longer and uncut, Вы писали:
BLA>Ну по крайней мере пока некоторые не будут вытеснены монстрами а-ля Maude и ASF+SDF
Maude и ASF+SDF — как я понял, специализированы на переписывании термов, и их использование в качестве универсальных языков, на мой взгляд, должно быть сопряжено с трудностями. Или это не так?