LINUX.ORG.RU

[Python][Функциональщина] Медленный не пайтон, а функциональщина

 


0

0

Разгребаю код на пайтоне, джанго. Писал один интересный человек, который верил в функциональщину. Почти тру лиспотролль.
Что хочу сказать. Его функциональные фишки отжирают овер 90% времени обработки запроса и рендера.
Оптимизировал самое очевидное и получил не хилый профит.
Опыт кодинга на C и D помог не мало.
Пайтон не медленный(а даже если и медленный, то не так уж как говорят), его замедляют люди, юзающие функциональщину без раздумий о том что «находится за сценой».
Когда код, в котором 7 раз создаются новые лиспы с помощью генераторов и вызывается 5+N раз конструкторы, можно написать не менее элегантно не используя принципы и функционал функциональщины.
Вообще, конечно, важно умение использовать инструменты, но с функциональщиной оно наиболее опасно и менее всего очевидно. Увы.
Вот такой вот возгляд с другой стороны на вашу функицональщину. А я пошёл спать.


Кода не будет ибо не на своём компьютере приходилось заниматься, да и просить код как-то неловко.
Поговорил с несколькими людьми на счёт лиспа, хаскеля и пайтона. Выяснилось что оно так везде. Да, в пайтоне медленней, но важно то что подход со стороны функционального программирования существенно замедляет код.
Здесь идёт сравнение хаскеля с пайтоном. Что я могу сказать? Хотите юзать функциональщину - юзайте хаскель(как я уже многократно говорил на ЛОРе), хотите пистаь быстрый оптимизированный код - пишите на D, C. Хотите что-то быстро написать а потом тратить дни на оптимизацию - юзайте пайтон(между прочим оно не так уж сложно, пишу на Pylons, а благо код приятный, оптимизировать всё легко и просто, хотя неоднократно задумался над тем чтобы начать самому делать веб-фреймворк на D).
Лично для меня легче писать на пайтоне и потом оптимизировать, чем иметь лиспокод(или хаскелекод, не суть). Причин несколько:
1) У Пайтона простой, красивый код, который даже при быдлокоде позволяет быстро врубиться что и где и оптимизировать все узкие места без особых затрат. Да, это с учётом динамической типизации.
2) На лиспах и хаскелях код просто жуткий. Даже если его оптимизировать во время написания, всё равно придётся к нему возвращаться для того чтобы изменить логику(ну или чтонить ещё сделать), а разбор такого кода займёт если не весь день, то как минимум всё продуктивное время.
Пруфов не будет. Для меня оно очевидно.

И да. «Преждевременная оптимизация — корень всех бед» ©
Ненавижу когда люди употребляют данную фразу не к месту. В данном случае я говорю о оптимизации кода после его написания, т.е. когда у тебя рендеринг страницы уже зашкаливает за 0,20сек - пора оптимизировать.

тормозной код можно писать используя любой подход и язык, К.О.

Безусловно. Всё что я хочу сказать: на функицональщине легче неписать такой код тучами, при этом не будет сразу очевидно что данный код может убить аппликейшн.

tia
() автор топика
Ответ на: комментарий от tia

>Кода не будет ибо

Ну вот и слив, дальше можно было не говорить ничего.

как я уже многократно говорил на ЛОРе


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

volh ★★
()
Ответ на: комментарий от volh

Во, идея: напиши на своем пайлонсе бложек, и устрой в нем клуб «слепые философы о программировании».

volh ★★
()
Ответ на: комментарий от tia

> 1) У Пайтона простой, красивый код,

2) На лиспах и хаскелях код просто жуткий.

Пруфов не будет. Для меня оно очевидно.



На ЛОРе найдётся немало человек, для которых очевидно обратное. ;)

naryl ★★★★★
()
Ответ на: комментарий от jtootf

Пишет-пишет. И ещё пишет, что для ленивой чистой функциональщины ещё и невозможно даже формально оценить сложность алгоритмов, и потому доказывает всё для eager functional.

anonymous
()
Ответ на: комментарий от volh

>Ну вот и слив, дальше можно было не говорить ничего.
Не слышу слива бочка унитаза. Может у вас вода кончилась?

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

Рыжий тролль, откуда столько ненависти? Давненько меня неосилятором не называли. Точнее - ты первый.
Да и такие заявления принято подкреплять пруфами или ты просто так, пришёл покакать как рыжий обезьян?

tia
() автор топика
Ответ на: комментарий от tia

> хотите пистаь быстрый оптимизированный код - пишите на D

Ага-ага. Как только приличный компилятор D появится, так сразу.

anonymous
()
Ответ на: комментарий от tia

> Давненько меня неосилятором не называли.

А что, осмелишься утверждать, что функциональщину осилил? По тебе не заметно. Ты ведь ни хрена не знаешь. И программист ты паршивый.

anonymous
()
Ответ на: комментарий от tia

>Давненько меня неосилятором не называли. Точнее - ты первый.
Да и такие заявления принято подкреплять пруфами или ты просто так, пришёл покакать как рыжий обезьян?

Ты отказываешься показать код. Или привести пример «злых и жутких функциональных фишек». Учитывая некоторые твои другие глупые темы, ты не знаешь не только «лиспы хаскели», но и питон тоже.

Собственно, ответить ты можешь только кодоаттачментом. dixi.

volh ★★
()
Ответ на: комментарий от tia

> Угу. И все они буду входить в состав суб-культуры «тролли».

Вполне ожидаемый ответ. tia, хватит всех под гребёнку зачёсывать. Если ты осилил Python и не осилил Лисп, это ещё не значит, что нет таких, кто осилил Лисп, но не осилил Python.

naryl ★★★★★
()
Ответ на: комментарий от anonymous

Только тролли не в курсе того что dmd уже есть приличный компилятор. Какой вывод? Анонимус как всегда - тролль.

А что, осмелишься утверждать, что функциональщину осилил? По тебе не заметно. Ты ведь ни хрена не знаешь. И программист ты паршивый.

Сколько ненависти да в одном треде. И всё сразу в мою сторону.
Уж поверь, быдлоанонимус, я знаю поболее чем ты и функциональщину я осилил, да понял что она не нужна.

Ты отказываешься показать код. Или привести пример «злых и жутких функциональных фишек». Учитывая некоторые твои другие глупые темы, ты не знаешь не только «лиспы хаскели», но и питон тоже.

Ай хардли лолд. Глупые темы? Может ты просто не в теме и пытаешься сказать что это не ты такой дебил, а тс глупый? Я только такие выводы могу сделать.
Интересные умозаключения у тебя. Вообще, с такими проблемами нужно идти на курсы понижения ЧСВ или сразу к психеатру, ей богу.
А код я бы показал, если бы он у меня сейчас был бы под рукой. Да и не ради доказательства факта таким как вам создавался тред. Смиритесь.

Собственно, ответить ты можешь только кодоаттачментом. dixi.

Да и что там код. Здесь дело не только в определённом участке кода, а вообще в методах функционального программирования. Или оно слишком сложно для твоего понимания?

Вполне ожидаемый ответ. tia, хватит всех под гребёнку зачёсывать. Если ты осилил Python и не осилил Лисп, это ещё не значит, что нет таких, кто осилил Лисп, но не осилил Python.

Ну да. То что есть просто не осилившие пайтон, то оно как-бы говорит либо о их лени, либо о уровне IQ.
Остальные же в данной категории - тролли.

tia
() автор топика
Ответ на: комментарий от tia

> функциональщину я осилил, да понял что она не нужна.

Есть немало человек, которые функциональщину осилили и поняли, что она нужна. Один из известных мне на форумах вроде ЛОРа не появляется, а дело делает. Опять всех на себя равняем?

То что есть просто не осилившие пайтон, то оно как-бы говорит либо о их лени, либо о уровне IQ.


Неосиливание ни о чём не говорит. Ты не осилил Лисп и что? В лени или низком IQ тебя я бы обвинять не стал. :) Только в нежелании допустить наличие других точек зрения.

naryl ★★★★★
()
Ответ на: комментарий от tia

> Уж поверь, быдлоанонимус, я знаю поболее чем ты и функциональщину я осилил, да понял что она не нужна.

Не поверю. Ты знаешь намного меньше меня. Ты неадекватен и глуп.

И ты слишком никчёмное ничтожество, чтобы что-то там «понимать». Ты не имеешь ни малейшего представления о том, где, когда, и для чего используется функциональщина. Но осмеливаешься вякать про «не нужна». Кто ты после этого, недоумок?

anonymous
()
Ответ на: комментарий от naryl

Возможно, всё дело в не понимании слова «осилить»? Осилить - понять как оно работает и научиться эффективно на нём кодить.
Это понятие не включает в себя пункт «стать фанатиком этого языка и юзать его и только его, даже если есть лучше альтернативы».
По-твоему если человек почитал о лиспе, покодил на нём и понял что он не нужен - значит человек его не осилил? Бредово, не правда ли?
Так вот. Я осилил лисп, даже немного хаскель, ибо ты тогда просил глянуть ближе. Но дальше учить их не стал. Как я говорил, это не human-readable-язык. Это не язык для человека.
Если хаскель ещё более или менее в общем синтаксисе, то лисп здесь просто убийца людей.
Повторюсь: в этом пайтон идеален. В нём всё легко, просто, красиво.
Я допускаю 3 вида людей, которые могут доказывать что лисп хороший язык:
1) Спасатели языков(как я с D, вроде язык почти мёртв, но верю что он может быть крутым)
2) Верующие в киллерфичи и готовые есть всё что дадут только ради этих киллерфич(как ты, naryl). Да, одно но - многие такие «киллерфичи» являются фичами что уже были, да только взгляд сделан под немного другим углом или, как в лиспе, вовсе упрощён до нельзя(это я про программируемость, которую я называю не киллерфичей, а ущербностью языка).
3) Тролли. Они просто людят спорить с людьми. Если кто-то скажет что говно не вкусное, то эти люди будут говорить наоборот, будут утверждать что ТС не умеет есть говно.

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

tia
() автор топика
Ответ на: комментарий от tia

> Здесь дело не только в определённом участке кода, а вообще в методах функционального программирования.

Что ты знаешь об этих методах, недоумок? Ты Окасаки читал?

То, что пистонисты не осилили реализовать адекватно функциональщину - это проблема пистонистов. На то они и недоумки. В правильной функциональщине, например, map поверх результата map скомпилируется в код, который не создаёт промежуточных списков.

anonymous
()
Ответ на: комментарий от anonymous

Ты окном ошибся. Двач в другом окне.

tia
() автор топика
Ответ на: комментарий от tia

> Осилить - понять как оно работает

Именно этого ты и не сделал, недоумок.

По-твоему если человек почитал о лиспе, покодил на нём и понял что он не нужен - значит человек его не осилил?

Да, недоумок. Это значит, что недоумок его не осилил. Если он потом вякает про «нет операторов, всё сделано через функции», то этот недоумок даже близко не пытался ничего осилить.

Я осилил лисп, даже немного хаскель,

Да не осилил ты ни хрена. Ты тупой.

В общем, ты - мразь. Тупая мразь.

anonymous
()
Ответ на: комментарий от anonymous

Вы смотрите какой маленький анонимус! Только осилил мат и уже кидается словами! Сколько ненависти! Сколько слов! Давай же ещё, мне интересно какой у тебя словарный запас :3

tia
() автор топика
Ответ на: комментарий от tia

>>> 1) У Пайтона простой, красивый код,

2) На лиспах и хаскелях код просто жуткий.
Пруфов не будет. Для меня оно очевидно.

На ЛОРе найдётся немало человек, для которых очевидно обратное. ;)

Угу. И все они буду входить в состав суб-культуры «тролли».

Если человек вдруг начнет писать у себя в днявочке, что он встает с утра с левой ноги, а те, кто встают с правой — быдло и ничего не понимают, то он справедливо будет послан нахуй. (c)

Waterlaz ★★★★★
()
Ответ на: комментарий от tia

Ты не отвякивайся, сопляк. Ты уж лучше ответь за базар, по поводу «в Лиспе всё есть функции». А то ведь сволочизм получается - вякаешь, что мол якобы «осилил», и тут же демонстрируешь, что вообще ни хера не понял.

anonymous
()
Ответ на: комментарий от tia

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

Сколько ненависти да в одном треде. И всё сразу в мою сторону. Уж поверь, быдлоанонимус, я знаю поболее чем ты и функциональщину я осилил, да понял что она не нужна.

Я сомневаюсь. Серьезно =) Как минимум твои треды показывают обратное.

Waterlaz ★★★★★
()
Ответ на: комментарий от Waterlaz

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

tia
() автор топика
Ответ на: комментарий от tia

>Ну да. То что есть просто не осилившие пайтон, то оно как-бы говорит либо о их лени, либо о уровне IQ.

Ну да. То что есть просто не осилившие хаскель и ФП(смотрим в сторону ТС), то оно как-бы говорит либо о их лени, либо о уровне IQ.

Waterlaz ★★★★★
()
Ответ на: комментарий от tia

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

Гы... ну так чего ж ты тогда не самозабанешься? =)

Waterlaz ★★★★★
()
Ответ на: комментарий от tia

> Я допускаю 3 вида людей, которые могут доказывать что лисп хороший язык:

4. Люди, не понимающие чем так страшен синтаксис и умеющие использовать киллерфичи. Именно к ним относится упомянутый выше функциональщик, не появляющийся на ЛОРе.

Сравнить два языка очень легко. Сначала пиши (достаточно общую задачу) на одном, потом на другом. После D я при написании на C++ и Java каждые пять минут останавливался и думал, как что-либо тривиальное в случае D реализовать на этих двух. То же самое было после Scheme на C++. Реквестирую сравнение от человека, знающего Python и Common Lisp. :)

Но чисто теоретически я не могу понять что такого есть в языках с инфиксными операторами, что нельзя настолько же просто реализовать в языках без них. (Инфиксные операторы - любимая тема tia ;) ) Python (опять же теоретически) - тот же Lisp без большинства киллерфич и с неуклюжей реализацией имеющихся.

naryl ★★★★★
()
Ответ на: комментарий от tia

>Ау! Двач там ->

Двача уж давно как нет. Успокойся. Анонимус правильно пишет:

В правильной функциональщине, например, map поверх результата map скомпилируется в код, который не создаёт промежуточных списков.

Waterlaz ★★★★★
()
Ответ на: комментарий от Alesh

>Сравниваем интерпретированный или компилированный хаскелл с питоном? Алгоритм хорошо разрешимый в ФЯ или просто, что под руку попало?

Сравниваем самую быструю реализацию хаскель и самую быструю питон.

А где было заявлено, что питон функциональный? С элементами функциональности-же. И то Гвидо видимо первоначально их фор фан воткнул ;)

Иди распарсь еще раз свой же пост и мой ответ.

Waterlaz ★★★★★
()
Ответ на: комментарий от Waterlaz

Анонимус правильно пишет

да не нужно ему ничего знать про fusion и прочие acid rain'ы. он для себя уже всё решил

jtootf ★★★★★
()
Ответ на: комментарий от anonymous

О! Пара новых слов. Интересно.
Дитятко, ты вообще видел лисп? Ну вот давай, для маленьких:
Любой(ну может есть что-то ещё, но почти весь код по сути) код сводится к набору таких вызовов:
(macro ...args..)
Например:
(+ 1 2) - macro - +, args - 1,2
(defun a (b) (return (+ b 10)) - macro - def, args - abc
(draw 'rect 0 0 10 10) - macro - draw, args - 'rect, 0, 0, 10, 10
И допускаются вкладывания. Вот давайте рассмотрим что это это и почему данная «программируемость» на самом деле есть отсутствие возможности создания нормальных функций.
на пайтоне, допустим, оно было бы так:
a = 1+2
def a(b): return b+10
draw('rect', 0, 0, 10, 10)
В пайтоне мы видим чёткое разделение на in-built синтаксические функции вроде return, def, +, =, которые удобно использовать и нет необходимости перегружать сразу для всей программы.
Так-же мы видим что есть «обычные» функции - функции, что объявляет пользователь через оператор def.
Что мы видим в лиспе? Любой оператор есть макрос, который вызывается как любая функция.
Давайте посмотрим на это с разных сторон:
1) Лисп проще ибо в нём меньше синтаксических схем, меньше нужно понять.
Это хороший плюс, да. Если вы отсталый ребёнок, который просто не может понять более одной синтаксической схемы - лисп будет вашим выбором.
2) В лиспе нет оптимизации синтаксиса методом добавления синтаксических схем, которые упростили бы жизнь, как в пайтоне.
С одной стороны, это против идеалогии полностью программируемого языка. Но стоит ли жертвовать всем ради идеи? Т.е. если язык превращается в ад, но соответствует идеи, есть ли смысл его юзать или пределживаться такой идеи для написания кода человеком?
3) Читабильность кода уходит в полную Ж.
Код становится похожим на xml(теги - макросы, аттрибуты - аргументы), который, как известно, давно принято не называть читабильным для людей.

Вот теперь подошли к интересной части. Если не понятно что написано выше - лучше уйдите с ЛОРа. Всем будет проще.
Программируемость языка это параметр, который был целью для создлания ИИ, который бы сам генерировал данный код не «думая» о различных синтаксических схемах. Для этого язык и стал похожим на примитивный(читай «простой») язык разметки.
Если вы ИИ - я не спорю, используйте, ведь для вас оно и было создано. Иначе - прошу уйти с ЛОРа.
И да, если кто захочет оспорить моё вышеописанное мнение - прошу писать мне в джаббер или здесь но с развёрнутыми аргументами. Иначе - сразу в игнор.

tia
() автор топика
Ответ на: комментарий от tia

Вот же клоун, таких однако ещё поискать :) Кто бы ему ещё сказал, что лисп это вообще не функциональный язык и к «функциональщине» отношения никакого не имеет, вот бы был наверное культурный шок, сколько глупостей и те не туда гы :))

archimag ★★★
()
Ответ на: комментарий от tia

Я что-то пропустил? На лоре конкурс клоунады?

kemm
()
Ответ на: комментарий от tia

(defun a (b) (return (+ b 10))

Что мы видим в лиспе? Любой оператор есть макрос

В лиспе нет оптимизации синтаксиса методом добавления синтаксических схем, которые упростили бы жизнь

facepalm.png. Осиль Лисп ещё раз.

Если вы ИИ - я не спорю, используйте, ведь для вас оно и было создано.

И горжусь этим :P

naryl ★★★★★
()
Ответ на: комментарий от tia

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

Одним только божественно-справедливым «неосилятор», без матюгов и флуда, я довожу людей до игнора, чесотки и гангрены мозга. Принимаю заказы, дорого. \m/_\m/

volh ★★
()
Ответ на: комментарий от naryl

>4. Люди, не понимающие чем так страшен синтаксис и умеющие использовать киллерфичи. Именно к ним относится упомянутый выше функциональщик, не появляющийся на ЛОРе.
Вообще, я подозреваю что такие люди как-раз работают в области ИИ, они понимают в чём преимущества данного языка в такой области.

Реквестирую сравнение от человека, знающего Python и Common Lisp. :)

Как опять вернусь на D(читай «как допилю текущие проекты») буду делать такие сравнения.

Но чисто теоретически я не могу понять что такого есть в языках с инфиксными операторами, что нельзя настолько же просто реализовать в языках без них.

«Вам не понять».
Я не говорю про «возможность», я говорю про удобство и качество. Читать вверх ногами тоже можно, но почему-то никто так не делает.

Инфиксные операторы - любимая тема tia

Я просто приводил один из самых очивидных аргументов, что был использован на нескольких презентациях о лиспе(искать на ютубе, ссылок дать не могу ибо смотрел по рандому).

Python (опять же теоретически) - тот же Lisp без большинства киллерфич и с неуклюжей реализацией имеющихся.

Большинства? Давай конкретнее.
Неуклюжей реализацией? Согласен. Сказать рецепт успеха? Взять лисп как бекэнд, а пайтон как фронтэнд и всё будет супер.

tia
() автор топика
Ответ на: комментарий от tia

1) У Пайтона простой, красивый код, который даже при быдлокоде позволяет быстро врубиться что и где и оптимизировать все узкие места без особых затрат. Да, это с учётом динамической типизации.

пистон - это бэйсик для ниасыляторов типа тебя

2) На лиспах и хаскелях код просто жуткий. Даже если его оптимизировать во время написания, всё равно придётся к нему возвращаться для того чтобы изменить логику(ну или чтонить ещё сделать), а разбор такого кода займёт если не весь день, то как минимум всё продуктивное время.
Пруфов не будет. Для меня оно очевидно.

ты просто не шаришь, лучше иди на дальше на пистоне строчи

CL-USER
()
Ответ на: комментарий от tia

> Как опять вернусь на D(читай «как допилю текущие проекты») буду делать такие сравнения.

После предыдущего коммента со сравнением Python и Common Lisp ты автоматически вычёркиваешься из списка знающих последний. Извини, но это правда.

naryl ★★★★★
()
Ответ на: комментарий от naryl

>facepalm.png. Осиль Лисп ещё раз.
Зачем? Я хеллоуворды посмотрел, почитал, посмотрел как реализуются тривиальные задачи на нём и на пайтоне. Понял что и как. Синтаксис не учил. И да, о макросе return слышал, но добавил сюда чисто так, для большего страха.
Для Ъ:
(defun a (b) (+ b 10))

tia
() автор топика
Ответ на: комментарий от tia

> Да, одно но - многие такие «киллерфичи» являются фичами что уже были, да только взгляд сделан под немного другим углом или, как в лиспе, вовсе упрощён до нельзя(это я про программируемость, которую я называю не киллерфичей, а ущербностью языка).

программируемость, которую я называю не киллерфичей, а ущербностью языка


мдя...

CL-USER
()
Ответ на: комментарий от tia

> здесь но с развёрнутыми аргументами. Иначе - сразу в игнор.

Прошу прощения.

(defun a (b) (return (+ b 10))


Любая форма возвращает значение. return не нужен.

Что мы видим в лиспе? Любой оператор есть макрос


Даже не знаю как это прокомментировать. Могу только посоветовать осилить Лисп заново.

В лиспе нет оптимизации синтаксиса методом добавления синтаксических схем, которые упростили бы жизнь


Есть. *Кроме* переписывания списков макросами.

naryl ★★★★★
()
Ответ на: комментарий от CL-USER

>пистон - это бэйсик для ниасыляторов типа тебя
А лисп для тех кто не осилил asm. Вы пишете на лиспе? Значит вы неосилятор!
Браво маэстро, жаль что вы троллить не научились. Посмотрите на тез кто отписался выше, у них вот лучше получается.

ты просто не шаришь, лучше иди на дальше на пистоне строчи

Ок. Лучше я за час напишу нужный код и потрачу ещё час на оптимизацию, чем за 2 часа напишу код на лиспе и буду проклинать этот код через неделю.

После предыдущего коммента со сравнением Python и Common Lisp ты автоматически вычёркиваешься из списка знающих последний. Извини, но это правда.

А я говорил что я хочу знать лисп? Мне он не нужен. Я его уже сравнил(до этого) и мне этого хватило.

tia
() автор топика
Ответ на: комментарий от tia

> И да, о макросе return слышал, но добавил сюда чисто так, для большего страха.

Для большего страха (defun a (b) (return-from a (+ b 10))). Твой вариант даже не скомпилится.

naryl ★★★★★
()
Ответ на: комментарий от tia

> А я говорил что я хочу знать лисп? Мне он не нужен. Я его уже сравнил(до этого) и мне этого хватило.

Я предлагал немного другой метод сравнения. Для него недостаточно «посмотреть хеллоуворды».

naryl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.