Анализ Доклада Андрея Акиньшина По Арифметике

Всем привет, готов очередной анализ.

Сегодня мы будем смотреть репортаж не от JPoint, а от DotNext! Автор отчета – Андрей DreamWalker Акиньшина, а его выступление посвящено деталям реализации арифметики с плавающей запятой в .

NET: Слайды можно найти Здесь .

Disclaimer: о реализации арифметики рассказывает только сам отчет, а не сама статья.

Сюжет Здесь я должен сказать, что мне не очень нравятся головоломки.

Они требуют знания неясных уголков спецификации, что в реальной жизни обычно бесполезно.

Просто представьте, что вы поддерживаете код, написанный любителем головоломок.

Заметьте, что заставить человека самому подумать о чем-то важном, прежде чем говорить ему «как сделать правильно», в целом хорошо, он гораздо лучше запомнит результат. Но начать с сути — то есть выбрать знания, которые нужно передать людям, и проиллюстрировать их парадоксальной проблемой с простыми условиями — сложно.

Головоломкам зачастую проще взять те вещи, которые не очень критично запомнить, но никто не знает, и сделать из них чистое развлечение.

В общем, внимательный читатель легко проследит мою нелюбовь к жанру в этой статье.



Сюжетные ходы и актерская игра

Нет ли здесь противоречия: ассистенты выходят на сцену, чтобы создать иллюзию соревнования, но понятно, что ответы и линии перехода между заданиями известны заранее.

Например, в 12:00-12:20 Юля утверждает, что приведение к целому — неправильная операция, и нужно использовать округление, и сразу появляется следующая задача, как раз на округление.

В таких ситуациях я бы изменил порядок задач так, чтобы тема, которая якобы «пришла в голову» помощнику, возникла не сразу, а чуть позже.

Для большей правдоподобности ассистенты иногда могли договариваться друг с другом.

Я тоже считаю неудачным камео Андрея Дмитриева (39:00).

Понятно, зачем нужен этот пародий: для рекламы очередного ДотНекста и очередного отчета.

Но раз уж мы говорим, что время вышло, хотя проблемы еще есть, то пусть все выглядит так, как будто это правда.

Во-первых, говорите «с краю», а не говорите, что у нас есть еще несколько минут на вопросы.

Во-вторых, выделите две-три дополнительные задачи с ответами и пролистайте слайды с ними в момент прерывания.

Потом, глядишь, люди заинтересуются, вдруг эффект Зейгарник сработает, презентацию скачают, все будет хорошо.

И я остался в недоумении: что это вообще такое? Интеграл подробнее.



Не только как, но и почему

Местами мне не хватило понимания, что именно курили разработчики спецификации.

Почему они сделали именно это? Это помогло бы не только лучше запоминать, но и отделять важные задачи от случайной ерунды.

Давайте посмотрим, например, на ранее упомянутое округление (начало в 12:20):

Анализ доклада Андрея Акиньшина по арифметике

Откуда взялось округление до ближайшего четного числа? Почему он включен по умолчанию? Когда необходим режим «вдали от нуля»? Возможно, я один все пропустил, а нормальные люди давно знают, но я впервые в жизни задумался над этим вопросом, готовя этот анализ.

Оказывается, режим называется «округление банка» и придуман в основном для случаев, когда нужно сложить деньги центами/копейками в дробной части.

Поскольку существует всего 100 различных значений центов, в случайном наборе денежных сумм довольно часто будет появляться хвост в размере ровно 50 центов.

Если мы округлим их все от нуля, мы накопим систематическую ошибку, а если округлим их все в сторону ближайшего четного числа, то ошибки округления в среднем приблизятся к нулю.

При этом каждое конкретное число округляется детерминированно, а не в случайном направлении (то есть такой подход).

Поскольку подсчет денег с использованием чисел с плавающей запятой и двойных чисел не следует производить по многим причинам, настройки по умолчанию кажутся нелогичными.

Но по крайней мере понятно, что за ними стоит. И если кто-нибудь знает другой реалистичный сценарий использования банковского округления, поделитесь, пожалуйста.

Я думаю, что раскрыть логику спецификации и рассказать ее аудитории — это полезно и хорошо.

Гораздо удобнее запоминать не только факты, но и их причины.

Кто теперь вспомнит таблицу истинности операций из Упражнения 8 (начало 17:23), хотя она была в презентации?

Анализ доклада Андрея Акиньшина по арифметике

Это вообще важно знать? Если бы мы поняли варианты использования, которые имели в виду разработчики, восстановить его было бы проще.

Актуальность Упражнения 10, наоборот, не подлежит сомнению (начало в 21:18):

Анализ доклада Андрея Акиньшина по арифметике

Андрей рассказывает, в каких ситуациях можно столкнуться с проблемой OverflowException, и заканчивает рассказ оптимистичным пожеланием быть осторожнее.

Все сразу поняли, как быть осторожнее? Подробности здесь будут полезны.



Как работает поплавок

Конечно, в университете у нас были фрагменты курсов, а то и целые курсы, посвященные представлению данных.

И конечно, нам рассказали о числах с плавающей запятой, но без практики многое забывается.

В некоторых задачах Андрей затрагивает фундаментальные свойства типов float и double и вытекающие из них проблемы, но не акцентирует на этом до конца внимание аудитории.

Самый яркий пример — задача об ассоциативности (упражнение 14, начало в 31:30):

Анализ доклада Андрея Акиньшина по арифметике

Учитывая, что не все в зале ответили правильно, материал первого и второго курса стоит освежить в памяти.

При этом важно, чтобы числа распределялись неравномерно: чем дальше от нуля, тем больше промежутки между ними.

Давайте посмотрим на два соседних числа с плавающей запятой максимального порядка (double имеет то же значение, только рисует больше):

Анализ доклада Андрея Акиньшина по арифметике



Анализ доклада Андрея Акиньшина по арифметике

С точки зрения рассматриваемого формата между ними ничего нет. Более того, в реальном мире первое число равно 1,7014122*10. 38 , второй — 1,701412*10 38 , а разница между ними 0,0000002*10 38 .

Это, будем осторожны, офигительная штука.

К числу максимального порядка невозможно прибавить единицу, тысячу или даже миллиард. Зная эту механику, легко понять, как нарушается правило ассоциативности: сумма нескольких малых чисел может быть больше расстояния между двумя соседними большими числами, при этом каждое маленькое число в отдельности будет просто уничтожено, если начать складывать с помощью большое количество.



выводы

В общем, каждая головоломка — это увлекательная история, которая дает ведущему должное за внимание аудитории, и эту заслугу можно использовать, чтобы извлечь какую-то мораль хотя бы из части головоломок (она на самом деле есть!).

Я уверен, что от этого доклад выиграет. Слайды Слайды сделаны качественно, поэтому не буду придираться к мелочам, а укажу решения, достойные подражания.



Последовательное появление элементов слайда

В отчете много слайдов с большим количеством информации.

Увидеть и понять все на экране сразу сложно, но у Андрея все элементы появляются по очереди.

Таким образом, зритель ни в коем случае не упускает из виду, куда ему нужно смотреть и о чем говорит говорящий.

Это упрощает понимание больших диаграмм, фрагментов кода и списков.

Делай как Андрей.



Единообразие

Хоть в презентации почти нет смешных картинок, кроме Гомера Симпсона (которого, в принципе, можно было бы поискать и в лучшем разрешении) и интеграла, это не делает ее менее смешной.

Математика сама по себе интересна.

При этом каждое упражнение оформлено одинаково, решение выделено одинаково, пояснение отмечено в заголовке слайда – зритель быстро привыкает и ничто не отвлекает его от решения головоломок.

Если у вас презентация с множеством маленьких историй, имеет смысл придерживаться подобного оформления, как в этом случае.

Регулярные обзоры Если вы хотите оставить отзыв о своем выступлении, я буду рад вам его предоставить.

Что для этого нужно?

  • Ссылка на видеозапись выступления.

  • Ссылки на слайды.

  • Заявка от автора.

    Мы не будем ничего обсуждать без согласия самого спикера.

Все это нужно отправить в хаббраузер p0b0rchy , то есть мне.

Обещаю, что обратная связь будет конструктивной и вежливой, а также будет освещать положительные моменты, а не только то, что необходимо улучшить.

Теги: #.

NET #презентация #анализ #dotnext 2016

Вместе с данным постом часто просматривают: