Size: a a a

Programming Offtop

2020 July 25

AE

Alexandr Emelyanov in Programming Offtop
Я вот тоже не пойму фанатизма ни того, ни другого. Что фп, что ооп, те же яйца - вид сбоку. Берите лучше откуда и отсюда, как во всех языках общего пользования
источник

AE

Alexandr Emelyanov in Programming Offtop
Ilmir
Можно форвардить в сохранённые сообщения.
Если так делать, то в избранном будет мусорка)
источник

Н

Напыщенное Эго... in Programming Offtop
Alexandr Emelyanov
Жаль нельзя отмечать сообщения избранными прям в чате
отвечаешь на сообщение и добавляешь в ответ тэг
источник

AE

Alexandr Emelyanov in Programming Offtop
Напыщенное Эго
отвечаешь на сообщение и добавляешь в ответ тэг
Точно
источник

AM

Artem Molotov in Programming Offtop
Более тысячи сотрудников и подрядчиков Twitter по состоянию на начало 2020 года имели доступ ко внутренним инструментам, которые позволяли изменить настройки учетных записей пользователей и передать управление другим лицам, тем самым ослабив кибербезопасность социальной сети.    
Более 1000 сотрудников Twitter могли поспособствовать кибератаке
источник

AM

Artem Molotov in Programming Offtop
Artem Molotov
Более тысячи сотрудников и подрядчиков Twitter по состоянию на начало 2020 года имели доступ ко внутренним инструментам, которые позволяли изменить настройки учетных записей пользователей и передать управление другим лицам, тем самым ослабив кибербезопасность социальной сети.    
Более 1000 сотрудников Twitter могли поспособствовать кибератаке
подрядчики имели доступ к аккаунтам юзеров
источник

AM

Artem Molotov in Programming Offtop
это пять
источник

BV

Boris Vanin in Programming Offtop
Ilmir
@happy_bracket Итак, сейчас 7 утра субботы, у меня, наконец, есть настроение ответить тебе подробно, почему я не люблю HKT и весь "тру ФП", который идёт от хаскеля в другие языки, причём идёт в виде крестового похода, объявляя всё остальное ересью, словно существует один и только один способ решения задачи, независимо от задачи.
Но перед тем, как я перейду к ФП и, тем более, "тру ФП", я упомяну ООП с его вездесущими паттернами, адепты которых вели (а некоторые и сейчас ведут) себя похоже на сегодняшних адептов "тру ФП" и говорят о том, что паттерны - наше всё и только через паттерны можно писать расширяемый код. Доходило даже до того, что некоторые адепты code shape в ФП языках обозвали паттернами ¯\_(ツ)_/¯. Я, разумеется, выступаю против подобного. Потому что паттерны, как бы не были они хороши для унификации, а именно, унификации кода на разных языках (то есть код на смолтолке, плюсах и джаве будет отличаться только синтаксисом), оставляют за бортом кое-что важное. И это кое-что важное, которое я назову языковыми идиомами - то, что отличает _идеоматический_ код на одном языке от _идиоматического_ кода на другом. Отсюда и название - "идиомы". Они лежат где-то между синтаксисом и семантикой. То есть, одну семантику можно выразить разными идиомами на разных языках. Сравни код на шестой джаве и котлине 1.0:
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < limit; i++) {
   list.add(i * i);
}

и
val list = (0 until limit).map { it * it }

они делают одно и то же, то есть имеют одну семантику. Но они отличаются также больше, чем синтаксисом.
Поэтому, кстати, тут @noraltavir пропесочил мой
while(
   when (val c = peek()) {
       c.isSpace() -> {
           pop()
           true
       }
       else -> false
   }
);

потому что этот цикл, будучи синтаксически и семантически корректен, не идиоматичен.
Идиомы - это то, что отличает один язык от другого. Поэтому, кстати, многие гоферы с годами опыта на го не понимают, зачем нужны дженерики в го. Потому что у них есть свои идиомы. Они прекрасно понимают, зачем нужны дженерики в других языках. Но зачем в го - нет. После появления дженериков появятся новые идиомы, а старые либо пробразятся, либо исчезнут, как было с джавой после появления в ней сначала тех же дженериков, а потом и лямбд со стримами.
Требовать от языка идиом другого языка, без попыток разобраться в его идиомах - это то, что я называю фанатизмом. Arrow пришли, наконец, к тому, чтобы не идти против языка, пытаясь натянуть чужие языковые идиомы, в данном случае IO, а взять существующие. В данном случае - suspend. Я, кстати, поэтому спросил тебя, не попутал ли ты HKT и IO. Потому что то IO, что есть в Arrow, на раз заменяется suspend. Удивительно, как проще становится код, если не пытаться натянуть идиомы из другого языка, а использовать уже существующие. Что-то мне подсказывет, что подобным образом можно избавиться также от Kind.
Ещё раз, я прекрасно понимаю пользу HKT... в скале и хаскеле. В котлине - пусть сначала идиома suspend получит большее распространение, за пределами асинхронщины. Я как раз топлю за multifire continuations, которые нафиг не нужны в асинхронщине, но полезны в других областях.
Наконец, изучение языка - это не только изучение синтаксиса, это ещё и изучение идиом. И попытки использовать идиомы другого языка - распространённая ошибка новичков, которую они допускают в силу приобретенных привычек и которая ведёт к фрустрации, потому что идиомы не те, к которым они привыкли. Поэтому программирование на этом языке кажется _странным_. Требуется время, чтобы переделать свои привычки и использовать более подходящие идиомы.
Поэтому, кстати, нет плохих и хороших языков. Есть языки, идиомы которых _нравятся_ и языки, идиомы которых _не нравятся_. Мне, например, _не нравятся_ идиомы го и питона. Но я в восторге от идиом лиспа и перла. Возможно, просто котлин не для тебя и тебе больше подходит скала. Но котлин != скала и не стоит пытаться переиспользовать идиомы из скалы в котлине или жаловаться на то, что идиомы другие, _плохие_.
Что за мультифаер кантинуэйшены и в каких областях играют?
источник

AN

Alexander Nozik in Programming Offtop
Boris Vanin
Что за мультифаер кантинуэйшены и в каких областях играют?
Смысл в том, что один и тот же Continuation запускается несколько раз. Например можно откатить состояние корутины до предыдущей точки останова и пойти по другому пути. Например на этом построено probabilistic programming.
источник

AN

Alexander Nozik in Programming Offtop
На этом же можно строить всякие декларативные реконсайл алгоритмы. Ну и на самом деле, не на самой этой фиче, а на машинерии для нее можно делать удаленное выполнение кода.
источник

BV

Boris Vanin in Programming Offtop
И да, котлин самобытен, отчасти тем и хорош. Натягивать сову на глобус такое себе, мне нравится котлин вей, я его выбираю, а если кому то он не нравится, то можно выбрать другой язык 🤷‍♂
источник

AN

Alexander Nozik in Programming Offtop
Boris Vanin
И да, котлин самобытен, отчасти тем и хорош. Натягивать сову на глобус такое себе, мне нравится котлин вей, я его выбираю, а если кому то он не нравится, то можно выбрать другой язык 🤷‍♂
Ага, кому-то и PHP самое оно. Мы ж не можем их критиковать.
источник

AN

Alexander Nozik in Programming Offtop
На самом деле, в смысле выбора языка я думаю, что критиковать можно только неинформированность. Когда человек говорит, что он делает так и не хочет делать иначе, не зная при этом, что иначе можно. Вот это плохо. А любой информированный выбор хорош.
источник

Н

Напыщенное Эго... in Programming Offtop
И сравнивать языки в отрыве от задачи и экосистемы тоже бессмысленно. Что толку от какой-то фичи в языке, если сам язык не пригоден для задачи.
источник

AN

Alexander Nozik in Programming Offtop
Напыщенное Эго
И сравнивать языки в отрыве от задачи и экосистемы тоже бессмысленно. Что толку от какой-то фичи в языке, если сам язык не пригоден для задачи.
В принципе да. Хотя сейчас подавляющее большинство языков претендует на универсальность.
источник

BV

Boris Vanin in Programming Offtop
Так-то критиковать за выбор вообще дело тухлое
источник

Н

Напыщенное Эго... in Programming Offtop
Alexander Nozik
В принципе да. Хотя сейчас подавляющее большинство языков претендует на универсальность.
Ключевое "претендуют". Абсолютную универсальность нереально обеспечить.
Плюс базовое противоречие в жизни.. Универсальный инструмент будет всегда хуже специализированного для конкретно взятой задачи.
источник

AN

Alexander Nozik in Programming Offtop
Напыщенное Эго
Ключевое "претендуют". Абсолютную универсальность нереально обеспечить.
Плюс базовое противоречие в жизни.. Универсальный инструмент будет всегда хуже специализированного для конкретно взятой задачи.
У Елизарова есть неплохая статья на эту тему
источник

BV

Boris Vanin in Programming Offtop
Boris Vanin
Так-то критиковать за выбор вообще дело тухлое
Но высказать своё отношение к языку это святая обязанность 🙈
источник

AM

Artem Molotov in Programming Offtop
Alexander Nozik
На самом деле, в смысле выбора языка я думаю, что критиковать можно только неинформированность. Когда человек говорит, что он делает так и не хочет делать иначе, не зная при этом, что иначе можно. Вот это плохо. А любой информированный выбор хорош.
Не стоит при этом забывать, что человек в принципе не может быть во всём информирован. Особенно в случае ноу-хау
источник