Я ищу хорошую C ++ IDE с REPL. В Visual Studio это не так … ну, скажем, большую часть времени, если я копирую / вставляю строку в источнике, REPL отклоняет его, даже если это строка, которую я поставил точку останова или перешагнул.
Есть ли хорошие IDE или REPL для C ++?
Cling — это интерактивный интерпретатор C ++, построенный на основе библиотек LLVM и Clang. Его преимущества по сравнению со стандартными интерпретаторами заключаются в том, что он имеет командную строку и использует компилятор Just-in-Time (JIT) для компиляции. Многие разработчики (например, Mono в своем проекте под названием CSharpRepl) таких программных приложений называют их интерактивными компиляторами.
Одна из основных целей Cling — предоставить современную, высокопроизводительную альтернативу текущему интерпретатору C ++ в проекте ROOT — CINT. Обратная совместимость с CINT является основным приоритетом при разработке.
CINT является интерпретатором кода C и C ++. Это полезно, например для ситуаций, когда быстрое развитие более важно, чем время выполнения. Использование интерпретатора значительно сокращает цикл компиляции и компоновки, что способствует быстрой разработке. CINT делает программирование на C / C ++ приятным даже для программистов, занятых неполный рабочий день.
CINT написан на самом C ++, с чуть менее 400 000 строк кода. Он используется в производстве несколькими компаниями в банковской сфере, интегрированных устройствах и даже в игровой среде, и, конечно, ROOT, что делает его переводчиком по умолчанию для большого числа физиков высоких энергий во всем мире.
CLing должен быть независимым от Clang и способен компилироваться на любой платформе, последние работы CERN, как правило, отделяют Cling от Clang, и это хорошая тенденция.
Чего я не понимаю, так это того, что в C ++ существует Clipp, позволяющий анализировать JavaScript, встроенный в мой код C ++, и не могу найти версию Clipp только для C ++ / Boost / Eigen / Quantlib.
Еще одна вещь, которую я не понимаю, это то, почему TinyCC с размером 200ko способен без проблем проанализировать windows.h, а команда LLVM жалуется на Clang на windows.H, взрывающийся на асфальте.
В общем, с фьюжн, духом, волной и множеством людей, желающих получить C ++ REPL, почему после двух десятилетий его даже нет.
Вот мои решения
Забудьте о REPL C ++ и придерживайтесь REPL C, используйте tinyCC и предоставьте только функциональное действие метода, используя функцию указателя A.function (toto t) -> function (A *, toto t). Чтобы заставить его работать с методом объекта, вы также можете использовать объявление как struct __declspec (novtable) A {};
Это позволит совместить двоичное выравнивание между пониманием структуры tinyCC и вашим истинным объектом. Правда, вам придется разделить кортеж данных и кортеж метода, но в конце концов, это всегда должно иметь место в первую очередь. В объектном дизайне данные и метод должны быть разбиты на две модели, а не на смешанную модель, подходящую для ошибок. Во многих случаях компилятор все равно будет разбивать объект на двойную модель. Это обеспечит экстремальное быстрое прототипирование даже для ученых и пользователей Cling / Cint.
Второе решение, а не оператор REPL, использует динамическую пару загрузки / выгрузки, вы настраиваете цепочку компиляции (инкрементная сборка или нет) и автоматически перекомпоновывает скомпилированную библиотеку при изменении источника. Это совсем не медленно. Это дает преимущество в любой поддерживаемой динамической библиотечной ОС, и это очень легко сделать.
Третье решение, самый простой способ, загрузить VM на основе Linux (установить цепочку инструментов llvm) и использовать Cling на VM. Это не сработает в полной ОС Windows, но кажется, что LLVM — ненавистники ОС Windows.