On Sat, 21.03.2009 19:03:51 , Aleksey Cheusov wrote: > > >> Сходил за книжкой в другую комнату. > >> Открываем первый том двух-томника "Мир лиспа", смотрим заглавие. > >> Ага, apply - страница 246, читаем, apply - функция двух переменных. > >> В примере 4. Все. 5 минут прошло. Мое время и терпение иссякли. > >> > >> Искать и ставить настоящий CommonLisp и искать его документацию, чтобы > >> вспомнить, что читал несколько лет назад и вроде бы знал мне некогда. > >> > >> При этом гораздо больше строк > >> > >> function transposition (matrix A [N,M]) > >> matrix B = create_matrix (M, N) > >> for i in 1,N > >> for j in 1,M > >> B [j, i] = A [i, j] > >> end > >> end > >> return B > >> end > >> > >> понимают _абсолютно все_ мгновенно. > >> > > Во-первых, не абсолютно все, а те, кто обучен на императивном подходе. > Абсолютно все. Потому что императивный подход - это естественный способ > мышления человека. Какой у человека распорядок дня? > Шаг 1: Проснулся > Шаг 2: Умылся, побрился, причесался, оделся > Шаг 3: Позавтракал > Шаг 4: Поехал на работу или учебу > Шаг 5: Дождался обеда, сходил в столовую или слопал "ссобойку" > Шаг 6: Поработал еще немного > Шаг 7: Вернулся домой > Шаг 8: Сходил в магазин, купил чего-нибудь на ужин > Шаг 9: Позанимался с детьми, женой, подругой, любовницей... > Шаг 9: Приготовил чего-нибудь, поужинал > Шаг 10: Почитал книжку > Шаг 11: Лег спать > > Именно вот так, последовательно, императивно, по шагам человек думает > всю свою жизнь. Глупости. Это последовательность отдельных, не связанных между собой задач. Она не имеет никакого отношения ни к императивному подходу, ни к функциональному, ни к какому другому.
> > Во-вторых, это был _элементарный_ пример. Функции apply и map на > > порядки мощнее и эффективнее > Опять дешевая пропаганда. apply/funcall - это банальный eval во многих > динамических ЯП. Автоматические цацки со списками можно прикрутить к > почти любому языку. Cons - нашли, блин, мегаконцепцию... > map? -- банальный foreach или итераторы с циклами делают то же самое в > любом языке таким же количеством строк. Только не стоит забывать, что и eval, и foreach позаимствованы именно из функционального подхода. Т.е. с их использованием это уже не есть чистая императивщина точно так же, как упомянутый тобой код emacs-а не есть чистая функциональщина. Другими словами, грань между этими двумя подходами вообще весьма размыта. > >Думаю, в том же "Мире лиспа" можно найти однострочники, > >которые при переводе на императивный язык развернутся не в два цикла с > >одним оператором > Лаконичность не является и никогда не являлась критерием качества языка > сама по себе. На перле тоже вот можно такого наворотить... Речь не о лаконичности, а о ёмкости. > >, а в несколько сотен строк кода, который очень мало кто поймёт > >"мгновенно". > Уровень абстракции в императивных ЯП элементарно наращивается при помощи > функций, классов, объектов, пространств имен, модулей и т.д. > Нет здесь у Лиспа никаких преимуществ и не было никогда. > Все это байки 60-х. Мы как будто на разных языках говорим: все слова понятны обоим, а смысл в их последовательность вкладываем каждй свой. -- С уважением, Тихон Тарнавский. http://linuxforum.ru http://posix.ru -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

