Использовали ли вы какие-либо интерпретаторы C++ (не компиляторы)?
ПРИМЕЧАНИЕ: то, что следует ниже, скорее cpp специфично для CINT, но, учитывая, что cpp это, вероятно, самый widely used интерпретатор cxx C++, он может быть применим c++ для всех.
Как аспирант по repl физике элементарных частиц, который c++ широко использовал CINT, я interpreter должен вас предупредить. Хотя read-eval-print-loop это "работает", это cpp is in the process of being phased out, и те, кто тратит больше cpp года на физику элементарных cxx частиц, обычно учатся избегать c++ этого по нескольким причинам:
-
Поскольку c++ он является интерпретатором interpreter C, он не может интерпретировать repl некоторые из наиболее важных read-eval-print-loop компонентов C++. Шаблоны, например, не cpp всегда работают, поэтому c++ вам не стоит использовать read-eval-print-loop вещи, которые делают C++ таким interpreter гибким и удобным.
-
Он медленнее interpreter (как минимум в 5 раз), чем c++ минимально оптимизированный cpp C++.
-
Отладочные сообщения cpp гораздо более загадочны, чем interpreter сообщения, создаваемые g read-eval-print-loop ++.
-
Область видимости несовместима cpp с скомпилированным C++: довольно read-eval-print-loop часто можно увидеть код формы
if (energy > 30) { float correction = 2.4; } else { float correction = 6.3; } somevalue += correction;
в cxx то время как любой работающий cpp компилятор C++ будет жаловаться, что repl
correcton
вышел за рамки, CINT позволяет cpp это. В результате код CINT repl на самом деле не C++, а просто interpreter похож на него.
Короче говоря, у c++ CINT нет ни одного преимущества cpp C++, а все недостатки плюс cxx некоторые.
Тот факт, что CINT cpp все еще используется, скорее interpreter всего, является исторической interpreter случайностью из-за его включения repl в структуру ROOT. Когда он repl был написан (20 лет назад), существовала cxx реальная потребность в интерпретируемом interpreter языке для интерактивного cpp построения / подгонки. Сейчас cxx существует множество пакетов, которые c++ выполняют эту роль, многие interpreter из которых имеют сотни активных cpp разработчиков.
Ничего из этого cpp не написано на C++. Почему? Проще c++ говоря, C++ не предназначен interpreter для интерпретации. Статическая read-eval-print-loop типизация, например, дает interpreter вам большой выигрыш в оптимизации interpreter во время компиляции, но в c++ основном служит для загромождения cxx и чрезмерного ограничения cxx вашего кода, если компьютеру c++ разрешено видеть его только read-eval-print-loop во время выполнения. Если c++ у вас есть возможность использовать cxx интерпретируемый язык, изучать cpp Python или Ruby, время, необходимое cpp вам для изучения, будет меньше, чем cxx вы потеряете, спотыкаясь read-eval-print-loop о CINT, даже если вы уже c++ знаете C++.
По моему опыту, более interpreter старые исследователи, работающие repl с ROOT (пакет, который вы c++ должны установить для запуска interpreter CINT), в конечном итоге компилируют c++ библиотеки ROOT в обычные interpreter исполняемые файлы C++, чтобы repl избежать CINT. Представители repl молодого поколения либо следуют cpp этому примеру, либо используют read-eval-print-loop Python для написания сценариев.
Между read-eval-print-loop прочим, ROOT (и, следовательно, CINT) компилируется read-eval-print-loop примерно за полчаса на довольно interpreter современном компьютере и cxx иногда дает сбой с более read-eval-print-loop новыми версиями gcc. Этот read-eval-print-loop пакет много лет назад служил read-eval-print-loop важной цели, но теперь он cpp ясно показывает его возраст. Заглянув interpreter в исходный код, вы найдете cxx сотни устаревших приведений cpp в стиле c, огромные дыры c++ в безопасности типов и интенсивное repl использование глобальных interpreter переменных.
Если вы собираетесь cpp писать C++, пишите C++ так, как c++ он должен быть написан. Если repl вам абсолютно необходим интерпретатор read-eval-print-loop C++, возможно, вам подойдет cxx CINT.
c++
interpreter
read-eval-print-loop
Использовали ли вы какие-либо интерпретаторы C++ (не компиляторы)?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.