А я в реальности собеседовал человека, который пришёл работать программистом на производство со знанием школьного уровня. И на вопрос, что умеешь, совершенно искренне ответил — сортировка пузырьком.
Посмотрите на это с другой стороны.
Автор решил задачу школьного уровня. Счёл её достаточно интересной, чтобы потратить время на написание статьи на эту тему. И в комментариях читает:
Nice!
When I finished reading it, I was like “wooow”!
So awesome!
Great!
Что происходит с точки зрения педагогики?
Он получает не просто положительную оценку своего труда. Он получает градацию оценок, в рамках которых окружающие оценивают его достижения. Если подсчёт элементов массива — это и так уже great и awesome, то зачем напрягаться и развиваться дальше? Как тогда будут оцениваться более значимые достижения? Выше оценки, чем great и awesome, он уже не получит. Более того, если он всё-таки напишет ещё одну работу уровнем выше, то те же самые оценки не принесут того же уровня удовлетворённости, поскольку он их уже видел, и будут восприниматься как норма. И если у автор не будет достаточного уровня самокритики, он возгордиться и будет считать себя профессиональным программистом совершенно необоснованно.
Чрезмерное поглощение звука тоже не есть есть хорошо для прослушивания. На профильных форумах можно найти печальные истории о переглушенных помещениях и тягостных ощущений от прослушивания музыки в подобных условиях.
А мне запомнилась другая: «Музыка имеет отношение к звуку такое же, как и грим к содержанию пьесы». И хоть лично я с ней категорически не согласен, она довольно точно отражает ценности аудиофилов.
Даже если и дадут послушать, что толку. В салоне и помещение больше, и акустически оно должным образом обработано. Там что угодно хорошо звучать будет. А домой принесёшь — и на тебе резонанс на 90 Гц)
Наконец-то технически грамотная статья! Мне тоже всегда было непонятно, почему все параметры измеряются на одной единственной частоте, а результаты выдаются за абсолютные. Ну ладно раньше было сложно спектр мерить, ну а сейчас-то нет никаких проблем со снятием импульсной характеристики и свип-тонов.
И, кстати, даже на этой картинке хорошо видно, что до сих пор для анализа 1кГц сигнала используется FFT размером степени кратным двойки и оконной функцией, что также искажает результат. Достаточно взять размер, в котором период 1кГц укладывается целое количество раз (например 4800 при частоте дискретизации 48кГц), чтобы получить максимально точный результат.
Чтение математической литературы может быть увлекательнее любого детектива.
Сначала — завязка. Поставлена понятная задача и показано решение. Интересно, открываем.
Функция s(x) на интервале [a, b] называется сплайном степени k на сетке с горизонтальными узлами
Что за g, почему 2k? Интрига. Но уже в следующем предложении интрига раскрывается, заодно показывая несколько иллюстраций, из которых понятно, что «ну это всё просто!». Расслабляемся и читаем дальше.
Строго говоря, они должны доставлять минимум функции
Хмм… Похоже на метод наименьших квадратов. Приятно чувствовать, что какие-то знания у меня есть. И тут вдруг — неожиданный поворот сюжета:
Для удобства запишем в матричном виде:
Что за палочки, что за цифры, нас такому не учили! Страшно. И хотя дальше матрица в привычном представлении присутствует, чувство тревоги не уходит. И вот:
Тогда вся задача и все предыдущие формулы сводятся к решению простой системы линейных уравнений:
Звучит как очевидный факт, но мне же это совсем не очевидно! Расстроившись, я пошёл пить чай.
(спустя некоторое время)
Хм… Минимизировать разницу между производными для обеспечения гладкости — это сильно!
(спустя ещё некоторое время)
Что-то формул всё больше и больше. Посмотрю-ка я пока просто картинки, а к формулам попозже вернусь.
…
(финал)
О, код на питоне! Написан вроде неплохо. Значит, теперь в формулы не обязательно вникать, можно же и отладчиком прогнать, если вдруг что. Облегчение.
(вместо заключения)
Многие авторы математических алгоритмов не прикладывают к своим статьям никакого кода, считая, что для программиста его математические выкладки должны быть очевидными. К сожалению, это редко когда так. Для программиста конструкция for(){for(){...}} более понятна, чем Σ Σ, даже если знать, что Σ — это сумма, и несмотря на то, что она длиннее. Поэтому автору отдельный респект за код.
В своё время пытался подобным образом решать аналогичную задачу, но не осилил, заткнулся на выборе узлов. Решил её другим способом — последовательной аппроксимацией функцией a*sin(k*x)+b*cos(k*x)
Мне кажется, Microsoft ненавидят всё же сильнее и намного бо́льшее количество народа. Но было бы странным читать жалобы Билл Гейтса на это. Жалоба — проявление слабости, показатель преобладания эмоций над разумом. Какой эффект вызывает эта статья, захотелось ли кому-то перейти на Babel или приобщиться к JS-сообществу? Мне — нет.
А когда эта цель будет достигнута, окажется, что она совсем уже и не нужна. Потому что она была нужна в 20 лет, а в 40, по её достижении, и ценности, и приоритеты, и сама жизнь поменялись.
Редкий случай, когда всё по делу. Только меня смутил пункт «35. Кофеин помогает убеждать» — есть ли доказательство, что причина именно в кофеине, а не в самом факте совместного распития напитка (неважно какого)?
Есть и более бюджетные варианты — серия VOX Valvetronix, например. И играть с перегрузом вовсе не обязательно — тёплую ламповость хорошо слышно и на обычной акустике с пьезодатчиком.
На ютубе разницу действительно сложно услышать. А вот вживую разница между ламповым комбиком и Guitar Rig через бытовую акустику более чем очевидна даже для самого непритязательного слушателя.
Автор решил задачу школьного уровня. Счёл её достаточно интересной, чтобы потратить время на написание статьи на эту тему. И в комментариях читает:
Что происходит с точки зрения педагогики?
Он получает не просто положительную оценку своего труда. Он получает градацию оценок, в рамках которых окружающие оценивают его достижения. Если подсчёт элементов массива — это и так уже great и awesome, то зачем напрягаться и развиваться дальше? Как тогда будут оцениваться более значимые достижения? Выше оценки, чем great и awesome, он уже не получит. Более того, если он всё-таки напишет ещё одну работу уровнем выше, то те же самые оценки не принесут того же уровня удовлетворённости, поскольку он их уже видел, и будут восприниматься как норма. И если у автор не будет достаточного уровня самокритики, он возгордиться и будет считать себя профессиональным программистом совершенно необоснованно.
И, кстати, даже на этой картинке хорошо видно, что до сих пор для анализа 1кГц сигнала используется FFT размером степени кратным двойки и оконной функцией, что также искажает результат. Достаточно взять размер, в котором период 1кГц укладывается целое количество раз (например 4800 при частоте дискретизации 48кГц), чтобы получить максимально точный результат.
Сначала — завязка. Поставлена понятная задача и показано решение. Интересно, открываем.
Что за g, почему 2k? Интрига. Но уже в следующем предложении интрига раскрывается, заодно показывая несколько иллюстраций, из которых понятно, что «ну это всё просто!». Расслабляемся и читаем дальше.
Хмм… Похоже на метод наименьших квадратов. Приятно чувствовать, что какие-то знания у меня есть. И тут вдруг — неожиданный поворот сюжета:
Что за палочки, что за цифры, нас такому не учили! Страшно. И хотя дальше матрица в привычном представлении присутствует, чувство тревоги не уходит. И вот:
Звучит как очевидный факт, но мне же это совсем не очевидно! Расстроившись, я пошёл пить чай.
(спустя некоторое время)
Хм… Минимизировать разницу между производными для обеспечения гладкости — это сильно!
(спустя ещё некоторое время)
Что-то формул всё больше и больше. Посмотрю-ка я пока просто картинки, а к формулам попозже вернусь.
…
(финал)
О, код на питоне! Написан вроде неплохо. Значит, теперь в формулы не обязательно вникать, можно же и отладчиком прогнать, если вдруг что. Облегчение.
(вместо заключения)
Многие авторы математических алгоритмов не прикладывают к своим статьям никакого кода, считая, что для программиста его математические выкладки должны быть очевидными. К сожалению, это редко когда так. Для программиста конструкция for(){for(){...}} более понятна, чем Σ Σ, даже если знать, что Σ — это сумма, и несмотря на то, что она длиннее. Поэтому автору отдельный респект за код.