Обучающий курс по арифметике с плавающей запятой по Стандарту IEEE-754

Уважаемые соратники Сообщества Программистов, онлайн-школа программирования ZealComputing предлагает вашему вниманию новый учебный курс, который позволит вам овладеть основами правильной работы с арифметикой с плавающей запятой в формате IEEE-754.

Данный учебный курс сильно отличается от тех статей или видео-уроков, которые вы можете отыскать в свободном доступе на русском языке. Главное отличие в том, что в нём максимально подробно объясняется всё то, чего не объясняют другие преподаватели: почему формат устроен именно так, откуда берутся те или иные ограничения, какие ошибки при работе с форматом содержат ВСЕ существующие компиляторы, почему нельзя было сделать всё как-то по-другому и так далее. Более того, даются практические рекомендации о том, как можно и нельзя поступать с плавающей арифметикой при написании программ, какие будут последствия тех или иных ошибок, когда перестановка чисел может изменить результаты расчётов и как с этим жить. Все неожиданные эффекты работы арифметики с плавающей запятой рассмотрены в этом курсе, и даются рекомендации о том, как с ними бороться и когда этого в принципе не получится сделать.

Другое выгодное отличие в том, что мы НЕ начинаем с формул и НЕ пытаемся сразу вбить вам в голову какие-то непонятные истории про implicit leading bit, про нормализацию двоичных чисел и смещённую экспоненту, денормализованые числа и прочие непонятные вещи. Вам даются красивые и удобные образы под каждый элемент формата, и когда на экране появляется какая-то формула или новое определение, у вас уже есть понятный образ под эту формулу и определение, и вам легче понять их смысл. Многочисленные примеры позволят упростить процесс понимания, а хорошие упражнения — закрепить это понимание.

Для начала вам предлагается пройти первую часть курса — для начинающих. На протяжении 8 уроков вас плавно погружают в структуру формата чисел с плавающей запятой, начиная с привычной десятичной системы счисления, затем переходят к двоичной с малым числом битов (в наших примерах это 6 битов), и затем уже в последних двух уроках вы полностью овладеваете структурой типов данных, обычно называемых float и double.

Доверять нам или нет — решайте сами, мы создали курс, аналогов которого нет в русскоязычном интернете, часть знаний из него (например, об ошибках компилятора) пока недоступна даже некоторым профессиональным программистам, хотя конечно, более подробно с математических позиций мы будем рассматривать такие ошибки в части второй. В первой части мы исходили из принципа, что ученику НЕ нужно знать высшую математику, достаточно только лишь 11-ти классов школы и базовых навыков программирования (знание двоичной системы счисления). Можете посмотреть вступительное видео, чтобы лучше понять автора этого курса нашей школы. Там есть пара слов о нём и кое-какая нарезка из уроков первой части курса.

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

Также по желанию следите за нами в соцсетях, все необходимые ссылки есть на YouTube-канале, на котором размещено вступительное видео. В этих соцсетях вы можете задавать вопросы и общаться с нами. А можете задавать их и здесь, в Сообществе Программистов.

А в англоязычном?

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

Благодарю за вопрос, объясню что я подразумевал. Тут два момента.

Во-первых, дело в том, что я раньше работал в вузе 11 лет, заметил, что многим студентам трудно овладеть данной темой, потому что на мой взгляд она неправильно преподаётся. Я постарался сделать первую часть курса как раз такой, чтобы даже человеку с минимальной для программиста математической культурой (11 классов) было понятно то, что ему нужно понимать для профессиональной деятельности и почти не ошибаться в этой теме.

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

  • David Goldberg, “What Every Computer Scientist Should Know About Floating-Point Arithmetic”, 1991
  • Jean-Michel Muller, “Handbook of floating-point arithmetic”, 2018
  • Jean-Michel Muller, “Elementary Functions: Algorithms and Implementation”, 2016

Тем не менее, продраться через математические дебри, которые там предлагаются, обычным программистам не под силу так быстро, как если бы они прошли курс. Это жёсткая литература, она для профессионалов, специализирующихся именно на этой теме. Есть литература попроще, но это разнозненные источники. Всё описано в куче разных статей, которые ещё нужно собрать, а чтобы их собрать, нужно знать что собирать :slight_smile: Я эту работу уже проделал и излагаю всё в первой части курса. Иными словами, беру деньги не за знание (которое ДОЛЖНО БЫТЬ бесплатным), а за педагогический труд и за экономию времени учеников ценой потери своего времени. Поэтому и цена предельно низкая, ведь учеников много, а я - один.

Если к примеру первая часть курса не интересна или уже изучена? На вашем ресурсе смотрю нет возможности выбирать тему (раздел).

Я пока предлагаю сообществу только первую часть курса. Наша школа только что открылась и у нас нет достаточного опыта, чтобы сразу делать остальные части, потому что нужна обратная связь. Когда будет достаточно много отзывов, мы начнём продумывать формат изложения последующих частей курса и даже других курсов по другим темам. Вы можете просто зарегистрироваться в школе, чтобы получать уведомления о новых курсах, или просто подписаться на YouTube-канал, там тоже будут новости об этом.

На странице курса что-то вообще непонятно что в эту первую часть входит, сколько она длится, в каком формате курс (видео, текст? наличие упражнений для закрепления).
Хотя бы это видео туда прикрепить надо )

1 лайк

Благодарю за разъяснение! Действительно, с моей стороны было бы правильным как-то об этом подумать. Я сейчас подумаю над этим, а пока отвечу вам здесь.

Там 8 уроков. Это 8 видео, длительностью от 15 до 32 минут. В каждом видео упражнения уже встроены, вы только ставите на паузу, затем решаете задачу, отпускаете паузу и смотрите правильный ответ. Никакого лишнего текста или тестов не предусмотрено, мы посчитали, что этого достаточно.

Я задумался над тем, чтобы вообще сделать первый урок бесплатным и открытым… так будет сразу понятно что человек покупает. Как думаете?

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

1 лайк

Некоторым больше нравится читать.
Или хотя бы неплохо иметь текстовую версию, чтобы быстро найти и повторить что-то.
Хотя это сейчас можно частично решить авто-транскриптом ютуба и Ctrl+F
image

И еще можно отметить секции в видео/выложить таймстампы.

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

1 лайк

Посмотрите, пожалуйста, я попробовал сделать первый урок бесплатным. Но зарегистрироваться всё равно придется (через гугл, ВК, или просто дать свою почту). Будет ли он у вас открываться бесплатно после регистрации? Не переживайте за регистрацию, этот ресурс ZenClass - это платформа для онлайн школ - это не мой сайт, это посредник между мною и вами. Всё что я от вас получаю из личных данных - это имя, почту и время входа на площадку :slight_smile:

Что касается текстового формата, у нас видео-школа, такая специализация. Если курс устареет, сделаем новый, особенно хорошо это будет сделать с учётом обратной связи, которая для нас очень важна. Про текстовую копию я уже думал. Сейчас буду пробовать этот формат на Хабре. Пишу статьи и делаю видео, если способ пойдёт, будем делать именно так и в школе. Если бы сейчас так сделали, стоимость возросла бы в несколько раз, подготовить качественный текст с картинками - это отдельная трудная задача.

Спасибо за ваши советы!

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

1 лайк

Я надеюсь, что так оно и есть, но повторюсь, что сначала проверю гипотезу на Хабре, напишу несколько статей и предложу то же самое на видео. В первую очередь нужно проверить, а смогу ли я потянуть такой объём труда. Ведь это фактически втрое сложнее.

Знаю одну “школу” (Хекслет), которая тоже начинала с видео, но потом перешли на только текст для большинства материалов потому что их как раз намного проще обновлять по мере получения отзывов.
Видео — кучу часов на оттачивание сценария, запись, монтаж, а потом нашлась незамеченная ошибка, и как минимум переснимать этот кусок и снова монтировать, перезаливать.
Текст — ошибка исправляется за пару минут, и можно разрабатывать курс более инкрементально, улучшать хоть каждый день и т.д.

Ну по идее качественные иллюстрации неплохо бы и в видео иметь )

1 лайк

Я благодарю вас за ваше мнение, обязательно буду его учитывать при проектировании последующих уроков. По мере получения обратной связи от учеников, прошедших курс, я буду корректировать своё мнение и постараюсь выработать оптимальную стратегию обучения. Для меня главное - помогать людям осваивать материал. Если будет много мнений за текст, так и будет дальше.

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

Как там первый урок у вас появляется бесплатно?

Да, но видео как-то сливаются в одно, можно не понять где же основное видео, надо как-то более четко отделить их )

1 лайк

Ага, понял. Сделал разбивку. Благодарю за тестирование :slight_smile:

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