LINUX.ORG.RU

Perl 6 vs Python 3

 , ,


3

4

Дискач.

Чтобы писать утилиты и демоны например для десктопа. Допустим оставим в покое веб-девелопмент, там и так тесно. И забудем былое, Python 2, Perl 5 и связанные стереотипы.

P.S. Прошу не удалять за тупняк, я понимаю как это выглядит. Но тема то интересная

★★★★★

Последнее исправление: vertexua (всего исправлений: 2)

Ответ на: комментарий от anonymous
%ORDER = do $order_script or die; # XXX Do we really want to die?
anonymous
()
Ответ на: комментарий от anonymous

KISS, Worse is better

Не вали всё в одну кучу. KISS я завсегда готов поддержать, а вот с Worse is better всё далеко не так однозначно. Эссе Габриэля (надо бы перечитать, кстати) мною воспринимается скорее как руководство по быстрому захвату рынка, чем как техническое обоснование того, что worse действительно is better.

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

Да.

Ну вот. Я, конечно, понимаю, что мы все скоро умрём, нефть кончится, а солнце погаснет. И вся эта возня тщетна. Но это же не повод все скрипты писать как одноразовые.

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

Конечно, не надо. Сложно будет отговаривать меня делать то, чего я не делаю.

Задача простая: получить пусть маленький, но аккуратно написанный, поддерживаемый и понятный скрипт. С достаточным уровнем абстракции, чтобы я мог легко изменить в нём flac на ape, или mpc на ogg, или добавить тегов, etc.

Что ты тут называешь «экстраполяцией на универсально-абстрактные и комплексные решения», я, честно говоря, вообще не понял.

Задачу можно решать более универсально или более одноразово независимо от её размеров. И польза этого решения тоже зависит не от размеров задачи, а от востребованности решения.

Это полезно для обучения.

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

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

мне это говорит, что человек использует perl не оптимально.

Тут два варианта: либо я действительно плохо совместим с perl’ом, либо ты знаешь не все способы оптимального использования perl’а.

либо он старается покрыть множество неверных входных данных и исключить неопределенное поведение

This. Просто я control freak и считаю, что неопределённое поведение нужно исключать всегда и везде, если есть такая возможность. ;)

Ну в одноразовых скриптах и однострочниках, конечно, можно и забить.

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

Не вали всё в одну кучу.

А я и не валю)

Эссе Габриэля (надо бы перечитать, кстати) мною воспринимается скорее как руководство по быстрому захвату рынка, чем как техническое обоснование того, что worse действительно is better.

Какие предлагаешь критерии оценки?

Но это же не повод все скрипты писать как одноразовые

Я этого и не утверждал. Все - нет. Задачи, цели, время - всё зависит от всего. Конкретно данный скрипт мне показался нестоящим большой траты времени на явность описания. При этом, мои правки не внесли в код запутанность, а скорее распутали его. Он не был похож на подход «сделаем его многоразовым, поддерживаемым, обрабатывающим корректно все входящие данные», а скорее, «перепишем с другого языка, не зная специфики перл». Так мне показалось. Могу быть неправ.

Задача простая: получить пусть маленький, но аккуратно написанный, поддерживаемый и понятный скрипт.

Не вижу противоречий с моим предложением убрать warnings, и не проверять на defined. Как это помешает скрипту быть маленьким, аккуратным, поддерживаемым, и понятным?

Что ты тут называешь «экстраполяцией на универсально-абстрактные и комплексные решения», я, честно говоря, вообще не понял.

Ты скинул скрипт. Попросил помочь. Тебе помогли убрать из него всё лишнее в любом смысле слова, от лишнего кода, до бессмысленных с тз цели скрипта проверок. А оказывается, ты хочешь универсальности, менять flac на ape, mpc на ogg, и тп. А из скрипта это совершенно не видно. И цели свои ты обозначил только после того, как тебе помогли (ну, так мы намеревались, оказывается это противоречит твоим планам😁).

Задачу можно решать более универсально или более одноразово независимо от её размеров.

Все что угодно можно натянуть на глобус, независимо от размеров этого чего-то.

И польза этой совы тоже зависит не от размеров совы, а от востребованности её натягивания на глобус.

Пофиксил во имя луны.

Слезай с пьедестала, учиться никогда не поздно. :)

Я туда и не залезал. Ты соорудил соломенное чучело, с которым споришь.

рекомендуешь всем писать одноразовые неподдерживаемые скрипты, если их размер не превышает сотню строк.

Я рекомендую не это. А рекомендую писать поддерживаемые одноразовые (не опечатка, одноразовые) скрипты в таком стиле на перл, как того требует задача и цели скрипта. Если скрипт на 50 строк, я полагаю что лишние проверки на define/undef/exists/ref/etc лишь замыливает глаз. Нужно стараться сделать алгоритм простым и понятным, а не усложнять бойлерплейтом код. Санитайзинг еще прикрутить, комментарии добавить, и вот, скрипт на 50 строк стал на 200. И запускается из хомяка с пользовательскими правами. Смотришь в него, скролишь туда-сюда, а всю его функциональность можно двумя баш-командами описать.

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

Тут два варианта: либо я действительно плохо совместим с perl’ом, либо ты знаешь не все способы оптимального использования perl’а.

Почему именно `||`? Что если `&&`? 😁

This. Просто я control freak и считаю, что неопределённое поведение нужно исключать всегда и везде, если есть такая возможность. ;)

Тогда недостаточно проверки на -d и undef. Санитизируй данные. Что если аутпут дира будет юзера а имя файла `.bashrc\0.flac`? Докажи слово делом. 😁

Ну в одноразовых скриптах и однострочниках, конечно, можно и забить.

Ну этот скрипт же не такой.)

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

Вот этот фрагментик:

    my @tag = `metaflac --export-tags-to=- "$old"`;
    chomp @tag;
    my %tag = map { my $ind = index $_, '=';
                    uc (substr $_, 0, $ind) => substr $_, ($ind + 1);
                  } @tag;
    my @cmd = ('mpcenc', '--standard');
    for (keys %tag) {
        when(/ARTIST/)      { push @cmd, '--artist',   $tag{$_} }
        when(/COMPOSER/)    { push @cmd, '--composer', $tag{$_} }
        when(/ALBUM/)       { push @cmd, '--album',    $tag{$_} }
        when(/TITLE/)       { push @cmd, '--title',    $tag{$_} }
        when(/TRACKNUMBER/) { push @cmd, '--track',    $tag{$_} }
        when(/DATE/)        { push @cmd, '--year',     $tag{$_} }
        when(/GENRE/)       { push @cmd, '--genre',    $tag{$_} }
    }
Я переписал бы так, например:
# Без when можно будет выпилить:
# no warnings 'experimental';
my $tag = `metaflac --export-tags-to=- "$old"`;

my %tag2option = (
    ARTIST      => 'artist',
    COMPOSER    => 'composer',
    ALBUM       => 'album',
    TITLE       => 'title',
    TRACKNUMBER => 'track',
    DATE        => 'year',
    GENRE       => 'genre',
);

my @cmd = qw( mpcenc --standard );

while ( $tag =~ m{ ( \w+ ) = ( .* ) }xg ) {
    push @cmd, "--$tag2option{$1}", $2 if exists $tag2option{$1};
}

И пожалуй всё.

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

во-вторых, нет, ты!

А вот это грубость.

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

К сожалению, такого скопления линуксоидов в одном месте мало на каком форуме найдешь. Да и нет больше приличных русскоязычных форумов по линуксу, кроме ЛОРа. Меня когда первый раз забанили, я пытался на паре англоязычных попастись. Но там совершенно уныло: на одном была толпа тупых леммингов, а на другом банили за любое отклонение от «линии партии».

На ЛОРе тоже не все так хорошо: сначала среди модераторов был дебил-тазик. К счастью, его выгнали из модераторов (и поделом!). Теперь вот что-то Шома с ума сбрендил. Совсем уже синдромом вахтера исходит... Да и leave в ту же степь: очень скользким и мерзким стал. Но уж более мерзкого человека, чем Шому, я не встречал (после тазика, конечно).

Царь - классный чувак, я бы с ним с удовольствием побухал. Жаль, что здесь слишком много идиотов, которые не в силах понять всю мощь царской мысли.

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

Спасибо!

С %tag2option как раз такая идея у меня изначально была, но что-то где-то я не осилил (не помню уж точно, что и где, какую-то перловую специфику).

while ( $tag =~ m{ ( \w+ ) = ( .* ) }xg ) — интересно. Разберусь как работает и возьму на вооружение.

Мои извращения с %tag = map ..., видимо, и правда говнокод, как сказал @chinarulezz. :)

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

Какие предлагаешь критерии оценки?

Оценки чего? Если прочитать Rise of Worse Is Better, то видно, что речь там идёт о маркетинговых успехах такого подхода, парадоксальных на фоне его технических недостатков.

При этом, мои правки не внесли в код запутанность, а скорее распутали его.

Я благодарен тебе за желание помочь. Но ты, в твоих правках, сначала выкинул работающий код, заменив его неработающим, а потом подставил костыли под неработающее место. Насчёт запутанности/распутанности не уверен, что что-то сильно поменялось.

Он не был похож на подход «сделаем его многоразовым, поддерживаемым, обрабатывающим корректно все входящие данные», а скорее, «перепишем с другого языка, не зная специфики перл». Так мне показалось. Могу быть неправ.

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

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

убрать warnings, и не проверять на defined. Как это помешает скрипту быть маленьким, аккуратным, поддерживаемым, и понятным?

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

Ты скинул скрипт. Попросил помочь.

Ок. Может быть, я недостаточно чётко прописал, чего именно хочу, когда отвечал на любезное предложение @perl5_guy показать «как красивше переделать ту или иную конструкцию».

Моя первоочередная цель была (и остаётся) лучше узнать перл (какие-то новые для меня конструкции, перловые идиомы, специфические для перла лучшие практики, и т.п.). Моей целью не было получить рекомедации о том, как вообще лучше писать скрипты (независимо от языка), в каких случаях мне нужно или не нужно неопределённое поведение, чем хороши одноразовые скрипты, как правильно писать сложные условия, и прочие неспецифичные для перла вещи. Также нет цели получить «хоть как-то, на костылях, но работающий» скрипт. Он и так уже вполне неплохо работает.

А рекомендую писать поддерживаемые одноразовые (не опечатка, одноразовые) скрипты

Ну, отговаривать тебя делать одноразовые скрипты поддерживаемыми не буду. Это полезно для обучения. Но больше никакого смысла в этом не вижу: одноразовый скрипт потому и одноразовый, что запускается один раз (ну два-три раза) после чего удаляется, в силу чего никакая поддержка ему становится не нужна.

костыли .vs. бойлерплейт

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

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

Идеала не достичь, но можно к нему стремиться. Если нет сил идти к идеалу, можно хотя бы ползти. Нет сил ползти — хотя бы лежать в сторону идеала. ;)

А убрать ворнинги — это развернуться и ползти в противоположную от идеала сторону. Экономия двух строчек в скрипте этого не стоит.

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

Регулярные выражения это киллерфитча Perl'а. Из известных мне языков, кроме Perl и Perl6, только в Ruby регвыры так же удобно использовать. Одна только эта особенность - целый мир который можно изучать оч. бесконечно. Можно почитать perldoc perlretut и как справочное руководство использовать perldoc perlre. Так же есть книга от O'Reilly с совами - лучшая книга по регуляркам из известных мне.
Уверен что конкретно с моей регуляркой ты разберёшься быстро. За сим откланяюсь. В моём профиле указан адрес жабер конференции, можно туда писать (я там один, спецом создал). Я занят постоянно, но постараюсь ответить в разумное время.

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

Оценки чего?

Дизайна проектирования.

Если прочитать Rise of Worse Is Better, то видно, что речь там идёт о маркетинговых успехах

Допустим. Ты какие критерии оценки предлагаешь?

Но ты, в твоих правках, сначала выкинул работающий код, заменив его неработающим,

Это не важно. Тебе же важно ищучить подходы, идиомы, как там далее, ты писал.

а потом подставил костыли под неработающее место

Два условия это то что надо в этом хелловорде. Почему это костыль? Потому что ты планируешь сделать из него абстрактный нёх? Ну извини, не знал, чесслово. 😉

Насчёт запутанности/распутанности не уверен, что что-то сильно поменялось.

Лол. Ну, не уверен - не обгоняй.

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

Правильно. Только критерии по которым ты считаешь «сделать более поддерживаемым» хромают. Обвесить хелловорд перл-спецификой из undef/defined/exists/etc, добавить бесполезные структуры данных, и делать тройные проверки когда скрипт на один чих - я полагаю не соответствует цели «сделать скрипт поддерживаемым». Но сколько людей, столько и мнений.

Возможно, я поторопился с предположением, что все так думают.

Эт точно.

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

Подозревать можешь что угодно, но если утверждаешь, от тебя ожидают аргументации, а не «я так чувствую». 😁

Но вот вышеупомянутый костыль точно делает скрипт менее поддерживаемым, аккуратным и понятным (последние два понятия, конечно, та ещё субъективщина).

Бгг: - Аргументы, сестра! - Утверждать не буду, я так чувствую, но вот точно... Хотя субъективно. Но точно!

Моя первоочередная цель была (и остаётся) лучше узнать перл (какие-то новые для меня конструкции, перловые идиомы, специфические для перла лучшие практики, и т.п.).

Тогда ты снова неправильно всё делаешь 😁

Для этого есть camelbook и perl best practices.

Моей целью не было получить рекомедации о том, как вообще лучше писать скрипты (независимо от языка),

Я и не говорил «независимо от языка». В контексте перла. И вольную цитату Ларри приводил.

Кажись у тя парсер сломался.

Также нет цели получить «хоть как-то, на костылях, но работающий» скрипт.

Сестра, то что ты безосновательно считаешь отсутствие warnings костылями не делают скрипты (гораздо сложнее этого хелловорда) костыльными. Это говорит лишь о том, что ты не знаешь зачем нужен warnings и зачем он в перле появился.

одноразовый скрипт потому и одноразовый, что запускается один раз (ну два-три раза) после чего удаляется, в силу чего никакая поддержка ему становится не нужна.

Ничего не мешает не удалять его, а использовать раз в два-три месяца, или когда нужно. Одноразовым он быть не перестанет в силу специфики задачи. Просто автоматизация двух-трёх шелл-вызовов, чтоб не вспоминать об этом.

Ну да, одна крайность — написать абсолютно неподдерживаемый короткий код из одних костылей,

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

Я с таким встречался часто. Новички на питоне, чтобы сделать один get запрос тянут и argparse (еще куда ни шло), и ascii colors, и text table, и ascii gif, которые тянуть надо pip'ом, только чтоб сделать сраный гет-запрос. Вся полезность их скрипта заканчивается тем, что просто лопатишь говнокод, выцепляешь логику, и копируешь в другой питон-скрипт. И вуаля. А жалко. Они столько сил приложили. 😂

А ты, как мне кажется по результатам этого треда, склонен слегка отходить от середины в сторону второй крайности.

Это потому что у тебя парсер сломан. Так бы ты понял о чем я.

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

Регулярные выражения это киллерфитча Perl'а.

Меня одного волнует тот факт, что регулярки, по нынешним меркам - решительно нечитаемый язык? В современных реалиях подобные записи куда более удобны (и используются):

var tester = VerEx()
    .startOfLine()
    .then('http')
    .maybe('s')
    .then('://')
    .maybe('www.')
    .anythingBut(' ')
    .endOfLine();
VerbEx()
|> add "COD"
|> beginCaptureNamed groupName
|> any "0-9"
|> repeatPrevious 3
|> endCapture
|> then' "END"
|> capture "COD123END" groupName
|> printfn "%s"
Да, они превращаются в регулярки - глупо было бы отказываться от готовых решений. Но регулярки здесь становятся аналогом маш кодов.

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

Идеала не достичь, но можно к нему стремиться. Если нет сил идти к идеалу, можно хотя бы ползти. Нет сил ползти — хотя бы лежать в сторону идеала. ;)

Годный, хороший максимализм. Если бы еще понятия идеала у тебя было применимо к инжинерным подходам kiss и worse is better - цены б не было такому максимализму.

А убрать ворнинги — это развернуться и ползти в противоположную от идеала сторону.

Добавишь use diagnostics? Ась? 😁

Экономия двух строчек в скрипте этого не стоит.

Опять же, ты не знаешь что делает use warnings, сестра, а уже утверждаешь о двух строчках.

Зачем нужен warnings, и почему ты его отказался убрать? Не ехай задом)

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

Я видал человека который писал человечий код на перле! Человека я правда в лицо не видал, а его код видал и даже вообще не зная перла то что он писал понимал (без деталей). Так вот! Но, справедливости ради скажу что перл упрощает написание как гратся врайте онли скриптоты ))) Хотя питон не лучше, особенно его выхлопы при ошибках курить надо покуривая что-то крепкое ))

А так если для души и минуя остальное не важно что брать.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от byko3y

Дык.

(define regex
    (irregex '(seq newline
                   "File1="
                   (submatch (seq "http://" (+ nonl)))
                   newline)))

Кстати, @vertexua, тебе может быть интересно, это Chicken.

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

Конкретно твой случай гораздо лучше переписать на регулярное выражение т.к. он примитивен и re человек поймёт в несколько раз быстрей. Всё хорошо в меру и TIMTOWTDI существует чтоб из всех возможных вариантов, ты выбрал наиболее выразительный. Не самый короткий, не самый крутой, а самый выразительный.
P.S. Математикам расскажи пойди, что можно формулы словами записывать и будет гораздо понятней, ага.

perl5_guy ★★★★★
()
Последнее исправление: perl5_guy (всего исправлений: 2)
Ответ на: комментарий от byko3y

Меня одного волнует тот факт, что регулярки, по нынешним меркам - решительно нечитаемый язык?

нынешний мерки — это программисты локтями, изучающие язык по stack-overflow?

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

Эт погоди, он еще кванторы не добавил, последовательности, диапазоны, backref'ы, forwardref'ы, читаемость взлетит)

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

Опять же, ты не знаешь что делает use warnings, сестра, а уже утверждаешь о двух строчках.

Ладно, подловил. :)

Действительно, не знаю толком что он делает. Читал когда-то, но не уверен, что там было в подробностях. Да и забыл я их, даже если были.

А что, есть ситуации, когда вреда от него больше чем пользы?

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

А что, есть ситуации, когда вреда от него больше чем пользы?

Да, и я тебе о них написал выше.

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

kiss и worse is better

KISS говорит, что нужно стремиться к простоте дизайна. Это я целиком поддерживаю.

Worse Is Better говорит, что если стоит выбор между простотой дизайна и корректностью дизайна, то нужно выбирать простоту. С этим я согласиться не могу.

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

С этим я согласиться не могу.

Если отвлечься от нашего говнокода, то это нормально. И MIT и New Jersey имеют право существования и своих сторонников и противников.

К примеру, я от всей души уважаю гентушников, но пользуюсь CRUX. Worse is better я ценю больше из практических соображений. Потому что у меня другие практические цели.

У кого другие — практичнее гента.

Всё ок.

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

В современных реалиях подобные записи куда более удобны (и используются): <адский пиздец поскипан>

Мы лучше будем по-старинке, сынок.

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

Сестра

Это я у тебя по результатам дискуссии понижен в звании из «братюни» в «сестру». ;)

Но сколько людей, столько и мнений.

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

Ладно, у меня не хватает опыта в перле и в поддержке одноразовых говноскриптов. Поэтому я, пожалуй, откажусь от дальнейших споров.

Моя первоочередная цель была

Тогда ты снова неправильно всё делаешь 😁

Я просто забыл добавить «и поболтать на форуме». :) Вот тебя, например, рад видеть.

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

Это я у тебя по результатам дискуссии понижен в звании из «братюни» в «сестру». ;)

Не воспринимай лично. Это была отсылка к «имя, сестра, имя».

Ну ок, даже вполне готов допустить, что у нас не просто «разные мнения», а что я где-то ошибаюсь.

Вооот, теперь ты снова братюня! :-D

Вот тебя, например, рад видеть.

взаимно ;)

Эдик, ты здеся?!

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

Эдик, ты здеся?!

Если ты у меня спрашиваешь, то нет, я не Эдик.

Просто как-то раз или два мы уже с тобой общались глубоко и широко. Но тогда анонимусом был я. :)

aeralahthu
()
Ответ на: комментарий от ponchik-2

Питон очевидно, у него синтаксис человеколюбивый

чего чего? взять хотя бы укуренный yield from с совершенно не очевидным control flow. но это конечно не сравниться с укуренностью пёрла, по крайней мере 5, 6 не изучал. да и 5 так видел поверхностно, не понравилось, смысла в детальном изучении не увидел.

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

Есть разница между «не могут» и «не хотят» это немного разные вещи, было бы конечно продуктивнее если «нужники» статейки кропали хотя бы, вместо того чтобы сраться на форумах с утра до вечера и с вечера до утра, но полезными делами заниматься конечно же не так весело... Оспорите?

А вообще нормально у вас тут натекло уже 4 странички про конъюнктурный то язычок вышедший в тираж.

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

luvit

Взяли дерьмовый язык, реализовали на нём дерьмовое API. Гордятся.

node.js хотя бы популярный, что сейчас очень важно как выше заметил RazrFalcon.

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

изучающие язык по stack-overflow?

Хуже, по видосам на ютупчике.

anon8
()
Последнее исправление: anon8 (всего исправлений: 1)
Ответ на: комментарий от Gentooshnik

Ну, всё к этому и сводится, что тебе нужна тупо «популярность».

menangen ★★★★★
()

Когда я на ЛОРе недавно спрашивал про строкодробилку на замену Перлу, мне посоветовали Ruby. Проверить пока не успел (не было соотв. задач).

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

Вопросы знатоку от неперловщика:

1. Завезли уже матчинг соответствующей закрывающей скобки в строке куда-нибудь там?

2. Есть какой-нибудь штатный способ из раку дергать перл? Так чтоб гладко и шелковисто.

3. вопрос JustForFun - для раку теперь будет CRAN вместо CPAN?

4. Подергать раку за усы - Comma?

5. Какие бы хелловорлды попилить, чтобы освоиться? Фибоначчи не предлагать )

Заранее спасибо.

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

5. Какие бы хелловорлды попилить, чтобы освоиться? Фибоначчи не предлагать )

Выведи градиент в консоль.

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

1. Завезли уже матчинг соответствующей закрывающей скобки в строке куда-нибудь там?

Не понял вопроса, можно пример? Типа такого:

> say "Hehe { 42 * 1 }";
Hehe 42
> say "Hehe { 42 * 1 ";
===SORRY!=== Error while compiling:
Two terms in a row
------> say "Hehe { 42 * 1⏏ ";

? Или типа такого:

➜  ~ cat heh.raku 
say "foo;
long bar!
say heh!
➜  ~ perl6 heh.raku
===SORRY!=== Error while compiling /home/koto/heh.raku
Unable to parse expression in double quotes; couldn't find final '"' (corresponding starter was at line 1)
at /home/koto/heh.raku:4
------> <BOL>⏏<EOL>

?

Есть какой-нибудь штатный способ из раку дергать перл?

Штатный нет, есть такое. Умеет есть большинство распространённых вещей, насколько я понимаю, хотя сам не пробовал. Есть такие извращения для питона, го и остальной братии, разной степени допиленности.

вопрос JustForFun - для раку теперь будет CRAN вместо CPAN?

Сомнительно. На данный момент есть две экосистемы поддерживаемые - CPAN и одна на основе гитхаба. Переименовывать никто не планирует. Сами протоколы дистрибутивов очень гибкие, так что можно пилить свои экосистемы с блэкджеком и всем нужным, хотя я сам не знаток, нужно читать synposis 22 (https://design.perl6.org/S22.html) и разбираться. Я сам публикуюсь на гитхабе, т.к. неосилятор cpan-а (можно кидать помидоры), установка же пакетов это уровень «zef install Foo».

Подергать раку за усы - Comma?

Хоть вим, хоть эмакс, некоторые вон Atom используют, не принципиально. Но на линуксах, в принципе, чисто подёргать хватит стека rakudo (https://github.com/nxadm/rakudo-pkga#os-repositories либо от самого дистра либо rakudobrew, rakudobrew самый простой в том смысле, что ставит всё в директорию хомяка и если не зашло, можно прибить её и всё), ну и там repl есть из коробки. Только накатишь Linenoise или Readline, он сам попросит. Если прям только подёргать. Если что-то крупнее десяти строчек написать, то можно Comma скачать. Это зависит от степени принятия IDE организмом, некоторые плюются от самой идеи.

Какие бы хелловорлды попилить, чтобы освоиться?

Чтобы освоиться - почитать https://perl6intro.com/ и docs.perl6.org по вкусу, там сами туториалы.

Какие хеллоуворлды... Эээ... Затрудняюсь. Проблема в том, что чтобы не Фибоначи это нужно немного знать язык. Ну, к примеру, парсер для GitLike конфигов. Читаешь документацию по грамматикам (https://docs.perl6.org/language/grammars) и прям сразу мощь в дело. Потом заворачиваешь в модуль и публикуешь. :] Заодно научишься как тут тесты писать, пакеты организовывать, с местным META6.json работать и т.п.

Или возьми какую-нибудь более императивную задачку и распараллель её, посмотри что как.

Возьми какой-нибудь пакет, который тебе нравится в другом языке, и попробуй портировать, если вписывается. Потом попросишь ревью и люди помогут в более естественную форму привести.

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

Не понял вопроса, можно пример?

Одно время изводили меня задачи типа
В строке вида

"{Hello )([World)]}"
сматчить скобочки, найти ошибки типа ([World)], найти ошибки типа несматченой скобки ), етц.
Регулярками это не лечится, отсюда вопрос - есть ли в раку что-нибудь специально заточенное?

За ответы спасибо, поставлю Comma, аллергией на IDE не страдаю.

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

убийцу Systemd

Не получится. Главная фича Systemd - прибитость гвоздями к частным расширениям Linux, которые крайне трудоёмко эмулировать в других системах/ядрах.

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

Ну а как по другому убить ненужные ОС чтобы не тратить время на портабельность?

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

Регулярками это не лечится

Регулярный язык действительно не сможет, но… Но мы уже давно перешли эту черту. Грамматикой такое щёлкается легко, можно прибить Actions для каждого шага разбора и собирать, где что именно не так и тому подобное. Хотя для этого грамматика должна принимать и невалидные выражения, конечно.

Я сейчас занят велосипедить, но https://raku.online/2019/09/09/checking-balanced-parentheses-using-perl-6/ <- вот статья Шитова как раз про проблему матчинга выложенных разных скобок, там с объяснениями и пошагово.

Моя копипаста вот:

grammar Balanced {
    rule TOP { <expression>+ }
    rule expression {
        | <:alpha>+ <expression>?
        | '(' <expression> ')'
        | '[' <expression> ']'
        | '{' <expression> '}'
    }
}

say Balanced.parse('{Hello )([World)]}'); # Nil, скобки не в порядке
say Balanced.parse('({Hello })([(World)])');
# в результате такое деревцо распарсеное:
# 「({Hello })([(World)])」
#  expression => 「({Hello })」
#   expression => 「{Hello }」
#    expression => 「Hello 」
#  expression => 「([(World)])」
#   expression => 「[(World)]」
#    expression => 「(World)」
#     expression => 「World」

У него там использован «крутой» синтаксис '(' ~ ')' <expression>, где тильда обозначает «вместо этой тильды будет следующее после этой конструкции», но по сути это тоже самое, что и я поменял ('(' <expression> ')').

Решения на других языках приветствуются. :)

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

Парсер грамматик имплантированный в ЯП это оч круто. Реально киллер-фича.
Comma норм, все вертится крутится. На удивление быстренько. На месте руководства добавил бы это чудо во всякие там снапы и флатпаки. Практически ничего не стоит, юзеры мажорных дистрибутивов были бы осчастливлены. Автоапдейты, опять же.

Почему MoarVM? Вроде где-то пробегало про прикручивание к JVM, не? Или это у меня глюк?

olelookoe ★★★
()

Чтобы писать утилиты и демоны например для десктопа.

Си для всего, в отдельных случаях Си + обёртка на любом языке который удобен чисто для логики. Если прям десктоп то хз, смотря какой, консольные утилки это общий случай, для прям десктоп десктопище можно заюзать тупо любой язык в который автобиндит Gobject introsection, несмотря на всё его уродство по части использования.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от olelookoe

На месте руководства добавил бы это чудо во всякие там снапы и флатпаки

Так оно и так, по сути, как и другие продукты intellij идёт отдельным архивом «самодостаточным», зависимости все тянет свои. Или у флатпака тут какие-то свои преимущества добавляются?

Вроде где-то пробегало про прикручивание к JVM, не

Есть такая ветка, но она особо никому не нужна по ряду причин, поэтому её качество это большие вопросы.

Почему MoarVM?

Разрабам не приходится делать чудовищные инферниальные пляски для того, чтобы поддерживать уникальные фичи именно Raku. JVM, конечно, неплохо греется, но сами опкоды там очень базовые, начинаешь реализовывать стандарт и становится всё грустнее и грустнее. С метамоделями проблемы, с канкаренси проблемы, с движком регекспов проблемы, с юникодом графемным проблемы (все до сих пор с байтами носятся), continuations, big integers, рантаймовые обновления кода на стеке и рантаймовая оптимизация «на лету», и так далее и так далее. JVM бекенд проходит какую-то часть спецификации вроде, но основная команда разработчиков тусуется именно с moarvm.

Lilly
()
Последнее исправление: Lilly (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.