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

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

6
Каковы предостережения от реализации фундаментальных типов (таких как int) как классов?
При проектировании и implenting объектно-ориентированный язык программирования, в какой - то момент один должен сделать выбор о реализации основных типов (как int, float, doubleили их эквиваленты) , как классы или что - то другое. Очевидно, что языки в семействе C имеют тенденцию не определять их как классы (Java имеет специальные …

2
Что такое ASM.js и что это значит для всех?
Я начинаю слышать раскаты об этом проекте под названием asm.js . В настоящее время их веб-сайт ужасен и запутан. Вот что я знаю из моих исследований в Интернете. Это подмножество JavaScript, которое можно оптимизировать. Я предполагаю, потому что это избегает более динамичных частей языка. Производительность кода, скомпилированного в ASM.js, работает …

5
Являются ли шаблоны C ++ просто прославленными макросами?
Из разных сравнений среди шаблонов C ++ и C # / обобщений Java, как этот /programming/31693/what-are-the-differences-between-generics-in-c-and-java-and-templates-in-c/31929#31929 У меня сложилось впечатление, что шаблоны C ++ реализуются с помощью некоторой предварительной обработки (замена простого текста перед синтаксическим анализом), а не компиляции. Потому что проверка типов в шаблонах C ++ напоминает макросы C. …
27 c++  c  compiler  templates  macros 


2
Какие семантические особенности Python (и других динамических языков) способствуют его медлительности?
Я не очень хорошо знаю Python. Я пытаюсь более точно понять, какие именно особенности динамических языков (например, Python, Lua, Scheme, Perl, Ruby, ....) заставляют их реализации работать медленно. В качестве примера, метатабельный механизм Lua 5.3 может интуитивно сделать Lua довольно медленным, но на практике, по слухам, Lua работает довольно быстро …

3
Почему нет компилятора Python для машинного кода?
Как я понимаю, причина разницы в скорости между скомпилированными языками и python заключается в том, что первый компилирует код вплоть до кода нативной машины, тогда как python компилирует в байт-код python для интерпретации PVM. Я вижу, что таким образом коды Python могут использоваться в нескольких операционных системах (по крайней мере, …

6
Зачем реализовывать лексер как 2d массив и гигантский коммутатор?
Я медленно работаю, чтобы закончить свою степень, и этот семестр - Компиляторы 101. Мы используем Книгу Дракона . Вскоре в курсе, и мы поговорим о лексическом анализе и о том, как он может быть реализован с помощью детерминированных конечных автоматов (далее DFA). Настройте различные состояния лексера, определите переходы между ними …

3
В каком процессе возникает синтаксическая ошибка? (токенизация или разбор)
Я пытаюсь понять компиляцию и интерпретацию, шаг за шагом выясняя общее изображение. Поэтому я поднялся на вопрос, читая http://www.cs.man.ac.uk/~pjj/farrell/comp3.html эту статью. Это говорит: Следующий этап компилятора называется Parser. Эта часть компилятора имеет понимание грамматики языка. Он отвечает за выявление синтаксических ошибок и за перевод безошибочной программы во внутренние структуры данных, …

5
Какова история компилятора C?
Этот вопрос был перенесен из переполнения стека, потому что на него можно ответить в Software Engineering Stack Exchange. Мигрировал 8 лет назад . Когда мы говорим, что «Деннис Ритчи разработал язык C», мы имеем в виду, что он создал компилятор (используя «уже» разработанный другой язык), который может компилировать исходный код, …
23 c  compiler 

6
Какова общая процедура, используемая, когда компиляторы статически проверяют тип «сложных» выражений?
Примечание: когда я использовал «сложный» в заголовке, я имею в виду, что выражение имеет много операторов и операндов. Не то чтобы само выражение было сложным. Недавно я работал над простым компилятором для сборки x86-64. Я закончил основной внешний интерфейс компилятора - лексер и парсер - и теперь могу генерировать представление …

1
Почему в документации на некоторых языках написано «эквивалентно», а не «есть»?
Почему в документации на некоторых языках написано «эквивалентно», а не «есть»? Например, документы Python говорят itertools.chain(*iterables) ... Эквивалентно : def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element Или эта ссылка на C ++find_if : Поведение этого …

2
Можно ли создать «загруженный» интерпретатор независимо от исходного интерпретатора?
Согласно Википедии, термин «самозагрузка» в контексте написания компиляторов означает это : В информатике начальная загрузка - это процесс написания компилятора (или ассемблера) на исходном языке программирования, который он намеревается скомпилировать. Применение этой методики приводит к самостоятельному компилятору. И я могу понять, как это будет работать. Тем не менее, история кажется …

4
GCC vs clang / LLVM - плюсы и минусы каждого [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …
20 compiler  clang  gcc  llvm 

6
Когда платить за компиляторы C ++ [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 5 лет назад . Недавно я начал задумываться, когда разработчики должны платить за компиляторы. Компиляторы поставляются бесплатно на …
19 c++  compiler 

5
Обнаружение неправильного использования delete [] и delete во время компиляции
Я хотел бы знать, возможно ли обнаружить deleteошибку, прокомментированную ниже во время компиляции? Особенно мне хотелось бы услышать о компиляторе g ++. ClassTypeA *abc_ptr = new ClassTypeA[100]; abc_ptr[10].data_ = 1; delete abc_ptr; // error, should be delete []

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.