Вопрос кажется решенным, даже избитым до смерти. Умные люди сказали умные вещи по этому вопросу. Чтобы быть действительно хорошим программистом, вам нужно знать C.
Или вы?
Я был просвещен дважды на этой неделе. Первый из них дал мне понять, что мои предположения не идут дальше, чем мои знания позади них, и учитывая сложность программного обеспечения, работающего на моей машине, это почти несуществующий, Но то, что действительно привело его домой, было этот комментарий Slashdot:
Конечным результатом является то, что я замечаю множество наивных способов, с помощью которых традиционные программисты C "bare metal" предполагают, что языки более высокого уровня реализованы. Они делают неправильные "оптимизационные" решения в проектах, на которые они влияют, потому что они понятия не имеют о том, как работает компилятор, или о том, как отличная система времени исполнения может быть от наивной модели макроассемблера, которую они понимают.
Затем он ударил меня: C просто еще одна абстракция, как и все остальные. Даже сам процессор - это абстракция! Я никогда не видел, чтобы он ломался, потому что у меня нет инструментов для его измерения.
Я в замешательстве. Разве мой ум был изуродован без выздоровления, как сказал Дейкстра о Бейсике? Я живу в постоянном состоянии преждевременной оптимизации? Есть ли надежда для меня, теперь, когда я понял, что ничего не знаю? Есть ли что-нибудь знать, даже? И почему это так увлекательно, что все, что я написал за последние пять лет, возможно, было принципиально неправильным?
Подводя итог: есть ли какое-то значение в знании больше, чем говорят документы API?
EDIT: Сделано CW. Конечно, это также означает, что теперь вы должны опубликовать примеры оптимизации интерпретатора/времени выполнения лучше, чем мы:)