Мелкий холиварчик Nemerle vs. F#
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.05.11 21:53
Оценка:
Тут завелся сайт суть которого сравнения разных вещей (например, теплого с мягким).
Там завели тему Nemerle vs. F#:
http://versusit.ru/viewtopic.php?pid=67441

Кто хочет может поражаться за правое дело .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Мелкий холиварчик Nemerle vs. F#
От: dsorokin Россия  
Дата: 20.05.11 07:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Тут завелся сайт суть которого сравнения разных вещей (например, теплого с мягким).

VD>Там завели тему Nemerle vs. F#:
VD>http://versusit.ru/viewtopic.php?pid=67441

VD>Кто хочет может поражаться за правое дело .


Влад, ты лучше скажи, когда добавите параметрический полиморфизм (параметризация генериков) для типа void? В F# это есть Там используется что-то типа FakeVoid, но делается это совершенно прозрачно для программера. Все это нужно для полноценного использования ComputationExpressions.
Re: Мелкий холиварчик Nemerle vs. F#
От: Воронков Василий Россия  
Дата: 20.05.11 10:20
Оценка: 2 (2) +1
Здравствуйте, VladD2, Вы писали:

VD>Тут завелся сайт суть которого сравнения разных вещей (например, теплого с мягким).

VD>Там завели тему Nemerle vs. F#:
VD>http://versusit.ru/viewtopic.php?pid=67441
VD>Кто хочет может поражаться за правое дело .

Первое же сообщение темы достаточно бредовое. F# никакой не "чистый функциональный", а такой же гибридный, как и Немерле. Да и вообще они весьма похожи, ибо оба сильно завязаны на дотнетную систему типов. Обо что там в F# можно "разломать мозг"? Меня вообще поражает интертность некоторых товарищей. ML-ный синтаксис в действительности *проще*, чем Си-подобный. Он правда проще Чтобы в нем разобраться, нужен час. И из-за этого люди "ломают мозг"?
Re[2]: Мелкий холиварчик Nemerle vs. F#
От: Аноним  
Дата: 20.05.11 10:24
Оценка: +1 :)
Здравствуйте, Воронков Василий, Вы писали:

ВВ> Обо что там в F# можно "разломать мозг"?


Людям без математической подготовки карринг лучше не показывать, заболеют.

ВВ> Меня вообще поражает интертность некоторых товарищей. ML-ный синтаксис в действительности *проще*, чем Си-подобный. Он правда проще Чтобы в нем разобраться, нужен час. И из-за этого люди "ломают мозг"?


Большинство людей не мыслит в таких терминах. Для них все сводится к привычно/не привычно. Собственно, большинство людей не мыслит вообще — разум им заменяет дрессировка, и потому вопрос привычности имеет первостепенное значение.
Re[3]: Мелкий холиварчик Nemerle vs. F#
От: Воронков Василий Россия  
Дата: 20.05.11 10:29
Оценка: -1
Здравствуйте, Аноним, Вы писали:

ВВ>> Обо что там в F# можно "разломать мозг"?

А> Людям без математической подготовки карринг лучше не показывать, заболеют.

Я как-то слабо вижу здесь связь с математической подготовкой

ВВ>> Меня вообще поражает интертность некоторых товарищей. ML-ный синтаксис в действительности *проще*, чем Си-подобный. Он правда проще Чтобы в нем разобраться, нужен час. И из-за этого люди "ломают мозг"?

А> Большинство людей не мыслит в таких терминах. Для них все сводится к привычно/не привычно. Собственно, большинство людей не мыслит вообще — разум им заменяет дрессировка, и потому вопрос привычности имеет первостепенное значение.

Видимо, такие люди вообще не будут изучать какой-либо язык программирования "просто из интереса". Вряд ли "привычный синтаксис" сильно поможет привлечь их к "непривычному языку".
Re[2]: Мелкий холиварчик Nemerle vs. F#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.11 15:01
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Влад, ты лучше скажи, когда добавите параметрический полиморфизм (параметризация генериков) для типа void?


В смысле чтобы можно было void в качестве параметра типов передавать? Скорее всего никогда (если, конечно, это в дотнете не реализует). Дотнет этого не позволяет, а делать фэйк только себе вредить.

D>В F# это есть


В нем много чего есть. От того его и не могут использовать большая часть дотнетчиков. Одна из исходных предпосылок в дизайне Nemerle — это чтобы Nemerle был родным в дотнете. И так хватает того, что в Nemerle есть вариантные типы и type котрых нет в дотнете. Усугоблять не стоит.

D>Там используется что-то типа FakeVoid, но делается это совершенно прозрачно для программера. Все это нужно для полноценного использования ComputationExpressions.


Использование подобной хрени нужно в очень редких случаях. Я его видел исплючительно в коде работающем с монадами. И наружу он не выставляется (вроде бы). Вот и пускай там сидит. Разве что можно его в стандартную библиотеку перенести (если он еще не там). А в язык интегрировать его не стоит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Мелкий холиварчик Nemerle vs. F#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.11 15:06
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, VladD2, Вы писали:


VD>>Тут завелся сайт суть которого сравнения разных вещей (например, теплого с мягким).

VD>>Там завели тему Nemerle vs. F#:
VD>>http://versusit.ru/viewtopic.php?pid=67441
VD>>Кто хочет может поражаться за правое дело .

ВВ>Первое же сообщение темы достаточно бредовое. F# никакой не "чистый функциональный", а такой же гибридный, как и Немерле. Да и вообще они весьма похожи, ибо оба сильно завязаны на дотнетную систему типов.


Согласен. Но что ты тут то это пишешь? Это имеет смысл в ту тему писать.

ВВ>Обо что там в F# можно "разломать мозг"?


Да один синтаксис чего стоит? Это ты тренировался ML-щину читать пару лет. А остальным это на фиг не упало. Даже вызов без скобок (которых, правда, там не много) уже мозг взрывает. В F# подобной хрени пруд пруди.

ВВ>Меня вообще поражает интертность некоторых товарищей. ML-ный синтаксис в действительности *проще*, чем Си-подобный.


Для челочека проще то, что привычнее. Одно то, что в школе учат "сишному" синтаксису уже делает ML-ный синтаксис сложнее. Можешь хоть лоб разбить, но ничего не изменится.

ВВ>Он правда проще Чтобы в нем разобраться, нужен час. И из-за этого люди "ломают мозг"?


Я до сих пор теряю нить Хаскелевских программ где-то на десяткой строке. А я хоть какой-то опыт имею. Остальные, кто не ставил себе задачи во что бы то ни стало изучить ML-ный синтаксис, просто видят в нем кракозябры. Селяви.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Мелкий холиварчик Nemerle vs. F#
От: Аноним  
Дата: 20.05.11 15:26
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>Да один синтаксис чего стоит? Это ты тренировался ML-щину читать пару лет.


Практика показывает, что студентам хватает пары занятий. Правда, они хотя бы отборные, экзамены там всякие сдавали. Думать умеют, и все такое.

VD> Даже вызов без скобок (которых, правда, там не много) уже мозг взрывает.


Это же всего лишь математическая нотация. Кто знает лямбда-исчисление, тот поймет, а кто не знает, тому не стоит программировать.

VD>Для челочека проще то, что привычнее.


Для слабенького человека — да. Для умного проще то, что объективно проще (т.е., имеет более консистентную и компактную модель).

VD> Одно то, что в школе учат "сишному" синтаксису уже делает ML-ный синтаксис сложнее.


В школе вообще Паскалю учат до сих пор в большинстве случаев.

VD>Я до сих пор теряю нить Хаскелевских программ где-то на десяткой строке.


Искренне сочувствую.
Re: Мелкий холиварчик Nemerle vs. F#
От: IT Россия linq2db.com
Дата: 20.05.11 15:55
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Кто хочет может поражаться за правое дело .


Там надо регистрироваться — фсат!
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Мелкий холиварчик Nemerle vs. F#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.11 16:50
Оценка:
Здравствуйте, Аноним, Вы писали:

VD>>Да один синтаксис чего стоит? Это ты тренировался ML-щину читать пару лет.


А> Практика показывает, что студентам хватает пары занятий.


Практика показывает, что 85% студентов программистских специальностей не работает по професси. А те что работают или начинают учиться программированию параллельно обучению в вузах, или начинают делать это уже на работчем месте (за счет работодателя).

Это ваша практика ничего не показывает. Студенты и основную программу осваивают очень плохо, а разные изыски вроде ML просто походят мимо. Есть, конечно, отдельные исключения, но на то они и исключения.

Ну, на 99% программистов на сегодня имеет реальный опыт программирования на С-подобных языках или на Паскале-подобных.

А>Правда, они хотя бы отборные, экзамены там всякие сдавали. Думать умеют, и все такое.


Думать, в определенных объемах, умеет как минимум половина программистов. Но привычки есть привычки. После 5 лет программирвоания на C#/Java/C++ языки с синтаксисом ML даются крайне тяжело.

И вы можете говорить что угодно, но это банально противоречит реальной действительности.

Меж тем в МЛ есть не мало полезных фич (паттерн-матчинг, АлгТД). Куда проще встроить их в язык с привычным синтаксисом и не пытаться переломить привычки людей.

Опыт Немерла и Скалы показывает, что сам по себе ML-ый синтаксис на практике ничего не дает. Все те же возможности можно получить и в языках со скобочной нотацией.

VD>> Даже вызов без скобок (которых, правда, там не много) уже мозг взрывает.


А> Это же всего лишь математическая нотация.


Вранье. Я еще помню как хотил в школу. Там использовали скобки.

А>Кто знает лямбда-исчисление, тот поймет, а кто не знает, тому не стоит программировать.


Лямбда-исчисления? Это речь идет о теории Черча? Зачем она всем программистам? Программистам достаточно того что из этой теории проистекает. Например, появление лямбд в C# 3.0. Для использования C# 3.0 совершенно не нужно знать теорию Черча. Достаточно небольшой статьи и нескольких примеров.


VD>>Для челочека проще то, что привычнее.


А> Для слабенького человека — да. Для умного проще то, что объективно проще (т.е., имеет более консистентную и компактную модель).


Ну вы — возомнившие себя суперменами, когда напишите столько полезного кода как орды этих "слабеньких", тогда и обсудим вашу крутость и их слабость. А пока будем отталкиваться от того, что есть куча не самых тупых людей которые просто не привыкли к синтаксису ML-я и не хотят к нему привыкать.

VD>> Одно то, что в школе учат "сишному" синтаксису уже делает ML-ный синтаксис сложнее.


А> В школе вообще Паскалю учат до сих пор в большинстве случаев.


Я про уроки математике в 1-7 классах, а не про диковинные уроки информатики на которых преподают редкостную ересь.
В прочем, "Паскалевский синтаксис" — это тот же сишный синтаксис, так как там используются все те же скобки для вызова функций. Он не имеет координальных отличий. Простые смертные спокойно переобучаются с Паскаля на С и обратно. И в то же время плюются на ML-ый бесскобочный.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Мелкий холиварчик Nemerle vs. F#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.11 16:51
Оценка:
Здравствуйте, IT, Вы писали:

VD>>Кто хочет может поражаться за правое дело .


IT>Там надо регистрироваться — фсат!


Согласен. Странное ограничения для ресурса который хочет раскрутиться на флэймовых темах.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Мелкий холиварчик Nemerle vs. F#
От: dsorokin Россия  
Дата: 20.05.11 17:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, dsorokin, Вы писали:


VD>Использование подобной хрени нужно в очень редких случаях. Я его видел исплючительно в коде работающем с монадами. И наружу он не выставляется (вроде бы). Вот и пускай там сидит. Разве что можно его в стандартную библиотеку перенести (если он еще не там). А в язык интегрировать его не стоит.


Ну, вот. Такой облом. Это нужно не только для монад. Для полиморфных функций тоже. Фишка в том, что программисты на Немерле разницы большой не заметят. Просто void будет незаметно подменяться классом FakeVoid. Будет более логически законченная вещь — тип void будет приравнен к остальным типам. А C#-перы пусть мучаются
Re[5]: Мелкий холиварчик Nemerle vs. F#
От: Аноним  
Дата: 20.05.11 17:54
Оценка: :))
Здравствуйте, VladD2, Вы писали:

VD>Меж тем в МЛ есть не мало полезных фич (паттерн-матчинг, АлгТД). Куда проще встроить их в язык с привычным синтаксисом и не пытаться переломить привычки людей.


Самая полезная фича ML — карринг. А для нее лучше все же безскобочный синтаксис.

Да и ну их всех на фиг, людей, зависимых от привычек. От негибких умов пользы мало.

VD>Опыт Немерла и Скалы показывает, что сам по себе ML-ый синтаксис на практике ничего не дает. Все те же возможности можно получить и в языках со скобочной нотацией.


Карринг!

VD>Вранье. Я еще помню как хотил в школу. Там использовали скобки.


А что, в школе математику учат? Экая новость!

VD>Лямбда-исчисления? Это речь идет о теории Черча? Зачем она всем программистам? Программистам достаточно того что из этой теории проистекает. Например, появление лямбд в C# 3.0. Для использования C# 3.0 совершенно не нужно знать теорию Черча. Достаточно небольшой статьи и нескольких примеров.


Для программирования вообще надо знать значительную часть дискретки. В том числе и самые основы — лямбда-исчисление, комбинаторную логику, Марковские алгорифмы, машину Тьюринга, и т.п.

Я не могу себе представить, как можно браться за программирование без этих базовых знаний.
Re[6]: Мелкий холиварчик Nemerle vs. F#
От: WolfHound  
Дата: 20.05.11 18:25
Оценка: +3
Здравствуйте, <Аноним>, Вы писали:

А> Самая полезная фича ML — карринг. А для нее лучше все же безскобочный синтаксис.

Карринг не нужен.
По сравнению с немерловым подходом он ничего не дает и при этом мешает перегрузке.
Что сразу приводит к невозможности использовать библиотеки .НЕТ.
Ну и нафига козе баян?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Мелкий холиварчик Nemerle vs. F#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.11 18:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Самая полезная фича ML — карринг.


Это полная чушь. Карринг не более чем одна из возможных реализаций идеи частичного применения функций. Тот факт, что в том же немеле (и похоже в Скале) есть частичное применение функций, но нет карринага уже опровергает твое утверждение.

Далее обсуждать просто не чего.

А> Да и ну их всех на фиг, людей, зависимых от привычек. От негибких умов пользы мало.


Мы поступим проще. Пошлем на фиг тех кого меньше и кто безапелляционно несет полную чушь.

А> А что, в школе математику учат? Экая новость!


А ты в нее не ходил? Или забыл, что ли? Я тебе напомню. В первом классе проходят арифметику. Где-то класса с 4-го функции и т.п. Вот там скобки и вылезают. А привычка с 4-го класса — это очень сильная привычка. Для многих не преодолимая.

А> Для программирования вообще надо знать значительную часть дискретки.


Гы-гы. Расскажи это тем кто пишет сайты и автоматизирует учет на предприятиях. А из где-то 90% у нас в стране.

А>В том числе и самые основы — лямбда-исчисление, комбинаторную логику, Марковские алгорифмы, машину Тьюринга, и т.п.

А> Я не могу себе представить, как можно браться за программирование без этих базовых знаний.

А что тут представлять то? Даже те кто это когда-то знал (а большая часть тупо проспали это в универах) забывает всю эту заумную муру где-то через 5-10 лет работы в областях где она не нужна. А таких областей большинство.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Мелкий холиварчик Nemerle vs. F#
От: para  
Дата: 20.05.11 19:09
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А> Большинство людей не мыслит в таких терминах. Для них все сводится к привычно/не привычно. Собственно, большинство людей не мыслит вообще — разум им заменяет дрессировка, и потому вопрос привычности имеет первостепенное значение.

дрессированные немерлисты?

все люди разные [в контексте программирования]. В чём-то у вас лучше, в чём-то у другого, при одном уровне. кто-то известный сказал — "почему же вы так бедны, раз вы так умны". ничего личного, но определённый уровень типа хаскеля требует "определённый" склада ума.
как не все люди рождаются программистам, так и не все хаскелистами и тут нет зависимости от "привычно/не привычно". это конечно обучаемый навык но не всем так просто, как наверное Вам.
Re[7]: Мелкий холиварчик Nemerle vs. F#
От: Воронков Василий Россия  
Дата: 20.05.11 19:33
Оценка:
Здравствуйте, VladD2, Вы писали:

А>> Самая полезная фича ML — карринг.

VD>Это полная чушь. Карринг не более чем одна из возможных реализаций идеи частичного применения функций. Тот факт, что в том же немеле (и похоже в Скале) есть частичное применение функций, но нет карринага уже опровергает твое утверждение.

Каррирование можно сделать на любом языке с замыканиями. А в Скале кстати можно сразу объявлять функции как каррированные. Это делается с помощью нотации def sum(x)(y) { ... }
Re[7]: Мелкий холиварчик Nemerle vs. F#
От: Воронков Василий Россия  
Дата: 20.05.11 19:37
Оценка: +2 -1
Здравствуйте, WolfHound, Вы писали:

А>> Самая полезная фича ML — карринг. А для нее лучше все же безскобочный синтаксис.

WH>Карринг не нужен.
WH>По сравнению с немерловым подходом он ничего не дает и при этом мешает перегрузке.
WH>Что сразу приводит к невозможности использовать библиотеки .НЕТ.
WH>Ну и нафига козе баян?

Каррирование дает удобную форму для поинт-фри и для построения комбинаторов. Собственно, поинт-фри естественным образом проистекает из факта каррированности функций. Да и перегрузке по типу он не особо-то и мешает.
Re[7]: Мелкий холиварчик Nemerle vs. F#
От: dsorokin Россия  
Дата: 21.05.11 04:44
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, <Аноним>, Вы писали:


А>> Самая полезная фича ML — карринг. А для нее лучше все же безскобочный синтаксис.

WH>Карринг не нужен.
WH>По сравнению с немерловым подходом он ничего не дает и при этом мешает перегрузке.
WH>Что сразу приводит к невозможности использовать библиотеки .НЕТ.
WH>Ну и нафига козе баян?

Наоборот, карринг чертовски полезен в F#. С помощью него легко строить потоковую обработку. Многие функции специально имеют такой порядок аргументов, чтобы удобнее было пользоваться каррингом. Одна из моих любимых фич F#. Получается очень функционально.

    let makeClickable (n: IDiagramNode) (w: IObservable<UIElement option>) =

        w |> Observable.filter Option.isSome 
          |> Observable.map Option.get
          |> Observable.map (fun e -> e.MouseLeftButtonDown :> IObservable<_>)
          |> Observable.concat
          |> Observable.subscribe (fun e -> ...)
Re[8]: Мелкий холиварчик Nemerle vs. F#
От: WolfHound  
Дата: 21.05.11 08:06
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Наоборот, карринг чертовски полезен в F#. С помощью него легко строить потоковую обработку. Многие функции специально имеют такой порядок аргументов, чтобы удобнее было пользоваться каррингом. Одна из моих любимых фич F#. Получается очень функционально.

Аналог не немерле:
    def makeClickable (n: IDiagramNode, w: IObservable[UIElement, option])
    {
        w .Filter(Option.isSome)
          .Map(Option.get)
          .Map(e => e.MouseLeftButtonDown :> IObservable[_])
          .Concat()
          .Subscribe(e => ...)
    }

Как видишь, получилось даже короче.
Карринг не нужен.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.