Когда Джоэл Спольский и Джефф Этвуд начали разногласия в своем подкасте о том, должны ли программисты изучать C, независимо от их отрасли и платформы доставки, он сверкал довольно взрывную дискуссию в сообществе разработчиков, которая, вероятно, все еще бушует среди определенных групп сегодня. Я читал несколько отрывков из нескольких блоггеров-программистов, которые они взяли на себя. Аргументы обеих сторон, безусловно, несут вес, и то, что я не нашел, - это перспектива, которая однозначно угловата с точки зрения разработчиков, ориентированных только на .NET Framework. Практически все они комментировали общую точку зрения программиста.
Чего я пытаюсь получить? Напомним, что Джефф Этвуд считает, что большую часть времени разработчики на таких высоких уровнях будут тратить на изучение бизнеса/домена, помимо того, что необходимо для изучения технологий для достижения этих требований к домену. В моем опыте работы это очень точное описание многолетней работы. Предположим теперь, что разработчики .NET могут развить время для "дополнительного учебного обучения", если это C?
Для справки я сам учился в школе, и я могу абсолютно понять и оценить то, о чем говорят сторонники. Но, когда я все обдумываю, я лично чувствую, что разработчики .NET не должны погружаться прямо в C. Потому что, что я хочу, чтобы разработчикам понадобилось некоторое время, чтобы узнать, - MSIL и CLR.
Возможно, я застрял с необычной группой коллег, я не знаю, но мне кажется, что многие люди не осознают, что их код С# или VB компилируется в IL прежде, чем JIT войдет и сделает это необработанный машинный код. Большинство из них не знают IL и не интересуются тем, как CLR обрабатывает код, который они пишут. Чтение Джеффри Рихтера CLR через С# было довольно шоком для меня во многих областях; рад, что я прочитал его, несмотря на то, что коллеги отклонили его как "слишком низкий уровень". Я не являюсь экспертом в области ИЛ, но со знанием основ, я обнаружил, что слежу за его текстом легче, поскольку я уже был знаком с поведением стека ИЛ. Я обнаружил, что разбираю сборки, чтобы посмотреть, как ИЛ получается, когда я пишу определенный код.
Я изучаю CLR и MSIL, потому что знаю, что это прямой слой ниже меня. Слой, который позволяет мне выполнять свой собственный уровень работы. C, на самом деле ниже. Ближе к нашей "реальности" относятся CLR и MSIL. Вот почему я бы рекомендовал другим поработать над этим, потому что я не вижу достаточного количества людей, занимающихся этим слоем. Или ваша команда уже знакома с MSIL?