Re[12]: Ленивые языки - за и против
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 21.12.08 12:36
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Несколько лет назад мы на RSDN делали несколько микротестов для определения, насколько функциональная парадигма сосет. Ее тогда представляли Clean, OCaml, и Haskell. В качестве задач были взяты довольно неприятные для ФЯ — alpha blending и решето Эратосфена.


Вывод — alpha blending не для ленивых языков. Ну, или так — задачи, неприятные для ленивых языков, не стоит решать на ленивых языках, верно?

G>Такую нотацию сложно придумать за пять минут, чтобы она была лишена косяков, но на первый взгляд, вполне достаточно знака ?. С семантикой "все что справа на том же уровне- лениво". Как-то так:


Дело не только в нотации. Даже если не говорить о производительности — нотация будет выглядеть так же печально, как и strictness annotations в ленивых языках.
Тут же дело в том, что ты считаешь, что ленивость по умолчанию не нужна, верно? Т.е. нет задач, где ленивые языки выручают.
Кстати, что насчёт моего примера, ты не ответил тогда.

Ещё подумал — я уже VladD2 говорил, что, возможно, дело в том, удобно ли программисту представлять задачу в ленивых структурах данных, когда то, что требуется, вычисляется on demand. Возможно, для тебя это неудобно, поэтому ты видишь использование ленивости только в ленивых списках (утрируя).

Ленивость же можно использовать гораздо шире, например, уже всем известные комбинаторы для контрактов. Модный сейчас functional reactive programming лучше всего ложиться на ленивую модель. Ну и не стоит забывать, что ленивая модель более декларативна
Re[13]: Ленивые языки - за и против
От: Gaperton http://gaperton.livejournal.com
Дата: 22.12.08 01:30
Оценка:
Здравствуйте, VoidEx, Вы писали:

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


G>>(анализаторы строгости никогда не смогут найти всю строгость — эта задача NP-полная).


VE>А и не надо, чтобы находили всю строгость, надо, чтобы лучше человека. Для человека эта задача тоже NP-полная и он тоже её решить не в состоянии.


Зачем ее решать, если задача указать ленивость при строгости по умолчанию — для человека тривиальна?
Re[14]: Ленивые языки - за и против
От: Аноним  
Дата: 22.12.08 04:44
Оценка: +1
Здравствуйте, Gaperton, Вы писали:

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


VE>>А и не надо, чтобы находили всю строгость, надо, чтобы лучше человека. Для человека эта задача тоже NP-полная и он тоже её решить не в состоянии.


G>Зачем ее решать, если задача указать ленивость при строгости по умолчанию — для человека тривиальна?


Если эта задача тривиальна, то тривиальна и обратная задача. Но дело не в этом. Дело в том, что написанием альфа-блендера и решета эратосфена это только 0.001% от возможных применений языков. Серебрянной пули нет. Ну нет и всё. И как бы хорошо С++ не был на этих тестах, он обязательно сольёт в других тестах (например, на скорость реализации какого-нить нетривиального алгоритма и на отладке оного).

1. Ленивые языки работают медленне неленивых при высокой загрузке числодроблением (без использования внешних оптимизированных либ для числодробления)
2. Значит, писать на том же хаскеле альфа-блендинг и т.п. смысла нет, так как в этом места нужна очень сильная оптимизация не алгоритма (т.е. импелентация более продвинутого), а просто эффективная трансляция в код для железа.
3. Опять же, сравнение "портабельного" ассемблера ака Си с Хаскелем на числодроблении не корректно, так же как и сравнение PL/SQL и Delphi (или, по-вашему, PL/SQL sucks так как на нём блендинг плохо работает?). Из-за того, что и на Хаскеле и на С/С++ можно написать блендер совсем не значит, что именно это и нужно делать и что на этом стоит останавливаться. Можно быстро опробовать несколько вариантов алгоритмов на хаскеле, отпрофилировать, выбрать оптимальный и закодировать его на Си.
4. Будьте добры в конце-концов уточнить, о каком применении ленивых языков вы думаете и о какой сфере применения. Да, на Си/С++ можно программить микро-контроллеры и писать ОСи. А на хаскеле нет :\ Всё, выкидываем его на помойку, да?
Re[15]: Ленивые языки - за и против
От: geniepro http://geniepro.livejournal.com/
Дата: 22.12.08 05:41
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А> И как бы хорошо С++ не был на этих тестах, он обязательно сольёт в других тестах ...


Сливает, на многопоточности, например. Достаточно взглянуть на Great Language Shootout...

А> ... Да, на Си/С++ можно программить микро-контроллеры и писать ОСи. А на хаскеле нет :\ ...


Как так нельзя? Ведь сделали же несколько ОС -- House, Kinetic, микроядро seL4 (хоть его и переписали потом на Си)...
Re[15]: Ленивые языки - за и против
От: FR  
Дата: 22.12.08 06:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>4. Будьте добры в конце-концов уточнить, о каком применении ленивых языков вы думаете и о какой сфере применения. Да, на Си/С++ можно программить микро-контроллеры и писать ОСи. А на хаскеле нет :\ Всё, выкидываем его на помойку, да?


У меня пока складывается ощущение, и это обсуждение его усилило, что Haskell почему-то пригоден и реально используется только для прототипирования и написания небольших приложений.
Притом по результатам моего присматривания к нему, показалось что и с библиотеками и с FFI и с комьюнити, у него заметно лучше чем у Ocaml'а к примеру, но почему-то приложений на Ocaml'е при этом гораздо больше.
Хаскелисты можете объяснить почему?
Или я заблуждаюсь?
Re[16]: Ленивые языки - за и против
От: Аноним  
Дата: 22.12.08 07:57
Оценка: +1
Здравствуйте, FR, Вы писали:

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


А>>4. Будьте добры в конце-концов уточнить, о каком применении ленивых языков вы думаете и о какой сфере применения. Да, на Си/С++ можно программить микро-контроллеры и писать ОСи. А на хаскеле нет :\ Всё, выкидываем его на помойку, да?


FR>У меня пока складывается ощущение, и это обсуждение его усилило, что Haskell почему-то пригоден и реально используется только для прототипирования и написания небольших приложений.

FR>Притом по результатам моего присматривания к нему, показалось что и с библиотеками и с FFI и с комьюнити, у него заметно лучше чем у Ocaml'а к примеру, но почему-то приложений на Ocaml'е при этом гораздо больше.
FR>Хаскелисты можете объяснить почему?
FR>Или я заблуждаюсь?

А на питоне ещё больше приложений, и ещё больше модулей, предостовляющих интерфейс к "сишным функциям" через FFI.
На Си ещё больше кода, чем на питоне и на окамле вместе взятых.

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

1. Освоить питон намного проще окамля, поэтому больше людей пишут на питоне, чем на окамле (большинтсво, почему-то, часто останавливается и перестаёт играться с новыми языками, так и не доходят до лиспа/окамля/хаскеля, либо просто вскоре забрасывают). Вина тут совсем не в ограниченности людей, сколько в начальном обучении, и, как ни печально, в отсутсвии мотивации. Т.е. человек спокойно выбираеть популярную область (PHP,C#,Java), и потихоньку пишет одно и тоже изо дня в день на одном и том же языке. Денег ему хватает, если он хочет больше — ему проще остаться на сверх-урочные либо подработать (занимаясь либо тем же самым, либо установкой/настройкой чего-либо), или уйти в другую такую же фирму, или "дослужиться до менеджера". Всё то же самое происходит при сравнении ocaml vs. haskell, только различие имх не столь значительно, как при python vs. ocaml.

2. Квалификация программиста очень сильно влияет на используемые им языки (и наоборот). Конечно, это работает "в среднем", т.е. судить о том, что конктректный программист на PHP менее сообразительный конкретного программиста на хаскелле нельзя. Но в целом программирование на хаскелле/етц требует другого (функционального, например) подхода, который человек может не знать, плюс ещё заставляет человека иметь представление о теории категорий (или хотя бы понимать, что такое сильная монада, функтор, и т.р.). По моим наблюдениям, далеко не все могут (не могут = не имеют достаточной мотивации на перераспределение времени для изучения хаскеля/и т.п. и связанных с ним областей) освоить тот же ocaml, не говоря уже о хаскеле. Хотя, на мой взгляд, вреда абсолютно никакого не будет, только наоборот.

3. Большие/небольшие приложения это довольно спорный вопрос. Вот, например, ghc — это большое приложение?
И тут ещё нужно правильно считать, т.е. не просто абсолютное количество приложений на том и на другом языках, а, скорее, относительное. Ходят слухи, что хаскель активно применяется в финансовой индустрии, но лично я кода не видел и говорить ничего не могу. Потом, опять же, большинство приложений на хаскеле занимают ощутимо меньше строчек кода, чем аналогичное на Си/Си++.

4. Из-за малой распространённости хаскеля и малой популярности трудно найти специалистов. А 99% крупных (как коммерческих, так и нет) продуктов поддерживаются командами, и состав может часто меняться. Сформировать команду, как и искать новых программистов на хаскеле в случае движений в команде, очень и очень напряжно. Да и редко какой руководитель примет решение писать большой проект на хаскеле — слишком много рисков и неизвестности. Выходит, что реально люди готовы использовать этот язык либо там, где они могут позволить себе нанять дорогих специалистов (финансисты, где крутятся большие деньги, и где они могут потратить много денег на нового спеца, где прибыль покрывает всё и где нужна очень быстрая разработка и анализ, а на скорость кода можно коменсировать железом), либо там, где невилик риск, а это — прототипирование. Первая область проприетарная насквозь, вторая — напротив. Поэтому имеем такие результаты — видны прототипы и мелкие проекты.

Что использовать, стоит ли браться за хаскель? Конечно стоит. Но если нет должной подготовки, то можно посмотреть на ocaml, более-менее освоится с ним и двигаться дальше (не обязательно хаскель, можно посмотреть и пролог, и лисп/схему, или smalltalk/io). Использовать ли хаскель на работе при прототировании? Нет, если у вас нет опыта. В этом случае с хаскелем лучше стоит играться паралельно (в свободное время, либо просто для разгрузки).


P.S. Это моё личное видение
Re[15]: Ленивые языки - за и против
От: Qbit86 Кипр
Дата: 22.12.08 08:08
Оценка:
А>Серебрянной пули нет. Ну нет и всё.

Thesz утверждает обратное.

А>И как бы хорошо С++ не был на этих тестах, он обязательно сольёт в других тестах (например, на скорость реализации какого-нить нетривиального алгоритма и на отладке оного).


Source/binary trade-off, однако. Что важнее: качество бинарного кода в ущерб качеству исходного, или наоборот?
Глаза у меня добрые, но рубашка — смирительная!
Re[17]: Ленивые языки - за и против
От: FR  
Дата: 22.12.08 08:49
Оценка:
Здравствуйте, Аноним, Вы писали:


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

А>На Си ещё больше кода, чем на питоне и на окамле вместе взятых.

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


Угу, только вот мне показалось что OCaml знают и используют меньше (сейчас это меняется в связи с раскруткой F#) людей, но при этом используется он в работе гораздо чаще чем Haskell.

А>1. Освоить питон намного проще окамля, поэтому больше людей пишут на питоне, чем на окамле (большинтсво, почему-то, часто останавливается и перестаёт играться с новыми языками, так и не доходят до лиспа/окамля/хаскеля, либо просто вскоре забрасывают). Вина тут совсем не в ограниченности людей, сколько в начальном обучении, и, как ни печально, в отсутсвии мотивации. Т.е. человек спокойно выбираеть популярную область (PHP,C#,Java), и потихоньку пишет одно и тоже изо дня в день на одном и том же языке. Денег ему хватает, если он хочет больше — ему проще остаться на сверх-урочные либо подработать (занимаясь либо тем же самым, либо установкой/настройкой чего-либо), или уйти в другую такую же фирму, или "дослужиться до менеджера". Всё то же самое происходит при сравнении ocaml vs. haskell, только различие имх не столь значительно, как при python vs. ocaml.


Хорошо освоить питон не проще чем Ocaml
Вот кривая обучения да у Ocaml'а покруче, но у Хаскеля она по моему слишком крутая.

А>2. Квалификация программиста очень сильно влияет на используемые им языки (и наоборот). Конечно, это работает "в среднем", т.е. судить о том, что конктректный программист на PHP менее сообразительный конкретного программиста на хаскелле нельзя. Но в целом программирование на хаскелле/етц требует другого (функционального, например) подхода, который человек может не знать, плюс ещё заставляет человека иметь представление о теории категорий (или хотя бы понимать, что такое сильная монада, функтор, и т.р.). По моим наблюдениям, далеко не все могут (не могут = не имеют достаточной мотивации на перераспределение времени для изучения хаскеля/и т.п. и связанных с ним областей) освоить тот же ocaml, не говоря уже о хаскеле. Хотя, на мой взгляд, вреда абсолютно никакого не будет, только наоборот.


Вот мне и кажется многие как осваивают Хаскель, так про него и забывают.

А>3. Большие/небольшие приложения это довольно спорный вопрос. Вот, например, ghc — это большое приложение?


Для меня вполне большое. Вот только странно что ничего сопоставимого по размеру — сложности больше на Хаскеле и нету, или я плохо смотрел?

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


Ну так я про него и говорю. Есть множество маргинальных языков и технологий, тот же Ocaml, Lisp, Smalltalk и у всех у них с популярность / используемость по моему лучше чем у Хаскеля.

А>Ходят слухи, что хаскель активно применяется в финансовой индустрии, но лично я кода не видел и говорить ничего не могу. Потом, опять же, большинство приложений на хаскеле занимают ощутимо меньше строчек кода, чем аналогичное на Си/Си++.


Я слышал что Ocaml чаще применяется в тех же финансах.

А>4. Из-за малой распространённости хаскеля и малой популярности трудно найти специалистов. А 99% крупных (как коммерческих, так и нет) продуктов поддерживаются командами, и состав может часто меняться. Сформировать команду, как и искать новых программистов на хаскеле в случае движений в команде, очень и очень напряжно. Да и редко какой руководитель примет решение писать большой проект на хаскеле — слишком много рисков и неизвестности. Выходит, что реально люди готовы использовать этот язык либо там, где они могут позволить себе нанять дорогих специалистов (финансисты, где крутятся большие деньги, и где они могут потратить много денег на нового спеца, где прибыль покрывает всё и где нужна очень быстрая разработка и анализ, а на скорость кода можно коменсировать железом), либо там, где невилик риск, а это — прототипирование. Первая область проприетарная насквозь, вторая — напротив. Поэтому имеем такие результаты — видны прототипы и мелкие проекты.


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

А>Что использовать, стоит ли браться за хаскель? Конечно стоит. Но если нет должной подготовки, то можно посмотреть на ocaml, более-менее освоится с ним и двигаться дальше (не обязательно хаскель, можно посмотреть и пролог, и лисп/схему, или smalltalk/io). Использовать ли хаскель на работе при прототировании? Нет, если у вас нет опыта. В этом случае с хаскелем лучше стоит играться паралельно (в свободное время, либо просто для разгрузки).


С Ocaml все просто, перебарываешь неприязнь к синтаксису и общей корявости языка и на нем вполне можно писать
Я вот для пробы написал пару утилиток на нем и вполне уверен что он его можно использовать как рабочий инструмент.
После поверхностного изучения Хаскеля я вижу что также смогу на нем написать подобные утилитки, но чувствую что это будет очень коряво, и похоже на код упертого сишника на C++
Re[18]: Ленивые языки - за и против
От: Аноним  
Дата: 22.12.08 09:36
Оценка:
Здравствуйте, FR, Вы писали:

FR>Угу, только вот мне показалось что OCaml знают и используют меньше (сейчас это меняется в связи с раскруткой F#) людей, но при этом используется он в работе гораздо чаще чем Haskell.


Про первую часть не скажу, так как мне кажется всё ноборот. А вторая — да, верно. Я же и писал, что хаскель ещё более "маргинальнее" ocaml'я.

FR>Вот кривая обучения да у Ocaml'а покруче, но у Хаскеля она по моему слишком крутая.


Да, есть такое. Зато сколько удовольствия получаешь в процессе.

FR>Вот мне и кажется многие как осваивают Хаскель, так про него и забывают.


Я бы сказал, что многие пытаются освоить хаскель и вскоре забивают и забывают. Так как не доводят до конца, видимо, слишком велик информационный шок

А>>3. Большие/небольшие приложения это довольно спорный вопрос. Вот, например, ghc — это большое приложение?


FR>Для меня вполне большое. Вот только странно что ничего сопоставимого по размеру — сложности больше на Хаскеле и нету, или я плохо смотрел?

Есть ещё JHC и т.п.

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


FR>Ну так я про него и говорю. Есть множество маргинальных языков и технологий, тот же Ocaml, Lisp, Smalltalk и у всех у них с популярность / используемость по моему лучше чем у Хаскеля.


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

А>>Ходят слухи, что хаскель активно применяется в финансовой индустрии, но лично я кода не видел и говорить ничего не могу. Потом, опять же, большинство приложений на хаскеле занимают ощутимо меньше строчек кода, чем аналогичное на Си/Си++.


FR>Я слышал что Ocaml чаще применяется в тех же финансах.


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

FR>В случае же Хаскеля по моему есть парадокс, популярность достаточно высокая, но выхлоп в виде приложений низкий. Вот мне и интересно почему.


В качестве приложений выступают разные академичские работы, и мелкие прототипы (в первую очередь). Думаю, тут просто нужно попытаться поискать "success story" и прочие применения.


FR>С Ocaml все просто, перебарываешь неприязнь к синтаксису и общей корявости языка и на нем вполне можно писать


Да-да, я когда его увидел тоже не сразу понял его простоту.

FR>Я вот для пробы написал пару утилиток на нем и вполне уверен что он его можно использовать как рабочий инструмент.

FR>После поверхностного изучения Хаскеля я вижу что также смогу на нем написать подобные утилитки, но чувствую что это будет очень коряво, и похоже на код упертого сишника на C++

Ничего, напиши свой компилятор хаскеля-98 и на тебя 99.9% падёт озарение, и ты сможешь эффективно писать на нём
Re[19]: Ленивые языки - за и против
От: FR  
Дата: 22.12.08 09:58
Оценка:
Здравствуйте, Аноним, Вы писали:

FR>>Угу, только вот мне показалось что OCaml знают и используют меньше (сейчас это меняется в связи с раскруткой F#) людей, но при этом используется он в работе гораздо чаще чем Haskell.


А>Про первую часть не скажу, так как мне кажется всё ноборот. А вторая — да, верно. Я же и писал, что хаскель ещё более "маргинальнее" ocaml'я.


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

FR>>Вот кривая обучения да у Ocaml'а покруче, но у Хаскеля она по моему слишком крутая.


А>Да, есть такое. Зато сколько удовольствия получаешь в процессе.


Хотелось бы совместить приятное с полезным

FR>>Вот мне и кажется многие как осваивают Хаскель, так про него и забывают.


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


Угу, вот я например

А>>>3. Большие/небольшие приложения это довольно спорный вопрос. Вот, например, ghc — это большое приложение?


FR>>Для меня вполне большое. Вот только странно что ничего сопоставимого по размеру — сложности больше на Хаскеле и нету, или я плохо смотрел?

А>Есть ещё JHC и т.п.

Угу "вы можете купить машину любого цвета при условии что это будет черный форд"

FR>>Ну так я про него и говорю. Есть множество маргинальных языков и технологий, тот же Ocaml, Lisp, Smalltalk и у всех у них с популярность / используемость по моему лучше чем у Хаскеля.


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


То есть все-таки хаскель узкоспециализирован?

А>>>Ходят слухи, что хаскель активно применяется в финансовой индустрии, но лично я кода не видел и говорить ничего не могу. Потом, опять же, большинство приложений на хаскеле занимают ощутимо меньше строчек кода, чем аналогичное на Си/Си++.


FR>>Я слышал что Ocaml чаще применяется в тех же финансах.


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


Да неплохо бы.
По Хаскелею вообще хоть что-то бы, а то я кроме компиляторов, Булатовского архиватора и оконого менеджера для linux и не слышал больше ничего.

FR>>В случае же Хаскеля по моему есть парадокс, популярность достаточно высокая, но выхлоп в виде приложений низкий. Вот мне и интересно почему.


А>В качестве приложений выступают разные академичские работы, и мелкие прототипы (в первую очередь). Думаю, тут просто нужно попытаться поискать "success story" и прочие применения.


Вот и интересно почему нет обычных приложений. Что мешает их делать.

FR>>С Ocaml все просто, перебарываешь неприязнь к синтаксису и общей корявости языка и на нем вполне можно писать


А>Да-да, я когда его увидел тоже не сразу понял его простоту.


Правда я его объектную систему игнорировал, а все остальное просто.

FR>>Я вот для пробы написал пару утилиток на нем и вполне уверен что он его можно использовать как рабочий инструмент.

FR>>После поверхностного изучения Хаскеля я вижу что также смогу на нем написать подобные утилитки, но чувствую что это будет очень коряво, и похоже на код упертого сишника на C++

А>Ничего, напиши свой компилятор хаскеля-98 и на тебя 99.9% падёт озарение, и ты сможешь эффективно писать на нём


Что-то нет желания писать комилятор
Хотел для пробы близкое написать, анализатор-разборщик html, но не вижу что-то преимуществ перед Ocaml'ом, и та же проблема что и тут http://gzip.rsdn.ru/forum/message/3187769.1.aspx
Автор: dmz
Дата: 25.11.08
сразу всплывает.
Re[18]: Ленивые языки - за и против
От: geniepro http://geniepro.livejournal.com/
Дата: 22.12.08 10:43
Оценка: 1 (1)
Здравствуйте, FR, Вы писали:

А>>3. Большие/небольшие приложения это довольно спорный вопрос. Вот, например, ghc — это большое приложение?


FR>Для меня вполне большое. Вот только странно что ничего сопоставимого по размеру — сложности больше на Хаскеле и нету, или я плохо смотрел?


Сравнимый c GHC -- наверное только PUGS, интерпретатор Perl6. Я так и не смог укачать его исходники...
Есть проекты попроще -- Epigram, Agda2, xmonad, Yi, Leskah, HAppS, игрушка Frag -- упрощённый клон квейка-3...

http://en.wikipedia.org/wiki/Category:Haskell_software
http://www.haskell.org/haskellwiki/Haskell_in_industry

Тот же Bluespec делает на Хаскелле софт по разработке чипов...
Re[20]: Ленивые языки - за и против
От: Qbit86 Кипр
Дата: 22.12.08 10:51
Оценка: +1
FR>Шум вокруг Хаскеля точно больше, да и даже стандартные библиотеки полнее и качественей камловских. Так что тут еще кто маргинальней непонятно.

С учётом инкранации ОКамла в F#, со станартными библиотеками всё ок.
Глаза у меня добрые, но рубашка — смирительная!
Re[20]: Ленивые языки - за и против
От: Аноним  
Дата: 22.12.08 12:36
Оценка:
Здравствуйте, FR, Вы писали:


FR>Угу "вы можете купить машину любого цвета при условии что это будет черный форд"


"Покупатель может выбрать любой цвет, при условии, что этот цвет — черный". (C) Генри Форд. Кажется, как-то так

FR>>>Ну так я про него и говорю. Есть множество маргинальных языков и технологий, тот же Ocaml, Lisp, Smalltalk и у всех у них с популярность / используемость по моему лучше чем у Хаскеля.


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


FR>То есть все-таки хаскель узкоспециализирован?


Нет, язык "продвинутый", т.е. покрывает широкую область — можно писать и компиляторы, и оконные менеджеры, 3д шутеры и архиваторы. Есть стандартизованный FFI, хотя он довольно странный (после питоновского как-то непривычно, в смысле отстутсвия привычных расширений в виде отдельных .so'шек. но обещают доделать поддержку с динамическими библиотеками, посмотрим, что у них получится).

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


FR>Вот и интересно почему нет обычных приложений. Что мешает их делать.


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

FR>>>С Ocaml все просто, перебарываешь неприязнь к синтаксису и общей корявости языка и на нем вполне можно писать


А>>Да-да, я когда его увидел тоже не сразу понял его простоту.


FR>Правда я его объектную систему игнорировал, а все остальное просто.


FR>>>Я вот для пробы написал пару утилиток на нем и вполне уверен что он его можно использовать как рабочий инструмент.

FR>>>После поверхностного изучения Хаскеля я вижу что также смогу на нем написать подобные утилитки, но чувствую что это будет очень коряво, и похоже на код упертого сишника на C++

А>>Ничего, напиши свой компилятор хаскеля-98 и на тебя 99.9% падёт озарение, и ты сможешь эффективно писать на нём


Лично для меня одно из достоинств хаскеля в том, что писать на нём можно очень рано, правда, будет "коряво", но зато "будет работать". Да и осваивать язык лучше в процессе.

FR>Что-то нет желания писать комилятор

FR>Хотел для пробы близкое написать, анализатор-разборщик html, но не вижу что-то преимуществ перед Ocaml'ом, и та же проблема что и тут http://gzip.rsdn.ru/forum/message/3187769.1.aspx
Автор: dmz
Дата: 25.11.08
сразу всплывает.


Ммм, там проблема "никак не могу вкурить, как", т.е. не проблема вообще, а так, временная неприятность. Такие проблемы решаются практикой, чтением чужих исходников и документации. И дело тут не в языке. Выбрал окамль — занимайся, раз нравится. Польза-то всё равно будет.
Re[21]: Ленивые языки - за и против
От: geniepro http://geniepro.livejournal.com/
Дата: 22.12.08 12:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А> ...но обещают доделать поддержку с динамическими библиотеками, посмотрим, что у них получится).


Под виндою dll вроде без особых проблем цепляются, единственно, что приходится обёртки для сишных функций делать, а так пойдёт...
Re[16]: Ленивые языки - за и против
От: Аноним  
Дата: 22.12.08 13:02
Оценка:
Здравствуйте, Qbit86, Вы писали:

А>>Серебрянной пули нет. Ну нет и всё.


Q>Thesz утверждает обратное.


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

А>>И как бы хорошо С++ не был на этих тестах, он обязательно сольёт в других тестах (например, на скорость реализации какого-нить нетривиального алгоритма и на отладке оного).


Q>Source/binary trade-off, однако. Что важнее: качество бинарного кода в ущерб качеству исходного, или наоборот?


Если бы всё было так просто, т.е. взял С++ — получился быстрый код, взял хаскель — получился медленный.

Тут есть ещё человек, который код будет писать. "Написать код, понятный компьютеру — может каждый. Написать код, понятный человеку — могут не многие" (С) не помню кто. И есть конкретные задачи, которые нужно решить. Задачи подразумевают разные сроки, разную численность команд, поддержку, отладку/тестирование, ограничения среды (время отклика/надёжность/потребление ресурсов/сроки разработки/легкость поддержки в поле и куча других)

Ещё раз, я считаю, что ленивость не подходит для части задач, только и всего (как не подходит PL/SQL для обработки 3д). Причём круг решаемых задач заметно перешивает. Да и прежде, чем говорить, что ленивость приносит "медленность", неплохо было бы закончить реализацию и померить. Компайлеры сейчас умные, и многое оптимизируют, а на остальное всегда есть человек (только не надо говорить, что профилирование и оптизация сложнее, чем в С++ или другом языке. Привычнее не значит проще).

Ленивость по-умолчанию это всего лишь ещё одна разновидность инструмента. Как и ленивость не по умолчанию, за которую всеми конечностями голосует Гапертон. Тут скорее всего говорит сила привычки и опыт решения проблем (положительный и нет). Писать на ленивом языке, затыкая эту ленивость всеми способами, конечно, сразу прозрачно намекает на необходимость сделать её включаемой специальными командами и отключить её по умолчанию.

На мой взгляд такой подхдо в корне не верен — проще взять другой инструмент с привычным для человека отсутсвием ленивости и других "подводных" камней, хотя это всего лишь дело опыта (которого, видимо, у человека и нет) и дело привычки/знаний о решении задач с помошью своего любимого неленивого языка. Как говорят, каждый кулик хвалит своё болото. И невозможность правильно выбрать инструмент/правильно и эффективно им пользовать вовсе не значит, что он плохой. Он просто другой.
Re[17]: Ленивые языки - за и против
От: dmz Россия  
Дата: 22.12.08 16:13
Оценка:
А>Плохого и хорошего тут нет, это только значит, что больше людей пишут/используют эти языки. Скорее всего, это происходит потому, что:

А>1. Освоить питон намного проще окамля, поэтому больше людей пишут на питоне, чем на окамле (большинтсво, почему-то, часто останавливается и перестаёт играться с новыми языками, так и не доходят до лиспа/окамля/хаскеля, либо просто вскоре забрасывают).


Ocaml меньше и проще питона. В нем тупо меньше сущностей. В Ocaml проще (как минимум, не сложнее) интерфейс с C. У окамля проблема, что его разработали и продвигают французы (и, видимо, математики). Мало документации, все невнятно, и везде напарываешься на язык кракозяблов. А вообще, это довольно простой и практичный ФЯ. По крайней мере, на нем можно сразу получать практические результаты, и по некоторым задачам он питон просто уделывает (в смысле простоты и количества кода).
Re[19]: Ленивые языки - за и против
От: dmz Россия  
Дата: 22.12.08 16:33
Оценка:
FR>>Я слышал что Ocaml чаще применяется в тех же финансах.
А>Все мы что-то слышали, жаль. Было бы хорошо найти адекватную статистику (ну, или хоть какую-нибудь без явной рекламы и перекосов).

А зачем на статистику смотреть? Надо ее делать. Если некий (немассовый) подход позволяет делать что-то на порядок быстрее, лучше, чем мейнстримовые — то это, как бы, конкурентное преимущество, которое можно использовать. Если окамл дает что-то, что не дают мейстримовые инструменты — то надо использовать?
Re[18]: Ленивые языки - за и против
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 22.12.08 17:18
Оценка: 3 (1)
Здравствуйте, FR, Вы писали:

FR>В случае же Хаскеля по моему есть парадокс, популярность достаточно высокая, но выхлоп в виде приложений низкий. Вот мне и интересно почему.


1. Мне кажется, дело именно в тех проблемах, о которых говорили Gaperton и другие в этом треде — следствиях ленивости по умолчанию. Пока пишешь маленькие утилитки, все хорошо, красиво и приятно, о ликах можно не думать. А вот что-то большое и долгоиграющее сделать намного сложнее, если ты конечно не автор компилятора.

2. Про использование в индустрии видел интересное мнение одного известного флеймера (Jon Harrop — автор нескольких книг по Окамлу и F#):

I did extensive research on all of the most popular functional languages last
year, including Haskell. In case you are trying to do something similar, I'll
warn you that almost all of the examples of Haskell's use in industry are
fakes, e.g. companies that have no products, companies that have one product
that never used Haskell, companies that happen to have two Haskell advocates
working for them out of 150 developers, companies where one employee once did
a preliminary Haskell program but nothing since and, finally, plain old spam
where companies that have never had anything to do with Haskell have hijacked
the Haskell site to advertise on-line only to be hailed as a "real world"
example of Haskell in industry by its proponents. I was rather baffled when I
discovered this and have never seen behaviour like it.

//Caml-list Digest, Vol 38, Issue 20

Re[19]: Ленивые языки - за и против
От: dmz Россия  
Дата: 22.12.08 17:24
Оценка:
DM>2. Про использование в индустрии видел интересное мнение одного известного флеймера (Jon Harrop — автор нескольких книг по Окамлу и F#):

А с другой стороны, где нибудь есть success stories окамла?
Re[20]: Ленивые языки - за и против
От: EvilChild Ниоткуда  
Дата: 22.12.08 19:47
Оценка:
Здравствуйте, dmz, Вы писали:
DM>>2. Про использование в индустрии видел интересное мнение одного известного флеймера (Jon Harrop — автор нескольких книг по Окамлу и F#):

dmz>А с другой стороны, где нибудь есть success stories окамла?

Надо бы определиться, что считать success story.
Вот mldonkey достаточного размера проект, чтобы его засчитывать?
now playing: Harry Axt — 2 Voices
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.