Злые языки

Jun 03, 2019 17:40


Хотел написать философскую телегу про языки и нотации, но запутался. Вместо этого вот вам примерчик на perl6 (придумал не я, источник потерял):
.say if $_ %% [+] .comb for 1..50;
Всё понятно, правда? Из, эээ, не совсем очевидного здесь (справа налево) постфиксные управляющие структуры (было в пятом), неявная переменная цикла (было в пятом), ( Read more... )

tekniko

Leave a comment

Comments 11

kouzdra June 3 2019, 14:53:42 UTC
В языках типа С или APL %% не нужен кстати - там просто % выдаст 0 (то есть false) если делится и true иначе, а в Haskell его заменит
(/= 0) . (%) - суперпозиция остатка от деления с операцией сравнения с 0

Reply

slobin June 3 2019, 15:12:34 UTC
И Ларри Уолл, и Кен Айверсон очень внимательно относятся (относились) к языку именно как к нотации, как к инструменту мышления. Хотя и приходили порой к разных выводам, но задачу решали одну. Лично я поймал себя на том, что раньше был типа умным и писал if !(x%10), а теперь поглупел и пишу if x%10 != 0. Потому что читаю я вторую конструкцию гораздо быстрее. Первую приходится расшифровывать, а вторая гораздо ближе к "что я имел в виду". Айверсон надеялся, что можно обучить людей думать первым способом, что можно убрать из их мозгов этап расшифровки. А Уолл пошёл на поводу и сделал следующий шаг в сторону понятности без переформатирования (придётся выучить факт наличия одной конкретной операции, но это локальное запоминание удобного факта, не смена всего стиля).

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

... ( ... )

Reply

dennis_chikin June 3 2019, 15:20:53 UTC
"примитивный интерпретатор внутри игрушки" может, например, внезапно поменять тип переменной в зависимости от предыдущей операции - ну, например, если она с чем-то сравнивалась.

А потом до игрушки доберутся "движкоправы" и зачем-то вырежут описанное в стандарте преобразование string в число для конструкции v + 0.

Reply

silly_sad June 6 2019, 14:34:33 UTC
vot! poetomu ja vsegda pishu (v-0)

Reply


dennis_chikin June 3 2019, 15:14:30 UTC
Нет, все-таки, я думаю, что для языков программирования должно использоваться строго кандзи, вводимое строго рисованием кисточкой по специальному планшету.

Иначе - слишком просто.

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

Reply

slobin June 3 2019, 15:30:44 UTC

Без подглядывания: новолуние, телец (?), ну, средняя, на север почти точно. Ещё вопросы?

P.S. С Меркурием повезло! :-)

... Эклектик, но к эклектизму относится отрицательно ...

Reply


vitus_wagner June 3 2019, 15:20:44 UTC
А сколько проблеов можно из этой конструкции выкинуть бед потери ее семантики?
То есть пробелы вокруг %% и после ] явно просятся на выкидывание, а остальные по моему нельзя.
А каждый пробел разрушает впечатление executable line noise.

Reply


tellepuz June 3 2019, 15:29:58 UTC
Деление по модулю удобно использовать для организации циклического буфера.

Reply


jorian June 3 2019, 15:30:51 UTC
Перлом не владею, а остаток от деления использую регулярно. Например, чтобы превратить чисто в симпатичную строчку с пробелами между группами цифр.

Reply


Leave a comment

Up