Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

perl, python, ..

1 view
Skip to first unread message

Nil Alexandrov

unread,
May 2, 2020, 2:25:01 PM5/2/20
to
* Originally in nino.046.local
* Crossposted in ru.perl
* Crossposted in ru.python

Hello, Yevgeny!

Saturday May 02 2020 01:06, from Yevgeny Zolotnitsky -> Nil Alexandrov:

YZ> Я вот хоть не пограмист, но в какие-то скрипто-языки интересуюсь по
YZ> верхам, чтобы читать код уметь. И меня натурально добивает именно
YZ> мода, что сейчас "все носят двухбортный", т.е. на питоне лабают. А
YZ> "однобортный", который на перле -- уже фу-фу-фу. Хотя решают одни и
YZ> теже задачи.

Как у нас говорят, "horses for courses" (эх тупой гугл траслейт).
> An allusion to the fact that a racehorse performs best on a racecourse to
> which it is specifically suited.
Вера в то что, что скаковая лошадь лучше всего выступает на ипподроме, для
которого она специально предназначена.

Кароч, дело было так. Был типичный юникс сисадмин, тот, что с бородой, а не как
виндовзный гладко выбритый [unix_vs_windows_admin.jpg], и не тот, что мышкой в
виндовзе двигает MCSA (Microsoft Certified Systems Administrator), а прям
натурально сидит в текстмоде, и все свои рутинные операции по максимуму
автоматизирует с помощью шел скриптов. Шел скрипты - это такие комбинации из
grep, sed, awk,.. через пайп прописанные. И родился тогда скриптовый язык перл,
и совместил он в себе все эти grep+sed+awk и был заточен под парсенье текстовых
логов, читай регекспы, и прочей сисадминской рутины, типа завести нового
юзверя, прописал его в разных файлах. Но мир не стоял на месте, и стало
модно-молодёжно пейсать не процедурно, а объетко-ориентировано (орфография
сохранена). А так как питон изначально был "птичьим языком", типа нажимаешь
шифт и по всем цифиркам пальцем туда-сюда [~!@#$%^&*()(*&^%$#@!~], вот так он
примерно выглядит, то добавление ООП к перлу стало не читаемым от слова совсем.

Питон изначально разрабатывался как функциональный, так и ООП. Синтаксис у него
без всех этих @#$->&%, и даже ; не надо ставить в конце строки, и даже
говно-код вынужден быть выровнен из-за блоков, что придаёт читаемости. На этом
месте адепты ООП закидают питон тухлыми помидорами, ведь ни с того ни с сего
тип объекта может меняться на ходу, но это и его плюс/минус питона, в его
динамической типизации. Кстати, есть всякие рестриктыд-питон синтаксисы, читай
подмножество языка, когда нельзя походу действия менять тип для одной и той же
переменной, и тогда такой "кастрированный" питон легко транслируется
из-языка-в-язык, например, в C++ или просто JIT на этом участке кода ускоряется
в стопицот раз, если мы использует pypy.

В последнее время питон, кроме написания скриптов так таковых, стал
использоваться как R&D тул всякими ресёрчерами (умные дядьки с магистратурами),
которые на нём могут что-то попрототипировать, покрутить туда-сюда и всё это с
минимальным количеством строк кода. Как это стало возможным? Всё благодаря
обёрткам вокруг C++ кода/библиотек. Получается, что ты пишешь одну/две строчки
взять данные по такому-то URL (пример urllib, код работает быстро со скоростью
C), второй строчкой парсим XML/JSON/.. тоже C библиотечным вызовом, а дальше
скармливаем нашей статистической модели или нейронке, библиотек для (глубокого)
машинного обучения (мы в шутку называет deep shit learning), и, пальцем в небо
(но с умным выражением лица), прогнозируем когда закончится карантин, сколько
будет стоить акции, когда доллару хана, и прочее прочее. Естесссно, что на
перле этого всего не завезли, и это хорошо.

Best Regards, Nil

Eugene Grosbein

unread,
May 2, 2020, 5:10:01 PM5/2/20
to
02 мая 2020, суббота, в 20:17 NOVT, Nil Alexandrov написал(а):

NA> В последнее время питон, кроме написания скриптов так таковых, стал
NA> использоваться как R&D тул всякими ресёрчерами (умные дядьки с
NA> магистратурами),
NA> которые на нём могут что-то попрототипировать, покрутить туда-сюда и всё
NA> это с
NA> минимальным количеством строк кода. Как это стало возможным? Всё благодаря
NA> обёрткам вокруг C++ кода/библиотек. Получается, что ты пишешь одну/две
NA> строчки
NA> взять данные по такому-то URL (пример urllib, код работает быстро со
NA> скоростью
NA> C), второй строчкой парсим XML/JSON/.. тоже C библиотечным вызовом, а
NA> дальше
NA> скармливаем нашей статистической модели или нейронке, библиотек для
NA> (глубокого)
NA> машинного обучения (мы в шутку называет deep shit learning), и, пальцем в
NA> небо
NA> (но с умным выражением лица), прогнозируем когда закончится карантин,
NA> сколько
NA> будет стоить акции, когда доллару хана, и прочее прочее. Естесссно, что на
NA> перле
NA> этого всего не завезли, и это хорошо.

А можно тебя попросить больше никогда не рассуждать
публично о том, о чём ты никакого понятия не имеешь?
Я тут себе чуть всё лицо фейспалмами не разбил
с одного этого параграфа.

Чуток из боевого perl-кода, который вызывается из embedded perl,
встроенного внутрь радиус-сервера и обрабатывающего голосовые
вызовы в реальном времени параллельно с их протеканием:

use HTTP::Tiny; # часть стандартного дистрибутива perl
...
our @urls = ($url1, $url2);
...
foreach my $baseurl (@urls) {
my $http = HTTP::Tiny->new ('timeout' => TIMEOUT);
my $url = $baseurl . "...";
my $response = $http->get($url);
...
}

Конечно, в Perl не завезли работу с URL!
И в metacpan тоже ничего нету на эту тему! Ой нет, есть, навскидку:

$ pkg search -x 'p5-' | egrep -i 'www|url|uri' | wc -l
172

Одних только дополнительных модулей, работающих с WWW/URL/URI
больше полутора сотен, среди них p5-Net-Curl, p5-WWW-Curl,
p5-libwww, p5-WWW-Telegram-BotAPI, p5-URI-ws (websockets) и т.д.

Что касается парсинга XML, то в Perl конечно этого нету.
Ой, тоже есть. Кусок боевого кода, который выгружает
и парсит пресловутый черный список РКH, который распространяется
в виде XML и сейчас весит 120160KB (то есть, 117MB),
и не дай бог подобный парсер заглючит и не выполнит свою работу
точно и без багов, 50 тысяч рублей штрафа.

use XML::Simple;
$XML::Simple::PREFERRED_PARSER = 'XML::Parser';

# Чтобы получить доступ к XML, нужно использовать SOAP
sub soap_fault($$);
use SOAP::Lite on_fault => sub { soap_fault($_[0], $_[1]); };
my $client = SOAP::Lite->new;
$SOAP::Constants::PREFIX_ENV = 'SOAP-ENV';
...
# Парсинг XML-файла схемы WSDL
$service = $client->service($endpoint);
...
# SOAP-запрос zip с XML внутри:
@result = $service->sendRequest($request, $signature, $dumpver);
...
for(my $t = $try; $t > 0; $t--) {
...
eval { $r = $service->call('getResult',
SOAP::Data->name('code')->value($code))->body->{'getResultResponse'};
};
...
}
# Парсинг XML-файла непосредственно из потока unzip:
eval { local $SIG{'__DIE__'}; $h = XMLin('-'); };
...
my $content = $h->{'content'};
# обработка содержимого XML
while (($key, $value) = each %$content) {
...
}

Hу уж машинного обучения в Perl не точно завезли?
Ой, и это активно обновляется! Последняя версия меньше
трех месяцев назад, автор Сергей Колычев из WhiteHat Security:

https://metacpan.org/release/AI-MXNet

Eugene
--
Поэты - страшные люди. У них все святое.

Michael Dukelsky

unread,
May 3, 2020, 11:35:01 AM5/3/20
to
Привет, Nil!

02 May 2020 20:17, Nil Alexandrov послал(а) письмо к Yevgeny Zolotnitsky:

NA> Как у нас говорят, "horses for courses" (эх тупой гугл траслейт).

Я помогу тупому гуглу: "Jedem das seine".

NA> А так как питон изначально был "птичьим языком", типа нажимаешь шифт и
^^^^^
Тут ты, наверно, хотел обругать перл.

NA> по всем цифиркам пальцем туда-сюда [~!@#$%^&*()(*&^%$#@!~], вот так он
NA> примерно выглядит, то добавление ООП к перлу стало не читаемым от
NA> слова совсем.

NA> Питон изначально разрабатывался как функциональный, так и ООП.
NA> Синтаксис у него без всех этих @#$->&%, и даже ; не надо ставить в
NA> конце строки, и даже говно-код вынужден быть выровнен из-за блоков,
NA> что придаёт читаемости.

На этом месте читателю эхи ru.perl захочется посмотреть на замечательно
выравненный язык питон, обошедшийся даже без точки с запятой, не говоря уже об
этих ужасных выражениях, получаемых при проведении пальцем по клавишам
туда-сюда. Открываем документацию к Python 3.8.3, Text Processing Services, и в
"re - Regular expression operations" прямо в первой строчке читаем: "This
module provides regular expression matching operations similar to those found
in Perl". То есть точки с запятой нет, но пальцем проводить туда-сюда всё равно
придётся.

Желаю успехов, Nil!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
0 new messages