- 1
- 2
- 3
- 4
- 5
sub new {
my $self = shift;
return $self if ref $self;
unless (ref $self) {
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−146
sub new {
my $self = shift;
return $self if ref $self;
unless (ref $self) {
SOAP::Lite http://cpansearch.perl.org/src/PHRED/SOAP-Lite-0.716/lib/SOAP/Lite.pm
package SOAP::Server;
Elvenfighter 04.06.2013 15:09 # +3
roman-kashitsyn 04.06.2013 15:11 # 0
guest 04.06.2013 15:26 # −2
roman-kashitsyn 04.06.2013 15:59 # +1
guest 04.06.2013 16:13 # −6
serpinski 04.06.2013 17:00 # −1
guest 20.01.2017 19:44 # −7
guest 28.02.2017 11:35 # −5
guest 27.01.2017 14:37 # −6
Dummy00001 04.06.2013 18:20 # −1
guest 03.03.2017 06:20 # −5
CHayT 20.01.2017 20:45 # 0
roman-kashitsyn 04.06.2013 17:41 # 0
CHayT 20.01.2017 20:47 # 0
guest 10.03.2017 18:43 # −5
Dummy00001 04.06.2013 18:26 # 0
an0nym 04.06.2013 19:15 # 0
Elvenfighter 04.06.2013 22:02 # 0
Конечно проглядывается идея со "статическими" методами типа: SOAP::Server->handle. Однако прямо в этом методе сразу после блока unless идёт еще какой-то код:
Вообще - этом их SOAP::Lite всё делается через ТАКУЮ жопу, что порой начинаешь беспокоится о психическом здоровье авторов.
guest 10.02.2017 14:03 # −6
someone 05.06.2013 12:48 # 0
bormand 05.06.2013 14:08 # 0
3.14159265 05.06.2013 14:34 # +1
Какой профит он несет серым сишкоблядям. Где без него трудно?
bormand 05.06.2013 14:46 # 0
3.14159265 05.06.2013 15:00 # +2
Дайте простенький пример.
Это как в бейсике do while/until. Может оно и хорошо, но не особо нужно.
defecate-plusplus 05.06.2013 15:23 # 0
=> unless (same conditions to be refactored never) { ...
3.14159265 05.06.2013 15:27 # +2
И кода больше.
А слушались бы Тараса, писали бы как люди
Нагляднее выглядит. И читабельнее.
Dummy00001 05.06.2013 16:24 # +2
Перл прагматический язык - "минимализм" там и рядом не валялся.
Ларри Волл он просто еще и лигвистикой увлекается. Поэтому в Перле, как и в естественных языках есть "unless" и "it" (ака $_). Да же "or" работает в Перле как и в разговорной речи. Про Перловый "elsif" тоже какая-то байка была с завязкой на лингвистику и естественные языки.
"Нагляднее выглядит. И читабельнее."
Нифига оно не читабельно. Негативная логика никогда нечитабельна: на ней почти всегда приходится остановится и задуматся, что отрицается и во что оно отрицается.
По крайней мере у "unless" есть преимущестно что код можно как англиский текст читать.
3.14159265 05.06.2013 16:50 # 0
Надеюсь вы не будете оспаривать тот факт что
>if not (some shit)
Гораздо ближе к "лингвистике и естественным языкам" чем
>if (!(some shit))
> Поэтому в Перле, как и в естественных языках есть
Its time to stop posting.
>Перл
>естественных языках
ВП. Судя по обилию всяких процентов, долларов, собачек, подчеркиваний и амперсандов, а также любви к регуляркам даже эзотерические кресты ближе к т.н. "естественным языкам".
Dummy00001 05.06.2013 16:57 # 0
я не уловил в чем проблема? "not" уж как вечность доступен в С++. я хез сколько лет им уже пользуюсь. только у тебя синтакс слегка кривоват - не хватает "()":
>if (not (some shit))
но все равно, перлов unless в данной ситуации лучше. к слову, надо будет поэксперементировать на предмет:
inkanus-gray 05.06.2013 22:41 # +2
А в языках Вирта скобки не нужны!
Dummy00001 05.06.2013 22:46 # 0
inkanus-gray 05.06.2013 22:48 # 0
guest 07.02.2017 19:46 # −6
3.14159265 06.06.2013 11:56 # +2
В бейсике и питоне вроде как тоже.
bormand 06.06.2013 12:30 # +3
Значит это языки Вирта.
guest 03.03.2017 21:25 # −5
guest 03.03.2017 21:44 # −5
anonimb84a2f6fd141 06.06.2013 04:05 # −3
3.14159265 05.06.2013 17:02 # +6
> что код можно как англиский текст читать.
Лооол, я уже 5 минут смеюсь.
Dummy00001 05.06.2013 17:15 # 0
или это был тонкий сарказм на тему того что ты никогда хорошо написаного перла не видел? среднестатистический перловый скрипт по читабельности почти не отличается от среднестатистического С/С++.
3.14159265 05.06.2013 18:56 # +4
Да. Об том-то и речь что читать это непросто. Притом что выше я отметил, что имхо, кресты-таки читаемей.
Dummy00001 05.06.2013 22:51 # +1
Это дело привычки. Подавляющее большинство людей которые жалуются на читабельность Перла (А) не знают синтаксиса языка и (Б) из примеров кода видели только победителей конкурсов однострочников.
Типичный Перл читаем как и С++. Хороший Перл, специально заточеный под читаемость, более читаем чем С++ просто потому что плотность кода в Перле выше. Более того, в отличии от С++, код в Перле можно заточить под читаемость намного чаще, потому что boilerplate кода на порядок меньше.
someone 06.06.2013 14:39 # +2
Тогда читабельнее всего - бинарники.
3.14159265 06.06.2013 17:07 # +3
Мистер Хэнки 12.06.2013 21:02 # 0
anonimb84a2f6fd141 12.06.2013 23:54 # +2
3.14159265 20.08.2013 18:51 # 0
Но вот только одна проблема - с сисярпе, крестах и даже хацкиле автовывод + статическая типизация.
То бишь проверка типов.
guest 20.08.2013 19:18 # −5
anonimb84a2f6fd141 12.06.2013 21:16 # +5
По сравнению с ЦПП?
А как же фирменные фишки перла?
- 1; в конце модуля, иначе не будет работать
- ООП работает хуй пойми как. Как там класс обьявить? Что надо благославлять?
- Аргументы функции через shift вместо обьявления параметров. Или же через sub func { (param1, param2) = @_; ... }
- Уплощение списков.
В list2 будет (1, 2, 3, 4)
И прочие вещи, взрывающие мозг людям, пришедшим с нормальных языков, а не какого-то чудовища из 80-х.
Dummy00001 12.06.2013 22:56 # +5
конечно оно будет работать. возврат false означает что модуль не смог по каким-то причинам загрузится.
"Уплощение списков." - не ну это уже фича. причем часто весьма полезная. и уплощаются не только списки, то также и хэши.
"- Аргументы функции через shift вместо обьявления параметров. Или же через sub func { (param1, param2) = @_; ... }"
это и называется объявлением параметров. синтакс другой, но теже яйца. если сильно хочешь, то можно даже сделать и именованые параметры, передавая хэш(и): `sub aaa { my %arg = @_; "$arg{param1}"; }; aaa(param1 => 1, param2 => 2); aaa(%saved_args);` - и будет вам даже передача параметров в независимости от порядка передачи аргументов.
"- ООП работает хуй пойми как. Как там класс обьявить? Что надо благославлять?"
просвящайтесь, молодой человек:
http://onyxneon.com/books/modern_perl/
в частности, CPAN -> Moose.
"И прочие вещи, взрывающие мозг людям, пришедшим с нормальных языков, а не какого-то чудовища из 80-х."
нет такой вещи как "нормальные языки." просто не существует. "волков боятся, в лес не ходить." если multi-paradigm языков не тянете, если все что not-С-like пугает, то продолжайте сидеть на своей Java и ни в коем случае не смотрите на другие языки. а то вдуг они вам и на самом деле "мозг взорвут."
в конце концов, все ваши жалобы можно объяснить простым невежеством. большинство "жалоб" описано в самой официально перловой доке - perldoc perl - и более того описано что с этим можно делать и каких эффектов этим можно достигать.
хотя сейчас защищать перл большого смысла нету. но устаревает не потому что синтакс у него не как у жабы или С, а потому что много современных фич просто либо отсутствуют, либо криво прикручены.
anonimb84a2f6fd141 12.06.2013 23:51 # +1
Это какая-то перлоебская логика, которую я в книжках долгое время не мог найти и не понимал, хуле мой модуль не работает.
>просвящайтесь, молодой человек:
На англицком и деньги еще за это платить?
>modern_perl
Я им занимался году в 2005-2007, мне хватило.
>нет такой вещи как "нормальные языки."
Есть понятие "ожидаемое поведение", а также "явное лучше неявного". Перл - как английский язык, на каждое правило по 20 исключений. <STDIN> читает в $_, но только, если он в цикле.
Читает весь файл в $file. Внимание, вопрос: как это работает (да, это достойно отдельного говнокода)? Да, говно можно написать на любом языке, но там хоть будет понятно, что такое $/.
Dummy00001 13.06.2013 00:06 # +4
как работает '<>' это точно в каком-то базовом туториале описано. и им не обязательно пользоватся - можно пользоватся OO интерфейсом - perldoc IO::Handle
про $/ само собой разумеется, как и про все остальные встроеные переменные, описано в 'perldoc perlvar'. в 'use English', переменная называется $INPUT_RECORD_SEPARATOR
" (да, это достойно отдельного говнокода)"
никакое это не ГК. просто кто-то поленился выучить язык прежде чем им начать пользоватся.
anonimb84a2f6fd141 13.06.2013 00:29 # −2
Описано, я и не спорю, просто поведение отличается от ожидаемого, и это - типичный случай.
>в 'use English', переменная называется $INPUT_RECORD_SEPARATOR
Да, только автор это то ли не знал, то ли не захотел пользоваться, а теперь мне приходится читать эту хрень. Perl с готовностью дал ему эту возможность.
>просто кто-то поленился выучить язык прежде чем им начать пользоваться.
Это и есть классический ГК.
Dummy00001 13.06.2013 00:54 # +3
ты что дебил? я серьезно спрашиваю. у тебя тривиальные проблемы с чтением и пониманием прочитаного.
или. или сравни с реализацией аналогичного по функциональности кода, на пример, в хаскеле. или в лиспе. или в эрланге. или в tcl. и потом раскажи нам что ты именно ожидаешь по тому как код выглядит - и что он на самом деле делает. и поплачь, на жизнь пожалуйся.
это твоя личная проблема что у тебя мозги застряли на Сишном синтаксисе и ничего другого не способны воспринимать.
anonimb84a2f6fd141 13.06.2013 01:22 # −1
>или. или сравни с реализацией аналогичного по функциональности кода, на пример, в хаскеле. или в лиспе. или в эрланге. или в tcl.
Что ты мне сравниваешь императивный язык с функциональной хуйней? Только не надо мне рассказывать, что перл - дохуя функциональный язык, не функциональнее питона.
Dummy00001 13.06.2013 01:28 # +3
не ну я могу на перле по быструхе набросать генератор ответов. потому что ты долбишься в "мне не нравится синтакс и я не буду читать доку" в каждом комментарии. и как следствие ответы всегда одинаковые: "долбоёб, учи мат часть."
anonimb84a2f6fd141 13.06.2013 02:24 # +4
Чем тяжелее научиться на языке нормально писать, тем больше придется читать говнокода.
Синтаксис без объявления параметров функции - гавно. Можно залатать, но зачем?
Если язык А содержит меньше граблей, чем язык Б, нахуя нужен язык Б?
Скажи честно, на перле пишут легаси и по инерции, как в рашке на делфи?
Вроде хорошо дискутировали, пока ты хамить не начал.
Ответ на твой ответ - от того, что я выучу матчасть, перл перестанет быть говном?
anonimb84a2f6fd141 12.06.2013 23:51 # +2
>это и называется объявлением параметров.
Нет, это называется КОСТЫЛЬ, эмуляция. Т.е. сделать можно, но через вещи, для этого изначально не предназначенные и надо знать как. Как и try...catch через die. Классический КОСТЫЛЬ.
А как же знаменитый TMTOWTDI? Да, для того, чтобы писать код, это удобнее - надо знать один из многих разнообразных способов, зато, чтобы прочесть код - надо знать их все! Смотри пример выше с чтением файла.
>в конце концов, все ваши жалобы можно объяснить простым невежеством
Можно. Перл гуру эти грабли будет знать наизусть. Только как часто приходится что-то делать на языках, которые знаешь не от и до? Сравни, насколько надо знать язык, чтобы сделать модуль/класс на питоне и на перле. Мне кагбе нахрен не нужно быть гуру языка, чтобы без косяков написать / прочитать что-то элементарное. Сколько бы людей водили машину, если бы для этого надо было учиться 3-4 года?
Ах, да, еще my $var1, $var2 обьявит только $var1.
(1+2) - получим список, поставив лишние скобки. В питоне хоть запятую добавить надо.
Перл - это фрактал костыля и граблей. Грабельный костыль.
> но устаревает не потому что синтакс у него не как у жабы или С, а потому что много современных фич просто либо отсутствуют, либо криво прикручены.
Лол, о чем мы тогда спорим? :)
Основных проблем у него три: устаревший, неочевидный и TMTOWTDI (единственный профит от изучения перла - чтобы понять, что TMTOWTDI по большому счету - хуйня). Чего мне из него реально не хватает в питоне - это use strict.
Dummy00001 12.06.2013 23:58 # +3
никто не знает эти все мелочи наизусть. почти все девелоперы/комманды девелоперов останавливаются на некотором стиле и пользуются им.
"Лол, о чем мы тогда спорим? :)"
мы не спорим. ты просто жалуешься на неправильные вещи. вещи про которые можно в любом языке жаловатся.
по твоим жалобам могу сказать что тебе лучше сидеть либо на жабе либо на питоне. multi-paradigm языки для тебя однозначно слишком много.
"Чего мне из него реально не хватает в питоне - это use strict."
и use warnings.
anonimb84a2f6fd141 13.06.2013 00:05 # +3
Суть такова:
- Перл - куча замаскированных граблей, которые надо знать.
- Другие языки - неочевидного поведения гораздо меньше.
>мы не спорим. ты просто жалуешься на неправильные вещи. вещи про которые можно в любом языке жаловаться.
В любом языке есть свой кал (поэтому я не очень люблю "Фрактал плохого дизайна" - похожую херню можно написать про любой язык, с которым имеешь дело больше месяца), но в перле его намного больше среднестатистической величины.
>multi-paradigm языки
И какие же в перле парадигмы и каких из них нет в питоне?
>и use warnings.
Мне нужно именно отдельное объявление переменных. А use warnings мне к чему?
roman-kashitsyn 13.06.2013 07:14 # +4
Года четыре назад я тоже выбирал, какой скриптовый язык выучить, колебался между perl и python. Писал одинаковые скриптики на обоих. Выяснил, что размер и быстродействие моих программ примерно одинаковые. Но при этом программы на python выглядят как псевдокод, а программы на perl требуют немало вдумчивости для написания и прочтения.
Мне нравятся философия, читаемость и доступность python. При этом язык весьма глубок и позволяет кратко и понятно писать очень впечатляющие вещи. Но и программистов на perl можно понять - мало кто хочет расставаться с тем, на освоение чего ушли сотни часов, что впервые сдвинуло ему парадигму, и что, в принципе, вполне решает поставленные задачи небольшим количеством букв.
А по поводу мультипарадигменности это вы зря. Python практически всё из коробки поддерживает. Разве что concurrent не идёт в комплекте (как в erlang/go), но этого и у perl нет.
bormand 13.06.2013 08:32 # +1
Как не странно, я тоже его плюсанул, т.к. у меня точно такое же мнение - перл это write-only язык ограниченного применения. Сейчас, конечно, меня начнут обвинять в том, что я дескать не осилил перл, не понял всех заложенных в него возможностей...
Но мне нравится перл, нравится писать на нем короткие скрипты для обработки текстовичков. Но для чего-то больше 100 строк или недели поддержки мне его юзать просто страшно.
Классы - обряд совокупления пакета и хеша и посвящения их в классы.
На массивы из массивов или хешей слабонервным и беременным лучше не смотреть. Да, я умею их юзать. Но в других языках они почему-то смотрятся намного адекватней.
Объявление функций совершенно неадекватное. Почему я должен писать срань с распихиванием переменных по переменным в каждой функции? Не ну я понимаю, что это дает гибкость... Но если в других местах перл пытается быть более кратким, то почему тут мне нужно писать больше?
wvxvw 13.06.2013 08:41 # +1
Что интересно: жена друга по работе (она в исследователькой лаборатории работала) должна была что-то писать на Перле, ну и т.как вообще не программист, то иногда мне тоже доводилось заглядывать в ее код... Ну, только наверное потому, что код был очень наивным, и безо всяких экзотических наворотов, проблем с пониманием особо не возникало... но потом она перешла работать в другое место, где ПО использовало Питон.
Немножко обнадежившись небольшим опытом, я как-то устанавливал Багзилу, и чего-то там не срасталось. Я решил на удачу заглянуть в исходники - все таки, я хоть пару раз в жизни имел дело с языком. Вот с тех пор я и использую Perl-sensitive sunglasses
3.14159265 13.06.2013 19:31 # 0
Лол, это такое тонкое "развидеть это"?
wvxvw 13.06.2013 20:27 # +1
3.14159265 13.06.2013 13:24 # +1
И я тоже... Просто недолюбливаю пёрл.
Да и тут многим что питон ближе пёрл, при прочих равных - скриптовость, скорость исполнения итд.
3.14159265 13.06.2013 13:30 # +3
Пример того как Говнокод.ру облагораживает человека.
anonimb84a2f6fd141 13.06.2013 20:26 # +1
TarasB 13.06.2013 13:39 # +2
На которые он натолкнулся в процессе написания говноботов?
anonimb84a2f6fd141 13.06.2013 20:25 # +1
gost 03.06.2019 06:11 # 0
PA3yMHblu_nemyx 03.06.2019 06:47 # 0
gost 03.06.2019 07:04 # 0
PA3yMHblu_nemyx 03.06.2019 07:23 # 0
gost 03.06.2019 07:47 # 0
bormand 03.06.2019 09:19 # 0
..
PA3yMHblu_nemyx 03.06.2019 11:19 # 0
2Roman 18.06.2013 10:30 # +2
Чтобы научиться водить машину нужно минимум 3 года.
Increment_Excrement 03.06.2019 11:35 # 0
а вообще давайте лучше пятилетку, чтобы был порррядочек, а дефицита не было
Increment_Excrement 03.06.2019 23:31 # 0
Люди в Советском Союзе — я уже рассказывал, что у них отличное чувство юмора, но кроме того — они довольно критично относятся к существующему строю. Этот я уже рассказывал, Билл, тебе придётся послушать его ещё раз — я его рассказывал в машине. Горбачёву не рассказывал.
Знаете, в Советском Союзе за автомобилями очередь, 10 лет. Машина есть только у одной семьи из 7-ми в СССР. Ждать нужно 10 лет — это целая процедура, ты готовишься купить автомобиль, и тебе необходимо внести деньги авансом. И вот один товарищ... Эти шутки они рассказывают друг другу — этот мужик выложил деньги, и тот, кто занимался этим вопросом, сказал ему — отлично, приходи через 10 лет за своей машиной. И он спросил: "утром или вечером?" (смех в зале). А человек за прилавком спрашивает — "какая разница, это же через 10 лет!" — "Ну, просто утром сантехник должен прийти
zhigolo 03.06.2019 23:44 # 0
Ты сам от них недалеко отскочил.
Increment_Excrement 04.06.2019 00:05 # 0
AHCKuJlbHblu_nemyx 04.06.2019 00:21 # 0
guest8 04.06.2019 00:48 # −999
anonimb84a2f6fd141 12.06.2013 23:57 # 0
Починил. А обычный перл как читается?
2Roman 18.06.2013 10:41 # 0
anonimb84a2f6fd141 20.08.2013 02:53 # +1
Dummy00001 05.06.2013 17:30 # +3
или ты щас тут начнешь жаловатся что англиского не знаешь? :D
3.14159265 05.06.2013 20:38 # +3
anonimb84a2f6fd141 06.06.2013 04:04 # −5
anonimb84a2f6fd141 12.06.2013 23:55 # +1
wvxvw 05.06.2013 17:37 # 0
TarasB 05.06.2013 21:01 # +7
symbol => #0..#ffff
code => code symbol | symbol
как-то так, я обозначения не очень помню
wvxvw 06.06.2013 00:16 # 0
guest 27.01.2017 15:52 # −6
guest 26.01.2017 23:58 # −6
guest 24.01.2017 21:36 # −6
barop 24.01.2017 21:55 # −5
Perl был замечатльным языком. Наверняка в 1986 году делать на нем экстракшен и репорт было куда приятнее, чем на седе, авке и борн шеле, и Ларри не виноват что на нём стали писать лайвджорналы.
Но самое главное это то, что перл уже лет 10 как ушел в закат. Что толку тут его обсуждать?
guest 24.01.2017 22:11 # −5
guest 24.01.2017 22:13 # −5
barop 24.01.2017 22:16 # −5
Мистер Хэнки 06.06.2013 09:28 # 0
в такие моменты вспоминаю что в перле такой отрицание-скобко-ебли нету:
и хотелось бы в жабе иметь такое
unless (obj instanceof Class1 || obj instanceof Class2) {...}
Ну это всё субъективно, мне так удобнее :)
roman-kashitsyn 06.06.2013 09:38 # 0
Soul_re@ver 06.06.2013 10:47 # 0
bormand 06.06.2013 11:02 # 0
Soul_re@ver 06.06.2013 12:14 # 0
С этим соглашусь. Если бы скобки вокруг унарных операторов в условиях разрешили бы не ставить, было бы читаемей и с обычным if:
3.14159265 11.06.2013 13:47 # +1
Так это сишкоблядская проблема. И заключается она в парсинге.
Я тут http://govnokod.ru/13110#comment179640 не зря then написал.
Без него трудно понять где заканчивается условие и начинается код ветки. В питоне эту роль выполняет двоеточие и форматирование.
А ведь в тернарниках скобки не обязательны, потому что ? выступает в роли разделителся.
То есть следует определится что именно вы не хотите писать: скобки, then или еще-какой разделитель.
bormand 11.06.2013 13:49 # +2
3.14159265 11.06.2013 14:01 # +2
Хотя если выпилить ifы без операторных скобок, то { могла бы играть роль разделителя.
Но и в этом случае надутся недовольные - даже для 1-ой строчки надо писать
Именно поэтому всеобщее счастье на Земле невозможно.
roman-kashitsyn 11.06.2013 14:04 # 0
В Go так и сделали, причём фигурная скобка должна быть приклеена к ифу в стиле java, всего одна лишняя строка.
3.14159265 11.06.2013 14:09 # 0
Многие конторы даже вписывают это код-стайл.
barop 26.01.2017 03:23 # −5
Экстракт вариэбл надо делать
anonimb84a2f6fd141 12.06.2013 21:18 # −1
Кто такой, чем знаменит?
Мистер Хэнки 13.06.2013 12:46 # +3
defecate-plusplus 18.06.2013 10:35 # +1
Мистер Хэнки 20.06.2013 09:14 # +1
barop 25.01.2017 02:06 # −4
де моргана не знать и заниматься программировнием
guestinio 15.04.2017 17:44 # −6
bormand 15.04.2017 17:48 # 0
Elvenfighter 05.06.2013 20:53 # 0
guest 17.03.2017 01:16 # −5
guest 15.04.2017 14:11 # −5
guestinh0 15.04.2017 14:17 # −3