masai

Кстати, о школьных учебниках. Недавно читал хороший, хоть и грустный пост, Виктора Васильева, занимавшегося до недавнего времени рецензированием учебников математики — atlmrf.livejournal.com Очень напоминает историю с учебниками и Фейнманом.

И вот хочется вставить свои пять копеек. С математикой ещё ладно, там хотя бы какие-то устоявшиеся правила есть. Но вот как рецензируют учебники информатики — большой вопрос.

Возьмём к примеру учебник Угриновича, который входит в список рекомендованных.

Продолжение в комментариях.

waterlaz

Когда-то давно мне было интересно узнать, откуда взялись ноты? Почему приятны звуки именно такой высоты, а не другой?

Первым же делом, два постулата.
Во-первых, две ноты, отличающихся по частоте в два раза — одна и та же нота.
Этому можно найти много объяснений, но оставлю в форме постулата.
Во-вторых, две ноты, отличающиеся по частоте в полтора раза, приятны как созвучие.
Такой интервал, кстати, называется квинта.

Так вот, начнем с какой-либо ноты. Возьмем струну длиной один метр и подвесим груз 1 кг.
Каждый раз будем увеличивать частоту в полтора раза, увеличивая груз в полтора раза.
Но если вес груза будет превышать 2кг, поделим его пополам.

Prelude> let cut x = if x>=2 then x/2 else x
Prelude> let f x = cut (1.5*x)

Проделаем такую операцию над первой нотой 12 раз и получим каких-то 13 звуков:

Prelude> let notes = take 13 $ iterate f 1
Prelude> notes
[1.0, 1.5, 1.125, 1.6875, 1.265625, 1.8984375, 1.423828125, 1.06787109375, 1.601806640625, 1.20135498046875, 1.802032470703125, 1.3515243530273438, 1.0136432647705078]

Все частоты ощутимо отличаются друг от друга, кроме первой и тринадцатой (1 и 1.0136).
Если продолжать увеличивать частоту в полтора раза и делить на два при необходимости,
то ноты будут повторяться с достаточно большой точностью.

Теперь если принять первую ноту с грузом 1 за до, то вот это и есть двенадцать нот(до, до#, ре, ре#, ...) в порядке возростания частоты:

Prelude Data.List> sort $ take 12 notes
[1.0, 1.06787109375, 1.125, 1.20135498046875, 1.265625, 1.3515243530273438, 1.423828125, 1.5, 1.601806640625, 1.6875, 1.802032470703125, 1.8984375]

Кстати, если взять первые 7 нот последовательности notes, то получится тональность соль мажор:

Prelude Data.List> let names = ["do", "do#", "re", "re#", "mi", "fa", "fa#", "sol", "sol#", "la", "la#", "si"]
Prelude Data.List> filter ((flip elem (take 7 notes)).fst) (zip (sort $ take 12 notes) names)
[(1.0,"do"), (1.125,"re"), (1.265625,"mi"), (1.423828125,"fa#"), (1.5,"sol"), (1.6875,"la"), (1.8984375,"si")]

a13

"the third issue of lisp macro, is that it is meta programing. As such, it's analogous to 1st order logic and higher order logic. If you have to use meta-programing to solve a problem, it indicates perhaps your language isn't expressive enough in the first place, or you are going round-about."

всё-таки странный товарищ этот Xah Lee
xahlee.info