Запитання з тегом «compiler»

Компілятор - це комп'ютерна програма, яка перетворює вихідний код, написаний однією мовою програмування, на іншу мову комп'ютера.

6
Які застереження щодо реалізації фундаментальних типів (наприклад, int) як класів?
При проектуванні і implenting об'єктно-орієнтована мова програмування, в якій - то момент один повинен зробити вибір про реалізацію основних типів (як int, float, doubleабо їх еквіваленти) , як класи або що - то інше. Зрозуміло, що мови в сім'ї С мають тенденцію не визначати їх як класи (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. Я намагаюся зрозуміти точніше, які саме особливості динамічних мов (à la 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 цю статтю Він говорить : Наступний етап компілятора називається Парсер. Ця частина укладача має розуміння граматики мови. Він несе відповідальність за виявлення синтаксичних помилок і за переклад програми без помилок у …

5
Яка історія компілятора С?
Це питання було переміщено із переповнення стека, оскільки на нього можна відповісти на Exchange Stack Exchange. Мігрували 8 років тому . Коли ми говоримо, що "Денніс Річі розвинув мову С", чи маємо на увазі, що він створив компілятор (використовуючи "вже" розроблену іншу мову), який може компілювати вихідний код, написаний мовою …
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помилку, прокоментовану нижче, під час компіляції? Особливо, я хотів би почути про компілятор 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.