Когда люди высокого ранга в изолированных силовых или фитнесе проигрывали обычному среднестатистическому взятому с улице ноунейму допустим на лыжах или легком альпинизме.
А в чём прикладной смысл лыж или лёгкого альпинизма? :]
Парадоксальность ситуации заключается в том, что для подъема условных 16 кг не нужен бицепс, поднимающий отдельно в изоляции эти 16 кг. Этот пуд можно поднять двумя руками, можно с помощью коленки, можно даже с помощью рычага и большей амплитуды движений, можно активно включая ноги (и даже нужно)
Просто поднять 16 кг обычно недостаточно. Их ещё нужно куда-то отнести или что-то с ними сделать.
У меня есть, например, раскладная железная лестница, которая не знаю сколько весит. Раньше её нужно было таскать двумя руками и закинув на грудь (отклонившись назад). Сейчас я могу её взять и поднять одной левой правой рукой и нести так в руке, и практически не чувствовать этой нагрузки.
В первый раз это было, кстати, очень прикольно: лестница мне понадобилась после долгого периода ничегонеделанья по дому, я её поднял, уж по привычке собрался закинуть на себя и кряхтеть, и… оказалось, что не нужно. Она внезапно стала почти невесомая.
Какие то плюсы к здоровью неочевидные, на что надо тратить столько усилий?
Размер мышц коррелирует с силой, сила коррелирует со здоровьем.
Resistance training помогает компенсировать потерю кальция из костей.
Компенсация комплексов?
Далеко не только.
Есть просто даже ресерч, показывающий, что визуально привлекательные люди успешнее — условно, больше шанс получить сочный оффер после интервью.
Плюс, если у вас перед вами в зеркале и на периферии зрения всё время маячит результат ваших усилий и пруф вашей возможности сфокусироваться на деле на несколько лет, то есть шанс, что и в других областях вы будете вести себя аналогично, почувствовав вкус и профиты от контроля за своей собственной жизнью, и взяв эту самую собственную жизнь в свои руки.
В чем состоит целесообразность процесса набора мышечной массы, которая как мне кажется сама по себе пассив требующий постоянного внимания?
Кстати, да, калорий мышцы тоже больше жрут. С мышцами можно столько же есть и набирать меньше жировой массы — это может быть психологически проще, чем снизить потребление еды.
С трудом понимаю где в прикладной области может понадобится подъем тяжести на трицепс из за головы. Где, при каких условиях отличных от лабораторных от него есть смысл? Тяжесть поднимают над головой толчком, каков процесс максимально досконально уже разобран как наиболее оптимальный.
На днях вешал потолочный вентилятор и ощутил, какой смысл в трицепсах (а также в передних/боковых дельтах и подобных).
Но, впрочем, не поднимаю тяжести из-за головы, юзаю специальный тренажер на tricep extension.
А с чего у вас там велосипед недоступен половину года? Тепловой удар можно получить?
Да.
Ну и ещё конкретно у нас тупо нет консистентных велосипедных дорожек (они иногда возникают ниоткуда и пропадают туда же), поэтому ты тут либо велосипедераст, гоняющий по пешим трейлам, либо ездишь по дорогам общего пользования, надеясь, что и в этот раз тебя не собьют.
Я заметил, что если не занимаюсь физической активностью, то у меня дико падает производительность из-за ухудшения самочувствия. Поэтому эти часы в неделю очень даже оправданы.
Это ещё что, я вот даже за питанием следить стал! Скоро, того и гляди, начну есть больше одного раза в день.
Верните, короче, мне мои 17 лет, когда я мог спать 3 часа в сутки, не двигаться, есть трэш и при этом думать, что быть продуктивным.
Самое ироничное, что если вы начнёте быть против мигрантов и ЛГБТ в ряде стран Европы, то вам там тоже ответочка будет весьма непропорциональная (начиная, конечно, с Британии, но заканчивая и Германией, например, где семеро политиков AfD из избирательных списков передали бы привет, если бы могли, но увы — как-то все резко померли за месяц).
Я сам за демократию, но все больше с интересом наблюдаю за китайцами и начинаю менять свое мнение по поводу авторитарных стран.
Если начать разделять экономический авторитаризм/либерализм и политический авторитаризм/либерализм (а также неолиберализм, потому что современные политические либералы к идеалам революционной Франции и Штатов 18-го века имеют примерно нулевое отношение), то формировать описывающее реальность мнение будет куда проще, потому что такое разделение даст вам все нужные степени свободы.
Камон, зачем вообще их измерять, почему просто не тренироваться ради удовольствия, ведь это просто кайф? Вся статья фитнесинфоцыганство какое-то, людям навязывают бессмысленные и вредные цели.
Потому что это не для всех кайф, и если кому-то для поддержания вовлечённости нужны циферки, геймификация или тому подобные вещи, то пусть хоть окружности бицухи каждый день измеряет, почему нет?
Я ненавижу тренажерку, ненавижу туда ходить, ненавижу там тягать веса, и так далее. С куда большим удовольствием я бы эти шесть часов в неделю (плюс ещё шесть между тренажеркой и сном) сидел бы дома, читал бы книжки, писал бы код или ковырял бы в носу вообще. Но у меня есть табличка, я туда заножу, сколько чего наподнимал сегодня, и можно на эту табличку и растущие в ней циферки смотреть и продолжать ходить.
Бассейн, если что, я тоже не люблю, хайкинг и велосипед недоступен половину года (и на них было бы ещё печальнее), как и все прочие подобные альтернативы.
An increasing body of evidence suggests that poor nutrition at the very beginning of life - even before birth - leads to large and long term negative consequences for both mental and physical health. This paper reviews the evidence from studies on the Dutch famine, which investigated the effects of prenatal undernutrition on later health. The effects of famine appeared to depend on its timing during gestation, and the organs and tissues undergoing critical periods of development at that time. Early gestation appeared to be the most vulnerable period. People who were conceived during the famine were at increased risk of schizophrenia and depression, they had a more atherogenic plasma lipid profile, were more responsive to stress and had a doubled rate of coronary heart disease. Also, they performed worse on cognitive tasks which may be a sign of accelerated ageing. People exposed during any period of gestation had more type 2 diabetes. Future investigation will expand on the finding that the effects of prenatal famine exposure may reach down across generations, possibly through epigenetic mechanisms. Recent evidence suggests that similar effects of prenatal undernutrition are found in Africa, where many are undernourished. Hunger is a major problem worldwide with one in seven inhabitants of this planet suffering from lack of food. Adequately feeding women before and during pregnancy may be a promising strategy in preventing chronic diseases worldwide.
Accumulating research shows that prenatal exposure to maternal stress increases the risk for behavioral and mental health problems later in life. This review systematically analyzes the available human studies to identify harmful stressors, vulnerable periods during pregnancy, specificities in the outcome and biological correlates of the relation between maternal stress and offspring outcome. Effects of maternal stress on offspring neurodevelopment, cognitive development, negative affectivity, difficult temperament and psychiatric disorders are shown in numerous epidemiological and case-control studies. Offspring of both sexes are susceptible to prenatal stress but effects differ. There is not any specific vulnerable period of gestation; prenatal stress effects vary for different gestational ages possibly depending on the developmental stage of specific brain areas and circuits, stress system and immune system. Biological correlates in the prenatally stressed offspring are: aberrations in neurodevelopment, neurocognitive function, cerebral processing, functional and structural brain connectivity involving amygdalae and (pre)frontal cortex, changes in hypothalamo-pituitary-adrenal (HPA)-axis and autonomous nervous system.
Дальше мне надоело постить не только абстракты, но и сами ссылки — у меня таких штук 20 сходу наберётся. Но, надеюсь, четырёх вам будет достаточно.
Зачем вы лезете в обсуждения вещей, в которых вы ничего не понимаете, и даже не понимаете, насколько вы не понимаете? Вы даже не понимаете на метауровне, чем вы отличаетесь от верящих в религию и «я где-то слышал, что батюшка сказал». Это просто фрактал непонимания.
Интересно, в где так работает такая наука? На сколько помню всегда теоретики выдвигали теории, проводили эксперименты, а остальные повторяли чтобы опровергнуть или доказать эту теорию.
Везде так работает наука, потому что речь о доверии не теориям, а экспериментальным статьям.
Статьи с проверкой чужих экспериментов сильно менее публишабельны. Когда вы — аспирант, или молодой учёный, или ещё кто-то такой, то вам важно вложить ваши усилия с максимальным эффектом, чтобы защититься, или получить tenure, или ещё что-то такое. И вы их будете вкладывать, конечно, не в перепроверку чужих результатов, а во что-нибудь своё (доверяя при этом этим самым чужим результатам).
Найдёте противоречие с чужой статьёй — возможно, повезло (или нет, зависит от социального контекста). Не найдёте — тем более не повезло (науке).
Иначе бы у нас астрологи уже миром правили.
Излишнюю спесь чую здесь я, ведь месяц рождения (ergo знак зодиака) коррелирует с условиями, в которых был материнский организм во время беременности, с доступностью еды, со средней температурой, и с аналогичными вещами в ваш ранний постнатальный период, вплоть до числа солнечных или облачных дней, а всё это в дальнейшем вполне коррелирует с особенностями вашего поведения.
записывать вес, подходы, повторы очень помогает, как и упражняться до предела, не по силе, а по выносливости, числу повторов
Невозможно иметь 0 RIR, и чтобы при этом у вас записи ваших весов имели какой-то смысл. С 0 RIR последний повтор-два будут с хреновой техникой, хреновым ROM и трясущимися руками. Не надо так делать (особенно на потенциально травмоопасных вещах, дающих нагрузку на спину, скажем, с нетривиальными весами).
В пике становой тянул 70, приседал с 50-ю, сейчас бы и близко такой херней не занимался бы, конечно, – максимум на руки и грудные мышцы легкую штангу.
Ну так вы и не должны делать 1RM каждую тренировку.
Решает в этом деле хорошая правильная разминка, спортивное питание, чередование упражнений на мышцы (две тренировки на неделе, раз в неделю на одну группу мышц)
Раз в неделю на группу — далековато от оптимума, два раза уже чутка лучше.
Я пытался заниматься два раза в неделю, но после того, как тренировки раздулись до 2.5 часов и в конце «ппц что ж я маленьким не сдох», то разбил на три в неделю с чередованием (одну неделю — два дня ног и один день рук, другую — наоборот). Получилось 80-90 минут за раз, вполне подъёмно, и по приходу домой даже хватает мозга что-нибудь почитать, скажем.
Ни слова про питание, сон, БАДы и спортпит. Одними тренировками "набрать мышцы" не выйдет.
Это да. Ctrl+F → протеин → 0 результатов (в статье). Ctrl+F → креатин → 0 результатов (даже в комментах). А у меня от креатина несколько разных плато пробилось, спать проще стало, и на следующий день как-то лучше, зело рекомендую.
Или туда же range of motion — про это в статье вообще ничего нет. А как приходишь в тренажерку, так там минимум половина сидящих на той же вертикальной тяге в каждом повторе просто дёргает тренажер от чуть-больше-прямого-угла-в-локте до чуть-меньше-прямого-угла (и чуть ли не ложится в процессе). Зато там 190+ фунтов, да, молодцы.
Bicep curl — туда же, градусов 15-20 движение максимум, зато дофига вес.
ИМХО тренера нужны (если нужны) в первую очередь для того, чтобы отлавливать такую ерунду. Правда, среднему тренеру интересно, чтобы ему продолжали платить деньги, так что хз, насколько это реализуется на практике.
По сабжу тут эти два дня вообще без тренера делать нельзя - румынка, жимы, без тренера новичок просто искалечится, а опытному человеку эта статья и не нужна.
С небольшим весом (штанга + по 30 фунтов с каждой стороны, например) дедлифты вполне себе подъёмные, и ютуба плюс самоконтроля в зеркале достаточно.
вот этот момент не очень ясен- суммы-произведения на типах же, правильно?
Это A в аббревиатуре ADT — алгебра.
Когда у вас есть data Foo = MakeFoo Int Double String, то Foo эквивалентен туплу (то есть, произведению — и в смысле мощностей множеств, и в смысле теорката, и в интуитивном смысле) из Int, Double и String. Если же у вас data Foo = C1 ... | C2 ... | C3 ..., то это сумма вариантов из всех возможностей построить многоточие после C1, либо после C2, либо после C3.
Не отрицаю всю полезность и мощность всего этого, но вот лучшая читаемость в сравнении с растом - все ещё под вопросом, даже с туториалом попроще.
когда xs в вашем patP что-то там do это ни разу не даёт пояснений о предметной области - это что-то про авторизацию, про обработку контейнеров или про рисование крестиков-ноликов на экране
А когда это elements, то становится понятнее, о чём речь?
Собсна, о какой предметной области идёт речь при написании библиотечных функций вроде filter?
Чем плохи одно-двубуквенные переменные кажется многие объясняли уже не единожды, чем плоха польская нотация - тоже.
Так это зависит от контекста. Да, код чаще читается, чем пишется, но как-то так выходит (по крайней мере, в моём опыте), что в случае хаскеля и подобных код бегло (когда важны говорящие названия) читается куда чаще на уровне сигнатур типов и названий функций. А когда вдруг надо забуриться в поведение функции, то надо забуриваться глубоко в предметную логику, и локальный маппинг «m значит module » — очень дёшев.
Ну, опять же, личная практика и практика людей, с которыми я работал.
Но при этом это нормальная практика хаскеля.
Но это не синтаксис. Это вопрос соглашений в вашей кодовой базе.
Вон, например, что-то, где многобуквенных названий куда больше, чем одно/двухбуквенных.
Сравните интро в те же дженерики в Rust с туториалом хаскела.
А, теперь я понял причину вашего удивления!
Потому что это (вместе с хаскельными дженериками) — три сильно разные концепции?
Дженерики в Rust — это просто параметрический полиморфизм в хаскеле. Это когда вы пишете showMany :: Show a ⇒ [a] → String. По ним (особенно в варианте Haskell98, без сложных расширений) вообще никакой документации не нужно, и синтаксис у них лайтовый («слово с маленькой буквы — переменная типа»). А по сложным расширениям даже официальная дока (не туториал) тоже вполне лайтовая: например или вот.
Дженерики в хаскеле — это, гм, наблюдение, что (почти) любой тип данных изоморфен рекурсивной структуре из сумм, произведений и ещё пары мелочей. Поэтому можно (почти) любой тип данных замапить на это обобщённое представление, обработать его обобщённым образом, и, если надо, размапить обратно. Именно так работает deriving FromJSON для автовывода десериализации из JSON библиотекой Aeson: оно говорит «компилятор, дай мне обобщённое представление данного типа через toRep», компилятор его даёт (вместе с метаинформацией вроде имён полей, или их строгости вот, как вы заметили), и Aeson уже обрабатывает его. Это на самом деле охренеть как удобно, потому что все ваши обобщённые функции превращаются в няшную приятную рекурсивную обработку структур данных. Когда мне на работе надо было набросать инфраструктурную либу для работы с тамошним аналогом sqlite, я дженерик-поддержку (де)сериализации произвольных типов сделал минут за 20. Согласно тому, что я знаю о расте, прямых аналогов дженериков там нет.
Template Haskell — это вообще тупо кодогенерация. Это код на хаскеле, который выполняется во время компиляции и может генерировать любой другой код. Через TH можно сделать поддержку строковой интерполяции, например (чтобы [i|My name is #{name}, my age is #{age}|] разворачивалось в "My name is " ++ name ++ ", my age is " ++ show age), или TH'ем можно сделать всё то же, что можно сделать дженериками (и у компилятора там чуть больше простора для оптимизаций). FromJSON тоже можно было бы сделать TH'ем, но код на TH писать куда менее приятно, чем на дженериках. TH — это плюс-минус растовские процедурные макросы.
Написанный до этого и, возможно, уже устаревший ответ на другие ваши замечания
В погоне за математической генерализацией, примеры бизнес логики растворяются в этих абстрактных байндингах типов. Например, без бОльшего ковыряния в документации сходу догадаться про назначение тех же 'NoSourceUnpackedness,'NoSourceStrictness,'DecidedLazy из доки по вашей ссылки на мой взгляд не представляется возможным.
Так здесь бизнес-логика — это как компилятор видит ваш код. Эта документация нужна тем, кто пишет библиотеки для метапрограммирования. Эта дока — для тех, кто пишет аналог serde из раста (aeson конкретно для жсона, например), а не тех, кто пользуется аналогом serde. Те, кто пользуется, просто пишет deriving (Generic, Aeson.FromJSON, Aeson.ToJSON) и в ус не дует.
Поэтому совершенно неудивительно, что в задаче по ковырянию в представлении ваших типов вылезают детали вроде того, являются ли поля распакованными в конструктор или нет, являются ли они строгими или нет, и почему.
Это будет в любой докуменатции.
Зачем вообще необходимо иметь примеры раскрытия типа в примерах, а не в тех разделе где-нибудь рядом с Generic Representation Type?
Потому что вся эта страница — про generic representation type?
Ведь они могут что-то доказать только когда число (длина массива и т.п.) известна на стадии компиляции.
Нет, в том-то и дело, что настоящие завтипы позволяют зависимости от рантайм-данных (в отличие от их эмуляции через DataKinds и ещё сотню расширений в хаскеле, или статические завтипы а-ля ATS, или path-dependent types в скале, или какой там академический термин для control flow analysis в TS). Просто рантайм-значения потребуют рантайм-проверок.
В завтипизированном языке вы можете написать
-- Для начала три библиотечных функции.
-- Тотальная функция с очевидной семантикой
-- Fin n — тип чисел, меньших `n`:
index : Vect a n → Fin n → a
-- Проверка, что число меньше другого
-- Dec P — либо свидетельство (элемент типа) P,
-- либо свидетельство ¬P,
-- тип вроде Dec P = Yes P | No (¬ P):
(<?) : (lhs : Nat)
→ (rhs : Nat)
→ Dec (lhs < rhs)
-- Если число меньше границы, то из него можно сделать `Fin`:
toFin : (n : Nat)
→ (n < b)
→ Fin b
-- REST-метод для индексации массива,
-- всё очевидно в рантайме:
indexEndpoint : Vect a len → MonadRest ()
indexEndpoint {len} someArray = do
-- куда уж рантаймнее?
idx <- param Nat "idx"
case idx <? len of
Yes proof → sendReply $ index someArray (toFin idx proof)
No _contra → sendError "out of bounds!"
Зачем всё это нужно по сравнению с вашим вариантом TS рядом?
Во-первых, я не заметил, где у вас проверка, что длина — действительно 32 байта. Более того, тип функции
declare function makeAesKey(bytes: Uint8Array): Aes256Key;
говорит, что она физически эту проверку делать не может (ну или кидает исключение, но этого в типах нет).
Во-вторых, после того, как вы сделали эту рантайм-проверку один раз, вы дальше можете доказывать статически, что если она проходит, то какие-то зависящие от неё вычисления тоже проходят проверку, и дополнительно их делать не надо. Скажем, если idx выше меньше n, то idx * 2 / 3 (или idx & (idx - 1), или что угодно подобное) тоже меньше n, и это уже проверять в рантайме не надо, это можно просто доказать.
В-третьих, это всё не ограничивается такими проверками. Например, можно написать завтипизированный корректный printf , где тип самой функции может зависеть от рантайм-форматной строки (пользоваться этим в рантайме, конечно, будет неудобно, но смысл понятен, надеюсь).
Метапрограммирование на основе рефлексии в Haskell емнип можно сделать нормальным, но хаскелл среднестатистическому программисту в принципе читать сложнее.
Чем сложнее? Как раз минимальный синтаксис, но не слишком минимальный (то есть (не (лисп))).
Даже условная Scala или Erlang в этом плане попроще будут.
С чтением эрланга у меня мало опыта, implicit val а[_] от(скалы): _ => { у[меня] = new глаза[меня](вытекают[меня]) }. ИМХО, конечно.
И всё-таки ноль в степени ноль — это единица или неопределённость? Пишите свои ответы в комментариях.
Если вы строите основания прямо с множеств, то a^b — это просто мощность множества функций из множества мощности b в множество мощности a. Поэтому:
Сколько функций из пустого множества в непустое множество? Ровно одна. Поэтому 5⁰ = 1.
Сколько функций из пустого множества в пустое множество? Да тоже ровно одна, поэтому 0⁰ = 1.
Сколько функций из непустого множества в пустое множество? Ноль, поэтому 0^(suc x) = 0 .
Если же вы модный чувак и строите математику от теорката, то можно заметить, что в Set (и вообще в любой декартово замкнутой категории, где это одно из определений) функтор A × • — левый сопряжённый к функтору экспоненциирования •^A (интуитивно, любой функции A × B → C однозначно соответствует «каррированная» функция B → C^A, и это соответствие хорошо себя ведёт), поэтому в частности 𝒜(A × B, C) ≅ 𝒜(B, C^A). Дальше для A ≔ 0, так как функтор • × B тоже левый сопряжённый, поэтому сохраняет копределы, а 0 — копредел (пустой диаграммы), поэтому 0 × B ≅ 0, поэтому ∀ B. |𝒜(0 × B, C)| = 1, поэтому ∀ B. |𝒜(B, C^0)| = 1, поэтому C^0 — терминальный, то есть, (изоморфен) 1.
В принципе, это то же самое рассуждение, что и в теории множеств (что неудивительно), просто оказывается, что не нужно смотреть внутрь объектов и считать функции руками, а достаточно просто определения декартово замкнутой категории, и профит в том, что это обобщается на более интересные нам программистам категории, чем Set — например, на некоторые специальные декартово замкнутые категории вычислимых функций.
Шаблоны в смысле параметрического полиморфизма отлично читаются в любом ML-подобном языке. В нормальных завтипизированных языках это вообще обычно просто частный случай передачи аргумента в функцию (просто аргумент — тип).
Метапрограммирование — ну, дженерики норм (особенно если навесить pattern synonyms, если вам вдруг однобуквенные конструкторы не оч).
А в чём прикладной смысл лыж или лёгкого альпинизма? :]
Просто поднять 16 кг обычно недостаточно. Их ещё нужно куда-то отнести или что-то с ними сделать.
У меня есть, например, раскладная железная лестница, которая не знаю сколько весит. Раньше её нужно было таскать двумя руками и закинув на грудь (отклонившись назад). Сейчас я могу её взять и поднять одной
левойправой рукой и нести так в руке, и практически не чувствовать этой нагрузки.В первый раз это было, кстати, очень прикольно: лестница мне понадобилась после долгого периода ничегонеделанья по дому, я её поднял, уж по привычке собрался закинуть на себя и кряхтеть, и… оказалось, что не нужно. Она внезапно стала почти невесомая.
Нужно быть здоровяком.
Размер мышц коррелирует с силой, сила коррелирует со здоровьем.
Resistance training помогает компенсировать потерю кальция из костей.
Далеко не только.
Есть просто даже ресерч, показывающий, что визуально привлекательные люди успешнее — условно, больше шанс получить сочный оффер после интервью.
Плюс, если у вас перед вами в зеркале и на периферии зрения всё время маячит результат ваших усилий и пруф вашей возможности сфокусироваться на деле на несколько лет, то есть шанс, что и в других областях вы будете вести себя аналогично, почувствовав вкус и профиты от контроля за своей собственной жизнью, и взяв эту самую собственную жизнь в свои руки.
Кстати, да, калорий мышцы тоже больше жрут. С мышцами можно столько же есть и набирать меньше жировой массы — это может быть психологически проще, чем снизить потребление еды.
Ну так и ваш исходный собеседник просто обоснуется в той версии авторитаризма, где взгляды более-менее совпадают с местными.
На днях вешал потолочный вентилятор и ощутил, какой смысл в трицепсах (а также в передних/боковых дельтах и подобных).
Но, впрочем, не поднимаю тяжести из-за головы, юзаю специальный тренажер на tricep extension.
Да.
Ну и ещё конкретно у нас тупо нет консистентных велосипедных дорожек (они иногда возникают ниоткуда и пропадают туда же), поэтому ты тут либо велосипедераст, гоняющий по пешим трейлам, либо ездишь по дорогам общего пользования, надеясь, что и в этот раз тебя не собьют.
Это ещё что, я вот даже за питанием следить стал! Скоро, того и гляди, начну есть больше одного раза в день.
Верните, короче, мне мои 17 лет, когда я мог спать 3 часа в сутки, не двигаться, есть трэш и при этом
думать, чтобыть продуктивным.Самое ироничное, что если вы начнёте быть против мигрантов и ЛГБТ в ряде стран Европы, то вам там тоже ответочка будет весьма непропорциональная (начиная, конечно, с Британии, но заканчивая и Германией, например, где семеро политиков AfD из избирательных списков передали бы привет, если бы могли, но увы — как-то все резко померли за месяц).
Если начать разделять экономический авторитаризм/либерализм и политический авторитаризм/либерализм (а также неолиберализм, потому что современные политические либералы к идеалам революционной Франции и Штатов 18-го века имеют примерно нулевое отношение), то формировать описывающее реальность мнение будет куда проще, потому что такое разделение даст вам все нужные степени свободы.
Потому что это не для всех кайф, и если кому-то для поддержания вовлечённости нужны циферки, геймификация или тому подобные вещи, то пусть хоть окружности бицухи каждый день измеряет, почему нет?
Я ненавижу тренажерку, ненавижу туда ходить, ненавижу там тягать веса, и так далее. С куда большим удовольствием я бы эти шесть часов в неделю (плюс ещё шесть между тренажеркой и сном) сидел бы дома, читал бы книжки, писал бы код или ковырял бы в носу вообще. Но у меня есть табличка, я туда заножу, сколько чего наподнимал сегодня, и можно на эту табличку и растущие в ней циферки смотреть и продолжать ходить.
Бассейн, если что, я тоже не люблю, хайкинг и велосипед недоступен половину года (и на них было бы ещё печальнее), как и все прочие подобные альтернативы.
Я где-то написал про зависимость только от месяца рождения?
Вы сами себе что-то придумали, сами с этим поспорили, сами себе доказали… правда, непонятно, что доказали.
Hungry in the womb: what are the consequences? Lessons from the Dutch famine:
Prenatal developmental origins of behavior and mental health: The influence of maternal stress in pregnancy:
Stress during critical periods of development and risk for schizophrenia
A critical view on transgenerational epigenetic inheritance in humans [это скорее ради дальнейших ссылок]
Дальше мне надоело постить не только абстракты, но и сами ссылки — у меня таких штук 20 сходу наберётся. Но, надеюсь, четырёх вам будет достаточно.
Зачем вы лезете в обсуждения вещей, в которых вы ничего не понимаете, и даже не понимаете, насколько вы не понимаете? Вы даже не понимаете на метауровне, чем вы отличаетесь от верящих в религию и «я где-то слышал, что батюшка сказал». Это просто фрактал непонимания.
Вера в науку продолжает интенсифицироваться.
Везде так работает наука, потому что речь о доверии не теориям, а экспериментальным статьям.
Статьи с проверкой чужих экспериментов сильно менее публишабельны. Когда вы — аспирант, или молодой учёный, или ещё кто-то такой, то вам важно вложить ваши усилия с максимальным эффектом, чтобы защититься, или получить tenure, или ещё что-то такое. И вы их будете вкладывать, конечно, не в перепроверку чужих результатов, а во что-нибудь своё (доверяя при этом этим самым чужим результатам).
Найдёте противоречие с чужой статьёй — возможно, повезло (или нет, зависит от социального контекста). Не найдёте — тем более не повезло (науке).
Излишнюю спесь чую здесь я, ведь месяц рождения (ergo знак зодиака) коррелирует с условиями, в которых был материнский организм во время беременности, с доступностью еды, со средней температурой, и с аналогичными вещами в ваш ранний постнатальный период, вплоть до числа солнечных или облачных дней, а всё это в дальнейшем вполне коррелирует с особенностями вашего поведения.
Невозможно иметь 0 RIR, и чтобы при этом у вас записи ваших весов имели какой-то смысл. С 0 RIR последний повтор-два будут с хреновой техникой, хреновым ROM и трясущимися руками. Не надо так делать (особенно на потенциально травмоопасных вещах, дающих нагрузку на спину, скажем, с нетривиальными весами).
Ну так вы и не должны делать 1RM каждую тренировку.
Раз в неделю на группу — далековато от оптимума, два раза уже чутка лучше.
Я пытался заниматься два раза в неделю, но после того, как тренировки раздулись до 2.5 часов и в конце «ппц что ж я маленьким не сдох», то разбил на три в неделю с чередованием (одну неделю — два дня ног и один день рук, другую — наоборот). Получилось 80-90 минут за раз, вполне подъёмно, и по приходу домой даже хватает мозга что-нибудь почитать, скажем.
У меня, как я её делать начал, спина перестала болеть вообще, например.
Это да.
Ctrl+F → протеин → 0 результатов (в статье).
Ctrl+F → креатин → 0 результатов (даже в комментах). А у меня от креатина несколько разных плато пробилось, спать проще стало, и на следующий день как-то лучше, зело рекомендую.
Или туда же range of motion — про это в статье вообще ничего нет. А как приходишь в тренажерку, так там минимум половина сидящих на той же вертикальной тяге в каждом повторе просто дёргает тренажер от чуть-больше-прямого-угла-в-локте до чуть-меньше-прямого-угла (и чуть ли не ложится в процессе). Зато там 190+ фунтов, да, молодцы.
Bicep curl — туда же, градусов 15-20 движение максимум, зато дофига вес.
ИМХО тренера нужны (если нужны) в первую очередь для того, чтобы отлавливать такую ерунду. Правда, среднему тренеру интересно, чтобы ему продолжали платить деньги, так что хз, насколько это реализуется на практике.
С небольшим весом (штанга + по 30 фунтов с каждой стороны, например) дедлифты вполне себе подъёмные, и ютуба плюс самоконтроля в зеркале достаточно.
Это A в аббревиатуре ADT — алгебра.
Когда у вас есть
data Foo = MakeFoo Int Double String, тоFooэквивалентен туплу (то есть, произведению — и в смысле мощностей множеств, и в смысле теорката, и в интуитивном смысле) изInt,DoubleиString. Если же у васdata Foo = C1 ... | C2 ... | C3 ..., то это сумма вариантов из всех возможностей построить многоточие после C1, либо после C2, либо после C3.Хм. ИМХО таки
читабельнее, чем
А когда это
elements, то становится понятнее, о чём речь?Собсна, о какой предметной области идёт речь при написании библиотечных функций вроде
filter?Так это зависит от контекста. Да, код чаще читается, чем пишется, но как-то так выходит (по крайней мере, в моём опыте), что в случае хаскеля и подобных код бегло (когда важны говорящие названия) читается куда чаще на уровне сигнатур типов и названий функций. А когда вдруг надо забуриться в поведение функции, то надо забуриваться глубоко в предметную логику, и локальный маппинг «
mзначитmodule» — очень дёшев.Ну, опять же, личная практика и практика людей, с которыми я работал.
Но это не синтаксис. Это вопрос соглашений в вашей кодовой базе.
Вон, например, что-то, где многобуквенных названий куда больше, чем одно/двухбуквенных.
А, теперь я понял причину вашего удивления!
Потому что это (вместе с хаскельными дженериками) — три сильно разные концепции?
Дженерики в Rust — это просто параметрический полиморфизм в хаскеле. Это когда вы пишете
showMany :: Show a ⇒ [a] → String. По ним (особенно в варианте Haskell98, без сложных расширений) вообще никакой документации не нужно, и синтаксис у них лайтовый («слово с маленькой буквы — переменная типа»). А по сложным расширениям даже официальная дока (не туториал) тоже вполне лайтовая: например или вот.Дженерики в хаскеле — это, гм, наблюдение, что (почти) любой тип данных изоморфен рекурсивной структуре из сумм, произведений и ещё пары мелочей. Поэтому можно (почти) любой тип данных замапить на это обобщённое представление, обработать его обобщённым образом, и, если надо, размапить обратно. Именно так работает
deriving FromJSONдля автовывода десериализации из JSON библиотекой Aeson: оно говорит «компилятор, дай мне обобщённое представление данного типа черезtoRep», компилятор его даёт (вместе с метаинформацией вроде имён полей, или их строгости вот, как вы заметили), и Aeson уже обрабатывает его.Это на самом деле охренеть как удобно, потому что все ваши обобщённые функции превращаются в няшную приятную рекурсивную обработку структур данных. Когда мне на работе надо было набросать инфраструктурную либу для работы с тамошним аналогом sqlite, я дженерик-поддержку (де)сериализации произвольных типов сделал минут за 20.
Согласно тому, что я знаю о расте, прямых аналогов дженериков там нет.
Template Haskell — это вообще тупо кодогенерация. Это код на хаскеле, который выполняется во время компиляции и может генерировать любой другой код. Через TH можно сделать поддержку строковой интерполяции, например (чтобы
[i|My name is #{name}, my age is #{age}|]разворачивалось в"My name is " ++ name ++ ", my age is " ++ show age), или TH'ем можно сделать всё то же, что можно сделать дженериками (и у компилятора там чуть больше простора для оптимизаций).FromJSONтоже можно было бы сделать TH'ем, но код на TH писать куда менее приятно, чем на дженериках.TH — это плюс-минус растовские процедурные макросы.
Написанный до этого и, возможно, уже устаревший ответ на другие ваши замечания
Так здесь бизнес-логика — это как компилятор видит ваш код. Эта документация нужна тем, кто пишет библиотеки для метапрограммирования. Эта дока — для тех, кто пишет аналог serde из раста (aeson конкретно для жсона, например), а не тех, кто пользуется аналогом serde. Те, кто пользуется, просто пишет
deriving (Generic, Aeson.FromJSON, Aeson.ToJSON)и в ус не дует.Поэтому совершенно неудивительно, что в задаче по ковырянию в представлении ваших типов вылезают детали вроде того, являются ли поля распакованными в конструктор или нет, являются ли они строгими или нет, и почему.
Это будет в любой докуменатции.
Потому что вся эта страница — про generic representation type?
Надеюсь, это всё сняло некоторые ваши вопросы.
Нет, в том-то и дело, что настоящие завтипы позволяют зависимости от рантайм-данных (в отличие от их эмуляции через
DataKindsи ещё сотню расширений в хаскеле, или статические завтипы а-ля ATS, или path-dependent types в скале, или какой там академический термин для control flow analysis в TS). Просто рантайм-значения потребуют рантайм-проверок.В завтипизированном языке вы можете написать
Зачем всё это нужно по сравнению с вашим вариантом TS рядом?
Во-первых, я не заметил, где у вас проверка, что длина — действительно 32 байта. Более того, тип функции
говорит, что она физически эту проверку делать не может (ну или кидает исключение, но этого в типах нет).
Во-вторых, после того, как вы сделали эту рантайм-проверку один раз, вы дальше можете доказывать статически, что если она проходит, то какие-то зависящие от неё вычисления тоже проходят проверку, и дополнительно их делать не надо. Скажем, если
idxвыше меньшеn, тоidx * 2 / 3(илиidx & (idx - 1), или что угодно подобное) тоже меньшеn, и это уже проверять в рантайме не надо, это можно просто доказать.В-третьих, это всё не ограничивается такими проверками. Например, можно написать завтипизированный корректный
printf, где тип самой функции может зависеть от рантайм-форматной строки (пользоваться этим в рантайме, конечно, будет неудобно, но смысл понятен, надеюсь).Чем сложнее? Как раз минимальный синтаксис, но не слишком минимальный (то есть (не (лисп))).
С чтением эрланга у меня мало опыта, implicit val а[_] от(скалы): _ => { у[меня] = new глаза[меня](вытекают[меня]) }. ИМХО, конечно.
Если вы строите основания прямо с множеств, то a^b — это просто мощность множества функций из множества мощности b в множество мощности a. Поэтому:
Сколько функций из пустого множества в непустое множество? Ровно одна. Поэтому 5⁰ = 1.
Сколько функций из пустого множества в пустое множество? Да тоже ровно одна, поэтому 0⁰ = 1.
Сколько функций из непустого множества в пустое множество? Ноль, поэтому 0^(suc x) = 0 .
Если же вы модный чувак и строите математику от теорката, то можно заметить, что в Set (и вообще в любой декартово замкнутой категории, где это одно из определений) функтор A × • — левый сопряжённый к функтору экспоненциирования •^A (интуитивно, любой функции A × B → C однозначно соответствует «каррированная» функция B → C^A, и это соответствие хорошо себя ведёт), поэтому в частности 𝒜(A × B, C) ≅ 𝒜(B, C^A). Дальше для A ≔ 0, так как функтор • × B тоже левый сопряжённый, поэтому сохраняет копределы, а 0 — копредел (пустой диаграммы), поэтому 0 × B ≅ 0, поэтому ∀ B. |𝒜(0 × B, C)| = 1, поэтому ∀ B. |𝒜(B, C^0)| = 1, поэтому C^0 — терминальный, то есть, (изоморфен) 1.
В принципе, это то же самое рассуждение, что и в теории множеств (что неудивительно), просто оказывается, что не нужно смотреть внутрь объектов и считать функции руками, а достаточно просто определения декартово замкнутой категории, и профит в том, что это обобщается на более интересные нам программистам категории, чем Set — например, на некоторые специальные декартово замкнутые категории вычислимых функций.
Шаблоны в смысле параметрического полиморфизма отлично читаются в любом ML-подобном языке. В нормальных завтипизированных языках это вообще обычно просто частный случай передачи аргумента в функцию (просто аргумент — тип).
Метапрограммирование — ну, дженерики норм (особенно если навесить pattern synonyms, если вам вдруг однобуквенные конструкторы не оч).
Лучше было арестовать и допросить создателей репозиториев и форков с этим файлом, да?