Возможно, вы уже видели Брет Виктор «живой» JS IDE, или некоторые из альтернативные реализации оно вдохновляло, распространяясь на другие языки, но все же сохраняя его на основе виртуальных машин.
Вчера, однако, я наткнулся на та же концепция, применяемая в старом добром C ++, благодаря LLVM. Все еще очень ранняя и незрелая реализация, но с большим потенциалом.
Мне было действительно любопытно реализовать, однако автор имеет и может не выпустить его в открытую.
Поэтому мой вопрос: знает ли кто-нибудь ресурс о том, как реализовать аналогичную функциональность, я имею в виду почти мгновенную компиляцию и два соединения, дающих обратную связь кода в реальном времени, позволяющую визуальной части изменять или даже генерировать и предварительно просматривать дополнительный код?
Основанный на clang интерпретатор C / C ++ под названием «Cling» может быть важной частью кода. Посмотрите, как это можно использовать для создания GUI в режиме реального времени: http://www.youtube.com/watch?v=BrjV1ZgYbbA
Linux: Если кому-то нужен наивный способ тестирования быстрого кода C / C ++ практически в реальном времени, вы можете использовать этот фрагмент кода, который я собрал:
#!/bin/bash
#Requires: inotify-tools
################################
# Adjust values:
terminal="xterm"editor="vim"compiler="clang++"################################
if [[ $1 == "" ]]; then
echo "Usage: $0 example.cpp";
exit
fi
file_to_edit=$1
file_output=${file_to_edit%%.*}
(while(true); do
change=$(inotifywait -q -e close_write,moved_to,create .);
change=${change#./ * }
if [ "$change" = "$file_to_edit" ]; then
($compiler $file_to_edit -o $file_output);
fi
done) & > /dev/null
$terminal -e "watch -n 1 ./$file_output" &
$editor $file_to_edit;
pkill -P $$
ПРИМЕЧАНИЕ. Для этого требуется пакет «inotify-tools».
Как это работает?
1) Он откроет терминал (по умолчанию: xterm), в котором каждую секунду будет выполняться двоичный файл с помощью команды ‘watch’ (если файл не существует, он просто отобразит ‘not found error’)
2) Если ваш код C / C ++ изменится, он скомпилирует его (компилятор по умолчанию: clang ++, но вы можете использовать gcc и т. Д.). Вы можете изменить команду компиляции, если хотите: $compiler $file_to_edit -o $file_output
3) Откроется файл с выбранным вами редактором (по умолчанию vim).
4) При выходе закроют терминал и процесс мониторинга.