С 3750-м была ещё одна прекрасная особенность: дебаггер был или триальный или с протухшим ключом, и он работал, если на компьютере была выставлена дата только в 1999 год.
А системой контроля версий у нас на тот момент была MS SourceSafe, которая использовала в качестве истории дату изменения файла.
То есть, если во время дебага сохранить файл, а потом открутить дату обратно на компьютере и закоммитить файлы в SS, вся история в репозитории слетала.
Приходилось открывать весь проект из архивов версий и заново коммитить, чтобы иметь возможность копаться в истории
спасибо за sus, тут стало всё намного яснее.
и про "-5" тоже стало понятно. Мне тут в личку объяснили ещё про «5», что
«Правильно» было бы обозначить этот аккорд как Сno3, это обозначение гораздо логичнее. С5 — так стало принято, ибо такой аккорд стал распространен и потребовал выделения в отдельный класс.
неясность остается в следующих пунктах:
почему при написании «7» подразумевается не седьмая ступень гаммы, а пониженная на полтона (в случае мажорной шкалы)?
И как понимать всякие 9, 11, 13?
И всё же тяжело общаться с теми, кто в свое время в муз.школе изучал музыку, вы мыслите как-то по-другому :-) Мне с «математической» точки зрения вот эта статья — лучший учебник по музыке для начинающих.
Возьмём, к примеру C7: это C E G Bb
Вот почему Bb — это седьмая нота? ведь в мажорной гамме седьмая ступень — это B, а не Bb
И, к примеру C5 — это «аккорд» (вроде по определению аккорд это созвучие трёх и более нот, ну да ладно) из двух нот: C и G. А теоретически тут G — это 5-я ступень, а ведь она и так есть в аккорде и куда делась 3-я ступень (E)?
Товарищ автор, большая просьба прояснить (если знаешь, как) один момент, связанный с построением нестандартных аккордов (у которых всякие цифры 5 и 7 и sus в конце). Ну т.е. как построить такой аккорд, я знаю (к примеру 7 означает, что надо добавить 10-й полутон четвёртой нотой к аккорду), а вот почему они так называются — никак не пойму.
Статья супер, вот если бы мне она несколько лет назад бы попалась…
Это наилучшее приближение к чистым интервалам. Следующее наилучшее приближение — 40 полутонов (вроде бы) — но 40 нот слишком сложно, поэтому прижились 12
5 же ещё лучше приближается:
2^1/5=1,149 1,143=8/7
2^2/5=1,320 1,333=4/3
2^3/5=1,516 1,500=3/2
2^4/5=1,741 1,750=7/4
и, кстати, 2 и 3 ступень «почти» соответствуют кварте и квинте
Ну там участие в воскрешении принимали те же последователи красного б-га, то есть формально тогда и Сноу по фильму тоже зомби. Тот факт, что она не может нормально говорить, объясняется перерезанным горлом.
Да, насчёт ошибки компиляции ошибся.
Но по мне, таблицы функций удобнее хотя бы тем, что можно все обработчики данного enum сложить в одно место (таблицу структур с указателями на функции).
Со switch-ем есть ещё две проблемы: забытый break и зачастую расползающиеся простыни кода, который явно просится выделиться в функции, но его никто не рефакторит.
Добавляя в enum новую константу, не забываем поправить операторы switch
Если enum представляет собой последовательные номера (или не сильно разрежённые) и начинается с 0, а количество элементов достаточно большое, то проще сделать таблицу функций. Ошибка будет легко находиться на этапе компиляции, если последним элементом enum-а сделать MYENUM_MAX и сделать эту константу размером таблицы функций.
И выглядит такой код зачастую привлекательнее, чем гигантский switch.
С 3750-м была ещё одна прекрасная особенность: дебаггер был или триальный или с протухшим ключом, и он работал, если на компьютере была выставлена дата только в 1999 год.
А системой контроля версий у нас на тот момент была MS SourceSafe, которая использовала в качестве истории дату изменения файла.
То есть, если во время дебага сохранить файл, а потом открутить дату обратно на компьютере и закоммитить файлы в SS, вся история в репозитории слетала.
Приходилось открывать весь проект из архивов версий и заново коммитить, чтобы иметь возможность копаться в истории
C99 6.7.8.10 как бы
ну и до нуритов писали на verifone 395/3750, там компилятор всё правильно делал
посвятил несколько лет написанию кода под это чудо
из запомнившегося и доставившего максимальное количество боли: hcarm (по крайней мере тот, который был у нас) не обнуляет глобальные переменные
и про "-5" тоже стало понятно. Мне тут в личку объяснили ещё про «5», что
неясность остается в следующих пунктах:
почему при написании «7» подразумевается не седьмая ступень гаммы, а пониженная на полтона (в случае мажорной шкалы)?
И как понимать всякие 9, 11, 13?
И всё же тяжело общаться с теми, кто в свое время в муз.школе изучал музыку, вы мыслите как-то по-другому :-) Мне с «математической» точки зрения вот эта статья — лучший учебник по музыке для начинающих.
Вот почему Bb — это седьмая нота? ведь в мажорной гамме седьмая ступень — это B, а не Bb
И, к примеру C5 — это «аккорд» (вроде по определению аккорд это созвучие трёх и более нот, ну да ладно) из двух нот: C и G. А теоретически тут G — это 5-я ступень, а ведь она и так есть в аккорде и куда делась 3-я ступень (E)?
Статья супер, вот если бы мне она несколько лет назад бы попалась…
5 же ещё лучше приближается:
2^1/5=1,149 1,143=8/7
2^2/5=1,320 1,333=4/3
2^3/5=1,516 1,500=3/2
2^4/5=1,741 1,750=7/4
и, кстати, 2 и 3 ступень «почти» соответствуют кварте и квинте
Там в эпилоге Бури мечей она немножко воскресла
Но по мне, таблицы функций удобнее хотя бы тем, что можно все обработчики данного enum сложить в одно место (таблицу структур с указателями на функции).
Со switch-ем есть ещё две проблемы: забытый break и зачастую расползающиеся простыни кода, который явно просится выделиться в функции, но его никто не рефакторит.
Если enum представляет собой последовательные номера (или не сильно разрежённые) и начинается с 0, а количество элементов достаточно большое, то проще сделать таблицу функций. Ошибка будет легко находиться на этапе компиляции, если последним элементом enum-а сделать MYENUM_MAX и сделать эту константу размером таблицы функций.
И выглядит такой код зачастую привлекательнее, чем гигантский switch.