- 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;
Конечно проглядывается идея со "статическими" методами типа: SOAP::Server->handle. Однако прямо в этом методе сразу после блока unless идёт еще какой-то код:
Вообще - этом их SOAP::Lite всё делается через ТАКУЮ жопу, что порой начинаешь беспокоится о психическом здоровье авторов.
Какой профит он несет серым сишкоблядям. Где без него трудно?
Дайте простенький пример.
Это как в бейсике do while/until. Может оно и хорошо, но не особо нужно.
=> unless (same conditions to be refactored never) { ...
И кода больше.
А слушались бы Тараса, писали бы как люди
Нагляднее выглядит. И читабельнее.
Перл прагматический язык - "минимализм" там и рядом не валялся.
Ларри Волл он просто еще и лигвистикой увлекается. Поэтому в Перле, как и в естественных языках есть "unless" и "it" (ака $_). Да же "or" работает в Перле как и в разговорной речи. Про Перловый "elsif" тоже какая-то байка была с завязкой на лингвистику и естественные языки.
"Нагляднее выглядит. И читабельнее."
Нифига оно не читабельно. Негативная логика никогда нечитабельна: на ней почти всегда приходится остановится и задуматся, что отрицается и во что оно отрицается.
По крайней мере у "unless" есть преимущестно что код можно как англиский текст читать.
Надеюсь вы не будете оспаривать тот факт что
>if not (some shit)
Гораздо ближе к "лингвистике и естественным языкам" чем
>if (!(some shit))
> Поэтому в Перле, как и в естественных языках есть
Its time to stop posting.
>Перл
>естественных языках
ВП. Судя по обилию всяких процентов, долларов, собачек, подчеркиваний и амперсандов, а также любви к регуляркам даже эзотерические кресты ближе к т.н. "естественным языкам".
я не уловил в чем проблема? "not" уж как вечность доступен в С++. я хез сколько лет им уже пользуюсь. только у тебя синтакс слегка кривоват - не хватает "()":
>if (not (some shit))
но все равно, перлов unless в данной ситуации лучше. к слову, надо будет поэксперементировать на предмет:
А в языках Вирта скобки не нужны!
В бейсике и питоне вроде как тоже.
Значит это языки Вирта.
> что код можно как англиский текст читать.
Лооол, я уже 5 минут смеюсь.
или это был тонкий сарказм на тему того что ты никогда хорошо написаного перла не видел? среднестатистический перловый скрипт по читабельности почти не отличается от среднестатистического С/С++.
Да. Об том-то и речь что читать это непросто. Притом что выше я отметил, что имхо, кресты-таки читаемей.
Это дело привычки. Подавляющее большинство людей которые жалуются на читабельность Перла (А) не знают синтаксиса языка и (Б) из примеров кода видели только победителей конкурсов однострочников.
Типичный Перл читаем как и С++. Хороший Перл, специально заточеный под читаемость, более читаем чем С++ просто потому что плотность кода в Перле выше. Более того, в отличии от С++, код в Перле можно заточить под читаемость намного чаще, потому что boilerplate кода на порядок меньше.
Тогда читабельнее всего - бинарники.
Но вот только одна проблема - с сисярпе, крестах и даже хацкиле автовывод + статическая типизация.
То бишь проверка типов.
По сравнению с ЦПП?
А как же фирменные фишки перла?
- 1; в конце модуля, иначе не будет работать
- ООП работает хуй пойми как. Как там класс обьявить? Что надо благославлять?
- Аргументы функции через shift вместо обьявления параметров. Или же через sub func { (param1, param2) = @_; ... }
- Уплощение списков.
В list2 будет (1, 2, 3, 4)
И прочие вещи, взрывающие мозг людям, пришедшим с нормальных языков, а не какого-то чудовища из 80-х.
конечно оно будет работать. возврат 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 - и более того описано что с этим можно делать и каких эффектов этим можно достигать.
хотя сейчас защищать перл большого смысла нету. но устаревает не потому что синтакс у него не как у жабы или С, а потому что много современных фич просто либо отсутствуют, либо криво прикручены.
Это какая-то перлоебская логика, которую я в книжках долгое время не мог найти и не понимал, хуле мой модуль не работает.
>просвящайтесь, молодой человек:
На англицком и деньги еще за это платить?
>modern_perl
Я им занимался году в 2005-2007, мне хватило.
>нет такой вещи как "нормальные языки."
Есть понятие "ожидаемое поведение", а также "явное лучше неявного". Перл - как английский язык, на каждое правило по 20 исключений. <STDIN> читает в $_, но только, если он в цикле.
Читает весь файл в $file. Внимание, вопрос: как это работает (да, это достойно отдельного говнокода)? Да, говно можно написать на любом языке, но там хоть будет понятно, что такое $/.
как работает '<>' это точно в каком-то базовом туториале описано. и им не обязательно пользоватся - можно пользоватся OO интерфейсом - perldoc IO::Handle
про $/ само собой разумеется, как и про все остальные встроеные переменные, описано в 'perldoc perlvar'. в 'use English', переменная называется $INPUT_RECORD_SEPARATOR
" (да, это достойно отдельного говнокода)"
никакое это не ГК. просто кто-то поленился выучить язык прежде чем им начать пользоватся.
Описано, я и не спорю, просто поведение отличается от ожидаемого, и это - типичный случай.
>в 'use English', переменная называется $INPUT_RECORD_SEPARATOR
Да, только автор это то ли не знал, то ли не захотел пользоваться, а теперь мне приходится читать эту хрень. Perl с готовностью дал ему эту возможность.
>просто кто-то поленился выучить язык прежде чем им начать пользоваться.
Это и есть классический ГК.
ты что дебил? я серьезно спрашиваю. у тебя тривиальные проблемы с чтением и пониманием прочитаного.
или. или сравни с реализацией аналогичного по функциональности кода, на пример, в хаскеле. или в лиспе. или в эрланге. или в tcl. и потом раскажи нам что ты именно ожидаешь по тому как код выглядит - и что он на самом деле делает. и поплачь, на жизнь пожалуйся.
это твоя личная проблема что у тебя мозги застряли на Сишном синтаксисе и ничего другого не способны воспринимать.
>или. или сравни с реализацией аналогичного по функциональности кода, на пример, в хаскеле. или в лиспе. или в эрланге. или в tcl.
Что ты мне сравниваешь императивный язык с функциональной хуйней? Только не надо мне рассказывать, что перл - дохуя функциональный язык, не функциональнее питона.
не ну я могу на перле по быструхе набросать генератор ответов. потому что ты долбишься в "мне не нравится синтакс и я не буду читать доку" в каждом комментарии. и как следствие ответы всегда одинаковые: "долбоёб, учи мат часть."
Чем тяжелее научиться на языке нормально писать, тем больше придется читать говнокода.
Синтаксис без объявления параметров функции - гавно. Можно залатать, но зачем?
Если язык А содержит меньше граблей, чем язык Б, нахуя нужен язык Б?
Скажи честно, на перле пишут легаси и по инерции, как в рашке на делфи?
Вроде хорошо дискутировали, пока ты хамить не начал.
Ответ на твой ответ - от того, что я выучу матчасть, перл перестанет быть говном?
>это и называется объявлением параметров.
Нет, это называется КОСТЫЛЬ, эмуляция. Т.е. сделать можно, но через вещи, для этого изначально не предназначенные и надо знать как. Как и try...catch через die. Классический КОСТЫЛЬ.
А как же знаменитый TMTOWTDI? Да, для того, чтобы писать код, это удобнее - надо знать один из многих разнообразных способов, зато, чтобы прочесть код - надо знать их все! Смотри пример выше с чтением файла.
>в конце концов, все ваши жалобы можно объяснить простым невежеством
Можно. Перл гуру эти грабли будет знать наизусть. Только как часто приходится что-то делать на языках, которые знаешь не от и до? Сравни, насколько надо знать язык, чтобы сделать модуль/класс на питоне и на перле. Мне кагбе нахрен не нужно быть гуру языка, чтобы без косяков написать / прочитать что-то элементарное. Сколько бы людей водили машину, если бы для этого надо было учиться 3-4 года?
Ах, да, еще my $var1, $var2 обьявит только $var1.
(1+2) - получим список, поставив лишние скобки. В питоне хоть запятую добавить надо.
Перл - это фрактал костыля и граблей. Грабельный костыль.
> но устаревает не потому что синтакс у него не как у жабы или С, а потому что много современных фич просто либо отсутствуют, либо криво прикручены.
Лол, о чем мы тогда спорим? :)
Основных проблем у него три: устаревший, неочевидный и TMTOWTDI (единственный профит от изучения перла - чтобы понять, что TMTOWTDI по большому счету - хуйня). Чего мне из него реально не хватает в питоне - это use strict.
никто не знает эти все мелочи наизусть. почти все девелоперы/комманды девелоперов останавливаются на некотором стиле и пользуются им.
"Лол, о чем мы тогда спорим? :)"
мы не спорим. ты просто жалуешься на неправильные вещи. вещи про которые можно в любом языке жаловатся.
по твоим жалобам могу сказать что тебе лучше сидеть либо на жабе либо на питоне. multi-paradigm языки для тебя однозначно слишком много.
"Чего мне из него реально не хватает в питоне - это use strict."
и use warnings.
Суть такова:
- Перл - куча замаскированных граблей, которые надо знать.
- Другие языки - неочевидного поведения гораздо меньше.
>мы не спорим. ты просто жалуешься на неправильные вещи. вещи про которые можно в любом языке жаловаться.
В любом языке есть свой кал (поэтому я не очень люблю "Фрактал плохого дизайна" - похожую херню можно написать про любой язык, с которым имеешь дело больше месяца), но в перле его намного больше среднестатистической величины.
>multi-paradigm языки
И какие же в перле парадигмы и каких из них нет в питоне?
>и use warnings.
Мне нужно именно отдельное объявление переменных. А use warnings мне к чему?
Года четыре назад я тоже выбирал, какой скриптовый язык выучить, колебался между perl и python. Писал одинаковые скриптики на обоих. Выяснил, что размер и быстродействие моих программ примерно одинаковые. Но при этом программы на python выглядят как псевдокод, а программы на perl требуют немало вдумчивости для написания и прочтения.
Мне нравятся философия, читаемость и доступность python. При этом язык весьма глубок и позволяет кратко и понятно писать очень впечатляющие вещи. Но и программистов на perl можно понять - мало кто хочет расставаться с тем, на освоение чего ушли сотни часов, что впервые сдвинуло ему парадигму, и что, в принципе, вполне решает поставленные задачи небольшим количеством букв.
А по поводу мультипарадигменности это вы зря. Python практически всё из коробки поддерживает. Разве что concurrent не идёт в комплекте (как в erlang/go), но этого и у perl нет.
Как не странно, я тоже его плюсанул, т.к. у меня точно такое же мнение - перл это write-only язык ограниченного применения. Сейчас, конечно, меня начнут обвинять в том, что я дескать не осилил перл, не понял всех заложенных в него возможностей...
Но мне нравится перл, нравится писать на нем короткие скрипты для обработки текстовичков. Но для чего-то больше 100 строк или недели поддержки мне его юзать просто страшно.
Классы - обряд совокупления пакета и хеша и посвящения их в классы.
На массивы из массивов или хешей слабонервным и беременным лучше не смотреть. Да, я умею их юзать. Но в других языках они почему-то смотрятся намного адекватней.
Объявление функций совершенно неадекватное. Почему я должен писать срань с распихиванием переменных по переменным в каждой функции? Не ну я понимаю, что это дает гибкость... Но если в других местах перл пытается быть более кратким, то почему тут мне нужно писать больше?
Что интересно: жена друга по работе (она в исследователькой лаборатории работала) должна была что-то писать на Перле, ну и т.как вообще не программист, то иногда мне тоже доводилось заглядывать в ее код... Ну, только наверное потому, что код был очень наивным, и безо всяких экзотических наворотов, проблем с пониманием особо не возникало... но потом она перешла работать в другое место, где ПО использовало Питон.
Немножко обнадежившись небольшим опытом, я как-то устанавливал Багзилу, и чего-то там не срасталось. Я решил на удачу заглянуть в исходники - все таки, я хоть пару раз в жизни имел дело с языком. Вот с тех пор я и использую Perl-sensitive sunglasses
Лол, это такое тонкое "развидеть это"?
И я тоже... Просто недолюбливаю пёрл.
Да и тут многим что питон ближе пёрл, при прочих равных - скриптовость, скорость исполнения итд.
Пример того как Говнокод.ру облагораживает человека.
На которые он натолкнулся в процессе написания говноботов?
..
Чтобы научиться водить машину нужно минимум 3 года.
а вообще давайте лучше пятилетку, чтобы был порррядочек, а дефицита не было
Люди в Советском Союзе — я уже рассказывал, что у них отличное чувство юмора, но кроме того — они довольно критично относятся к существующему строю. Этот я уже рассказывал, Билл, тебе придётся послушать его ещё раз — я его рассказывал в машине. Горбачёву не рассказывал.
Знаете, в Советском Союзе за автомобилями очередь, 10 лет. Машина есть только у одной семьи из 7-ми в СССР. Ждать нужно 10 лет — это целая процедура, ты готовишься купить автомобиль, и тебе необходимо внести деньги авансом. И вот один товарищ... Эти шутки они рассказывают друг другу — этот мужик выложил деньги, и тот, кто занимался этим вопросом, сказал ему — отлично, приходи через 10 лет за своей машиной. И он спросил: "утром или вечером?" (смех в зале). А человек за прилавком спрашивает — "какая разница, это же через 10 лет!" — "Ну, просто утром сантехник должен прийти
Ты сам от них недалеко отскочил.
Починил. А обычный перл как читается?
или ты щас тут начнешь жаловатся что англиского не знаешь? :D
symbol => #0..#ffff
code => code symbol | symbol
как-то так, я обозначения не очень помню
Perl был замечатльным языком. Наверняка в 1986 году делать на нем экстракшен и репорт было куда приятнее, чем на седе, авке и борн шеле, и Ларри не виноват что на нём стали писать лайвджорналы.
Но самое главное это то, что перл уже лет 10 как ушел в закат. Что толку тут его обсуждать?
в такие моменты вспоминаю что в перле такой отрицание-скобко-ебли нету:
и хотелось бы в жабе иметь такое
unless (obj instanceof Class1 || obj instanceof Class2) {...}
Ну это всё субъективно, мне так удобнее :)
С этим соглашусь. Если бы скобки вокруг унарных операторов в условиях разрешили бы не ставить, было бы читаемей и с обычным if:
Так это сишкоблядская проблема. И заключается она в парсинге.
Я тут http://govnokod.ru/13110#comment179640 не зря then написал.
Без него трудно понять где заканчивается условие и начинается код ветки. В питоне эту роль выполняет двоеточие и форматирование.
А ведь в тернарниках скобки не обязательны, потому что ? выступает в роли разделителся.
То есть следует определится что именно вы не хотите писать: скобки, then или еще-какой разделитель.
Хотя если выпилить ifы без операторных скобок, то { могла бы играть роль разделителя.
Но и в этом случае надутся недовольные - даже для 1-ой строчки надо писать
Именно поэтому всеобщее счастье на Земле невозможно.
В Go так и сделали, причём фигурная скобка должна быть приклеена к ифу в стиле java, всего одна лишняя строка.
Многие конторы даже вписывают это код-стайл.
Экстракт вариэбл надо делать
Кто такой, чем знаменит?
де моргана не знать и заниматься программировнием