#amazingopensource #menacingopensource
Что такое fortraith? Нет, это не опечатка в слове Fortran или, упаси боже, Fortnite. Это — библиотека, реализующая компилятор времени компиляции, который переводит что-то, похожее на Forth, в вычисления на уровне типов Rust. Что? Да.
Что такое fortraith? Нет, это не опечатка в слове Fortran или, упаси боже, Fortnite. Это — библиотека, реализующая компилятор времени компиляции, который переводит что-то, похожее на Forth, в вычисления на уровне типов Rust. Что? Да.
GitHub
GitHub - Ashymad/fortraith: Forth for Rust's trait system
Forth for Rust's trait system. Contribute to Ashymad/fortraith development by creating an account on GitHub.
Блог*
#prog #rust #моё #article Здрасьте. Сегодня поста не будет — но только потому, что я решил написать статью для Хабра. Собственно, вот она. И напоминаю: если вам это понравилось — поддержите копеечкой автора, я вам благодарен буду: 4274 3200 5402 8520.
Вау, это даже попало в канал Хабра в телеге.
Telegram
Хабр
«Недавно я проходил собеседование в одну солидную айтишную контору. Когда мы разобрались с формальностями, начался технический этап, на котором мне поручили написать fizzbuzz. По не вполне понятным мне причинам обсуждение решения этой задачи растянулось…
Forwarded from Скучный секс-блог
Хаим Гинотт. «Родитель-Ребенок. Мир отношений»
Зачем в блоге о сексе писать про книгу о воспитании? Во-первых, она мне понравилась. Во-вторых, это не только про детей, а про людей и их чувства.
Психолог Хаим Гинотт умер в 51 год, и сегодня мало кто знает его имя. Его главной работой так и осталась короткая книжка Between Parent and Child (1965). В ней Гинотт первым озвучил идеи, которые сегодня считаются очевидными и применимыми не только к детям, но и к взрослым:
• Что человеку нужно, чтобы его слушали и понимали, а не поучали и критиковали.
• Что самое важное в диалоге - услышать и принять эмоции собеседника.
• Что любые чувства имеют право быть, но не всякое поведение допустимо.
• Что ответственность идет изнутри - это не слепое послушание, а следование ценностям.
• Что гуманного человека можно вырастить только гуманными методами. Ломать или унижать нельзя никого и никогда.
На удивление простая, мудрая и логичная книга с массой конкретных советов. Очень рекомендую и семейным, и бездетным.
Зачем в блоге о сексе писать про книгу о воспитании? Во-первых, она мне понравилась. Во-вторых, это не только про детей, а про людей и их чувства.
Психолог Хаим Гинотт умер в 51 год, и сегодня мало кто знает его имя. Его главной работой так и осталась короткая книжка Between Parent and Child (1965). В ней Гинотт первым озвучил идеи, которые сегодня считаются очевидными и применимыми не только к детям, но и к взрослым:
• Что человеку нужно, чтобы его слушали и понимали, а не поучали и критиковали.
• Что самое важное в диалоге - услышать и принять эмоции собеседника.
• Что любые чувства имеют право быть, но не всякое поведение допустимо.
• Что ответственность идет изнутри - это не слепое послушание, а следование ценностям.
• Что гуманного человека можно вырастить только гуманными методами. Ломать или унижать нельзя никого и никогда.
На удивление простая, мудрая и логичная книга с массой конкретных советов. Очень рекомендую и семейным, и бездетным.
Forwarded from Скучный секс-блог
Главные мысли из книги Хаима Гинотта «Родитель-Ребенок. Мир отношений»
По первым страницам книги Хаима Гинотта мне казалось, что ничего нового в ней я не найду. Да, надо признавать и зеркалить эмоции ребенка, бла-бла-бла. В 1965-м это было в новинку, но кого этим удивишь сегодня?
Однако чем дальше читал, тем больше убеждался, что это удивительная, незаслуженно забытая книга.
Гинотт предельно просто описывает философию гуманного родительства и одновременно дает массу практических советов. Помогать ли с домашними заданиями? Как реагировать, если ребенок ворует? Как говорить с ним о сексе и о смерти? Что делать, когда старшие ревнуют к младшим? Об этом вы при желании почитаете в книге. А я лишь расскажу о базовых идеях.
Как общаться с ребенком
• Чаще всего родители говорят с детьми на языке критики и поучений. А детям нужен от нас язык принятия и сострадания. У него два принципа: (1) уважать ребенка, не ущемлять его достоинство; (2) сначала принять чувства ребенка, а уж потом давать советы.
• Главное в общении с ребенком - стремление слушать и слышать. Проявите искренний интерес к его словам и эмоциям. Не отрицайте его чувства и желания. Не высмеивайте. Принимайте все к сведению.
• Цель вашей коммуникации с ребенком - контакт. Реагировать нужно в первую очередь на его чувства, а не на поведение. Если ребенок рассказывает вам о каком-то событии, не выясняйте мелкие подробности - отвечайте на эмоции, которые событие у него вызвало.
• Дети не всегда говорят прямым текстом, им нужно особое внимание. Многие вопросы ребенок задает лишь для того, чтобы получить заверение в поддержке. Когда ребенок рассказывает о том, что его волнует, ему нужна ваша любовь, а не допросы и разглагольствования.
• Говорить с ребенком - это навык, его нужно осваивать. Без него родитель похож на хирурга-недоучку, который оперирует как бог на душу положит, потому что «достаточно любви и здравого смысла».
Как сделать, чтобы ребенок не врал
• Не задавайте вопросов, на которые знаете ответ. Не пытайтесь поймать ребенка на лжи с помощью вопросов-ловушек. Вы лишь унизите его и спровоцируете новую ложь.
• Не путайте ложь с фантазиями, с помощью которых ребенок подсказывает вам, чего хочет и о чем мечтает.
• Не ругайте за правду. Будьте готовы выслушать от ребенка и приятную, и горькую правду. Многие мамы и папы не слушают детей именно потому, что боятся услышать что-то, что им не понравится. Ребенок не станет врать, если будет четко знать, что у него нет необходимости говорить вам неправду.
Отношение к эмоциям
• Эмоции бывают положительными, отрицательными и двойственными. Объясните ребенку, что нормально испытывать любые чувства, в том числе противоречивые. Прямо говорите ребенку о его и своих эмоциях.
• Родители - зеркало детских эмоций: отражая их, мы помогаем детям разобраться в себе. Не будьте кривым зеркалом. Для ребенка важнее знать, какие чувства он переживает, чем понимать, почему он их испытывает. Не обманывайте и не пытайтесь подменить одни чувства другими («Не говори, что ненавидишь братика, ты на самом деле его любишь!») Говорите правду: «Я вижу, ты очень зол на брата».
• Родители тоже имеют право испытывать весь спектр эмоций. Злиться на ребенка - это иногда нормально. Оскорблять или бить ребенка нельзя никогда. Не обязательно быть святым. Просто не прячьте свои чувства, а прямо говоряите о них - без критики и унижения: «Я вне себя от ярости, потому что игрушки разбросаны по комнате». Гнев не следует выражать таким образом, чтобы он нарастал в процессе выражения. Лекарство не должно быть опаснее болезни.
• Эмоции, как реки, нельзя остановить, их можно лишь перенаправить. Пытаться игнорировать вспышки эмоций - все равно что игнорировать стихийные бедствия. Относитесь к ним серьезно и ищите креативные способы направить их энергию в мирное русло.
• Мир в доме не должен зависеть от перемен вашего настроения. Это результат методических сознательных действий: понижайте уровень напряженности, прежде чем она выйдет из-под контроля.
Продолжение завтра
По первым страницам книги Хаима Гинотта мне казалось, что ничего нового в ней я не найду. Да, надо признавать и зеркалить эмоции ребенка, бла-бла-бла. В 1965-м это было в новинку, но кого этим удивишь сегодня?
Однако чем дальше читал, тем больше убеждался, что это удивительная, незаслуженно забытая книга.
Гинотт предельно просто описывает философию гуманного родительства и одновременно дает массу практических советов. Помогать ли с домашними заданиями? Как реагировать, если ребенок ворует? Как говорить с ним о сексе и о смерти? Что делать, когда старшие ревнуют к младшим? Об этом вы при желании почитаете в книге. А я лишь расскажу о базовых идеях.
Как общаться с ребенком
• Чаще всего родители говорят с детьми на языке критики и поучений. А детям нужен от нас язык принятия и сострадания. У него два принципа: (1) уважать ребенка, не ущемлять его достоинство; (2) сначала принять чувства ребенка, а уж потом давать советы.
• Главное в общении с ребенком - стремление слушать и слышать. Проявите искренний интерес к его словам и эмоциям. Не отрицайте его чувства и желания. Не высмеивайте. Принимайте все к сведению.
• Цель вашей коммуникации с ребенком - контакт. Реагировать нужно в первую очередь на его чувства, а не на поведение. Если ребенок рассказывает вам о каком-то событии, не выясняйте мелкие подробности - отвечайте на эмоции, которые событие у него вызвало.
• Дети не всегда говорят прямым текстом, им нужно особое внимание. Многие вопросы ребенок задает лишь для того, чтобы получить заверение в поддержке. Когда ребенок рассказывает о том, что его волнует, ему нужна ваша любовь, а не допросы и разглагольствования.
• Говорить с ребенком - это навык, его нужно осваивать. Без него родитель похож на хирурга-недоучку, который оперирует как бог на душу положит, потому что «достаточно любви и здравого смысла».
Как сделать, чтобы ребенок не врал
• Не задавайте вопросов, на которые знаете ответ. Не пытайтесь поймать ребенка на лжи с помощью вопросов-ловушек. Вы лишь унизите его и спровоцируете новую ложь.
• Не путайте ложь с фантазиями, с помощью которых ребенок подсказывает вам, чего хочет и о чем мечтает.
• Не ругайте за правду. Будьте готовы выслушать от ребенка и приятную, и горькую правду. Многие мамы и папы не слушают детей именно потому, что боятся услышать что-то, что им не понравится. Ребенок не станет врать, если будет четко знать, что у него нет необходимости говорить вам неправду.
Отношение к эмоциям
• Эмоции бывают положительными, отрицательными и двойственными. Объясните ребенку, что нормально испытывать любые чувства, в том числе противоречивые. Прямо говорите ребенку о его и своих эмоциях.
• Родители - зеркало детских эмоций: отражая их, мы помогаем детям разобраться в себе. Не будьте кривым зеркалом. Для ребенка важнее знать, какие чувства он переживает, чем понимать, почему он их испытывает. Не обманывайте и не пытайтесь подменить одни чувства другими («Не говори, что ненавидишь братика, ты на самом деле его любишь!») Говорите правду: «Я вижу, ты очень зол на брата».
• Родители тоже имеют право испытывать весь спектр эмоций. Злиться на ребенка - это иногда нормально. Оскорблять или бить ребенка нельзя никогда. Не обязательно быть святым. Просто не прячьте свои чувства, а прямо говоряите о них - без критики и унижения: «Я вне себя от ярости, потому что игрушки разбросаны по комнате». Гнев не следует выражать таким образом, чтобы он нарастал в процессе выражения. Лекарство не должно быть опаснее болезни.
• Эмоции, как реки, нельзя остановить, их можно лишь перенаправить. Пытаться игнорировать вспышки эмоций - все равно что игнорировать стихийные бедствия. Относитесь к ним серьезно и ищите креативные способы направить их энергию в мирное русло.
• Мир в доме не должен зависеть от перемен вашего настроения. Это результат методических сознательных действий: понижайте уровень напряженности, прежде чем она выйдет из-под контроля.
Продолжение завтра
Telegraph
Доктор Хаим Гинотт
Forwarded from Скучный секс-блог
Идеи из книги Хаима Гинотта «Родитель-ребенок». Часть 2
Характер ребенка формируют наши с ним отношения. Поэтому первый шаг - твердое намерение живо интересоваться тем, что он думает и чувствует, а не просто реагировать на его поведение.
Дисциплина
• Суть дисциплины в том, что мы разрешаем ребенку любые чувства, мысли и желания. Ограничиваем только нежелательное поведение.
• Недопустимое поведение пресекайте решительно, но без унижений и критики. Не ругайте личные качества ребенка («как ты смеешь бить сестру, жестокий мальчишка!»). Остановите его и объясните свойства предметов: «Сестры не для битья». В идеале дайте приемлемую альтернативу: «В мяч играют во дворе, а не в доме».
• Запрет должен быть сформулирован четко и безлично. Расплывчатые формулировки лишь сбивают с толку, лучше полный запрет. Не «не брызгайся слишком сильно», а «брызгаться нельзя».
• Правила легко придумать и сложно соблюдать. Не устанавливайте железных правил без крайней необходимости. Если установили - требуйте соблюдения без долгих обоснований.
• Не грозите наказаниями и не пытайтесь подкупить ребенка. Это не работает.
Ответственность
• Ответственность - это набор ценностей, а не послушание. Чувство ответственности невозможно навязать, оно растет изнутри. Ценности нельзя преподать, их можно только впитать. Ребенок повторяет за теми, кого уважает и любит. Демонстрируйте ценности на деле, а не на словах.
• Чтобы ребенок умел принимать решения, давайте ему право выбора. Не перекладывайте на него ответственность за здоровье и безопасность, но пусть с малых лет решает за себя. Как малышу приготовить яйцо: всмятку или пожарить? Какую футболку купить - красную или зеленую? Пусть с каждым годом зона ответственности расширяется.
Снисходительность
• Дети - это дети. Чистая рубашка на ребенке недолго будет чистой; на деревья нужно залезать; бегать веселее, чем ходить шагом. Не требуйте, чтобы ребенок перестал быть ребенком. Дюжина недорогих и легких в уходе рубашек будет куда полезнее для его психического здоровья, чем постоянные наставления об опрятности.
• Учите детей отличать незначительные происшествия от реальных трагедий. Не реагируйте на разбитое стекло так, словно это ваша разбитая жизнь. Мелкая неудача может служить хорошим поводом задуматься о том, что по-настоящему важно.
• Не стремитесь сделать ребенка максимально эффективным. Целесообразность - враг детства, разорение детской души. Дайте ребенку возможность экспериментировать, ошибаться, учиться без понуканий и стопроцентного КПД.
Похвалы и отказы
• Хвалить ребенка следует за конкретные вещи - за старание и результаты усилий - а не за абстрактные черты характера, которые вы хотели бы ему приписать. «Ах, какой послушный мальчик» - неудачный, оценочный вариант. «Спасибо, что убрал все игрушки, вижу, это было нелегко» - куда полезнее.
• Учитесь говорить «нет» мягко. Если вынуждены отказать ребенку в чем-то, то хотя бы не отнимайте у него удовольствие помечтать. Покажите, что понимаете его желание. Например: «Я вижу, как тебе хочется иметь эту прекрасную игрушку. Мне очень жаль, что я не могу ее тебе купить прямо сейчас». При возможности предложите альтернативу: «Если очень хочешь, можем попросить эту игрушку на Рождество».
О разном
• Авторитет подразумевает краткость. Родители говорят слишком много и подробно. Не вдавайтесь в долгие разъяснения, если ребенок об этом не просит.
• Всегда, при любой возможности старайся поддержать и усилить чувство собственного достоинства ребенка.
• Не давайте клятвенных обещаний. Клятвы значат лишь, что простому вашему слову нельзя верить. Кроме того, не все в вашей власти: в день обещанного похода в зоопарк может полить дождь или сломаться машина.
• Никогда не поднимайте руку на ребенка. И никогда не давайте бить себя: «Люди не для битья».
• Если не понимаете, как правильно поступить, лучше ничего не делайте. Подумайте и разберитесь в собственной позиции.
• Вырастить гуманного человека можно лишь гуманными методами. Цель не оправдывает средства. Нет ни одной высокой цели, ради которой можно было подавлять, ломать и обижать ребенка.
Характер ребенка формируют наши с ним отношения. Поэтому первый шаг - твердое намерение живо интересоваться тем, что он думает и чувствует, а не просто реагировать на его поведение.
Дисциплина
• Суть дисциплины в том, что мы разрешаем ребенку любые чувства, мысли и желания. Ограничиваем только нежелательное поведение.
• Недопустимое поведение пресекайте решительно, но без унижений и критики. Не ругайте личные качества ребенка («как ты смеешь бить сестру, жестокий мальчишка!»). Остановите его и объясните свойства предметов: «Сестры не для битья». В идеале дайте приемлемую альтернативу: «В мяч играют во дворе, а не в доме».
• Запрет должен быть сформулирован четко и безлично. Расплывчатые формулировки лишь сбивают с толку, лучше полный запрет. Не «не брызгайся слишком сильно», а «брызгаться нельзя».
• Правила легко придумать и сложно соблюдать. Не устанавливайте железных правил без крайней необходимости. Если установили - требуйте соблюдения без долгих обоснований.
• Не грозите наказаниями и не пытайтесь подкупить ребенка. Это не работает.
Ответственность
• Ответственность - это набор ценностей, а не послушание. Чувство ответственности невозможно навязать, оно растет изнутри. Ценности нельзя преподать, их можно только впитать. Ребенок повторяет за теми, кого уважает и любит. Демонстрируйте ценности на деле, а не на словах.
• Чтобы ребенок умел принимать решения, давайте ему право выбора. Не перекладывайте на него ответственность за здоровье и безопасность, но пусть с малых лет решает за себя. Как малышу приготовить яйцо: всмятку или пожарить? Какую футболку купить - красную или зеленую? Пусть с каждым годом зона ответственности расширяется.
Снисходительность
• Дети - это дети. Чистая рубашка на ребенке недолго будет чистой; на деревья нужно залезать; бегать веселее, чем ходить шагом. Не требуйте, чтобы ребенок перестал быть ребенком. Дюжина недорогих и легких в уходе рубашек будет куда полезнее для его психического здоровья, чем постоянные наставления об опрятности.
• Учите детей отличать незначительные происшествия от реальных трагедий. Не реагируйте на разбитое стекло так, словно это ваша разбитая жизнь. Мелкая неудача может служить хорошим поводом задуматься о том, что по-настоящему важно.
• Не стремитесь сделать ребенка максимально эффективным. Целесообразность - враг детства, разорение детской души. Дайте ребенку возможность экспериментировать, ошибаться, учиться без понуканий и стопроцентного КПД.
Похвалы и отказы
• Хвалить ребенка следует за конкретные вещи - за старание и результаты усилий - а не за абстрактные черты характера, которые вы хотели бы ему приписать. «Ах, какой послушный мальчик» - неудачный, оценочный вариант. «Спасибо, что убрал все игрушки, вижу, это было нелегко» - куда полезнее.
• Учитесь говорить «нет» мягко. Если вынуждены отказать ребенку в чем-то, то хотя бы не отнимайте у него удовольствие помечтать. Покажите, что понимаете его желание. Например: «Я вижу, как тебе хочется иметь эту прекрасную игрушку. Мне очень жаль, что я не могу ее тебе купить прямо сейчас». При возможности предложите альтернативу: «Если очень хочешь, можем попросить эту игрушку на Рождество».
О разном
• Авторитет подразумевает краткость. Родители говорят слишком много и подробно. Не вдавайтесь в долгие разъяснения, если ребенок об этом не просит.
• Всегда, при любой возможности старайся поддержать и усилить чувство собственного достоинства ребенка.
• Не давайте клятвенных обещаний. Клятвы значат лишь, что простому вашему слову нельзя верить. Кроме того, не все в вашей власти: в день обещанного похода в зоопарк может полить дождь или сломаться машина.
• Никогда не поднимайте руку на ребенка. И никогда не давайте бить себя: «Люди не для битья».
• Если не понимаете, как правильно поступить, лучше ничего не делайте. Подумайте и разберитесь в собственной позиции.
• Вырастить гуманного человека можно лишь гуманными методами. Цель не оправдывает средства. Нет ни одной высокой цели, ради которой можно было подавлять, ломать и обижать ребенка.
#prog #js #typescript #article
Статья (pdf) о том, как типы могут помочь поймать баги в коде на JavaScript, на базе случайной выборки из репозиториев по всему GitHub. TL;DR: Flow и Typescript в состоянии поймать 15% из допущенных багов (с доверительным интервалом 5%)! Причём, учитывая методологию, это число наверняка занижено. К сожалению, ссылки на материалы исследования нерабочие, так что проверить результаты несколько затруднительно.
Статья (pdf) о том, как типы могут помочь поймать баги в коде на JavaScript, на базе случайной выборки из репозиториев по всему GitHub. TL;DR: Flow и Typescript в состоянии поймать 15% из допущенных багов (с доверительным интервалом 5%)! Причём, учитывая методологию, это число наверняка занижено. К сожалению, ссылки на материалы исследования нерабочие, так что проверить результаты несколько затруднительно.
#prog
Там Данила пишет про суммирование чисел в плавучке и про то, как разбираться с неизбежными ошибками округления
Там Данила пишет про суммирование чисел в плавучке и про то, как разбираться с неизбежными ошибками округления
Telegram
Experimental chill
Нередко в базах данных и вообще любой работы с массивами возникают сложения чисел с плавающей точкой. С ними вроде всё хорошо, IEEE 754 стандарт давно устоялся, но чем больше вы складываете чисел, тем больше накапливается ошибка. Ещё хуже, если вы суммируйте…
#prog #article
С бооольшим опозданием делюсь статьёй (перевод на Хабре) про исследование производительности предсказателя ветвлений на разных процессорах. Помимо всего прочего — очень наглядно показана разница в производительности между предсказанными и не предсказанными переходами
С бооольшим опозданием делюсь статьёй (перевод на Хабре) про исследование производительности предсказателя ветвлений на разных процессорах. Помимо всего прочего — очень наглядно показана разница в производительности между предсказанными и не предсказанными переходами
Хабр
Какой предел у предсказателя ветвлений? Проверили на x86 и M1
Некоторое время назад я смотрел на высоконагруженную часть кода и обратил внимание на это: if (debug) { log("..."); } И тут я задумался. Это — часть цикла,...
#prog #article
Системы типов #java и #scala являются unsound. Подробности в статье.
TL;DR:
Программа определяет тип
И эта ошибка оставалась незамеченной 12 лет. А кто-то ещё говорит, что null — хорошая идея.
Системы типов #java и #scala являются unsound. Подробности в статье.
TL;DR:
Программа определяет тип
class Constrain<A, B extends A> {}
и метод upcast
:static class Bind<A> {
<B extends A>
A upcast(Constrain<A,B> constrain, B b) {
return b;
}
}
Этот метод просто апкастит значение типа B
в значение типа A
, используя значение типа Constrain<A, B>
как материальное свидетельство того, что B
действительно является подтипом A
. К сожалению, ничто не мешает в качестве значения этого типа использовать null
, что ломает логику системы типов, которая полагается на этот факт, а использования wildcard capture позволяет при помощи Constrain
установить отношение субтипизации между двумя произвольным типами. Результат? Комбинация null
-гого Constrain
и upcast
позволяет перевести значение любого типа в значение любого типа. Фактически — аналог std::mem::transmute, но без каких либо небезопасных фич и с корректно типизированным кодом.И эта ошибка оставалась незамеченной 12 лет. А кто-то ещё говорит, что null — хорошая идея.
Коллега, находясь в отпуске, помогает в рабочем чате.
xxx: Имярек, выйди и зайди в отпуск нормально
#трудовыебудни
xxx: Имярек, выйди и зайди в отпуск нормально
#трудовыебудни