uz
Feedback
Блог*

Блог*

Kanalga Telegram’da o‘tish

Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here

Ko'proq ko'rsatish
1 951
Obunachilar
+124 soatlar
+227 kunlar
+2630 kunlar
Postlar arxiv
#prog #article Системы типов #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 — хорошая идея.

Sweet dreams are made of this

#prog #rust #suckassstory https://github.com/dimforge/nalgebra/issues/984 Рукалицо просто

photo content

#prog #article С бооольшим опозданием делюсь статьёй (перевод на Хабре) про исследование производительности предсказателя ветвлений на разных процессорах. Помимо всего прочего — очень наглядно показана разница в производительности между предсказанными и не предсказанными переходами

#prog Там Данила пишет про суммирование чисел в плавучке и про то, как разбираться с неизбежными ошибками округления

#prog #js #article Статья (pdf) о том, как типы могут помочь поймать баги в коде на JavaScript, на базе случайной выборки из репозиториев по всему GitHub. TL;DR: Flow и Typescript в состоянии поймать 15% из допущенных багов (с доверительным интервалом 5%)! Причём, учитывая методологию, это число наверняка занижено. К сожалению, ссылки на материалы исследования нерабочие, так что проверить результаты несколько затруднительно.

photo content

во-вторых, голосуй или проиграешь
во-вторых, голосуй или проиграешь

photo content

Всегда мечтал битовые операции с null делать, спасибо Csharp
Всегда мечтал битовые операции с null делать, спасибо Csharp

Идеи из книги Хаима Гинотта «Родитель-ребенок». Часть 2 Характер ребенка формируют наши с ним отношения. Поэтому первый шаг - твердое намерение живо интересоваться тем, что он думает и чувствует, а не просто реагировать на его поведение. Дисциплина • Суть дисциплины в том, что мы разрешаем ребенку любые чувства, мысли и желания. Ограничиваем только нежелательное поведение. • Недопустимое поведение пресекайте решительно, но без унижений и критики. Не ругайте личные качества ребенка («как ты смеешь бить сестру, жестокий мальчишка!»). Остановите его и объясните свойства предметов: «Сестры не для битья». В идеале дайте приемлемую альтернативу: «В мяч играют во дворе, а не в доме». • Запрет должен быть сформулирован четко и безлично. Расплывчатые формулировки лишь сбивают с толку, лучше полный запрет. Не «не брызгайся слишком сильно», а «брызгаться нельзя». • Правила легко придумать и сложно соблюдать. Не устанавливайте железных правил без крайней необходимости. Если установили - требуйте соблюдения без долгих обоснований. • Не грозите наказаниями и не пытайтесь подкупить ребенка. Это не работает. Ответственность • Ответственность - это набор ценностей, а не послушание. Чувство ответственности невозможно навязать, оно растет изнутри. Ценности нельзя преподать, их можно только впитать. Ребенок повторяет за теми, кого уважает и любит. Демонстрируйте ценности на деле, а не на словах. • Чтобы ребенок умел принимать решения, давайте ему право выбора. Не перекладывайте на него ответственность за здоровье и безопасность, но пусть с малых лет решает за себя. Как малышу приготовить яйцо: всмятку или пожарить? Какую футболку купить - красную или зеленую? Пусть с каждым годом зона ответственности расширяется. Снисходительность • Дети - это дети. Чистая рубашка на ребенке недолго будет чистой; на деревья нужно залезать; бегать веселее, чем ходить шагом. Не требуйте, чтобы ребенок перестал быть ребенком. Дюжина недорогих и легких в уходе рубашек будет куда полезнее для его психического здоровья, чем постоянные наставления об опрятности. • Учите детей отличать незначительные происшествия от реальных трагедий. Не реагируйте на разбитое стекло так, словно это ваша разбитая жизнь. Мелкая неудача может служить хорошим поводом задуматься о том, что по-настоящему важно. • Не стремитесь сделать ребенка максимально эффективным. Целесообразность - враг детства, разорение детской души. Дайте ребенку возможность экспериментировать, ошибаться, учиться без понуканий и стопроцентного КПД. Похвалы и отказы • Хвалить ребенка следует за конкретные вещи - за старание и результаты усилий - а не за абстрактные черты характера, которые вы хотели бы ему приписать. «Ах, какой послушный мальчик» - неудачный, оценочный вариант. «Спасибо, что убрал все игрушки, вижу, это было нелегко» - куда полезнее. • Учитесь говорить «нет» мягко. Если вынуждены отказать ребенку в чем-то, то хотя бы не отнимайте у него удовольствие помечтать. Покажите, что понимаете его желание. Например: «Я вижу, как тебе хочется иметь эту прекрасную игрушку. Мне очень жаль, что я не могу ее тебе купить прямо сейчас». При возможности предложите альтернативу: «Если очень хочешь, можем попросить эту игрушку на Рождество». О разном • Авторитет подразумевает краткость. Родители говорят слишком много и подробно. Не вдавайтесь в долгие разъяснения, если ребенок об этом не просит. • Всегда, при любой возможности старайся поддержать и усилить чувство собственного достоинства ребенка. • Не давайте клятвенных обещаний. Клятвы значат лишь, что простому вашему слову нельзя верить. Кроме того, не все в вашей власти: в день обещанного похода в зоопарк может полить дождь или сломаться машина. • Никогда не поднимайте руку на ребенка. И никогда не давайте бить себя: «Люди не для битья». • Если не понимаете, как правильно поступить, лучше ничего не делайте. Подумайте и разберитесь в собственной позиции. • Вырастить гуманного человека можно лишь гуманными методами. Цель не оправдывает средства. Нет ни одной высокой цели, ради которой можно было подавлять, ломать и обижать ребенка.

Главные мысли из книги Хаима Гинотта «Родитель-Ребенок. Мир отношений» По первым страницам книги Хаима Гинотта мне казалось, что ничего нового в ней я не найду. Да, надо признавать и зеркалить эмоции ребенка, бла-бла-бла. В 1965-м это было в новинку, но кого этим удивишь сегодня? Однако чем дальше читал, тем больше убеждался, что это удивительная, незаслуженно забытая книга. Гинотт предельно просто описывает философию гуманного родительства и одновременно дает массу практических советов. Помогать ли с домашними заданиями? Как реагировать, если ребенок ворует? Как говорить с ним о сексе и о смерти? Что делать, когда старшие ревнуют к младшим? Об этом вы при желании почитаете в книге. А я лишь расскажу о базовых идеях. Как общаться с ребенком • Чаще всего родители говорят с детьми на языке критики и поучений. А детям нужен от нас язык принятия и сострадания. У него два принципа: (1) уважать ребенка, не ущемлять его достоинство; (2) сначала принять чувства ребенка, а уж потом давать советы. • Главное в общении с ребенком - стремление слушать и слышать. Проявите искренний интерес к его словам и эмоциям. Не отрицайте его чувства и желания. Не высмеивайте. Принимайте все к сведению. • Цель вашей коммуникации с ребенком - контакт. Реагировать нужно в первую очередь на его чувства, а не на поведение. Если ребенок рассказывает вам о каком-то событии, не выясняйте мелкие подробности - отвечайте на эмоции, которые событие у него вызвало. • Дети не всегда говорят прямым текстом, им нужно особое внимание. Многие вопросы ребенок задает лишь для того, чтобы получить заверение в поддержке. Когда ребенок рассказывает о том, что его волнует, ему нужна ваша любовь, а не допросы и разглагольствования. • Говорить с ребенком - это навык, его нужно осваивать. Без него родитель похож на хирурга-недоучку, который оперирует как бог на душу положит, потому что «достаточно любви и здравого смысла». Как сделать, чтобы ребенок не врал • Не задавайте вопросов, на которые знаете ответ. Не пытайтесь поймать ребенка на лжи с помощью вопросов-ловушек. Вы лишь унизите его и спровоцируете новую ложь. • Не путайте ложь с фантазиями, с помощью которых ребенок подсказывает вам, чего хочет и о чем мечтает. • Не ругайте за правду. Будьте готовы выслушать от ребенка и приятную, и горькую правду. Многие мамы и папы не слушают детей именно потому, что боятся услышать что-то, что им не понравится. Ребенок не станет врать, если будет четко знать, что у него нет необходимости говорить вам неправду. Отношение к эмоциям • Эмоции бывают положительными, отрицательными и двойственными. Объясните ребенку, что нормально испытывать любые чувства, в том числе противоречивые. Прямо говорите ребенку о его и своих эмоциях. • Родители - зеркало детских эмоций: отражая их, мы помогаем детям разобраться в себе. Не будьте кривым зеркалом. Для ребенка важнее знать, какие чувства он переживает, чем понимать, почему он их испытывает. Не обманывайте и не пытайтесь подменить одни чувства другими («Не говори, что ненавидишь братика, ты на самом деле его любишь!») Говорите правду: «Я вижу, ты очень зол на брата». • Родители тоже имеют право испытывать весь спектр эмоций. Злиться на ребенка - это иногда нормально. Оскорблять или бить ребенка нельзя никогда. Не обязательно быть святым. Просто не прячьте свои чувства, а прямо говоряите о них - без критики и унижения: «Я вне себя от ярости, потому что игрушки разбросаны по комнате». Гнев не следует выражать таким образом, чтобы он нарастал в процессе выражения. Лекарство не должно быть опаснее болезни. • Эмоции, как реки, нельзя остановить, их можно лишь перенаправить. Пытаться игнорировать вспышки эмоций - все равно что игнорировать стихийные бедствия. Относитесь к ним серьезно и ищите креативные способы направить их энергию в мирное русло. • Мир в доме не должен зависеть от перемен вашего настроения. Это результат методических сознательных действий: понижайте уровень напряженности, прежде чем она выйдет из-под контроля. Продолжение завтра

Хаим Гинотт. «Родитель-Ребенок. Мир отношений» Зачем в блоге о сексе писать про книгу о воспитании? Во-первых, она мне понрав
Хаим Гинотт. «Родитель-Ребенок. Мир отношений» Зачем в блоге о сексе писать про книгу о воспитании? Во-первых, она мне понравилась. Во-вторых, это не только про детей, а про людей и их чувства. Психолог Хаим Гинотт умер в 51 год, и сегодня мало кто знает его имя. Его главной работой так и осталась короткая книжка Between Parent and Child (1965). В ней Гинотт первым озвучил идеи, которые сегодня считаются очевидными и применимыми не только к детям, но и к взрослым: • Что человеку нужно, чтобы его слушали и понимали, а не поучали и критиковали. • Что самое важное в диалоге - услышать и принять эмоции собеседника. • Что любые чувства имеют право быть, но не всякое поведение допустимо. • Что ответственность идет изнутри - это не слепое послушание, а следование ценностям. • Что гуманного человека можно вырастить только гуманными методами. Ломать или унижать нельзя никого и никогда. На удивление простая, мудрая и логичная книга с массой конкретных советов. Очень рекомендую и семейным, и бездетным.

#psy из блога о сексе, да-да. Но вещь важная

#amazingopensource #menacingopensource Что такое fortraith? Нет, это не опечатка в слове Fortran или, упаси боже, Fortnite. Это — библиотека, реализующая компилятор времени компиляции, который переводит что-то, похожее на Forth, в вычисления на уровне типов Rust. Что? Да.

#article Создание квайнов часто считается неким нетривиальным искусством. В этой статье автор рассказывает, как можно делать квайны относительно механическим способом, и даже обобщяет этот метод на квайновые цепочки произвольной длины.

#prog #haskell #video Как написать FizzBuzz на Haskell. Нет, вы посмотрите