LINUX.ORG.RU

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

 


0

0

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


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

> Я хеллоуворды посмотрел, почитал, посмотрел как реализуются тривиальные задачи на нём и на пайтоне.

мда, ты получается вообще общелисп не видел, а мнение имеешь.

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

То есть ты можешь сопротивляться Моей воле?

мне достаточно было сравнить Python с Tcl, чтобы быть заигноренным по обвинению в лиспопоклонничестве ;)

ты-то хоть по теме говорил

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

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

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

Спасибо, К.О. Читай выше фикс для тех кто хочет видеть живой код на лиспе, кому не важно сравнение, а важно чтобы код компилился.

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

Нет, спс.

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

Пруфлинки с примерами в студию.

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

Это как в какой-то комедии было. Чес слово. Ты предлагаешь есть одну и ту-же кашу, у которой нет вкуса. Говоришь что нужно её есть недели 3 чтобы узнать её профит, хотя очевидно что от неё профита 0 даже на первый день.
Сравнения на тривиальных задачах вполне хватает для сравнения языков по синтаксису. Мне этого достаточно.

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

>мда, ты получается вообще общелисп не видел, а мнение имеешь.
Смешно. Я видел лисп и кодил на нём некоторые простые задачи, что делал на пайтоне. После этого я лисп не видел? Его от меня спрятали, а вместо него дали кодить на этом скобочном убожестве?

после этого опуса, с тобой все ясно... ;-D

Да, я не говноед, в отличии от тех лисперов, что набежали в этот тред.

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

> Круто, но костыль.

в чем же костыльность?

Да и не вижу я чтобы оно было популярно.

потому что заморочки с синтаксисом лисперам не интересны

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

Да, почитал, интересно. Ну что я могу сказать. В лиспе есть фичи для создания макросимволов, это хорошо, но то как оно делается весьма костыльно и не красиво. Не думаю что вообще это кто-то даже думает юзать.

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

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

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

> код сводится к набору таких вызовов:

Вызовов, говоришь?

(macro ...args..)

И тут же пишешь «macro». Сопляк, ты хоть понимаешь, что такое macro, и почему ни о каком «вызове» тут не может быть и речи?

Любой оператор есть макрос, который вызывается как любая функция.

И после такого феерического бреда оно будет заявлять, что «осилило»?!?

Если не понятно что написано выше - лучше уйдите с ЛОРа

Выше написан бред тупого сопливого идиота. Когда подобный безграмотный детский бред сопровождатеся такими высказываниями, то получается смешно.

Короче, идиот, ты опозорился. Как всегда. Расскажи, приятно быть дебилом?

И не говори, что что-то там осилил, до тех пор, пока не поймёшь принципов работы макры infix.

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

> Сравнения на тривиальных задачах вполне хватает для сравнения языков по синтаксису. Мне этого достаточно.

Ах вот оно что! Тогда забудьте о Python. Вот язык как раз для Вас: http://www.linux.org.ru/view-message.jsp?msgid=4305246

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

Смешно. Я видел лисп и кодил на нём некоторые простые задачи, что делал на пайтоне.

Про свои приключения девкам рассказывай. Тут подобных «профессиналов», не заслуживших права иметь даже убогое собственное мнение, по тележке в день съедают.

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

Смешной анонимус такой смешной. Сколько слов, просто огромный словарный запас, для маленького дебила то, что смог только лисп осилить.

Ах вот оно что! Тогда забудьте о Python. Вот язык как раз для Вас: http://www.linux.org.ru/view-message.jsp?msgid=4305246

К чему оно? Я не понятно выразился? Я вам про одно, а вы про другое.

Поздравляю, дениска, ты дебил.

Смешная шутка.

Про свои приключения девкам рассказывай. Тут подобных «профессиналов», не заслуживших права иметь даже убогое собственное мнение, по тележке в день съедают.

Я разве рассказываю вам про свои приключения? Это так, просто обзор. Мне быть «лиспрофессионалом» не хочется, а тех, кто являются такими, мне просто жаль.

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

Сколько этому лет, а такие дебилы как ты этого не юзают. Не важно что оно есть или его нет. Важно то как оно используется, используется ли вообще и будет ли это lisp-way.
Это я так, для вот таких как ты, поедателей кактусов.

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

Дебил ты, дениска, дебил и ничтожество.

Макра infix - это пример того, что можно делать с макрами. Да, конкретно её используют редко - потому что она не нужна. А вот гораздо более сложные языки, со сложным синтаксисом, на макрах делают постоянно. Типичная программа на Лиспе процентов на 60 состоит из макроопределений. И именно это и есть lisp way. Но ты до сих пор даже не понимаешь, кретин, что такое макры. Даже не пытался понять. Это тебя характеризует как конченного ублюдка.

Посмотри на Maxima, например. Её язык это тоже что-то вроде макры infix, только намного сложнее. Тоже транслируется в lisp.

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

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

Анонимус, такой смешной. Тонны говн льются из его рта. Что, ты так высказываешь свою ненависть из-за того что работаешь в макдональдсе, живёшь с мамой, а из-за того что являешься умственно отсталым с рождения пытаешься всех и вся назвать такими как ты на ЛОРе? Бедный анонимус. Мне тебя так жаль.
Ну ничего, может, лет через 10 врачи смогут тебе помочь и ты сможешь попробовать понять D и C, да, тогда ты сможешь забыть про свой жалкий лисп! Я буду за тебя молиться :3

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

Чувак, ты не чувствуешь, что слил ты, а не я?

Ты не понимаешь, как ты опозорился? После «вызовов macro» ты должен был от стыда повеситься, недоумок.

И, кстати, D и C я понимаю намного лучше, чем ты. Увы. Ты просто слишком глуп, чтобы хоть что либо понимать.

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

>Типичная программа на Лиспе процентов на 60 состоит из макроопределений.

Неужели то что делается макросами нельзя сделать функциями?

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

кстати вот, тоже хотел процитировать. мне казалось что хороший тон - не писать макр если на то нет насущной необходимости, разве нет?

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

> Неужели то что делается макросами нельзя сделать функциями?

а Вы не знаете разницы между макрами и функциями?

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

Вы смотрите какая интересная особь. Пытается самоутвердиться разбрасываясь словом «слил».
Знаем мы таких узколобых кретинов. Да, D ты знаешь, C ты знаешь, на C++ ты написал свою ОС, да да, все тебе верят. Ты только не напрягайся сильно.

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

Лолд. Уже обсудили тему выше.

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

Я вообще не понимаю любви лисперов к макросам. На жабоскрипте я не разу не сталкивался с необходимостью использовать eval кроме случая подгрузки сторонних библиотек. А в питоне есть декораторы, которык так же всего лиш функции(тупой убогий синтаксический костыль).

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

> мне казалось что хороший тон - не писать макр если на то нет насущной необходимости, разве нет?

Из чтения всяких лисп-флеймов, у меня сложилось мнение, что реальные Лисп-прогеры макры используют нечасто. 60% - это гон^Wпропаганда.

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

Вот из за таких пот сказок, и долгое время пренебрегал лиспами.

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

Из чтения всяких лисп-флеймов, у меня сложилось мнение, что реальные Лисп-прогеры макры используют нечасто. 60% - это гон^Wпропаганда.

А нафига она часто нужны? Так, если пучок практически одинаковых функций нужно сконструировать...

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

>> у меня сложилось мнение, что реальные Лисп-прогеры макры используют нечасто. 60% - это гон^Wпропаганда.

А нафига она часто нужны?

Альтернативно вежливый анон говорил про 60% в «типичной Лисп-программе». Зачем ему столько - я даже не догадываюсь.

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

> Неужели то что делается макросами нельзя сделать функциями?

Нельзя, конечно же. Попробуй, сделай хотя бы функцию infix.

Макры меняют семантику языка.

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

> А нафига она часто нужны? Так, если пучок практически одинаковых функций нужно сконструировать...

Макры - лучший способ эффективной реализации встраиваемых DSL. Как раз кодогенерация из всякого барахла - не лучший способ применения макр, в большинстве случаев лучше создавать исходники отдельно.

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

> Почему eDSL не ппределять через функции?

Потому, что, во первых, это очень медленно (интерпретация вместо компиляции), а во вторых, семантика DSL может существенно отличаться от семантики Лиспа.

Попробуй, например, сделать аналог LINQ на функциях.

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

> вообще не понимаю любви лисперов к макросам. На жабоскрипте я не разу не сталкивался с необходимостью использовать eval кроме случая подгрузки сторонних библиотек.

А говоришь, что понимаешь макры. Между eval и макрами нет абсолютно ничего общего.

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

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

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

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

> Тебя даже забыли научить, что читать надо не флеймы, а код.

В этих флеймах участвовали люди, которые и читали, и писали код на Лиспе. Если что, я не лоровские флеймы имею в виду.

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

>Ты дурак, да? Почему это не нужны DSL?

Ну и разгребай тогда DSL написаный кемто... Или анонимус не читатель, аногимус писатель?

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

> А в питоне есть декораторы, которык так же всего лиш функции(тупой убогий синтаксический костыль).

Черт, я думал это паттерн декоратор, арргх. Забавная штука.

Вот тут вопрос как раз по теме: как в питоне сделать произвольный объект неизменяемым? Неважно декораторами или нет. Неизменяемым, это не только __setattr__ __delattr__, но также неизменяемым для манкипатчинга.


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

>DSL может существенно отличаться от семантики Лиспа.

Ну и зачем всё мешать в одну кучу? DSL практичней использовать для кодогенерациии тогда уж.

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

>Тебя даже забыли научить, что читать надо не флеймы, а код.

Нравится читать такой код? ССЗБ

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

> Ну и разгребай тогда DSL написаный кемто... Или анонимус не читатель, аногимус писатель?

Это намного проще, чем разгребать кем-то написанные библиотеки. Сделанный на метапрограммировании DSL легко отлаживается, можно посмотреть все этапы кодогенерации. И логика DSL легко разделяется на независимые этапы, так что его при такой реализации намного проще расширять, чем традиционный компилятор.

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

> Ну и зачем всё мешать в одну кучу? DSL практичней использовать для кодогенерациии тогда уж.

Слушай, завязывай уж рассуждать с умным видом о том, чего совершенно не понимаешь.

Метапрограммирование - это обобщение кодогенерации.

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

В том же C.L.L тоже совсем не много реальных практиков. Практики в такие гадюшники не ходят и во флеймах не участвуют.

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