Size: a a a

Programming Offtop

2020 July 25

AN

Alexander Nozik in Programming Offtop
Andrew Mikhaylov
Ну, а дальше опять теоретики с практиками схлестнулись, и понеслось.
Ну да. Но теоретикам бы еще подучить теорию.
источник

AM

Andrew Mikhaylov in Programming Offtop
Alexander Nozik
Ну да. Но теоретикам бы еще подучить теорию.
Философия, конечно, это очень интересно, но изначально разговор был не об этом.
источник

IO

Iaroslav Orlov 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
Andrew Mikhaylov
Философия, конечно, это очень интересно, но изначально разговор был не об этом.
Ну то, что товращ Апач говорил именно об этом. Ильмир говорил не об этом. И тут я его полностью поддерживаю, хотя считаю, что котлин более функциональный, чем объектный язык.
источник

BP

Bogdan Panchenko in Programming Offtop
Apache DOG™
Но на самом деле не важно потому что математические объекты отвязаны от "реального" мира
Но она его описывает, нет мира - нет математики, так как нечего описывать
источник

AM

Andrew Mikhaylov in Programming Offtop
Alexander Nozik
Ну то, что товращ Апач говорил именно об этом. Ильмир говорил не об этом. И тут я его полностью поддерживаю, хотя считаю, что котлин более функциональный, чем объектный язык.
Да нет, споры о том, что важнее, математика или реализации, ещё были немного в тему. А вот то, что всё свелось к обсуждению, существует ли математика после смерти вселенной -- вот это уже сафсем мимо было.
источник

AD

Apache DOG™ in Programming Offtop
Bogdan Panchenko
Но она его описывает, нет мира - нет математики, так как нечего описывать
Математика не описывает мир, это люди описывают математикой мир
источник

AN

Alexander Nozik in Programming Offtop
Andrew Mikhaylov
Да нет, споры о том, что важнее, математика или реализации, ещё были немного в тему. А вот то, что всё свелось к обсуждению, существует ли математика после смерти вселенной -- вот это уже сафсем мимо было.
Не, там был аргумент, что то, что математично - то правильно.
источник

AD

Apache DOG™ in Programming Offtop
Найди мне пожалуйста синус в природе, без погрешностей и приближений
источник

AN

Alexander Nozik in Programming Offtop
Apache DOG™
Найди мне пожалуйста синус в природе, без погрешностей и приближений
Да сколько угодно. Волновая функция. Там идеальные синусы.
источник

AD

Apache DOG™ in Programming Offtop
Без 10e-19
источник

AN

Alexander Nozik in Programming Offtop
Apache DOG™
Без 10e-19
Без сколько угодно. Но я не понял, в чем вопрос
источник

AD

Apache DOG™ in Programming Offtop
Alexander Nozik
Да сколько угодно. Волновая функция. Там идеальные синусы.
Ты померял экспериментально это до какой степени
источник

AD

Apache DOG™ in Programming Offtop
Где пруф того что оно за чувствительностью не ведёт себя иначе
источник

AN

Alexander Nozik in Programming Offtop
Apache DOG™
Ты померял экспериментально это до какой степени
Путаете понятия. Есть понятие величины, а есть ее измерение. Идем, смотрим мою последнюю лекцию про субъективную вероятность... упс, ее еще не выложили, но на днях выложат.
источник

(

( in Programming Offtop
Блять, Апач
источник

(

( in Programming Offtop
Какие что нахуй синусы
источник

AD

Apache DOG™ in Programming Offtop
Идеальной струны не существует
источник

(

( in Programming Offtop
Струны блять
источник

(

( in Programming Offtop
Вы что несете поехавшие
источник