Вопросы с тегом «compiler»

Компилятор - это компьютерная программа, которая преобразует исходный код, написанный на одном языке программирования, в другой компьютерный язык.

214
Как написать очень простой компилятор

Продвинутые компиляторы, например, gccкомпилируют коды в машиночитаемые файлы в соответствии с языком, на котором был написан код (например, C, C ++ и т. Д.). Фактически они интерпретируют значение каждого кода в соответствии с библиотекой и функциями соответствующих языков. Поправьте меня если я...

156
Хак компилятора Кена Томпсона все еще является угрозой?

Кен Томпсон Хак (1984) Кен Томпсон описал метод повреждения двоичного файла компилятора (и другого скомпилированного программного обеспечения, такого как сценарий входа в систему * nix) в 1984 году. Мне было любопытно узнать, устраняет ли современная компиляция этот недостаток безопасности или нет....

92
Почему в Java вообще нет оптимизации для хвостовой рекурсии?

Из того, что я прочитал: причина в том, что нелегко определить, какой метод на самом деле будет вызываться, поскольку у нас есть наследование. Однако почему в Java, по крайней мере, нет оптимизации хвостовой рекурсии для статических методов и не реализован надлежащий способ вызова статических...

81
Должен ли я использовать генератор синтаксического анализатора или я должен свернуть свой собственный код лексера и анализатора?

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

79
Как работает сборка мусора на языках, которые скомпилированы изначально?

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

77
Почему программная ОС специфична?

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

76
Python интерпретируется или компилируется?

Это просто удивление, которое я испытал, читая о интерпретируемых и компилируемых языках. Ruby , без сомнения, является интерпретируемым языком, поскольку исходный код обрабатывается интерпретатором в точке исполнения. Напротив, C - это скомпилированный язык, так как нужно сначала скомпилировать...

72
Почему первый компилятор был написан до первого интерпретатора?

Первый компилятор был написан Грейс Хоппер в 1952 году, в то время как интерпретатор Lisp был написан в 1958 году учеником Джона Маккарти Стивом Расселом. Написание компилятора кажется гораздо более сложной задачей, чем интерпретатор. Если это так, то почему первый компилятор был написан за шесть...

72
Почему так мало C-компиляторов?

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

64
Почему компиляторы настолько надежны?

Мы ежедневно используем компиляторы, как если бы их корректность была задана, но компиляторы тоже являются программами и могут содержать ошибки Я всегда задавался вопросом об этой непогрешимой надежности. Вы когда-нибудь сталкивались с ошибкой в ​​самом компиляторе? Что это было и как вы поняли,...

60
Плохо ли использовать компилятор C ++ только для перегрузки функций?

Поэтому я работаю над дизайном программного обеспечения с использованием C для определенного процессора. Набор инструментов включает в себя возможность компилировать как C, так и C ++. Для того, что я делаю, в этой среде нет динамического выделения памяти, и программа в целом довольно проста. Не...

60
Можем ли мы сделать общие заявления о производительности интерпретируемого и скомпилированного кода?

Я сравниваю две технологии, чтобы получить рекомендацию, для которой одна из них должна использоваться компанией. Код технологии A интерпретируется, а код технологии B компилируется в машинный код. В моем сравнении я утверждаю, что технология B в целом будет иметь лучшую производительность,...

57
Как мы можем быть уверены, что нижние компоненты компьютерного программирования, такие как компиляторы, ассемблеры, машинные инструкции и т. Д., Безупречны?

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

56
Компиляторы Intel действительно лучше, чем Microsoft? [закрыто]

Несколько лет назад я был удивлен, когда обнаружил, что Intel продает компиляторы, совместимые с Visual Studio. Я попробовал это, в частности, для C / C ++, а также для фантастических инструментов диагностики. Но код не был настолько сложным в вычислительном отношении, чтобы заметить разницу....

55
Что означает «контекстно-свободный» в термине «контекстно-свободная грамматика»?

Учитывая количество материала, который пытается объяснить, что такое не зависящая от контекста грамматика (CFG), я нахожу удивительным, что очень немногие (в моем примере менее 1 из 20) дают объяснение тому, почему такие грамматики называются «context- свободно". И, на мой взгляд, никому не удается...

50
Почему процессору Itanium было сложно написать компилятор?

Обычно утверждается, что архитектура 64-разрядных процессоров Intel Itanium не удалась, потому что для революционного набора команд EPIC было очень сложно написать хороший компилятор, что означало отсутствие хороших инструментов разработчика для IA64, что означало отсутствие разработчиков,...

48
Как мог первый компилятор C ++ быть написан на C ++?

Страуструп утверждает, что Cfront, первый компилятор C ++, был написан на C ++ ( Stroustrup FAQ ). Однако как вообще возможно, чтобы первый компилятор C ++ был написан на C ++? Код, составляющий компилятор, тоже должен быть скомпилирован, и поэтому первый компилятор C ++ не мог быть написан на C...

47
Как именно создается абстрактное синтаксическое дерево?

Я думаю, что понимаю цель AST, и раньше я построил пару древовидных структур, но не AST. Я в основном сбит с толку, потому что узлы - это текст, а не число, поэтому я не могу придумать хороший способ ввода токена / строки, когда я разбираю некоторый код. Например, когда я смотрел на диаграммы AST,...

45
В чем разница между «синтаксисом» и «синтаксическим сахаром»

Фон На странице Википедии о синтаксическом сахаре говорится: В информатике синтаксический сахар - это синтаксис в языке программирования, предназначенный для облегчения чтения или выражения. Это делает язык «более сладким» для использования людьми: вещи могут быть выражены более четко, более кратко...

42
Производит ли переводчик машинный код?

Я интенсивно изучаю темы составителей и интерпретаторов. Я хочу проверить правильность моего базового понимания, поэтому давайте предположим следующее: У меня есть язык под названием "Foobish", и его ключевые слова <OUTPUT> 'TEXT', <Number_of_Repeats>; Поэтому, если я хочу вывести на...