Питон
от Всичко за 1 лев, свободната енциклопедия
Версия от 16:05, 4 май 2020 Куцо Магаре (Беседа | приноси) ← Go to previous diff |
Текуща версия Куцо Магаре (Беседа | приноси) Не мразя този език за програмиране. Мразя хората, които го ползват. Уви, ползвам го и аз... |
||
Ред 6: | Ред 6: | ||
Тъй като езикът е динамичен, нито вие знаете какви са променливите ви, нито самият език. Освен това всичко е видимо отвсякъде, което означава, че можете [https://semitwist.com/articles/article/view/why-i-hate-python-or-any-dynamic-language-really да си завирате лайната където си поискате]. | Тъй като езикът е динамичен, нито вие знаете какви са променливите ви, нито самият език. Освен това всичко е видимо отвсякъде, което означава, че можете [https://semitwist.com/articles/article/view/why-i-hate-python-or-any-dynamic-language-really да си завирате лайната където си поискате]. | ||
- | Питон е бавен. Толкова бавен, че се препоръчва for циклите да не се ползват. | + | Питон е бавен. Толкова бавен, че се препоръчва <code>for</code> циклите да не се ползват. |
Тъй като са девствени онанисти-[[фетишизъм|фетишисти]] и мислят само за гениталиите си, питонджиите извършват демоничните ритуали на т.нар. "duck typing" - отъждествявайки всичко с патката си. | Тъй като са девствени онанисти-[[фетишизъм|фетишисти]] и мислят само за гениталиите си, питонджиите извършват демоничните ритуали на т.нар. "duck typing" - отъждествявайки всичко с патката си. | ||
- | В питон няма скоби и редовете се индентират с точно определен брой интервали. Ако сложите един повече или по-малко ще получите <code>IndentationError: unexpected indent</code>. За капак на всичко, с оглед на това че са клозетни гейове, страдащи от агорафобия, питонджиите имат страх от дълги редове и официалният наръчник за стил на езика изисква редове дълги [https://www.python.org/dev/peps/pep-0008/#maximum-line-length 79 символа]. | + | В питон няма скоби и редовете се индентират с точно определен брой интервали. Ако сложите един повече или по-малко ще получите <code>IndentationError: unexpected indent</code>. За капак на всичко, с оглед на това че са клозетни [[Гей|ГЕЙОВЕ]], страдащи от агорафобия, питонджиите имат страх от дълги редове и официалният наръчник за стил на езика изисква редове дълги [https://www.python.org/dev/peps/pep-0008/#maximum-line-length 79 символа]. |
+ | |||
+ | Опитвате се да манипулирате файлове и пътеки? Искате да използвате разделителя на файловите пътеки? (<code>/</code> ако сте [[Луникс|педал-пингвинждия]] и <code>\\</code> ако сте курва на [[Бил Гейтс|Бил Порталов]]) Дано ви бива да печелите "ези-тура" или случайно попаднете на съответния док, щото <code>os.pathsep</code> и <code>os.path.sep</code> са две различни стойности, като първата е разделителя на вашия PATH environment variable, а второто е това, което ви трябва. | ||
При инсталация питон насира environment variables-а до такава степен, че в наши дни питон не се инсталира директно. Първо се инсталира анаконда, създава се виртуален environment, и след това се инсталира питон. | При инсталация питон насира environment variables-а до такава степен, че в наши дни питон не се инсталира директно. Първо се инсталира анаконда, създава се виртуален environment, и след това се инсталира питон. | ||
Ред 42: | Ред 44: | ||
dim=-1, | dim=-1, | ||
) | ) | ||
- | return kl_loss</code> | + | return kl_loss |
Същата функция, пренаписана от мен (но поне аз не съм шибан троглодит): | Същата функция, пренаписана от мен (но поне аз не съм шибан троглодит): | ||
def aggregate_kl_loss(prior_means, posterior_means): | def aggregate_kl_loss(prior_means, posterior_means): | ||
vals = zip(list(prior_means.values()), list(posterior_means.values())) | vals = zip(list(prior_means.values()), list(posterior_means.values())) | ||
- | return torch.cat([latent_kl(p, q).unsqueeze(-1) for p, q in vals], -1).sum(-1) | + | return torch.stack([latent_kl(p, q) for p, q in vals]).sum(0) |
- | И може да се напише и още по-елегантно, но декриптирането на кода на тоя боклук е толкова весело колкото да ти забиват трески под ноктите | + | Горе идиотът - да не говорим за ужасния му формат - създава фалшиво измерение на тензорите и ги събира по него. Ние правим същото, но не сме гейове и затова ползваме функцията, която съществува за тая цел, спестявайки си безсмислените операции; и тъй като не сме гейове, можем да намалим функцията до един ред: |
+ | def aggregate_kl_loss(prior_means, posterior_means): | ||
+ | return torch.stack([latent_kl(p, q) for p, q in zip(prior_means, posterior_means)]).sum(0) | ||
+ | Тоя ред обаче е 95 символа дълъг и следователно Гнидо би ме екзекутирал задето си го позволявам. Освен това декриптирането на кода на тоя боклук е толкова весело колкото да ти забиват трески под ноктите | ||
+ | |||
[[Категория:Програмни езици]] | [[Категория:Програмни езици]] |
Текуща версия
Питон е алтернативно название за "хуй" и популярен език за програмиране. Казва се така, защото се ползва от хомосексуалисти, които "обичат питон", или с други думи "обичат [да лапат] хуй". Порно-произходът на езика бива разконспириран и от наличието на "not safe for work" (NSFW, кодово име за порно) пакети в официалните пакетни репозитории: https://pypi.org/project/nsfw/
За езика
Питон е любим език за програмиране на тези, които разработват изкуствен интелект, т.е. пак хомосексуалисти. Това се дължи на наличието на библиотеки, които се импортират в кода ви. Важни такива за големите глави са Нъмпи-дъмпти, питорч, тензортеч, кафе, панди и Юпитер.
Тъй като езикът е динамичен, нито вие знаете какви са променливите ви, нито самият език. Освен това всичко е видимо отвсякъде, което означава, че можете да си завирате лайната където си поискате (https://semitwist.com/articles/article/view/why-i-hate-python-or-any-dynamic-language-really).
Питон е бавен. Толкова бавен, че се препоръчва for
циклите да не се ползват.
Тъй като са девствени онанисти-фетишисти и мислят само за гениталиите си, питонджиите извършват демоничните ритуали на т.нар. "duck typing" - отъждествявайки всичко с патката си.
В питон няма скоби и редовете се индентират с точно определен брой интервали. Ако сложите един повече или по-малко ще получите IndentationError: unexpected indent
. За капак на всичко, с оглед на това че са клозетни ГЕЙОВЕ, страдащи от агорафобия, питонджиите имат страх от дълги редове и официалният наръчник за стил на езика изисква редове дълги 79 символа (https://www.python.org/dev/peps/pep-0008/#maximum-line-length).
Опитвате се да манипулирате файлове и пътеки? Искате да използвате разделителя на файловите пътеки? (/
ако сте педал-пингвинждия и \\
ако сте курва на Бил Порталов) Дано ви бива да печелите "ези-тура" или случайно попаднете на съответния док, щото os.pathsep
и os.path.sep
са две различни стойности, като първата е разделителя на вашия PATH environment variable, а второто е това, което ви трябва.
При инсталация питон насира environment variables-а до такава степен, че в наши дни питон не се инсталира директно. Първо се инсталира анаконда, създава се виртуален environment, и след това се инсталира питон.
Внимание! Да не се бърка питон 2 с питон 3. Двете са несъвместими, и половината работи, които ви трябват, не работят на версията, която ползвате.
За автора
Пророкът на питон е Гнидо ван Росум, дебел фагот и холандец. Думата му е закон. В последните години този бог на cringe-а води кръсноносни походи срещу не-инклузивни термини като "master" и "slave" (https://www.theregister.co.uk/2018/09/11/python_purges_master_and_slave_in_political_pogrom/) и отказва да обучава бели мъже заради "diversity" (https://qz.com/1624252/pythons-creator-thinks-it-has-a-diversity-problem/), намалявайки сексизма в индустрията (несъществуващ) като проявява сексизъм.
С оглед на това не е изненадващо че обичащите да лапат питон програмисти проявяват качества подобни на качествата на пророка.
Примери от индустрията
С един колега инсталирахме tensorflow два часа вчера! -- истински цитат от анонимен програмист в САП Лабс (инсталацията на tensorflow не отнема повече от 10 минути)
Пример за функция, написана на питон от професионален компютърен учен (https://github.com/jhaux/VUNet/blob/ac788052b74996ecdf779c8b5a09c4126086e6b3/VUNet/utils/loss_utils.py#L65):
def aggregate_kl_loss(prior_means, posterior_means): kl_loss = torch.sum( torch.cat( [ latent_kl(p, q).unsqueeze(dim=-1) for p, q in zip( list(prior_means.values()), list(posterior_means.values()) ) ], dim=-1, ), dim=-1, ) return kl_loss
Същата функция, пренаписана от мен (но поне аз не съм шибан троглодит):
def aggregate_kl_loss(prior_means, posterior_means): vals = zip(list(prior_means.values()), list(posterior_means.values())) return torch.stack([latent_kl(p, q) for p, q in vals]).sum(0)
Горе идиотът - да не говорим за ужасния му формат - създава фалшиво измерение на тензорите и ги събира по него. Ние правим същото, но не сме гейове и затова ползваме функцията, която съществува за тая цел, спестявайки си безсмислените операции; и тъй като не сме гейове, можем да намалим функцията до един ред:
def aggregate_kl_loss(prior_means, posterior_means): return torch.stack([latent_kl(p, q) for p, q in zip(prior_means, posterior_means)]).sum(0)
Тоя ред обаче е 95 символа дълъг и следователно Гнидо би ме екзекутирал задето си го позволявам. Освен това декриптирането на кода на тоя боклук е толкова весело колкото да ти забиват трески под ноктите