Re: Perl or Python?
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
Reply to: