Какую часть компилятора мы должны знать? - PullRequest
10 голосов
/ 09 декабря 2008

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

Сколько бы хватило? Я не немного скруббер, но я думал, что знание того, как работает компилятор, сделает меня лучшим программистом. Я ошибся?

Если да, то какие ресурсы вы бы порекомендовали?

Ответы [ 13 ]

1 голос
/ 09 декабря 2008

Я думаю, что здесь важно то, что делает компилятор (он создает экспликацию с характеристиками x, y, z), что переводится в знание платформы, на которую вы ориентируетесь.

То, как она выполняет эту задачу, не имеет значения (если, конечно, вы не пишете компиляторы)

Самая важная вещь, которую мы должны знать о компиляторе, это сообщения об ошибках, которые он отображает.

:) Кажется очевидным, но я удивлен количеством встреченных мной разработчиков, которые даже не смотрели на вывод компилятора.

0 голосов
/ 09 декабря 2008

Как минимум, вы должны быть знакомы с возможностями языка на абстрактном уровне. Если вы не знаете, являются ли имена переменных чувствительными к регистру, или как числа преобразуются в логические, то вы, вероятно, даже не сможете написать надежное предложение «если» надежно.

В основном я обнаружил, что любые другие знания о внутренней работе компилятора просто помогают мне писать более эффективный код.

0 голосов
/ 09 декабря 2008

Я думаю, что на самом деле очень важно сделать переводчика: он дает вам более глубокое понимание языков программирования, и это то, что вы используете ... В схеме на самом деле очень сложно создать интерпретатор! Но на самом деле я бы очень рекомендовал прочитать части SICP для лучшего освещения).

Относительно компиляторов, это более сложно, так как основное внимание здесь уделяется некоторой производительности / выполнению этого для реальной машины. Для программиста важно знать, по крайней мере, какие задачи они выполняют в глобальном масштабе и когда они выполняются, а не детали, потому что в настоящее время они превратились в действительно сложные системы, особенно с JIT и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...