Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, VladD2, Вы писали:
VD>>Можно так "Экстремальное математическое порно для тех про проводит вечера в одиночестве".
EC>Hardcore в общем, можно ещё на первой странице проверять достиг ли читатель 18 лет.
А в инете она есть где-нибудь?
Хочется посмотреть на это порно...
Здравствуйте, frogkiller, Вы писали:
F>Мне казалось, что одна из задач языка облегчить понимание, что на нём написано. А вот подобные записи с моей точки зрения не совсем интуитивно понятны.
Но подобных выражений на самом деле очень немного встречается на практике, можно сказать, что их почти нет. Бывают, конечно, забористые типы, вот например, из последнего (высокоуровневый GUI Phooye) — определение основного типа (с раскрытыми алиасами type):
newtype UI i o = UI (AmA (Kleisli (CallBackT (ReaderT (Panel ()) (TagT Layout IO)))) IO i o)
Каждый из типов, используемых в определении, является либо монадой, либо стрелкой. Моя попытка самостоятельно разобраться, что же тут происходит, успешно накрылась. Решил подождать обещанной статьи автора, ибо библиотека очень интересная.
Но это действительно наивысший возможный пилотаж, в основном же все намного проще, тем более никто не запрещает овладевать возможностями языка от простого к сложному.
Здравствуйте, VladD2, Вы писали:
VD>Дак, чудак ты человек. VD>У тебя основная проблема — это то что ты попадаешь в полностью другой мир. Тот же Хаскель или Схема на С++ ну соврешенно не похожи.
Это я уже понял.
VD>Говорить о постепенном изучении просто не приходится.
А вот с этим не согласен. Со школы и института я привык к классическому подходу при обучении: от простого к сложному. Вся наша система образования построена на этом, а не только императивный стиль программирования. И переучиваться обучаться (на что я потратил 20 с лишним лет) мне кажется слишком высокой платой.
VD>Вот скажем с восприятем C#-кода у тебя большие проблемы?
Э... смотря какого. Я не так хорошо знаю шарп как плюсы, и его возможности в части ФП также мне ясны не на 100%. Речь ведь идёт, я так понимаю, не об использовании .Net'овских классов.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, R.K., Вы писали:
RK>Но подобных выражений на самом деле очень немного встречается на практике, можно сказать, что их почти нет. Бывают, конечно, забористые типы, вот например, из последнего (высокоуровневый GUI Phooye) — определение основного типа (с раскрытыми алиасами type): RK>
RK>newtype UI i o = UI (AmA (Kleisli (CallBackT (ReaderT (Panel ()) (TagT Layout IO)))) IO i o)
RK>
RK>Каждый из типов, используемых в определении, является либо монадой, либо стрелкой. Моя попытка самостоятельно разобраться, что же тут происходит, успешно накрылась. Решил подождать обещанной статьи автора, ибо библиотека очень интересная.
Мда... Зато как красиво в использовании:
ui1 :: UI () ()
ui1 = title "Shopping List" $
proc () -> do
a <- title "apples" (islider 3) -< (0,10)
b <- title "bananas" (islider 7) -< (0,10)
title "total" showDisplay -< a+b
Ещё бы посмотреть на скорость работы с чуть более сложными контролами типа ListView.
RK>Но это действительно наивысший возможный пилотаж, в основном же все намного проще, тем более никто не запрещает овладевать возможностями языка от простого к сложному.
Вот, кажется, с этим проблемы. Согласен с автором исходного поста, я не нашёл ни одного нормального учебника, где простым и понятным языком объяснили бы что и как. При том, что вроде и образование и природные склонности подходящие. Вспоминаю, как я изучал что basic, что pascal, что c++ — гораздо проще было выйти на уровень, пусть не мастера, но с которого можно было самостоятельно что-то делать.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Здравствуйте, FDSC, Вы писали:
FDS>А в инете она есть где-нибудь?
Одно время автор рассылал её всем желающим, пока не издали, сейчас нет — обязательства перед издательством.
На самом деле книга достойная, но название не соответствует содержанию.
Лучше попроси его выслать черновики новой книги — она более практически направленная.
Здравствуйте, EvilChild, Вы писали:
FDS>>А в инете она есть где-нибудь? EC>Одно время автор рассылал её всем желающим, пока не издали, сейчас нет — обязательства перед издательством. EC>На самом деле книга достойная, но название не соответствует содержанию. EC>Лучше попроси его выслать черновики новой книги — она более практически направленная.
Саму книгу, вроде нигде не видел. А вот лекции автора — здесь.
FDS>Люди на подобие VladD2 могут схватить что-то на лету, я, например, — нет. Мне нужно долго и упорно читать или вкладывать много сил в изучение соотв. языков — при том, что непонятно, даст это результат или нет. Поэтому в промышленном программировании ФП и не применяется: там в основном обычные люди сидят и не их дело выдумывать заново за разработчиков как же там эти монады использовать...
Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, FDSC, Вы писали:
FDS>>А в инете она есть где-нибудь? EC>Одно время автор рассылал её всем желающим, пока не издали, сейчас нет — обязательства перед издательством. EC>На самом деле книга достойная, но название не соответствует содержанию. EC>Лучше попроси его выслать черновики новой книги — она более практически направленная.
Здравствуйте, frogkiller, Вы писали:
VD>>Говорить о постепенном изучении просто не приходится.
F>А вот с этим не согласен. Со школы и института я привык к классическому подходу при обучении: от простого к сложному. Вся наша система образования построена на этом, а не только императивный стиль программирования. И переучиваться обучаться (на что я потратил 20 с лишним лет) мне кажется слишком высокой платой.
Речь не об этом. Речь о том, что ты не можешь изучать ФП на основе Хаскеля или Схемы инкрементально. Тебе надо снановиться на нулевой уровень и с него потихоничку шагать. Причем постоянно тебе будет мешать твой опыт в императивных языках.
VD>>Вот скажем с восприятем C#-кода у тебя большие проблемы?
F>Э... смотря какого. Я не так хорошо знаю шарп как плюсы, и его возможности в части ФП также мне ясны не на 100%. Речь ведь идёт, я так понимаю, не об использовании .Net'овских классов.
Я к тому, что как бы плохо ты его не знал, то изучить его тебе будет проще. Ведь ты просто будешь распозновать отличия и постепенно изучать новые приемы.
Так вот, это я все говорю к тому. что как раз Nemerle может серьезно облегчить вхождение в ФП. Ведь ты уже сможешь на нем программировать. ФП-фичи при этом можно будет изучать так же постепенно рассматривая их как некий сахар для упрошения некоторых приемов программирования.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
GlebZ,
GZ>Вообще это большая проблема учебников написанных математиками. Очень мало хороших учебников которые можно читать. Такое впечатление, что математики искренне верят что из формулы сразу понятен алгоритм действий.
Неправда. Книг написанных математиками, которые читаются легко и приятно навалом, и хорошую книгу можно найти для многих областей. Вот несколько примеров:
1. Трёхтомник Фихтенгольца по математическому анализу — супер-пупер-мега-турбо! Благодаря этой книжке многие студенты если не полюбили матанализ, то по крайней мере не бросаются от него как чёрт от ладана.
2. Колмогоров, Фомин "Элементы теории функций и функционального анализа". Функциональный анализ и топология — это из разряда высшего пилотажа. Но как доступно эти вещи изложены в этой книжке! Лично я купил эту книжку просто на память, потому что её просто интересно листать, хотя функанализ мне сейчас не нужен.
3. Фоменко Ф.Т. "Наглядная геометрия и топология. Математические образы в реальном мире." — книга того самого Фоменко, ах какие там клёвые картинки! Их интересно разглядывать даже не врубаясь в топологию, но когда начинаешь понимать математическую подоплёку под этими картинками, то испытываешь просто восторг!
4. Н. Кристофидес "Теория графов. Алгоритмический подход" — немного устарела, но книжка замечательная.
5. Кормен, Ривест, Лейзерсон "Алгоритмы: построение и анализ" — никакие беллетристы и переливатели из пустого в порожнее не сравнятся с ними!
6. Пенроуз, "Тени разума. В поисках науки о сознании". Мегарулез! Я подозреваю, что (судя по отзывам) остальные книги этого автора тоже такого же высокого качества, так что они зашедулены с самым высоким приоритетом на свободное время, которого пока нет
Так что я не согласен с тобой, дескать математики не умеют писать книги. Умеют! Но разумеется далеко не все, и процент посредственных книжек примерно такой же как и везде. Вдобавок написать хорошую книгу по математике намного труднее, потому что излагать "в апельсинах" суть проблемы P=NP намного труднее, чем излагать как "типа братки ведут канкретные базары с типа банкиром".
А по Хаскелю когда-нибудь появятся достойные книжки (я верю во всяком случае). Собственно, есть места из различных статей, которые хоть сейчас распечатывай и на стенку вешай — особенно удачные аналогии или красивые решения. Нужно просто подождать, пока Муза навестит хорошего преподавателя по Хаскелю
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>2. Колмогоров, Фомин "Элементы теории функций и функционального анализа". Функциональный анализ и топология — это из разряда высшего пилотажа. Но как доступно эти вещи изложены в этой книжке! Лично я купил эту книжку просто на память, потому что её просто интересно листать, хотя функанализ мне сейчас не нужен.
Данную книгу не читал, но Колмогоровские учебники всегда отличались хорошими понятиями. Это называется, человек гениален во всем.
LCR>5. Кормен, Ривест, Лейзерсон "Алгоритмы: построение и анализ" — никакие беллетристы и переливатели из пустого в порожнее не сравнятся с ними!
+5
Классная книга.
Но сейчас у меня есть книга: "Графы в программировании: обработка, визуализация и применение". Замечательный набор материала, но написано... Без дополнительного гугления и просмотра по ссылкам на исходные материалы ничего не понять. Жуть. Несмотря на то, что пытаются дать не только формулы, но и алгоритмы это плохо у них получается.
Точно так же большинство учебников которые мне попадались когда-то в универе.
LCR>Так что я не согласен с тобой, дескать математики не умеют писать книги. Умеют!
Некоторые умеют. Абсолютно согласен. LCR>Но разумеется далеко не все, и процент посредственных книжек примерно такой же как и везде. Вдобавок написать хорошую книгу по математике намного труднее, потому что излагать "в апельсинах" суть проблемы P=NP намного труднее, чем излагать как "типа братки ведут канкретные базары с типа банкиром".
Эти два утверждения противоречат друг другу. Хотя бы статистически.
LCR>А по Хаскелю когда-нибудь появятся достойные книжки (я верю во всяком случае). Собственно, есть места из различных статей, которые хоть сейчас распечатывай и на стенку вешай — особенно удачные аналогии или красивые решения. Нужно просто подождать, пока Муза навестит хорошего преподавателя по Хаскелю
Немножко не так. По какой дисциплине преподают у нас Хаскель (или что чаще Лисп)? Предмет не помню, но в курс функц. языков входит математика. Так что лучше чтобы муза навестила хорошего публициста, а не преподавателя. Для пропогандирования Хаскеля это более полезно
frogkiller,
F>А если накладывать ограничения на типы (а без этого, я так понимаю, практически не бывает), то объявление разрастётся на несколько строк. F>По-моему, это сильно затрудняет написание больших программ.
На мой взгляд, не стоит лезть в дебри не имея основ.
Примерно то же самое, что и изучать арифметику с решения десятой проблемы Гильберта,
Или там теорию сложности с PCP теоремы,
Или учиться водить с гонки Формула 1...
Вот пример довольно общих объявлений типов:
concat :: (Foldable t) => t [a] -> [a]
and :: (Foldable t) => t Bool -> Bool
or :: (Foldable t) => t Bool -> Bool
any :: (Foldable t) => (a -> Bool) -> t a -> Bool
all :: (Foldable t) => (a -> Bool) -> t a -> Bool
sum :: (Foldable t, Num a) => t a -> a
product :: (Foldable t, Num a) => t a -> a
maximum :: (Foldable t, Ord a) => t a -> a
minimum :: (Foldable t, Ord a) => t a -> a
notElem :: (Foldable t, Eq a) => a -> t a -> Bool
find :: (Foldable t) => (a -> Bool) -> t a -> Maybe a
где Foldable, Ord, Num и Eq — это классы типов. Скажем для concat тип можно прочитать так: "Из того что t является инстансом класса Foldable следует, что concat имеет тип concat :: t [a] -> [a]".
Список — это инстанс Foldable. А инстансами Foldable можно сделать что угодно, и если выписывать сигнатуру напрямую, то может получиться сколь угодно громоздкая запись. Вот меня и занимает вопрос: какой смысл усложнять себе жизнь, а потом, извини за мой корейский, рвать волосы на заднице?
Если же просто взять самый простой случай, когда t==список, то имеем concat :: [a]] -> [a] — самый обычный тип, берётся список списков чего-нибудь, а возвращается просто список.
Хм,
GZ>Эти два утверждения противоречат друг другу. Хотя бы статистически.
Да не, Глеб, мне просто не понравилась фраза
GZ>>Вообще это большая проблема учебников написанных математиками.
Вот я и поспешил сделать замечание, что доля хороших писателей-математиков среди писателей-математиков (имхо) такая же как и доля хороших писателей среди писателей вообще. Разумеется у меня нет расчётов, статистики и прочее, сужу просто по тому количеству книг, о которых лично у меня хорошие воспоминания
GZ>Немножко не так. По какой дисциплине преподают у нас Хаскель (или что чаще Лисп)? Предмет не помню, но в курс функц. языков входит математика. Так что лучше чтобы муза навестила хорошего публициста, а не преподавателя. Для пропогандирования Хаскеля это более полезно
Ну или так.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Неправда. Книг написанных математиками, которые читаются легко и приятно навалом, и хорошую книгу можно найти для многих областей. Вот несколько примеров:
Твои утверждения не противоречат исходным. "Можно найти" не означает "нет такой проблемы".
Проблема очевидно есть. Спорить с этим можно, но не разумно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Lazy Cjow Rhrr, Вы писали:
LCR>Вот я и поспешил сделать замечание, что доля хороших писателей-математиков среди писателей-математиков (имхо) такая же как и доля хороших писателей среди писателей вообще. Разумеется у меня нет расчётов, статистики и прочее, сужу просто по тому количеству книг, о которых лично у меня хорошие воспоминания
Многие "писатели вообще" специально учились писать. Или совршенствуют свое мастерсво в этом вопросе. Плю их мозг не обработан катком мат.формальностей.
Популярная статья написанная математиком явление довольно редкое.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>То, что 99% программных решений сделаны императивно, не говорит о том, что само мышление человека обязательно императивно, имхо.
Неужели это говорит об обратном?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, VladD2, Вы писали:
GZ>Не соглашусь с тобой. Когда я изучал OOP — мне попалась одна книжка. Что за автор и что за книжка уже за давностью не помню. Автор точно помню русский. Там весь ООП был описан на одном (или двух) проектах. По крайней мере один я помню. Там описывался океан. Описывались объекты акулы, описывались жертвы и т.д.
Часом, не книга двух "русских парней" Вайнера и Пинсона "С++ изнутри"?
(В оригинале Wiener, Pinson "The C++ Workbook".)
Там как раз одна глава была посвящена этому "экологическому моделированию" (океан, хищники, жертвы).
А основная мысль, ИМХО, верная: меньше (поначалу) абстрактных слов, дайте (хоть какой) примерный проект.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, VladD2, Вы писали:
VD>На самом деле с ФП все точно так же как с ООП. Только надо выбирать язык который не отличается радикализмом. Например, точно не стоит начинать изучать ФП с использованием Хаскеля, Схемы или скажем Эрланга (т.е. языков близких чисто функциональным или ими и являющиеся).
Схему зря "обидел", ИМХО.
Но мысль понятна: учить базовым понятиям ФП можно и на языках, не считающихся функциональными.
Так и поступают Бауэр и Гооз в своей классической "Информатике": во 2-й главе ограничиваются строго функциональной (подстановочной) вычислительной моделью (хотя такого имени и не дают), но примеры дают на Алголе-68 и даже модифицированном Паскале.
(Вообще, интересно иногда заглянуть в старые книги: можно увидеть довольно ясные "намеки" на более поздние идеи.)
Только хотелось бы все-таки определиться: либо ФП — это "прозрачность по ссылкам", либо "сборная солянка".
В последнем случае не удивительно, что это "плохо дается императивщикам"...
VD>Несмотря на то, что это может показаться предвзятым...
Ну что ты...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.