То, что я делал раньше при разработке научного приложения на C ++, заключалось в том, что оно будет полностью разрабатываться под консольным приложением.Консольное приложение может принимать различные типы команд с клавиатуры пользователя и выполнять соответствующие действия.Например:
image_processor > load input.png
image_processor > save out.png
Хорошо, что я могу на 100% сконцентрироваться на разработке алгоритмов, не беспокоясь о том, как вписаться в структуру GUI.Либо это MFC или QT.
В конце дня, вместо того, чтобы брать данные из потока ввода с клавиатуры, я просто подключу STDIN моего консольного приложения к каналу связи приложения GUI.После этого мое приложение с графическим интерфейсом будет использовать строковую команду для разговора и получения обратной связи от консольного приложения.
Угадайте, что я использую для разработки графического интерфейса?Java Swing
:)
Полагаю, я использую подход Unix.Посмотрите, что говорит Джоэл:
Предположим, вы берете программиста Unix и программиста Windows и поручаете каждому из них создать одно и то же приложение для конечного пользователя.Программист Unix создаст ядро командной строки или текстовое ядро и иногда, в качестве запоздалой мысли, создает графический интерфейс, который управляет этим ядром.Таким образом, основные операции приложения будут доступны другим программистам, которые могут вызывать программу из командной строки и читать результаты в виде текста.Программист Windows, как правило, начинает с графического интерфейса, а иногда, в качестве запоздалой мысли, добавляет язык сценариев, который может автоматизировать работу интерфейса графического интерфейса.
Я понимаю, что, используя Windows-подход, вы получите более user friendly
приложение.Тем не менее, если ваша главная задача - хорошо написать сложный алгоритм, а графический интерфейс - второстепенный, я бы посоветовал вам перейти на подход Unix.