Re[11]: "LINQ как шаг к ФП". Стиль изложения.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 29.01.09 08:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Тогда нужно было просто говорить о заблуждениях.

VD>Как примеры, тем более мелкие, помогут развенчать заблуждение?

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

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


Ну, зачем так грубо? LaPerouse не блаб, все мы заблуждаемся. И целью моей был вовсе не спор, а желание показать функциональный подход на примере одного алгоритма. Поэтому спорить с ним было совсем не трудно: изначально LaPerouse говорил о том, что функциональный код выльется в ужас, но затем признал, что это не так — вполне адекватный человек, мне приятно было с ним общаться.

Что касается самого замечания о том, что бороться надо с причиной — как ты предлагаешь это сделать? Т.е. чем плохи маленькие примеры? Они вроде как призваны продемонстрировать функциональный подход на примере решения маленьких задач, чтобы не отвлекаться на всякие не относящиеся к этому мелочи, которые сразу появляются, как только мы берём что то большее. Почему результат будет хуже?

Главный вопрос, конечно, как ты предлагаешь это сделать?
Re[15]: "LINQ как шаг к ФП". Стиль изложения.
От: LaPerouse  
Дата: 29.01.09 08:46
Оценка: :)
Здравствуйте, thesz, Вы писали:

LP>>как видишь, алгоритм чисто императивный, используется мутабельная Scheme. Наиболее разумно на каждом шаге рекурсии модифицировать именно существующую схему, это разумнее, чем собирать новую.


T>Теперь представь, что тебе надо оценивать изменения. Алгоритм преобразования такой, что не всегда даёт оптимизирующее преобразование. Ну, так случилось.


Накаркал, блин. Нужно использовать новый алгоритм (итерационный метод спуска и подъема), нужно оценивать историю изменений, причем не просто всей схемы, а и для ее отдельных участков, причем сделать надо быстро. Начал рефакторить схему на на immutable, потому что в том виде, в котором она сейчас реализована со связкой по состоянию получается слишком печально. Связку по состоянию на INode выкинул. Причем старые императивные интерфейсы остались, так что имеющиеся алгоритмы переписывать не надо. Посмотрим, что получится, и поможет ли это мне. По результатам отпишусь.

PS: На остальные вопросы в данной теме отвечать пока времени нет, скажу лишь, что по поводу монады IO у меня мнение не изменилось.
... << RSDN@Home 1.2.0 alpha 4 rev. 1089>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[15]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 20:45
Оценка: :)
Здравствуйте, lomeo, Вы писали:

VD>>Ну, а сравнить Хаскель с чем-то более высокоуровенвым и приемущество как-то сразу улетучивается.


L>Сравнивал. Если ты про Скала/Немерле, то не улетучивалось.


Да его просто нет. Вот когда начнете Хаскель хотя бы с ОКамлом сравнивать (которому до перечисленных языков довольно долеко), тогда можно будет о чем-то поговорить. А то ваши рассуждения по жизни строятся на базе демонстрации преимущества Хаскеля перед С++, а потом все остальные языки тупо принимаются за равные С++.

Конечно у Хаскеля не может не быть своих преимуществ, как у любого хоть что-то стоящего языка. Но и у других языков они тоже есть. Выигрывая в одном проигрываешь в другом. Это неизбежно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 20:47
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>А "требуется" как правило определяется мышлением, привязанным к тому самому другому языку.


Ну, еще такими мелочами как производительностью и необходимостью писать много кода большими коллективами.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 20:50
Оценка: +1
Здравствуйте, LaPerouse, Вы писали:

LP>Честно говоря я имею о Ocaml лишь отдаленное представление (смотрел где-то год назад F#), какое-то определенное мнение не смог составить. Не думаю, что для него существует поддержка платформы java, сравнимая со Scala, которая только для jvm и разрабоатывается. Так что если выбирать между ними, то конечно, выберу Scala — уже только из практических соображений.


ОКамл и Скалу нужно не "посмотреть", а изучить, осознать и научиться эффективно применять. Это другой взгляд на написания кода, как минимум внутри методов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 20:52
Оценка:
Здравствуйте, D. Mon, Вы писали:

LP>>а он есть под jvm? я имею ввиду полноценный компилятор, а не разные хадкорные интеропы


DM>http://cafesterol.x9c.fr/

DM>?

Думаю, что у этого чуда будут те же проблемы, что у F#-а. Системы типов ОКамла больно не совместима с Явовской. Поэтому Скала будет намного удобнее, и что немаловажно, проще в освоении.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: "LINQ как шаг к ФП". Стиль изложения.
От: VoidEx  
Дата: 29.01.09 20:54
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>>>Ну, а сравнить Хаскель с чем-то более высокоуровенвым и приемущество как-то сразу улетучивается.


L>>Сравнивал. Если ты про Скала/Немерле, то не улетучивалось.


VD>Да его просто нет. Вот когда начнете Хаскель хотя бы с ОКамлом сравнивать (которому до перечисленных языков довольно долеко), тогда можно будет о чем-то поговорить. А то ваши рассуждения по жизни строятся на базе демонстрации преимущества Хаскеля перед С++, а потом все остальные языки тупо принимаются за равные С++.


VD>Конечно у Хаскеля не может не быть своих преимуществ, как у любого хоть что-то стоящего языка. Но и у других языков они тоже есть. Выигрывая в одном проигрываешь в другом. Это неизбежно.


Ты сейчас вот на ноль поделил или просто сказал, что Немерле, Скала и Хаскель абсолютно идентичны?
Re[12]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 21:22
Оценка: 16 (2)
Здравствуйте, lomeo, Вы писали:

VD>>Тогда нужно было просто говорить о заблуждениях.

VD>>Как примеры, тем более мелкие, помогут развенчать заблуждение?

L>Я уже думал о том, что нужен какой нибудь небольшой проект и серия статей о его реализации.


Я вот попытался сделать такой проект и описал его здесь
Автор(ы): Владислав Чистяков aka VladD2
Дата: 17.07.2008
Статья демонстрирует разработку реального приложения на Nemerle на примере создания простого генератора отчетов. Кроме того, в статье показана работа
с XML средствами LINQ to XML.
.
Проект не большой (по крайней мере для языка поддерживающего ФП), но при этом вполне себе реальный.
В нем затрагиваются важные для людей вещи вроде обработки ХМЛ-я, создания простенького интерпретатора выражений и даже взаимодействия с MS Office.
Было бы интересно поглядеть на реализацию этого же проекта средствами того же Хаскеля.

L>Ну, зачем так грубо? LaPerouse не блаб, все мы заблуждаемся.


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

L>И целью моей был вовсе не спор, а желание показать функциональный подход на примере одного алгоритма. Поэтому спорить с ним было совсем не трудно: изначально LaPerouse говорил о том, что функциональный код выльется в ужас, но затем признал, что это не так — вполне адекватный человек, мне приятно было с ним общаться.


В общем, да. Но в результате он все равно остался на своих позициях. Тут мало просто посмотреть на то что напишет другой человек. Тут важно самому написать тоже самое.

L>Что касается самого замечания о том, что бороться надо с причиной — как ты предлагаешь это сделать?


На мой взгляд есть только два подхода. Оба я попытался воплотить в статях. Одну в обсуждаемой здесь, в которой попытался на пальцах и в непринужденной обстановке объяснить людям как можно мыслить функционально и писать функциональный код на привычном им языке (C# в данном случае). О том как можно извлечь выгоду из ФП в реальной жизни.
Второй описание более менее реальных приложений. Это я попытался сделать в статье Разработка простого генератора отчетов с помощью Nemerle и System.Xml.Linq
Автор(ы): Владислав Чистяков aka VladD2
Дата: 17.07.2008
Статья демонстрирует разработку реального приложения на Nemerle на примере создания простого генератора отчетов. Кроме того, в статье показана работа
с XML средствами LINQ to XML.
.
Насколько попытки удачны, я судить не могу в виду пристрастности. Но мне кажется, что именно это верный подход.

Причина неприятия людьми ФП очень проста. Они не понимаю о чем идет речь, но точно знаю, что на бесплатный сыр бывает только в мышеловке. Оценить показываемое они не могут и подозревают, что их разводят очередной рекламой. Причем многие горе-пропагандисты и правда конкурируют по невероятности обещаний с самыми бездарными рекламами. Когда же их просят что-то показать, они вываливают тонны трюков и финтов ушами, которые может и выглядит круто для посвященного, но для стороннего наблюдателя выглядят даже не как магия, а как непонятные пассы руками. А это скорее отвращает нежели подвигает. Вот и выходит, что большая часть прибившихся к ФП — это впечатлительные и доверчивые люди, а сам ФП из научного или технологического подхода превращается религию в которую надо тупо верить.

L>Т.е. чем плохи маленькие примеры?


Просто бессмысленны. Особенно если при этом не объясняется как надо мыслить, чтобы решать эту задачу.

L>Они вроде как призваны продемонстрировать функциональный подход на примере решения маленьких задач, чтобы не отвлекаться на всякие не относящиеся к этому мелочи, которые сразу появляются, как только мы берём что то большее. Почему результат будет хуже?


Проблема в том, что люди которые хотят удивить преимущества в таких примерах ровным счетом ничего не видят. Для объяснения того что такое map нужен совсем простой пример. Один цикл. Вот вам Сишный for, а вот как его можно записать с использованием функции. А чтобы продемонстрировать преимущества надо взять какую-то не синтетическую идею и рассказать о том как ее спроектировать и реализовать. При этом надо делать по меньше финтов ушами. ДСЛ-и и прочие выпендрежей — это продвинутый курс.

L>Главный вопрос, конечно, как ты предлагаешь это сделать?


Как раз это я и описал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: "LINQ как шаг к ФП". Стиль изложения.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 29.01.09 23:10
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Сравнивал. Если ты про Скала/Немерле, то не улетучивалось.


VD>Да его просто нет.


А зачем тогда нижевыделенное написал?

VD>Конечно у Хаскеля не может не быть своих преимуществ, как у любого хоть что-то стоящего языка. Но и у других языков они тоже есть. Выигрывая в одном проигрываешь в другом. Это неизбежно.


Поэтому и не улетучивалось.

Больше флудить и письками меряться не хочется.
Re[17]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 23:35
Оценка:
Здравствуйте, lomeo, Вы писали:

L>А зачем тогда нижевыделенное написал?


VD>>Конечно у Хаскеля не может не быть своих преимуществ, как у любого хоть что-то стоящего языка. Но и у других языков они тоже есть. Выигрывая в одном проигрываешь в другом. Это неизбежно.


А что не ясно разве? Нет какого-то глобального приемущества позволяющего делать что-то, что нельзя делать на другом языке. На каждый выпендреж найдется другой. Оценить что круче очень не просто да и бессмысленно.

L>Поэтому и не улетучивалось.

L>Больше флудить и письками меряться не хочется.

Ну, так и не надо это делать. Просто признайте, что преимущество дает не Хаскель а функциональный подход и удобство его применения в некоторых языках. Единственное реальное отличие Хаскля — это ленивость по умолчанию. Вот только это где-то преимущество, где-то недостаток. В общем, весьма спорный дизайнерский ход.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.01.09 23:38
Оценка:
Здравствуйте, VoidEx, Вы писали:

L>>Влад, захочешь пообщаться — прекращай троллить.


VE>Боюсь, что он не тролль.


А что в этом страшного?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: "LINQ как шаг к ФП". Стиль изложения.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 30.01.09 09:04
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я вот попытался сделать такой проект и описал его здесь
Автор(ы): Владислав Чистяков aka VladD2
Дата: 17.07.2008
Статья демонстрирует разработку реального приложения на Nemerle на примере создания простого генератора отчетов. Кроме того, в статье показана работа
с XML средствами LINQ to XML.
.

VD>Проект не большой (по крайней мере для языка поддерживающего ФП), но при этом вполне себе реальный.
VD>В нем затрагиваются важные для людей вещи вроде обработки ХМЛ-я, создания простенького интерпретатора выражений и даже взаимодействия с MS Office.

Интересно, спасибо, обязательно почитаю.

VD>Было бы интересно поглядеть на реализацию этого же проекта средствами того же Хаскеля.


Чуть позже отпишу, сначала прочту

VD>В общем, да. Но в результате он все равно остался на своих позициях.


Ну, не совсем так, но в целом ты прав, наверное.

L>>Что касается самого замечания о том, что бороться надо с причиной — как ты предлагаешь это сделать?


VD>На мой взгляд есть только два подхода.

VD>Насколько попытки удачны, я судить не могу в виду пристрастности. Но мне кажется, что именно это верный подход.

Я с трудом могу видеть отличия первого подхода и маленьких примеров, но со вторым подходом согласен, что он должен быть удачен. Если, конечно, принимать во внимание, что если человек не хочет, его хрен чему научишь

VD>Причина неприятия людьми ФП очень проста. Они не понимаю о чем идет речь, но точно знаю, что на бесплатный сыр бывает только в мышеловке. Оценить показываемое они не могут и подозревают, что их разводят очередной рекламой.


Мы все проходили этап "непонимания ФП". Я не помню, чтобы у меня было ощущение развода. Помню, что я пожимал плечами и говорил, что прекрасно без всего этого обхожусь и в дальнейшем обойдусь замечательно. Ява (нужное подставить) не самый лучший язык, но лучше пока не придумали — и всё в таком духе. Потом я познакомился со Смолтолком. Мне стали неприятны ситуации, когда, например, надо выбирать между boilerplate и использованием анонимных классов и пр. Я почитал Хьюза и схожие статьи, где показывалось избавление от подобных проблем с помощью ФВП. Я подсел на Схему и даже несколько раз мне удалось применить её в работе. Она рулила неимоверно по сравнению с Явой. Дальше — больше.

Т.е. общий смысл такой — чтобы понять, что тебе нужно что-то новое, тебе надо почувствовать сначала, что старого не хватает. Так вот примеры Булата для людей, которые почувствовали что старого не хватает, понюхали ФП, но освоиться с ним ещё не успели. Это — закрепление материала. Те, кому всего хвата и читать то этот тред не будут. Но это только следствие моего опыта, обобщение, так что я могу и ошибаться.

VD>Причем многие горе-пропагандисты и правда конкурируют по невероятности обещаний с самыми бездарными рекламами. Когда же их просят что-то показать, они вываливают тонны трюков и финтов ушами, которые может и выглядит круто для посвященного, но для стороннего наблюдателя выглядят даже не как магия, а как непонятные пассы руками. А это скорее отвращает нежели подвигает. Вот и выходит, что большая часть прибившихся к ФП — это впечатлительные и доверчивые люди, а сам ФП из научного или технологического подхода превращается религию в которую надо тупо верить.


Мой опыт говорит, что это не так. Знакомые мне ФП программисты вовсе не впечатлительные и доверчивые — это умные и интересные люди.

VD>Просто бессмысленны. Особенно если при этом не объясняется как надо мыслить, чтобы решать эту задачу.


Насчёт того, что надо объяснять как мыслить — полностью согласен.
Re[18]: "LINQ как шаг к ФП". Стиль изложения.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 30.01.09 09:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, так и не надо это делать. Просто признайте, что преимущество дает не Хаскель а функциональный подход и удобство его применения в некоторых языках. Единственное реальное отличие Хаскля — это ленивость по умолчанию. Вот только это где-то преимущество, где-то недостаток. В общем, весьма спорный дизайнерский ход.


Ну, хорошо, скажем так: "Хаскель даёт следующие преимущества — бла-бла-бла, при этом он обладает следующими недостатками — бла-бла-бла. В большом количестве задач, которые я решаю, преимущества перевешивают недостатки значительнее, чем, скажем у Немерле/Скала". Это IMHO — о чём тут спорить?

Про ленивость отдельная песня. Смысл в том, что не конкретно ленивость, а набор нескольких свойств (система типов, ФВП, безскобочная запись, даже do-нотацию) делают из Хаскеля Хаскель. Ленивость есть не только в Хаскеле, как и любое из других свойств, но именно этот набор формирует такой язык и поощряет такое написание программ. Как и в любом другом языке. Какой набор подходит для твоей задачи — выбирать тебе. Примерно так.
Re[18]: "LINQ как шаг к ФП". Стиль изложения.
От: thesz Россия http://thesz.livejournal.com
Дата: 30.01.09 09:24
Оценка:
VD>>>Конечно у Хаскеля не может не быть своих преимуществ, как у любого хоть что-то стоящего языка. Но и у других языков они тоже есть. Выигрывая в одном проигрываешь в другом. Это неизбежно.
VD>А что не ясно разве? Нет какого-то глобального приемущества позволяющего делать что-то, что нельзя делать на другом языке. На каждый выпендреж найдется другой. Оценить что круче очень не просто да и бессмысленно.

Ну нет глобального. Но есть куча локальных. Так языки-то и сравниваются по их помощи в решении разных задач.

L>>Поэтому и не улетучивалось.

L>>Больше флудить и письками меряться не хочется.
VD>Ну, так и не надо это делать. Просто признайте, что преимущество дает не Хаскель а функциональный подход и удобство его применения в некоторых языках.

Увы, именно Хаскель. С его ленивостью, чистотой и практически уникальной системой типов.

VD>Единственное реальное отличие Хаскля — это ленивость по умолчанию. Вот только это где-то преимущество, где-то недостаток. В общем, весьма спорный дизайнерский ход.


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

Ограничения, они полезны.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[19]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.01.09 13:38
Оценка: :))
Здравствуйте, lomeo, Вы писали:

L>Ну, хорошо, скажем так: "Хаскель даёт следующие преимущества — бла-бла-бла, при этом он обладает следующими недостатками — бла-бла-бла. В большом количестве задач, которые я решаю, преимущества перевешивают недостатки значительнее, чем, скажем у Немерле/Скала".


Ну, а в большинстве задач окружающих все с точностью до наоборот. Одна возможность использования платформ (явы и дотнета) чего стоит?

L>Это IMHO — о чём тут спорить?


Казалось бы не к чему. Но вы же постоянно спорите. У меня не было бы претензий если бы вы говорили, что Хачкель один из лучших ФЯ. Что он чистый и т.п. Но вы же все время просто таки втираете, что он лучший, что он на голову лучше всего окружающего и т.п. По крайней мере у меня складывается такое впечатление.

L>Про ленивость отдельная песня. Смысл в том, что не конкретно ленивость, а набор нескольких свойств (система типов, ФВП, безскобочная запись, даже do-нотацию) делают из Хаскеля Хаскель.


Все это компромиссные решения имеющие как достоинства так и недостатки. Большинству кто хочет писать софт для современных корпораций скорее будет нужно чтобы язык поддерживал систему типов Явы или дотнета. Потом есть такие фишки как компонентность о которой при разработке Хаскеля просто не задумывались.

L>Ленивость есть не только в Хаскеле, как и любое из других свойств, но именно этот набор формирует такой язык и поощряет такое написание программ. Как и в любом другом языке.


Только, не только. Других хоть немного популярных языков с ленивостью по умолчанию я не знаю. А ленивость конечно есть много где. Даже, как не странно, в C# и С++.

L>Какой набор подходит для твоей задачи — выбирать тебе. Примерно так.


С такой постановкой я в жизни бы не поспорил. Но ты почитай свои же, и другие рассуждения о Хаскеле. Вы же не говорите, что это вам нравится или вам подходит для ваших задач? У вас получается просто таки безальтернативный выбор. Некоторые заходят настолько далеко, что начинают приписывать ленивость к обязательным свойствам ФП.

Мне тут не редко орлы вроде еао197 или АВК говорили, что я мол слишком сильно толкаю Немерле. Но ёлы-палы! Где я предлагал его использовать без оглядки на задачи и условия? Я сразу говорю, что если вы седите на Яве, то ваш билет в мир ФП — это Скала. Если в дотнете, то Nemerle, F# и даже C# с LINQ. Если вам нужны компилируемые в нэйтив модули, то выбор совсем другой. Тут уже нужно выбирать между Хаскелем, ОКамлом, Лиспом и т.п. Причем Хаскель сразу не проходит если речь идет высокопроизводительных вычислений, но может быть предпочтительнее если нужно получить более высокоуровневые абстракции. Кстати, Хаскель идет лесом и в случае если людям нужен классический ООП. Тут ОКамл будет куда приемлемее.

А посмотри что вы вытворяете?... Парень спрашивает как ему С на C# перевести, а ему отвечают, что есть такая замечательная штука как экстер-си в С++ и Хасклевый экспорт. Это вообще вменяемый ответ?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.01.09 13:56
Оценка:
Здравствуйте, thesz, Вы писали:

T>Ну нет глобального. Но есть куча локальных. Так языки-то и сравниваются по их помощи в решении разных задач.


Тет никакой кучи. 1-2 приемущества при рассмотрении конкретной задачи. А в другой 2-5 недостатков.


L>>>Поэтому и не улетучивалось.

L>>>Больше флудить и письками меряться не хочется.
VD>>Ну, так и не надо это делать. Просто признайте, что преимущество дает не Хаскель а функциональный подход и удобство его применения в некоторых языках.

T>Увы, именно Хаскель. С его ленивостью, чистотой и практически уникальной системой типов.


Верь в свою религию сколько тебе влезет. Это не более чем фанатизм.

T>Синтаксис, система типов. Нигде нет такой удобной. Последняя вынуждена была стать такой из-за ленивости.


Опять же очень спорное решение сильно осложняющее использование компонентного подхода.

T>Ограничения, они полезны.


Кому как. Кому-то было бы полезно упростить свой код за счет использования ФП в рамках выбранной платформы. Посему для явщиков Скала будет лучшим выбором, а для дотнета будет лучшим выбором Немерле.
Кому-то захочется мощных макросов. Для них лубшим выбором будет Лисп или тот же Немерле. А кому-то нужен быстрый нэйтивный код. Для него ОКамл будет лучшим выбором.

Программа на всех перечисленных языках и при одинаково высоком уровне разработчика (в бласти выбранного язык) будет приблизительно сходного объема и понятности. Просто подходы будут кое где разные. Хаскелист где-то будет вынужден прибегнуть к кодированию на С/С++. Лиспер будет использовать макры. Хаскелист ленивость вычислений...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.01.09 14:15
Оценка:
Здравствуйте, lomeo, Вы писали:

VD>>Было бы интересно поглядеть на реализацию этого же проекта средствами того же Хаскеля.


L>Чуть позже отпишу, сначала прочту


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

L>Я с трудом могу видеть отличия первого подхода и маленьких примеров, но со вторым подходом согласен, что он должен быть удачен. Если, конечно, принимать во внимание, что если человек не хочет, его хрен чему научишь


Если не хочет, то конечно. Но я вот вспоминаю как я пытался въехать в ФП и с чем я сталкивался. Воспоминания не из приятных.
ФП хорошо осваивают люди с сильной математической подготовкой. Но таких в наше время еденицы.
Изложение тематики ФП очень часто бывает очень косноязычное и заумное. Как в математики "ля-ля-ля из чего очевидно следует..." и 20 страниц суровых формул.

С чего скажем начинается изучение того же Хасклеля? С примера паттерн-матчинга на списках. Типа ща мы удивим блаба супер короткой быстрой сортировкой. А он тупо смотрит и нихрена не понимает. Ведь ему не объяснили, что такое паттерн-матчинг. Как на него смотреть. Как это работает...
В общем, обучение плавания путем сталкивания с корабля в воду.

L>Мы все проходили этап "непонимания ФП". Я не помню, чтобы у меня было ощущение развода. Помню, что я пожимал плечами и говорил, что прекрасно без всего этого обхожусь и в дальнейшем обойдусь замечательно. Ява (нужное подставить) не самый лучший язык, но лучше пока не придумали — и всё в таком духе. Потом я познакомился со Смолтолком. Мне стали неприятны ситуации, когда, например, надо выбирать между boilerplate и использованием анонимных классов и пр. Я почитал Хьюза и схожие статьи, где показывалось избавление от подобных проблем с помощью ФВП. Я подсел на Схему и даже несколько раз мне удалось применить её в работе. Она рулила неимоверно по сравнению с Явой. Дальше — больше.


Когда мне показали тот же кивк сорт и когда я понял, что он сильно отличается от аналога на С с которым проводилось сравнение у меня ощущение развода возникло. Потом ты описываешь свой пут обучения. Конечно если кто-то взялся за дело и был достаточно упорным, то он своего добился. Но большинство людей просто не дойдут до обучения.

Вот если бы ФП можно было легко использовать в Шарпе или Яве, то они может и попробовали бы при наличии внятного объяснения. А так... Не ужели не ясно, что Хаскель и Схема совершенно "враждебын" человеку писавшему до этого только на С++ или Паскале?

Лично я считаю, что огромная заслуга авторов Скалы и Немерла именно в том, что они смогли поместить полноценные ФЯ в облик ООЯ с привычным синтаксисом. О ЛИНК-е вообще даже говорить не чего. Это просто кусок ФП прямо во вдоску императивном языке.

L>Т.е. общий смысл такой — чтобы понять, что тебе нужно что-то новое, тебе надо почувствовать сначала, что старого не хватает. Так вот примеры Булата для людей, которые почувствовали что старого не хватает, понюхали ФП, но освоиться с ним ещё не успели. Это — закрепление материала. Те, кому всего хвата и читать то этот тред не будут. Но это только следствие моего опыта, обобщение, так что я могу и ошибаться.


Ну, ты не видишь, что ли, что ты один из тысячи кто дошел к вершине этого, казалось бы, не высокого холмика? Или ты как еао187 считашь, что проблем с пониманием ФП нет как класс?

VD>>Причем многие горе-пропагандисты и правда конкурируют по невероятности обещаний с самыми бездарными рекламами. Когда же их просят что-то показать, они вываливают тонны трюков и финтов ушами, которые может и выглядит круто для посвященного, но для стороннего наблюдателя выглядят даже не как магия, а как непонятные пассы руками. А это скорее отвращает нежели подвигает. Вот и выходит, что большая часть прибившихся к ФП — это впечатлительные и доверчивые люди, а сам ФП из научного или технологического подхода превращается религию в которую надо тупо верить.


L>Мой опыт говорит, что это не так. Знакомые мне ФП программисты вовсе не впечатлительные и доверчивые — это умные и интересные люди.


Это разные люди. Но многие прагматичные и весьма не глупые люди так и не освоили ФП. Хотя многие из них и хотели этого всей душой.

VD>>Просто бессмысленны. Особенно если при этом не объясняется как надо мыслить, чтобы решать эту задачу.


L>Насчёт того, что надо объяснять как мыслить — полностью согласен.


Ну, а где это можно найти в материалах об ФП? Большая их часть пишется людьми уже утратившими воспоминания о том, как они мыслили до знакомства с ФП или даже людьми которые всю жизнь так мыслили и никогда не мыслили императивно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: "LINQ как шаг к ФП". Стиль изложения.
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 30.01.09 14:58
Оценка: +1
Здравствуйте, VladD2, Вы писали:

L>>Это IMHO — о чём тут спорить?

VD>Казалось бы не к чему. Но вы же постоянно спорите. У меня не было бы претензий если бы вы говорили, что Хачкель один из лучших ФЯ. Что он чистый и т.п. Но вы же все время просто таки втираете, что он лучший, что он на голову лучше всего окружающего и т.п. По крайней мере у меня складывается такое впечатление.

Я могу говорить только за себя. Так вот, впечатление обманчивое. У меня, например, впечатление, что когда я говорю о преимуществах Хаскеля, то ты воспринимаешь это как замечания об отсутствии преимуществ у других языков. Возможно это особенности интернет-общения — или говоришь долго, чтобы точнее передать мысль и тогда все докапываются до отдельных её кусков, или говоришь кратко, но это выглядит категорично.

VD>Все это компромиссные решения имеющие как достоинства так и недостатки. Большинству кто хочет писать софт для современных корпораций скорее будет нужно чтобы язык поддерживал систему типов Явы или дотнета. Потом есть такие фишки как компонентность о которой при разработке Хаскеля просто не задумывались.


Чем модули не устраивают, поясни.

VD>С такой постановкой я в жизни бы не поспорил. Но ты почитай свои же, и другие рассуждения о Хаскеле. Вы же не говорите, что это вам нравится или вам подходит для ваших задач? У вас получается просто таки безальтернативный выбор. Некоторые заходят настолько далеко, что начинают приписывать ленивость к обязательным свойствам ФП.


Это тебе так кажется. Подумал — не знаю почему. Если бы знал, то выражался так, чтобы ты понимал точнее, что я хочу сказать.

Ленивость нет, но non-strictness — обязательное свойство безкомпромисного ФП, ага. Лямбда исчисление и "функция в математическом смысле", никуда не денешься!

VD>Мне тут не редко орлы вроде еао197 или АВК говорили, что я мол слишком сильно толкаю Немерле. Но ёлы-палы! Где я предлагал его использовать без оглядки на задачи и условия? Я сразу говорю, что если вы седите на Яве, то ваш билет в мир ФП — это Скала. Если в дотнете, то Nemerle, F# и даже C# с LINQ. Если вам нужны компилируемые в нэйтив модули, то выбор совсем другой. Тут уже нужно выбирать между Хаскелем, ОКамлом, Лиспом и т.п. Причем Хаскель сразу не проходит если речь идет высокопроизводительных вычислений, но может быть предпочтительнее если нужно получить более высокоуровневые абстракции. Кстати, Хаскель идет лесом и в случае если людям нужен классический ООП. Тут ОКамл будет куда приемлемее.


Не со всем согласен, но это частности, поэтому спорить не буду.
Кстати, я тоже не предлагал использовать Haskell без оглядки на задачи и условия, и сомневаюсь, чтобы кто нибудь предлагал.

VD>А посмотри что вы вытворяете?... Парень спрашивает как ему С на C# перевести, а ему отвечают, что есть такая замечательная штука как экстер-си в С++ и Хасклевый экспорт. Это вообще вменяемый ответ?


Где я такое писал??
Re[20]: "LINQ как шаг к ФП". Стиль изложения.
От: VoidEx  
Дата: 30.01.09 15:52
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Казалось бы не к чему. Но вы же постоянно спорите. У меня не было бы претензий если бы вы говорили, что Хачкель один из лучших ФЯ. Что он чистый и т.п. Но вы же все время просто таки втираете, что он лучший, что он на голову лучше всего окружающего и т.п. По крайней мере у меня складывается такое впечатление.


"ФП (Хаскель) не панацея" слышно только от тебя. И несмотря на то, что каждый раз тебе отвечают "ну... да, а это к чему?", всё равно ты никак себя не убедишь. И всё-то тебе кажется, что остальные говорят обратное. Чудной ты человек.
Re[21]: "LINQ как шаг к ФП". Стиль изложения.
От: Qbit86 Кипр
Дата: 30.01.09 16:10
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>"ФП (Хаскель) не панацея" слышно только от тебя.


Не только от Влада, я тоже подпишусь, так что нас уже двое :)

Что лично меня раздражает в Хаскеле, так это лексика и синтаксис. Хоть убей не пойму, как его можно назвать простым? Все эти лексемы типа «::», «:l», «++» (для бинарного оператора), «@», «$» и тому подобный мусор совсем не способствуют восприятию неофитами кода на Хаскеле. Я понимаю код на Схеме, Немерле, ОКамле, вполне воспринимаю математическую нотацию (лямбда-исчисление, основы теории категорий). Но как только вижу статью про Хаскель (да вот хотя бы твои посты на Хабре) — так сразу глаза и мозг возмущаются, глядя на это синтаксическое недоразумение. Сколько раз открывал книжки Душкина, чтоб таки проникнуться — раз за разом неодолимое отторжение.

Извините. Не удержался. Минусуем.
Глаза у меня добрые, но рубашка — смирительная!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.