Но мне кажется, это детали. Моей целью было общую идею донести про reuse.
Да, я понял. Но с reuse и в статике всё работает, просто её надо объявлять явно, чтобы intentional reuse не путать с accidental fuckup. С парами вы делали бы
class PairLike p a b | p → a b where
fst :: p → a
snd :: p → b
mk :: a → b → p
instance PairLike (a, b) a b where
fst (a, _) = a
snd (_, b) = b
mk = (,)
-- или даже
instance PairLike (Coord a) a a where
fst (Coord x _) = x
snd (Coord _ y) = y
mk = Coord
Как пример силы репла в Clojure вернусь к той идеи, из моего сообщения выше по треду: можно было к футбольному полю в рантайме добавить поле и диспатчить его как тип суммы, без рекомпиляции.
Вопрос удобства разработки, не точности типов.
Я при разработке реплом почти не пользуюсь, и не знаю, зачем он мне был бы нужен. Фигурных подчёркиваний ошибок типов в редакторе хватает (и их на любые рантайм-диспатчи без компиляции я не променяю).
А нет ощущения того, что вы привязаны к компании и не можете никуда уйти из-за того, что мало вакансий?
С вакансиями более-менее нормально. Куда важнее (и куда больше привязывает) интересность проекта (пилить формально верифицированный блокчейн интереснее, чем пилить управление движением товаров в местном аналоге Пятёрочки, даже если оба на хаскеле), но это на любом языке проблема.
В настоящих сферах, где требуется ВУЗовское образование - самостоятельно тоже ОЧЕНЬ сложно. Ну кто будет разбираться во всех доказательствах теорем матана сам?
Можете перечислить эти сферы (с примерной оценкой доли вакансий и их оплатой), где нужны доказательства теорем матана? Хрен с ними с доказательствами, где нужно просто знать, что есть такая штука, как, например, теорема Фубини о том, когда можно сводить двойной интеграл к повторному?
Вообще моё любимое развлечение в тредах о нужности вышки для настоящщщих сфер (Настоящие сферы — для настоящих мужчин. Calvin Klein.)… так вот, моё любимое развлечение — спросить, почему матрицы умножаются строка на столбец, а не строка на строку, скажем. Люди в среднем отвечают по существу довольно плохо, и куда чаще начинают мне доказывать, что я спрашиваю какую-то хрень, и это всё не нужно.
Очень смешно.
Они выстраивают и воспитывают мышление. Долго, упорно и через боль.
А, таки вы понимаете, что с такими сферами всё очень плохо?
Ещё воспитывают и выстраивают мышление курсы морских котиков США. Бегать по миле в один конец за жрачкой три раза в день воспитывает силу духа и умение преодолевать неприятности, и помогает относиться к жизни философски. Думаю, без этого настоящим программистом в настоящих сферах (которые для настоящих мужчин, как мы помним — всё сходится) не стать.
Не я назвал, либы разные одно и то же назвали по-разному. И теперь пропадает переиспользование.
А какие либы экспортируют сколь угодно нетривиальные типы, чтобы их кишки были частью их контракта?
Например, для прототипа/mvp/своего проекта можно быстро на динамической типизации с реплом накидать решение.
Репл не противоречит типизации. Беру, открываю ghci, и пишу там.
Кстати, вы в проде на хаскеле пишете или для себя? Если в проде, как давно, как в целом работается на рем?
Второе десятилетие, но сколько его там в проде — зависит от работы. Где-то — 100%-ый хаскель, где-то — на нём делается компилятор для предметноспецифичного языка (чьи бинари уже идут в прод), где-то — скрипты для обработки данных или микросервисы-перекладывалки жсонов.
В принципе, работается вполне неплохо. Не могу сказать, что чего-то не хватает, или что хотелось бы перейти на другие языки (ну на идрис, разве что, если бы у него была хорошая экосистема).
А как насчет танка на средства артиста? Тоже надо разрешить? ;-)
Конечно. Можно даже не на средства артиста — Т-55 с современной СУО стоит в окрестности сотни тыщ баксов, ваш покорный слуга себе может позволить, а перед дроном принципиальной разницы между Т-55 и M1A2 SEPv2 нет (а с SEPv3 — ну будет нужно 10 дронов, а не один, это всё равно о-малое от стоимости танка, особенно абрамса).
Вы вообще так спрашиваете, как будто думаете, что меня на чём-то подловили, и что я начну говорить что-то в духе «не, ну танки перебор, конечно… 30-патронные магазины разрешили, и славно».
Кстати, а на права, чтобы ездить на своем танке, сдавать надо, как по-вашему? ;-)
Если это единственный вопрос, который вас беспокоит, то я готов его обсуждать, но отдельно.
но и делать это в составе подразделения - потому что остреливаться будут тоже будут в составе подраделения
У обороняющихся (граждан, в данном случае) сильно большее преимущество по сравнению с нападающими.
А вообще, вам не кажется что ваша дискуссия тут на тему алгоритмов пошла куда-то сильно в сторону?
Может у вас свой предмет обсуждения, но я не обсуждаю среднего человека, а именно ваше представление.
Моё представление об этом среднем человеке или моё представление о научности? Если второе, то я не дал вообще ни одного бита информации о том, какие у меня представления, кроме того, что представления среднего человека я не считаю соответствующими академическим определениям научности.
Не знаю кто это
Вы достаточно давно зарегистрированы, чтобы не пропустить регулярную рубрику «спросите Итана», переводимую ЕМНИП SLY_G, с мемной картинкой про расширяющуюся Вселенную.
У антиваксеров, кстати говоря, авторитеты были и подхваченных разговоров про ивермектины с разными суперсредствами хватало, но не думаю, что это положительный пример.
Смотря кого называть антиваксером. Например, не скидывающих теорию об утечке со счетов тоже в едином порыве веры в науку записывали в антиваксеры.
Но, впрочем, конкретно ивермектин — очередная демонстрация того, что вы как раз работаете по методичке, и ваша методичка слегка устарела. Ведь помимо подхваченных разговоров есть папиры с разными результатами, вплоть до https://pmc.ncbi.nlm.nih.gov/articles/PMC8088823/ :
Meta-analyses based on 18 randomized controlled treatment trials of ivermectin in COVID-19 have found large, statistically significant reductions in mortality, time to clinical recovery, and time to viral clearance. Furthermore, results from numerous controlled prophylaxis trials report significantly reduced risks of contracting COVID-19 with the regular use of ivermectin. Finally, the many examples of ivermectin distribution campaigns leading to rapid population-wide decreases in morbidity and mortality indicate that an oral agent effective in all phases of COVID-19 has been identified.
Это научпоперская элита, если вам именно илиты нужны. Что в ней научного?
Ровно то, что вы написали раньше сами: они олицетворяют науку в глазах среднего любителя науки.
Имхо, если вам нужны сигналы в виде методичек или какой-то другой сущности, то вы уже живете по методичке, что бы вы сами не думали.
Угу. А если вам нужно знать, какой ветви какой религии принадлежит ваш собеседник, чтобы с хорошей вероятностью предсказать его позицию по некоторым вопросам, то, значит, вам нужна религия.
У вас тут какое-то запредельно вызывающее отсутствие логики.
Одинокая или нет, но явно не вам решать.
Я и не решаю, я всего лишь описываю наблюдаемую реальность.
Мне нужно за человека передумывать его фразы, чтобы ему удобнее было? Для чего?
Для того, чтобы человек с вами не начал общаться математически точным формализмом, потому что вы, во-первых, не сможете ответить ему тем же, а, во-вторых, вам такое общение не понравится.
«Теплее» - это некая очень относительная степень оценки, язык, в конце концов, позволяет показать неабсолютность высказываний. Сравните с "Карма показывает одно".
Можете переформулировать фразу с температурой как «[мои] наблюдения за температурой показывают одно: [...]» Смысл (и бессмысленность ваших возражений) от этого не изменится.
Все эти случаи — про удобство разработки, а не про точность систем типов.
В статически типизированных языках мы не сможем передать Circle туда, где ожидается CircleShape, хотя это одно и тоже и даже поля одинаково называются. Нам придется тратить время на написание конверторов.
Почему вы преимущества считаете недостатками? Если вы круги назвали по-разному, то у них разная семантика, значит, функции не должны априори принимать что угодно, если типы полей совпадают.
Вместо кругов можно рассмотреть (извините за неровный хаскель)
newtype Person = Person { name :: String }
newtype Company = Company { name :: String }
Я бы хотел, чтобы компилятор меня ловил за руку, когда я в функцию, принимающую Person, передаю случайно Company. А если я вместо этого хочу выразить «функция, принимающая любой тип с полем name типа String», то я могу написать что-то в духе
foo :: HasField r "name" String ⇒ r → ...
в более-менее сегодняшнем хаскеле, либо ещё красивше в языках с нормальным row polymorphism. При этом компилятор всё ещё будет всё проверять во время сборки.
Выше создали мультиметод area, который может диспатчиться по ключу :shape.
class HasArea s where
area :: s → Double
instance HasArea Circle where
area (Circle r) = pi * r * r
В рантайме не получится это добавить вам руками как программисту, но это как жаловаться, что у вас отдельно есть компилируемые языки и отдельно — интерпретируемые. Типизация тут ни при чём.
(area (assoc football-field :shape :rectangle))
Не вижу, чем это лучше чего-то в духе
instance HasArea FootballField where
area = area . fieldRect
Большинство инвертеров, которые у меня здесь предлагают установщики соларов, являются grid-tied — они руководствуются частотой и напряжением в сети, и без электричества в сети не работают. Hybrid-инвертеры, которые могут работать и с сетью, и без, стоят сильно больше, и средний потребитель солар-услуг их не покупает.
А у нас на ТРЯП мы за семестр едва осилили построить интерпретатор регулярок, и?
PEG'ов в программе не было. Даже банально слов вроде SSA не было. Методов оптимизаций программ не было. Вообще ничего не было. Зато всё это спокойно осиливается потом (а лучше — вместо) вуза.
Можно и самостоятельно, вот только нужно как-то узнать, что эта "тема" вообще существует.
Каким-то образом знал об этом ещё до вуза. Может, в книжках для самообразования встречал, не знаю.
Самостоятельно просто нереально узнать хотя бы какие направления в криптографии существуют. А уж для осознанной работы с криптой, нужно предварительно погрузиться в теорию чисел, теорию сложности, теорию информации, теорию вероятностей, абстрактную алгебру, формальный анализ...
Для осознанной работы с криптой в смысле использования криптобиблиотек это всё не нужно. Для осознанной работы с криптой в смысле «сделать свою крипту» — во-первых, не пишите свою крипту, а, во-вторых, стандартных вузовских курсов всё равно будет сильно недостаточно.
Кстати, на примате у нас не было теории чисел, теории информации, абстрактной алгебры (базовый семестр теории групп и колец не в счёт), и так далее.
Дык у нас серпентарий, клетка с хомяками или всё же вольер с орлами? Вы уж определитесь в своих метафорах
Брат, метафоры — как шмот у пацанов: кто во что горазд, но суть одна — выживает сильнейший. И в тебе три волка — один тянет в серпентарий, где каждый улыбается, а сам ядом дышит… другой — в клетку с хомяками — когда все крутят колесо, думая, что бегут к мечте… но есть и третий волк, стремящийся стать орлом, брат. Он рождается позже других и не скулит, выпрашивая еду, поэтому орлов мало. Но орлы над этим всем летают и не суетятся.
Так что смотри сам, какого волка ты кормишь и где ты окажешься — в террариуме, в клетке, или всё-таки расправил крылья. Брат, против языка фактов не попрёшь. Так говорил Зарастейтхем.
Если (в моем подходе) гражданское оружие ограничивается по мощности (пистолет, без автоматики, максимум 10 патронов, короткоствол, без глушителя), то полиция в нем не ограниченна (бронежилеты, винтовки, бронеавтомобили).
Нет, конечно. Никакого ограничения гражданского оружия. Потому что гражданское оружие — это самооборона не только от мелких локальных бандитов, но и от зарвавшейся полиции.
Потом уже пришла мысль, что полиция (в широком смысле) нужна для расследования преступлений неограниченное количество времени - что естественно резко снижает мотивацию преступника совершать преступления.
Это фактологически не так. В антиоружейных городах полиции на душу больше, и насильственных преступлений тоже больше. В мелких городках полиции может быть вообще быть условный один человек, подписывающий протоколы автоаварий и ничего не могущий расследовать, и насильственных преступлений там около нуля.
А можно пояснить, почему именно статическая типизация «не может быть достаточно точной»? А то товарищ по ссылке ссылается на своё «художественное понимание» математики, да и всё, по большому счёту.
Можете пояснить, какого рода неопределённость? А то вдруг она, не знаю, типами покрывается? :]
Подчёркивания в редакторе — тоже про неё.
Первый день и/или первые сто строк. Потом медленнее.
Да, я понял. Но с reuse и в статике всё работает, просто её надо объявлять явно, чтобы intentional reuse не путать с accidental fuckup. С парами вы делали бы
Вопрос удобства разработки, не точности типов.
Я при разработке реплом почти не пользуюсь, и не знаю, зачем он мне был бы нужен. Фигурных подчёркиваний ошибок типов в редакторе хватает (и их на любые рантайм-диспатчи без компиляции я не променяю).
С вакансиями более-менее нормально. Куда важнее (и куда больше привязывает) интересность проекта (пилить формально верифицированный блокчейн интереснее, чем пилить управление движением товаров в местном аналоге Пятёрочки, даже если оба на хаскеле), но это на любом языке проблема.
Можете перечислить эти сферы (с примерной оценкой доли вакансий и их оплатой), где нужны доказательства теорем матана? Хрен с ними с доказательствами, где нужно просто знать, что есть такая штука, как, например, теорема Фубини о том, когда можно сводить двойной интеграл к повторному?
Вообще моё любимое развлечение в тредах о нужности вышки для настоящщщих сфер (Настоящие сферы — для настоящих мужчин. Calvin Klein.)… так вот, моё любимое развлечение — спросить, почему матрицы умножаются строка на столбец, а не строка на строку, скажем. Люди в среднем отвечают по существу довольно плохо, и куда чаще начинают мне доказывать, что я спрашиваю какую-то хрень, и это всё не нужно.
Очень смешно.
А, таки вы понимаете, что с такими сферами всё очень плохо?
А можно это выстраивание и воспитание как-то измерить? И почему, скажем, прямые занятия программированием выстраивают и воспитывают его меньше, чем зубрёжка (а в вузе на практике это чаще всего зубрёжка, и то в лучшем случае, в худшем — «ты прикинь, у нас этот лектор на матане зверь, спрашивает у нас доказательства некоторых теорем!» © мой приятель из то ли Бауманки, то ли МИФИ 15 лет назад).
Ещё воспитывают и выстраивают мышление курсы морских котиков США. Бегать по миле в один конец за жрачкой три раза в день воспитывает силу духа и умение преодолевать неприятности, и помогает относиться к жизни философски. Думаю, без этого настоящим программистом в настоящих сферах (которые для настоящих мужчин, как мы помним — всё сходится) не стать.
Ну вот я тоже закончил МФТИ и тоже всячески ругаюсь на потерянное там бестолку время.
А какие либы экспортируют сколь угодно нетривиальные типы, чтобы их кишки были частью их контракта?
Репл не противоречит типизации. Беру, открываю ghci, и пишу там.
Второе десятилетие, но сколько его там в проде — зависит от работы. Где-то — 100%-ый хаскель, где-то — на нём делается компилятор для предметноспецифичного языка (чьи бинари уже идут в прод), где-то — скрипты для обработки данных или микросервисы-перекладывалки жсонов.
В принципе, работается вполне неплохо. Не могу сказать, что чего-то не хватает, или что хотелось бы перейти на другие языки (ну на идрис, разве что, если бы у него была хорошая экосистема).
Конечно. Можно даже не на средства артиста — Т-55 с современной СУО стоит в окрестности сотни тыщ баксов, ваш покорный слуга себе может позволить, а перед дроном принципиальной разницы между Т-55 и M1A2 SEPv2 нет (а с SEPv3 — ну будет нужно 10 дронов, а не один, это всё равно о-малое от стоимости танка, особенно абрамса).
Вы вообще так спрашиваете, как будто думаете, что меня на чём-то подловили, и что я начну говорить что-то в духе «не, ну танки перебор, конечно… 30-патронные магазины разрешили, и славно».
Если это единственный вопрос, который вас беспокоит, то я готов его обсуждать, но отдельно.
У обороняющихся (граждан, в данном случае) сильно большее преимущество по сравнению с нападающими.
Типичный хабр :]
Моё представление об этом среднем человеке или моё представление о научности? Если второе, то я не дал вообще ни одного бита информации о том, какие у меня представления, кроме того, что представления среднего человека я не считаю соответствующими академическим определениям научности.
Вы достаточно давно зарегистрированы, чтобы не пропустить регулярную рубрику «спросите Итана», переводимую ЕМНИП SLY_G, с мемной картинкой про расширяющуюся Вселенную.
Смотря кого называть антиваксером. Например, не скидывающих теорию об утечке со счетов тоже в едином порыве веры в науку записывали в антиваксеры.
Но, впрочем, конкретно ивермектин — очередная демонстрация того, что вы как раз работаете по методичке, и ваша методичка слегка устарела. Ведь помимо подхваченных разговоров есть папиры с разными результатами, вплоть до https://pmc.ncbi.nlm.nih.gov/articles/PMC8088823/ :
Ровно то, что вы написали раньше сами: они олицетворяют науку в глазах среднего любителя науки.
Угу. А если вам нужно знать, какой ветви какой религии принадлежит ваш собеседник, чтобы с хорошей вероятностью предсказать его позицию по некоторым вопросам, то, значит, вам нужна религия.
У вас тут какое-то запредельно вызывающее отсутствие логики.
Я и не решаю, я всего лишь описываю наблюдаемую реальность.
Для того, чтобы человек с вами не начал общаться математически точным формализмом, потому что вы, во-первых, не сможете ответить ему тем же, а, во-вторых, вам такое общение не понравится.
Можете переформулировать фразу с температурой как «[мои] наблюдения за температурой показывают одно: [...]» Смысл (и бессмысленность ваших возражений) от этого не изменится.
Все эти случаи — про удобство разработки, а не про точность систем типов.
Почему вы преимущества считаете недостатками? Если вы круги назвали по-разному, то у них разная семантика, значит, функции не должны априори принимать что угодно, если типы полей совпадают.
Вместо кругов можно рассмотреть (извините за неровный хаскель)
Я бы хотел, чтобы компилятор меня ловил за руку, когда я в функцию, принимающую
Person, передаю случайноCompany. А если я вместо этого хочу выразить «функция, принимающая любой тип с полемnameтипаString», то я могу написать что-то в духев более-менее сегодняшнем хаскеле, либо ещё красивше в языках с нормальным row polymorphism. При этом компилятор всё ещё будет всё проверять во время сборки.
В рантайме не получится это добавить вам руками как программисту, но это как жаловаться, что у вас отдельно есть компилируемые языки и отдельно — интерпретируемые. Типизация тут ни при чём.
Не вижу, чем это лучше чего-то в духе
Халявные:
Балансировать скобочки разных видов (ну, на стэк), задача со звёздочкой — сгенерировать скобочные выражения без повторов.
Что-то про поиск ближайших таксистов к клиентам. По большому счёту задача на очереди.
Написать свой троттлер, который принимает callable и троттлит вызовы к нему.
Датасайенс, там не считается.
На самом деле я даже удивился. Столько разговоров было о сложности интервью в фаанг, а в итоге какая-то халява.
Большинство инвертеров, которые у меня здесь предлагают установщики соларов, являются grid-tied — они руководствуются частотой и напряжением в сети, и без электричества в сети не работают. Hybrid-инвертеры, которые могут работать и с сетью, и без, стоят сильно больше, и средний потребитель солар-услуг их не покупает.
А человек с образованием может оценить ненужность своего образования?
А у нас на ТРЯП мы за семестр едва осилили построить интерпретатор регулярок, и?
PEG'ов в программе не было. Даже банально слов вроде SSA не было. Методов оптимизаций программ не было. Вообще ничего не было. Зато всё это спокойно осиливается потом (а лучше — вместо) вуза.
Каким-то образом знал об этом ещё до вуза. Может, в книжках для самообразования встречал, не знаю.
Для осознанной работы с криптой в смысле использования криптобиблиотек это всё не нужно. Для осознанной работы с криптой в смысле «сделать свою крипту» — во-первых, не пишите свою крипту, а, во-вторых, стандартных вузовских курсов всё равно будет сильно недостаточно.
Кстати, на примате у нас не было теории чисел, теории информации, абстрактной алгебры (базовый семестр теории групп и колец не в счёт), и так далее.
Я убеждён, что это вы сейчас специально.
Брат, метафоры — как шмот у пацанов: кто во что горазд, но суть одна — выживает сильнейший. И в тебе три волка — один тянет в серпентарий, где каждый улыбается, а сам ядом дышит… другой — в клетку с хомяками — когда все крутят колесо, думая, что бегут к мечте… но есть и третий волк, стремящийся стать орлом, брат. Он рождается позже других и не скулит, выпрашивая еду, поэтому орлов мало. Но орлы над этим всем летают и не суетятся.
Так что смотри сам, какого волка ты кормишь и где ты окажешься — в террариуме, в клетке, или всё-таки расправил крылья. Брат, против языка фактов не попрёшь. Так говорил Зарастейтхем.
Да я помню, шмиттовский Суверен, все дела.
Просто очень смешно, когда сообщество, в котором принято осуждать избирательное правоприменение, само приветствует избирательное правоприменение.
Нет, конечно. Никакого ограничения гражданского оружия. Потому что гражданское оружие — это самооборона не только от мелких локальных бандитов, но и от зарвавшейся полиции.
Это фактологически не так. В антиоружейных городах полиции на душу больше, и насильственных преступлений тоже больше. В мелких городках полиции может быть вообще быть условный один человек, подписывающий протоколы автоаварий и ничего не могущий расследовать, и насильственных преступлений там около нуля.
Британия не понимает вашей иронии.
А можно пояснить, почему именно статическая типизация «не может быть достаточно точной»? А то товарищ по ссылке ссылается на своё «художественное понимание» математики, да и всё, по большому счёту.