Здравствуйте, VladD2, Вы писали:
VD>Ну, и много так можно выиграть? А читается именно как ассемблер. Вот тебе тоже самое на ИЯ:
В данном примере 19 строк против 2-х (не считая пустых строк, комментариев, и фигурных скобок). Выиграть можно в 10 раз (это пример немного исскуственный, реальный выигрыш часто бывает только в разы, а не на порядок). Кстати, читается гораздо проще, чем императивный вариант, из-за отсутствия явного управления памятью. Требуется минимум привычки, которая вырабатывается за несколько дней.
VD>Сделай у себя названия понятные и коментариев добавь и будет тоже самое. Зато можно оптимизировать как хочешь.
Как говорил Кнут, преждевременная оптимизация — корень всех бед. В OCaml ты тоже сможешь оптимизировать, как захочешь. Потом, по показаниям. В Erlang, конечно, таких возможностей поменьше. VD>А когда будешь приенять, то разницы вообще не будет.
А если нет разницы, то зачем платить больше? Кстати, у тебя программа с первого раза заработала?
From: Gaperton http://www.livejournal.com/users/gaperton >Ищи эту книгу. >А.Филд, П.Харрисон "функциональное программирование" М.Мир 1993 >Там есть исчерпывающие ответы на эти вопросы.
Спасибо.
Однако не модно уже посылать людей ... в библиотеку.
Не то, чтобы мне искать было лень, просто обычно лучше чего-то одного придерживаться, а то найдешь такое что потом не знаешь как потерять.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Скомпилено и работает. Хотя на C# или С++, возможно, получился бы почти столь же краткий и понятный код INT>Кто-нибудь напишет?
Здравствуйте, Цунцуяби, Вы писали:
Ц>Так что пусть первопроходцы использования ФЯ топчут тропу через RSDN. Ц>Не будет толка — ничего страшного. Будет — мы были ПЕРВЫМИ.
Мы только за. Только лучше чем кусаться занялись бы полезными делами. Показали бы императивникам как нужно программировать. Глядишь и популяризировать ничего не прийдется...
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Camlp4 позволяет парсить Ocaml (в том числе в AST), добавлять в него новые грамматические конструкции и менять существующие.
В том числе значит препроцессор. Это как макросы с шаблонами.
INT>Другой вопрос, что OCaml и без препроцессоров может о себе позаботиться
Как показывает практиа неможет.
INT> Ему, в отличии от C#, костыли не нужны.
Боюсь что они ему уже не нужны. C# нуждается только в средствах метапрограммирования. Вряд ли это можно называть костылями. Или уж давай порассуждаем зачем в тому же ОКамлу понадобились собственные яки ил лексы...
INT> Camlp4 может пригодиться, разве что, для АОП.
Вот АОП и есть цель R#. Только не на уровне макросов, а на уровне трансформации АСТ.
INT> Классы в нем есть, множественное наследование и темплейты included. А если бы классов и не было (или тебе они почему-то не понравились), то можно написать свои. Нет, для этого не нужен препроцессор, все в рамках языка. "Возможности вроде функциональных языков", сам понимаешь, имеются
Тут есть ряд проблем. Синтаксис Шарпа нравится очень многим. Синтаксис ОКамла еденицам. Реализовать можно многое, но реализовано копейки.
В общем, я тоже могу много чего намечтать. Но это нужно еще сделать и продвинуть. А вот этого в ФЯ я пока не вижу. Слов много дел — 0.
INT>Что касается парсинга, то да, есть парсеры на Ocaml, аналогичные Yacc/Lex.
Гы. Дай догадаюьс... Называютя Окамл Якс, и Окамл лекс?
INT> И они входят в стандартную поставку. Но также можно парсить без использования внешних форматов и это будет выглядеть не существенно сложнее.
Извини за грубость, но языком можно парсить. Этак и на любом ИЯ можно парсить "без проблем". Только дальше строчных калькуляторов никто еще не пошел. Кстати, на плюсах, в Бусте тоже есть библитотечка Спирит. Тоже LL(1)-парсеры позволяет делать. Только нормальный генераторы парсеров куда удобнее и эффективнее.
INT> Нет, парсить можно не только функциональные языки. На сайте языка есть примеры парсеров, например, Паскаля и Лого.
LL(1)-языки, как Каскаль, легко парсятся банальным рекурсивным спуском на любом языке. А уж на ФЯ сам бог велел. Ты вот C# 2.0 отпарсь не нем. А я посмеюсь, как ты будешь трехэтажные навороты лепить чтобы вперед забежать. Да и качетсво такого парсера на нуле. Ни обработки ошибок нормальной, ни читаемости.
INT>Тут меня надо спросить, а почему же при всем при этом Ocaml не юзают все кому не лень. Ответ, я кажется, почти понял, но налеюсь, что его скажет кто-нибудь, кто знает этот язык лучше. Возможно, одна из причин в том, что практическая польза языка не только в том, что он позволяет делать, но и в том, что он не позволяет А вот со вторым у OCaml явные напряги
Интересно какие?
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Gaperton, Вы писали:
G>- Проще найти специалиста по С++/С#.
Заметь. С#-у 2.5 года. А программистов найти уже проще. И почему ниодна серьезная компания вроде МС или ИБМ не взяла ФЯ в флагманские языки? ИБМ даже смолток готов продвигать, но не ФЯ...
G>- Со стороны програмиста — знание OCaml (Haskell, whatever) не увеличивает его ценность на рынке труда. Он не чувствует необходимости тратить на него время.
Дык если ФЯ так радикально сокращают время разработки, то в чем проблема то?
G>- К тому-же, среда программирования не настолько "дружественна", как в коммерческих средствах разработки. Это отпугивает.
В большинстве случаев этих сред вообще нет. Если емаксы за них не считать.
G>- Популярность языка обусловлена также количеством денег, потраченным на рекламу и продвижение.
А чем определяется то на что богатые коропорации тратят деньги? Или в них все идиоты? Но тогда откуда у них деньги? А может это заговор?
G> Mainstream — это бизнес, и его участники заинтересованы, чтобы все использовали С# и Java, потому, что в них вложены большие средства.
А почему они вложены именно в них? При таких великих перспективах МС давно бы задвинул всех используя свою модификацияю Окамла.
G>Популярность же остальных "бесплатных языков" так или иначе связана с популярностью Linux.
Ага. То-то его тоже на С развивают.
G>- Существует набор предубеждений о ФЯ среди незнакомых с ними людей. У ФЯ есть слабые места. Но предубеждения обычно не имеют к ним отношения.
Заметь. И твоя их популяризация не дает никакаой пользы. А знаешь почему? Да потому что ни одного полезного прикладнику слова ты не сказал. Ты говоришь круто, но не показываешь где. Ты говоришь понятно, а все кто не знает ФЯ тебе говорят, что отнюдь не понятно.
G>Заметно поправить ситуацию сможет только включение любого из современного ФЯ в учебную ВУЗовскую программу как одного их основных языков.
Они уже давно там были. Да влилетели. Так как вузы делают то что требует рынок. Так что изменить ситуацию можно тлько создав действительно удобный и понятный язык и грамотно его продвинуть.
G>О чем ты говоришь? . Никто даже и не догадывается, что OCaml позволяет делать, и, что характерно, не хочет знать. Все, что большинство о нем знает — что в нем есть страшная и неудобная рекурсия, что и обсуждается. Еще обсуждаются, в каком кривом формате (PDF) приведенные ссылки. "Цвет учебника" не нравится.
Ты вместо того говорить о своих сокровенных знаниях поделился бы ими со всеми. А что касается ПДФ то нужно вообще плевать на популярность чтобы в нашем мире выкладывать статьи в ПДФ и тем более в посскрипте. Так же глупо плевать на внешний вид и эргономику сайта.
Многие не будут смотреть на ФЯ просто глянув на их сайты. И логика в этом есть. Люди не способные сверстать HTML не способны и сделать удобный ЯП.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, sardonyx, Вы писали:
S>ну вообще то lisp включён в учебные программы Университета да и prolog не забыт, кста вот о чем нада говорить, за ним будущее )
Оно за ним вот уже 20 лет. Еще мой отец говорил такие слова. Тогда правда отмазка была, что мол медленный он. А теперь?
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Почему никто не использует функциональные языки
Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, VladD2, Вы писали:
VD>>Ну, и много так можно выиграть? А читается именно как ассемблер. Вот тебе тоже самое на ИЯ: G>В данном примере 19 строк против 2-х (не считая пустых строк, комментариев, и фигурных скобок).
А ты все переменные в одну букву вгони, запиши все в одну строку и радуйся от краткости.
G> Выиграть можно в 10 раз
Эти 20 строк читаются без проблем. А в твоем коде каждый симвло нужно анализировать как Шерлок Холмс. По хорошему их нужно так же в 20 расписать и коментариев добавить. А то ты вот сам не заметил, что ошибку сделал.
G> (это пример немного исскуственный, реальный выигрыш часто бывает только в разы, а не на порядок).
А. Ну, да. Причем на шеснадцатиричные. Давай свои реальные приложения будем глядеть. И не надо мне то что я посмотреть не могу и узкоспециализированное вроде камутаторов. Ты мне покажи что-то что я смоку сказчать на свой писюк, скомпилировать и поглядеть. Ну, и чтобы аналоги были императивные.
G> Кстати, читается гораздо проще,
Ты себя в этом уже убедил. Но я вот себя никак побороть не могу. Для меня это филькина грамота. Причем недающая мне сдлать все так как хочу именно я. Или заставляющая для этого изварачиваться.
G> чем императивный вариант, из-за отсутствия явного управления памятью.
Гдет ты там нашел явное управление памятью? Ты точно термины не путаешь? В Шарпе вообще нет явного управления памятью.
G> Требуется минимум привычки, которая вырабатывается за несколько дней.
Видимо я дефективный. Вот уже 30 лет, а такой привычки выработать не могу. И вроде тот же STL могу использовать и вообще не идиот, но вот до сих пор меня нагромождение палочек убивает. Это ненаглядно и очень тяжело читается.
VD>>Сделай у себя названия понятные и коментариев добавь и будет тоже самое. Зато можно оптимизировать как хочешь. G>Как говорил Кнут, преждевременная оптимизация — корень всех бед.
О. Кнута тут как раз нехватало. Да и не он это говорил.
Напомню, что о времени оптимизации речи тут не идет. Речь идет о невозможности ее в принципе.
G> В OCaml ты тоже сможешь оптимизировать, как захочешь.
Переписав императивно? А нафиг мне тогда он упал? Ты вот изобрази такой же алгоритм пимперативно на Окамле и сравним с Шарпом. Почему то я уверен, что выглядеть это будет очень не важно.
G>Потом, по показаниям. В Erlang, конечно, таких возможностей поменьше.
Erlang как не имеющий статической типизации меня вообще не волнует.
VD>>А когда будешь приенять, то разницы вообще не будет. G>А если нет разницы, то зачем платить больше? Кстати, у тебя программа с первого раза заработала?
Скомпилируй, попробуй. Я ее за минуту по памяти надолбил. Твоя точно не заработает. Ты сым написал, что ошибку сделал.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Почему никто не использует функциональные языки
Здравствуйте, VladD2, Вы писали:
VD>Сделай у себя названия понятные и коментариев добавь и будет тоже самое. Зато можно оптимизировать как хочешь. А когда будешь приенять, то разницы вообще не будет.
А я так и не смог в свое время выучить это наизусть.
ФЯ-вариант именно понятен и запоминаем, и есть более понятный "классический" вариант — с временными "переменными"
qsort [] = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y <- xs, y < x]
elts_greq_x = [y | y <- xs, y >= x]
The first line reads: "The result of sorting an empty list (written []) is an empty list". The second line reads: "To sort a list whose first element is x and the rest of which is called xs, just sort all the elements of xs which are less than x (call them elts_lt_x), sort all the elements of xs which are greater than or equal to x (call them elts_greq_x), and concatenate (++) the results, with x sandwiched in the middle.
Другое дело, что классический С-вариант быстрой сортировки не использует дополнительную память
The C quicksort uses an extremely ingenious technique, invented by Hoare, whereby it sorts the array in place; that is, without using any extra storage. As a result, it runs quickly, and in a small amount of memory. In contrast, the Haskell program allocates quite a lot of extra memory behind the scenes, and runs rather slower than the C program.
Не факт конечно, что это не соптимизируется, но...
From: INTP_mihoshi >Скомпилено и работает. Хотя на C# или С++, возможно, получился бы почти столь же краткий и понятный код
А вот так: Сортируем снизу-вверх. Сравниваем два первых значения, упорядочиваем, генерируем функцию сортировки остатка с учетом этих значений. Там будет три рекурсии — до минимума из этих первых двух значений, между, и после. Для последнего имеем такое дерево if-ов, значение по нему попадает в нужное место. Что-нибудь такое, это функциональный стиль?
Здравствуйте, ON, Вы писали:
ON>From: Gaperton http://www.livejournal.com/users/gaperton >>Ищи эту книгу. >>А.Филд, П.Харрисон "функциональное программирование" М.Мир 1993 >>Там есть исчерпывающие ответы на эти вопросы.
ON>Спасибо. ON>Однако не модно уже посылать людей ... в библиотеку.
Эта книга того стоит, чтобы ее найти, на самом деле. Это — лучшее. ON>Не то, чтобы мне искать было лень, просто обычно лучше чего-то одного придерживаться, а то найдешь такое что потом не знаешь как потерять.
На русском в сети я ничего не знаю, к сожалению. То что видел — слишком заумно и не очень качественно.
Здравствуйте, VladD2, Вы писали:
VD>>>Ну, и много так можно выиграть? А читается именно как ассемблер. Вот тебе тоже самое на ИЯ: G>>В данном примере 19 строк против 2-х (не считая пустых строк, комментариев, и фигурных скобок). VD>А ты все переменные в одну букву вгони, запиши все в одну строку и радуйся от краткости.
"Сказать больше нечего, а хочется остаться правым." С тобой надо общаться твоими цитатами.
G>> Выиграть можно в 10 раз VD>Эти 20 строк читаются без проблем. А в твоем коде каждый симвло нужно анализировать как Шерлок Холмс. По хорошему их нужно так же в 20 расписать и коментариев добавить.
Распиши в 20. А мы посмеемся. Глупо спорить с очевидным, Влад. Там максимум 5 строк. А комментарии не считаются.
VD>А то ты вот сам не заметил, что ошибку сделал.
Ну и что. Это ты вообще к чему?
G>> (это пример немного исскуственный, реальный выигрыш часто бывает только в разы, а не на порядок). VD>А. Ну, да. Причем на шеснадцатиричные. Давай свои реальные приложения будем глядеть. И не надо мне то что я посмотреть не могу и узкоспециализированное вроде камутаторов. Ты мне покажи что-то что я смоку сказчать на свой писюк, скомпилировать и поглядеть. Ну, и чтобы аналоги были императивные.
Жто можно. Завтра.
G>> Кстати, читается гораздо проще, VD>Ты себя в этом уже убедил. Но я вот себя никак побороть не могу. Для меня это филькина грамота. Причем недающая мне сдлать все так как хочу именно я. Или заставляющая для этого изварачиваться.
Я себя не убедил, а научил. А ты можешь научится. Но для этого не я должен делать над тобой усилие (да у меня и желания-то нет), а ты сам.
G>> чем императивный вариант, из-за отсутствия явного управления памятью. VD>Гдет ты там нашел явное управление памятью? Ты точно термины не путаешь? В Шарпе вообще нет явного управления памятью.
Под "управлением памятью" я подразумеваю технику Хоара, которую ты применил в своем алгоритме. Или что там у тебя? Хрен разберешь.
G>> Требуется минимум привычки, которая вырабатывается за несколько дней. VD>Видимо я дефективный. Вот уже 30 лет, а такой привычки выработать не могу. И вроде тот же STL могу использовать и вообще не идиот, но вот до сих пор меня нагромождение палочек убивает. Это ненаглядно и очень тяжело читается.
А никто тебя в идиотизме и не подозревает. Видимо, плохо учился. Или, скорее, не хочешь учится.
VD>>>А когда будешь приенять, то разницы вообще не будет. G>>А если нет разницы, то зачем платить больше? Кстати, у тебя программа с первого раза заработала? VD>Скомпилируй, попробуй. Я ее за минуту по памяти надолбил. Твоя точно не заработает. Ты сым написал, что ошибку сделал.
Моя заработала. Я вообще не дурак ошибку поправить, если заметил .
А вот свою сам тестируй. Но там гораздо больше мест облажаться.
Re[18]: Почему никто не использует функциональные языки
Здравствуйте, Xentrax, Вы писали:
X>The first line reads: "The result of sorting an empty list (written []) is an empty list". The second line reads: "To sort a list whose first element is x and the rest of which is called xs, just sort all the elements of xs which are less than x (call them elts_lt_x), sort all the elements of xs which are greater than or equal to x (call them elts_greq_x), and concatenate (++) the results, with x sandwiched in the middle.
Во-во. Без пояснений тут никуда. А ведь импиративный вариант пояснять не нужно. Думаю, что и функцональный может быть не хуже. Но этот болше похож на орнамент.
X>Другое дело, что классический С-вариант быстрой сортировки не использует дополнительную память
X>The C quicksort uses an extremely ingenious technique, invented by Hoare, whereby it sorts the array in place; that is, without using any extra storage. As a result, it runs quickly, and in a small amount of memory. In contrast, the Haskell program allocates quite a lot of extra memory behind the scenes, and runs rather slower than the C program.
Да с Хаскелем по-моему уже давно все ясно. Гордость фивровальщиков да и только. Язык без статической типизиции и серьезных оптимизаций. В общем, лучший пример языка который никогда не станет массовым и выездает на пиаре.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Почему никто не использует функциональные языки
Здравствуйте, Gaperton, Вы писали:
VD>>А ты все переменные в одну букву вгони, запиши все в одну строку и радуйся от краткости. G>"Сказать больше нечего, а хочется остаться правым." С тобой надо общаться твоими цитатами.
Для этого прийдется задумываться над уместностью цитат.
В данном случае цитата не уместна. Твой код это нагроможднеие палочек и буквочек. Его понимание — это дешифрация.
G>Распиши в 20. А мы посмеемся. Глупо спорить с очевидным, Влад. Там максимум 5 строк. А комментарии не считаются.
занимает строк 13 или больше. И это без коментариев.
VD>>А то ты вот сам не заметил, что ошибку сделал. G>Ну и что. Это ты вообще к чему?
К тому что "программы запускаются с первого раза".
G>Я себя не убедил, а научил. А ты можешь научится. Но для этого не я должен делать над тобой усилие (да у меня и желания-то нет), а ты сам.
Я даже не хочу "учить" себя называть мало-понтное красивым. Даже если я привыкну читать подобные кракозябры я буду называть это кракозябрами. Так же как умею читать регексы и перл, но е стал называть их понятными.
VD>>Гдет ты там нашел явное управление памятью? Ты точно термины не путаешь? В Шарпе вообще нет явного управления памятью. G>Под "управлением памятью" я подразумеваю технику Хоара, которую ты применил в своем алгоритме. Или что там у тебя? Хрен разберешь.
Под управлением помяти понимается ее выделение и уничтожение. Я просто написал алгоритм на императином языке не поддерживающем явное управление памятью.
G>А никто тебя в идиотизме и не подозревает. Видимо, плохо учился. Или, скорее, не хочешь учится.
А нафиг мне запись которую нужо учить через силу чтобы понять? Я вроде не шифрованием занимаюсь. А уж однобуквенные идентификаторы — это вообще "фирменный стиль" крокозябр. За-то сколько мы места сэкономили.
VD>>Скомпилируй, попробуй. Я ее за минуту по памяти надолбил. Твоя точно не заработает. Ты сым написал, что ошибку сделал. G>Моя заработала.
А ничего что ты там рекурсию забыл? И вообще, как объяснить ошибки в примитивной программе на языке где и большие прилоежния с первого раза работают?
G> Я вообще не дурак ошибку поправить, если заметил .
А зачем тогда об безошибочности и верефицироемости говорил? Для красного словца?
G>А вот свою сам тестируй. Но там гораздо больше мест облажаться.
И тем не менее "обложался" ты. Причем на волшебном язые.
ЗЫ
Ошибиться можно делать где угодно и кто угодно. Программы пишет человек. А он по определению ошибается. Так что не нужно рассказывать сказки по программы с запуском с первого раза и т.п. Надежность определяется кучае факторов. Среди которых не малую роль занимают отладчики и RAD-средства.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Pre S.
Абсолютно неругательное письмо
Просто письмо — малый жанр
и действительно, что имел ввиду VladD2 —
Script
Здравствуйте, VladD2, Вы писали:
VD>Я хочу декларативности не ограниченой правилами языка или парадигмой.
Переведи ...
jkodfj 893438 09ir -0sdfgop=sfpe=gr[]
Я чего-то декларирую, но другим не понятно — нет соглашений/конвенций,
который накладывает язык.
Тебе не нравиться ФЯ — понятно,нормально,твой выбор.
Какой декларативности хочешь, непонятно ?
Мне кажется, что тебе просто не нравиться эстетика ФЯ.
Для человека это, конечно, важно. И наука знает ВЕЛИКИЕ открытия сделанные из эстетических соображений.
Приятно, когда приятно писать код. Но это лишь сила привычки.
Можно принять и другую эстетику.
Но язык программирования — это какая-то математика, Вычислительная Наука.
Чего не хватает в математике на твой взгляд ?
Лямбда-исчисления( =Haskell) экивалентны машине Тьюринга. Что бы мог Тьюринг посчитать, мог бы и Хаскель и наооборот. Понятно, что щас на Тьюринге не считают, да и не считали, используют более крупные формы — фон Неймана:коды,ассемблер,FORTRAN,C ... . На этот счет есть интересная статья Бэкаса( Backus )
Haskell, как я понимаю, — это "что компьютер должен знать о комбинаторной логике".
Так какое исчисление ты хочешь предложить ?
А создавать язык ради языка — это для художников: кто-то любит крупные мазки, кто-то сангину...
P.S.
Рекурсия тебе — не нравится — это тоже понятно, нормально.
А как без нее работать с бесконечностями в замкнутой форме, чтобы доказательсва были покомпактнее. Как же в формальной логике и в теории доказательств без рекурсий.Хотя может и можно обойтись ? Может с помощью машины Тьюринга.
Хамить начал ты сам. Это конечно ни меня ни Влада не оправдывает, но я его понимаю.
Если с тобой не согласны — это ещё не значит, что ты прав или что тебя хотят обидеть. Но именно так, судя по твоим ответам ты это и вопсримнимаешь.
Re[13]: Почему никто не использует функциональные языки
Комплексуем? Где я хоть слово сказал про тебя?
Про узколобых фанатов ФЯ — да. Но где я адресовал эти слова тебе?
ТЫ сам только что отнёс эти слова к себе.
Пора понять, что мир вокруг тебя не вертится и там другие люди есть...