Рекомендации для языка сценариев или плагинов для математически зависимого пользовательского кодирования?

51

Я начал щедрость для этого вопроса

... потому что я действительно хочу сообщества. Я могу (и иметь) посмотрел на несколько языков/ и подумать "хорошо, это будет вероятно, хорошо работает", но я бы действительно ценят советы, основанные исключительно на проблема, с которой я сталкиваюсь, и особенно от любой, у кого есть опыт интеграции/ используя то, что вы рекомендуете.


Я работаю над программным обеспечением для научного анализа. Он предоставляет множество инструментов для математической трансформации данных. Один инструмент позволяет пользователю вводить свое собственное уравнение, которое выполняется по набору данных (большая двумерная или трехмерная матрица значений) и оценивается.

Этот инструмент имеет редактор графических уравнений, который внутренне создает дерево объектно-ориентированного выражения с другим объектом для каждой операции (например, будет экземпляр класса Logarithm, который является node в дереве для добавления вычисления логарифма значения к базе, у него есть двое детей, которые являются его входами.) Снимок экрана его части:

Изображение 674

Вы можете увидеть дерево, которое он строит слева, и несколько из многих (пятьдесят?) потенциальных операций в меню справа.

У этого есть несколько недостатков:

  • Графический редактор становится неуклюжим для сложных уравнений
  • Есть некоторые операции, которые трудно представить графически, например создание больших матриц (например, ядро ​​для свертки n x n)
  • Он разрешает только уравнения: нет ветвления или другой логики

Это было аккуратно, когда это было намного проще, но не более того, для тех вещей, которые наши пользователи хотят иметь с этим делать. Если бы я написал это сейчас, я бы сделал это совсем по-другому - и это мой шанс:)

Я хотел бы дать пользователю что-то более мощное и позволить им писать код - script или скомпилированный - который может выполнять гораздо более сложные операции. Я ищу SO совета для того, какую технологию он должен использовать или лучший подход к ней.

Остальная часть этого вопроса довольно длинная - извините. Я попытался подробно описать проблему. Заранее благодарим за чтение:)

Важные ограничения:

  • Наша математика работает с большими матрицами. В приведенном выше уравнении V1 представляет собой вход (один из потенциально многих) и представляет собой 2D или 3D, и каждое измерение может быть большим: порядка тысяч или сотен тысяч. (Мы редко вычисляем все это сразу, только фрагменты/сегменты. Но если ответ включает в себя что-то, что требует сортировки данных, обратите внимание на размер и скорость этого рассмотрения.)

  • Операции, которые мы предоставляем, позволяют писать, скажем, 2 x V, который умножает каждый элемент в V на 2. Результат - это другая матрица того же размера. Другими словами, язык сценариев или программирования, который включает стандартные примитивы математики, недостаточно: нам нужно иметь возможность контролировать, какие примитивы доступны или как они реализованы.

    Эти операции могут быть сложными: ввод может быть таким же простым, как число (2, 5.3, pi) или сложным, как 1, 2 или 3-мерная матрица, которая содержит число boolean или complex (парные значения). Мое современное мышление - это язык, достаточно мощный, чтобы мы могли раскрывать наши типы данных как классы и реализовывать стандартные операторы. Простой оценщик будет недостаточным.

    • Вместо того, чтобы просто писать операции, которые оцениваются итеративно на одном или нескольких входах для предоставления вывода, как и в настоящее время (который легко реализуется с помощью оценщика выражений), я хотел бы, чтобы пользователь мог: предоставлять выходы разных размеры к входам; для вызова других функций; и т.д. Для хост-программы было бы полезно спросить код пользователя, какая часть или фрагмент входов потребуется для оценки фрагмента или части вывода. Я думаю, что разоблачение некоторой части наших классов и использование языка OO, вероятно, лучший способ достичь этих целей.
  • Наша аудитория - это прежде всего ученые-исследователи, которые либо не используются для кодирования, либо, вероятно, используются для языка, такого как Matlab или R.

  • Мы используем Embarcadero С++ Builder 2010для разработки, с небольшим количеством Delphi. Это может ограничивать то, что мы можем использовать - просто потому, что что-то С++, скажем, не означает, что оно будет работать, если оно будет кодироваться только против VС++ или GCC. Он также должен быть подходящим для использования с коммерческим программным обеспечением.

  • Наше программное обеспечение в настоящее время имеет COM-интерфейс, и часть приложения может быть автоматизирована с нашим приложением, являющимся COM-сервером вне процесса. Мы могли бы добавить COM-интерфейсы к некоторым внутренним объектам или, если потребуется, сделать вторую COM-инфраструктуру.

  • "Инструменты", включая этот, переносятся в многопоточную среду. Конечное решение должно быть выполнено в любом потоке, а несколько экземпляров его во многих потоках одновременно. Это может повлиять на время выполнения размещенного языка - Python 2.x, например, имеет глобальную блокировку.

  • Было бы здорово использовать язык, который поставляется с библиотеками для математического или научного использования.

  • Обратная совместимость со старым инструментом выражения не важна. Это версия 2: чистый сланец!

Текущие идеи:

  • RemObjects Pascal Script и DWScript - языки, легко связываемые с TObject -уложенными классами. Я не знаю, можно ли обеспечить перегрузку оператора.
  • Хостинг .Net runtime и загрузка С# (скажем) основанных DLL в качестве плагинов. Мне нравится эта идея: я видел, как это делается там, где хост-программа предоставляет синтаксический ярлык, отладку и т.д. Я понимаю, что это было огромное количество кодирования. Это позволило бы использовать IronPython и F #.
    • RemObjects Hydra выглядит интересным способом достижения этого. К сожалению, он рекламирует себя для Delphi, а не С++ Builder; Я изучаю совместимость.
  • Хостинг что-то вроде Python, который можно выполнить из RAD Studio
  • Предоставление BPL-интерфейса и предоставление пользователям кода непосредственно против нашей программы, если они купят копию RAD Studio (т.е. предоставить интерфейс плагина и разоблачить классы через интерфейсы; возможно, потребуется, чтобы плагины были скомпилированы с бинарно-совместимой версией наша IDE)
  • ...

Спасибо за ваш вклад! Я ценю все ответы, даже если они не совсем идеальны - я могу исследовать, я просто после указаний о том, куда идти, и мнениях (пожалуйста, мнения по причинам, включенным в ответ: p) о том, как подойти к нему или что может быть пригодным. Каждый ответ, каким бы коротким он ни был, будет оценен. Но если вы рекомендуете что-то подробно, а не просто "используете язык X", мне будет очень интересно его прочитать:)

Приветствия,

Дэвид

Обновление:

До сих пор было рекомендовано следующее:

  • Python: 2.6 имеет глобальную блокировку, которая звучит как игровой убийца. 3 (по-видимому) еще не имеет широкой поддержки от полезных библиотек. Это звучит для меня (и я знаю, что я сторонник сообщества Python), как будто он фрагментирует бит - действительно ли это безопасно?

  • Lua: кажется, не является прямым OO, но предоставляет "мета-механизмы для реализации функций, а не предоставляет множество функций прямо на языке" . Это звучит очень круто с точки зрения программиста, но это не нацелено на программистов, которым нужно поиграть с крутыми вещами. Я не уверен, насколько хорошо это будет работать с целевой аудиторией - я думаю, что язык, который обеспечивает более основанные основы, будет лучше.

  • MS script/ActiveScript. Мы уже предоставляем внешний COM-интерфейс, который наши пользователи используют для автоматизации нашего программного обеспечения, как правило, в VBScript. Тем не менее, мне нужен более мощный (и, откровенно говоря, лучше разработанный) язык, чем VBS, и я не думаю, что подходит JScript. Я также не уверен, какие проблемы могут быть связаны с данными по COM - у нас есть много данных, которые часто очень точно печатаются, поэтому важны скорость и сохранение этих типов.

  • Lisp: Я даже не думал об этом языке, но я знаю, что у него много поклонников.

  • Хостинг. Чистые плагины: никто не упоминается. Разве это не хорошая идея? Вы получаете С#, F #, Python... Есть ли у него такие же проблемы с сортировкой COM? (Ходит ли CLR работать через COM?)

Несколько пояснений:по "матрице", я имею в виду матрицу в смысле переменной Matlab, т.е. огромную таблицу значений - не, скажем, матрицу преобразования 4x4, как вы могли бы использовать для программного обеспечения 3D. Эти данные собирались с течением времени, тысячи и тысячи значений часто много раз в секунду. Мы также не после системы компьютерной алгебры, но что-то, где пользователи могут писать полные плагины и писать свою собственную математику - хотя система, обладающая способностью обрабатывать сложную математику, как система компьютерной алгебры, может быть полезна. Я бы взял "полный язык" над "алгеброй", хотя, если они не смешиваются, чтобы разрешить сложные ветки/пути в коде пользователя, а также интерфейс OO.

  • 1
    если честно, звучит очень похоже на matlab: mathworks.com/products/matlab
  • 1
    хороший вопрос: O
Показать ещё 6 комментариев
Теги:
plugins
design

12 ответов

18
Лучший ответ

В соответствии с вашими потребностями, вот несколько рекомендаций:

  • Сделайте различие между языком и библиотекой - вы можете иметь математические языки (например, MATLAB) или математические библиотеки, выписанные с языка высокого уровня (например, Python);
  • Язык (или библиотека) должен быть разработан математиками для математиков;
  • Используемый язык должен быть уже существующим (не изобретать велосипед);
  • Вы должны иметь возможность обмениваться контентом script с существующим программным обеспечением;
  • Вы не должны начинать такой сложный проект (математический скриптинг) с нуля.

Итак, я думаю, это может уменьшить список кандидатов:

  • JavaScript не был разработан (не используется) для такого использования;
  • Сценарии Delphi (DWS или PascalScript) были сделаны главным образом для автоматизации, а не для вычисления (и широко используются);
  • Я не знаю, почему вы говорите об использовании Delphi IDE в клиентском приложении, но вы не должны использовать Delphi IDE для такой проприетарной разработки: примитивная пользовательская IDE будет более продуктивной, чем полная RAD;
  • Lua, возможно, следует учитывать: вы можете сделать все, что хотите, с помощью этого механизма script, но нет огромного сообщество математиков, использующих Lua, в отличие от Python...

В мире с открытым исходным кодом вы можете найти много очень интересных решений. См. http://blog.interlinked.org/science/open_source_math_programs.html

Я думаю, что Octave можно было бы рассмотреть. Это простой, мощный, зрелый, хорошо известный, используемый многими программными средствами и кросс-платформой.

Насколько я знаю, вы можете вызывать библиотеку Octave из кода C/С++. Это можно сделать из Delphi IMHO после перевода связанных файлов .h.

Но имейте в виду лицензию GPL. Если ваше программное обеспечение является собственностью, невозможно распространить Octave как часть вашего программного обеспечения. Но вы можете назвать библиотеку Octave или любые другие материалы GPL (например, Python) из вашего программного обеспечения, если вы четко различаете ваше программное обеспечение и программное обеспечение GPL.

Внедрение Python может быть хорошим решением. Этот язык можно вызывать из Delphi, и у вас должна быть хорошая архитектура без необходимости прямого вызова некоторых библиотек C, таких как Octave. Python может быть вашим основным затвором для всех других библиотек вычислений, из вашего приложения Delphi. Например, Octave можно вызывать из некоторых библиотек Python. И вы также можете использовать скрипты Python для автоматизации своего приложения. И у вас есть Python IDE в Delphi вокруг. Конечно, лицензия с открытым исходным кодом для каждого компонента является безопасной. Чем больше я думаю об этом, тем больше мне нравится это последнее решение...

Просто мои два цента.:)

  • 0
    Спасибо. Буше! Похоже, Python это хорошо. Есть ли у вас опыт его использования или привязки к нему классов и т. Д.? Есть ли какие-либо проблемы с лицензированием открытого исходного кода? Насколько легко подключиться к его отладке, чтобы мы могли предоставить пользователям примитивную среду разработки? Что касается Delphi IDE, то его стоимость невелика по сравнению со стоимостью нашего программного обеспечения, поэтому, если они захотят разработать, мы можем сказать «использовать эту IDE», предоставить шаблон плагина, и они получат что-то полнофункциональное.
  • 0
    Я использовал его несколько лет назад, и он работал, как и ожидалось, но я не являюсь здесь экспертом - в SO есть несколько связанных вопросов. По поводу лицензии, обратитесь к юристу вашей компании: здесь нет места "личной догадке". Об IDE см. Code.google.com/p/pyscripter (выпущенный под лицензией MIT). Использование Delphi IDE является слишком большим IMHO для вашей цели.
Показать ещё 14 комментариев
7

Нет окончательного ответа, но несколько других предложений: -

  • Посмотрите на LMD Innovative ScriptPack, который поддерживает собственные скрипты Pascal, а также языки на основе ActiveScripting. Предостережение: Я использую много инструментов и компонентов LMD, но я лично не использовал Scriptpack.

  • LMD также имеет пакет IDE-Tools, который может действительно упростить задачу создания простого пользовательского инструмента "RAD", если вам нужно пройти этот маршрут

  • Еще одно голосование за Луа. Я использовал Lua как язык script в приложениях С++ Builder2010, и он работает хорошо. Вы можете использовать С++ Builder/Delphi RTTI, чтобы помочь интеграции между Lua script и вашим кодом на С++.

Re. Lua: У нас есть продукт, который в течение многих лет обладал ультрасовременной "домашней" скриптовой системой. Нет циклов, условностей или процедур - просто последовательность параметризованных команд. Мы хотели распространить это на что-то более мощное, и выбор стороннего решения казался намного меньше боли, чем изобретать колесо. Основными причинами выбора Lua для этого были: -

  • Fast
  • Опубликованные книги доступны (Программирование в Lua)
  • Написано на C
  • Непосредственно встраивается в наш проект с помощью статической компоновки
  • Лицензия MIT
  • Код С++ может вызвать вызов кода Lua и получить доступ к переменным Lua
  • Код Lua может вызывать функции С++
  • Малый размер развертывания. Lua и стандартные библиотеки, добавленные до 200K в наш .EXE, перед сжатием.

Я уверен, что другие языки могли быть одинаково хорошими, но это был "легкий" характер Lua, который опрокинул его для меня.

  • 0
    Спасибо, Родди. Полностью родной язык скомпилированных скриптов звучит хорошо! И их инструменты IDE также выглядят полезными. Я не знаю много о Lua: что это за язык, который заставляет вас его рекомендовать?
  • 0
    @ Дэвид М: обновленный ответ :-)
Показать ещё 1 комментарий
5

С Python вы получите NumPy и SciPy "бесплатно". Да, есть GIL, но он активен только тогда, когда ваш интерпретатор Python запускает несколько потоков. Я считаю, что вы можете запускать несколько хостов Python в отдельных потоках без проблем (не пробовал, думал).

Кроме того, есть такие вещи, как multiprocessing.

Python 3 все еще ловит, NumPy начал поддерживать Python 3 в версии 1.5.0, а SciPy запустила поддержку в версии 0.9.0, Кроме того, GIL все еще с Python 3, хотя он был переделан, поэтому он должен быть лучше. Также NumPy освобождает блокировку во время операций.

  • 0
    NumPy и SciPy выглядят очень полезными. Это именно та библиотека, которую я надеялся найти - у вас должно быть больше, чем одно возражение, которое я могу вам дать :) Я думаю, что несколько хостов Python в отдельных потоках могут быть способом избежать GIL.
  • 0
    Оформить заказ также matplotlib, библиотека черчения, рекомендованная SciPy: matplotlib.sourceforge.net
5

Мне нравятся многие ответы там и, ну, я предвзятый разработчик Delphi:), но я бы предложил вам использовать комбинацию: RO Pascal Script + ESBPCS для VCL.

Я не знаю, похоже ли это на тебя, но я бы от него пошла.

На веб-сайте я извлек эту ссылку о матричной не визуальной части библиотеки. Есть еще много, вы можете захотеть отдать это!

  • 0
    Привет @ Андреа - спасибо за ваш ответ. Я думаю, что ESBPCS, вероятно, нацелен на матрицы гораздо меньшего размера, чем у нас ... также, возможно, немного другое использование термина «матрица». В основном мы имеем в виду большие сетки (если это было в Excel) или таблицы чисел, а не матрицы, используемые для преобразований или «стандартную» матричную математику.
  • 0
    Привет, Дэвид, я понятия не имею, каковы твои точные требования ... возможно, лучший способ выяснить это спросить их :)
4

Никто не упоминал PaxCompiler, который может скомпилировать Pascal, Javascript и Basic в собственный код и может быть легко настроен для доступа к объектам в ваших проектах Delphi, Он имеет много преимуществ:

  • Скомпилированный код будет работать быстрее, чем интерпретироваться
  • Он предоставляет 3 разных языка программирования, чтобы почти любой разработчик мог чувствовать себя как дома.
  • Как разработчик Delphi, у вас есть доступ к исходному коду, и он тесно интегрирован с вашим проектом.
  • Цена очень интересная.

Недостатки и проблемы для популярного проекта:

  • Удостоверьтесь, что 3 языка обрабатываются одинаково: из моих тестов, похоже, что JavaScript отстает по объему образцов
  • Если вы решите объединить все 3 языка программирования, вы можете предоставить почти все свои образцы на всех языках, и вам будет необходимо поддерживать все три из них.
  • 0
    Спасибо, @Джон! Я не уверен, что Javascript или VBScript хорошо подходят для математического / сценарного программирования, поэтому я был бы рад выбросить их и просто поддержать Pascal. Есть ли у вас опыт его использования? FAQ беспокоит меня , похоже, что в нем отсутствуют некоторые функции (например, ручная привязка к перегруженным виртуальным функциям требует много усилий).
  • 1
    Я не уверен, что понимаю, какой язык должен хорошо подходить для математического / научного программирования, и что отличает Pascal от JS или VB в этом вопросе, но это ваш вызов. Что касается PaxCompiler, я бы посоветовал попробовать, так как это действительно хорошо. Я был похож на вас, и мне было страшно за сайт / поддержку, но когда я связался с ними по электронной почте, я получил быстрые и хорошие ответы. В настоящее время я разрабатываю приложение на его основе, и пока проблем нет: с последней версией Delphi вы можете позволить целым объектам быть доступными из скрипта с несколькими строками кода благодаря RTTI.
4

Поскольку вам нужен ориентированный на математику язык сценариев, могу ли я рекомендовать вам взглянуть на Common Lisp. Это диалект LISP, который был первоначально разработан как обычное математическое обозначение для компьютерных программ. Системы компьютерной алгебры, такие как Maxima и Axiom записаны в Common Lisp. Наиболее заметная реализация Common List ECL, которая выпущена под лицензией LGPL. Конечно, есть много других реализаций с открытым исходным кодом.

Также есть интерпретатор GNU Guile для языка программирования Схемы (диалект Lisp). Их сайт утверждает, что

Guile - эффективная виртуальная машина, которая выполняет переносимый набор команд, созданный его оптимизирующим компилятором, и очень легко интегрируется с кодом приложения C и С++. В дополнение к Scheme, Guile включает в себя компиляторы для ECMAScript и Emacs Lisp (поддержка Lua продолжается)...

Однако, я никогда не использовал эту библиотеку самостоятельно, поэтому я не могу гарантировать, насколько легко было бы встроить ее в ваше приложение.

  • 0
    Я даже не думал о Лиспе! Интересно, что в другом ответе также упоминается Maxima ... мы не столько за компьютерной алгеброй, сколько с полным языком, но Lisp - интригующая возможность. Нам нужно что-то, что может быть включено в коммерческое (не ОС) программное обеспечение. Еще спасибо за ответ, посмотрю!
  • 0
    @ Давид, По условиям LGPL, вы можете использовать библиотеку в коммерческом продукте! Вот почему ECL является хорошей альтернативой.
4

Я бы предложил Lua. Это один из самых используемых скриптовых языков, есть множество инструментов, таких как отладчики, редакторы с подсветкой синтаксиса и т.д., Многие люди использовали его, это один из самых быстрых языков сценариев, который вы можете легко подключить к ac/С++ engine. Очень легко расширить C-функции (особенно если вы используете LuaJIT плюс FFI). В lua нет действительно хорошего способа многопоточности, но вы можете легко запускать несколько экземпляров lua в отдельных потоках, чтобы запускать несколько сценариев.

  • 0
    Привет, Симон! Спасибо за ответ, а также за конкретную работу с многопоточностью :) Один из других ответов также рекомендовал Lua. Я не знаю много об этом: легко ли читать / писать, если вы не привыкли к программированию? Вы можете создавать / использовать классы? Вы говорите, что можете расширять функции C в него, но насколько легко представить класс C ++, чтобы дать интерфейс OO?
  • 2
    Независимо от того, какой язык сценариев вы выберете, вы, скорее всего, можете использовать SWIG для предоставления ему классов C ++. (SWIG поддерживает Python, TCL. Lua и т. Д.)
Показать ещё 2 комментария
4

Мы успешно использовали автоматизацию Microsoft script (активные скрипты). В основном вам нужно реализовать хост, который будет запускать скрипты. Скрипты могут быть записаны на любом языке, который установлен на текущем компьютере. Мы используем JavaScript для наших скриптов, но вы не ограничиваетесь этим. Существует много script реализации (даже python).

С вашей стороны вам придется предоставить фреймворк для script для запуска. Не простой, но с базовым пониманием COM это тоже не сложно. Существуют версии, сделанные для Delphi. Здесь есть несколько ресурсов: http://www.torry.net/pages.php?id=280, но вы можете найти ресурсы по всему миру.

Удачи!

  • 0
    Спасибо за ответ. Я думаю, что надеялся на что-то более сложное или тесно интегрированное, чем сценарии MS - мы фактически уже поддерживаем это для внешней автоматизации нашего программного обеспечения. Я не уверен, насколько он подходит (особенно языки по умолчанию, JScript и VBScript) для использования наших внутренних классов, передачи больших объемов данных (они связаны с запозданием, не так ли?) И т. Д. Спасибо, хотя и я посмотрю на это!
3

GIL на python не должен быть showstopper, поскольку его существование не означает, что ваше приложение не может выполнять многопоточность. Правда, вы не можете использовать все ядро ​​ЦП, доступное в системе, но опять же, это повлияет только на то, если большая часть вашего кода была написана на python. Ваше приложение будет содержать код Python правильно? и те script будут интенсивно вызывать математические процедуры, доступные в хост-приложении. Это означает, что все еще есть много возможностей для выпуска и удержания GIL на вашем приложении, чтобы минимизировать его побочный эффект, и вы будете в порядке.

  • 0
    Если я вас правильно понимаю, вы имеете в виду, что GIL удерживается только при выполнении кода Python и освобождается при выполнении библиотеки C или кода обратного вызова?
  • 0
    правильно, вы можете освободить и удерживать GIL непосредственно перед и после выполнения задачи в собственном коде (в C или Delphi).
3

Вы упомянули, что аудитория, вероятно, используется для R. Вы должны взглянуть на интеграцию своего продукта с R, либо в качестве расширения R, либо для вызова R из вашего продукта. См. Написание R-расширений. Таким образом, вы можете использовать R-мощность и пользователей, знакомых с R.

  • 0
    R потенциально очень удобен. Я не использовал это много и понятия не имею о его скорости с большими объемами данных. К сожалению, это GPL, что, я думаю, означает, что мы не можем ссылаться на него (как мы могли бы с LGPL?)
3

Мои идеи:

  • 0
    Интересно. Я думаю, что вы правы в отношении скорости Mathematica, но здорово иметь возможность генерировать такой код F #!
  • 0
    Если вы создадите LISP-компилятор в F #, вы можете запустить через него движок MACSYMA / MAXIMA lisp и в конечном итоге получить F # algebra / math engine.
3

Я предлагаю вам заглянуть в оболочку GUI на основе wx (С++) вокруг классической математической программы с открытым исходным кодом под названием Maxima, которая называется wxMaxima в Windows. Однако это лицензия GPL, а не LGPL, поэтому производные работы также должны быть открытыми.

Вы должны иметь возможность использовать это приложение и его механизм алгебры, и, возможно, вы могли бы написать свою собственную оболочку Delphi для этого С++ UI вокруг механизма MACSYMA/MAXIMA (LISP). Исходный код для их системы включает в себя несколько вещей, которые вы, возможно, захотите также обернуть и предоставить в качестве службы:

  • Способ кодирования математических уравнений в формат отображения, из введенного пользователем формата, который хорошо определен и который затем может быть документирован.

  • Простой "язык", который вы могли бы использовать для составления ваших инструментов уравнения WYSIWYG.

Maxima может обрабатывать графики, матрицы, линейную алгебру и базовые вычисления, а двигатель - сплошной.

Так как вы уже много чего делаете на С++, я бы подумал о том, чтобы сделать вашу WHOLE APPLICATION с помощью wxWidgets, используя wxMaxima в качестве базы. Я не уверен, что вы можете делать гибриды wx + VCL в С++ Builder, но вам обязательно нужно попробовать. Если вы не можете, я бы сказал, сделав основное приложение в VС++ с помощью wxWidgets и создав для него плагины в Delphi (как библиотеки DLL).

Изображение 7764

  • 0
    П: интересный ответ, спасибо! Я не сталкивался с этим раньше. Его способность рисовать графики и т. Д. Также потенциально полезна. (Кстати, написание всего приложения на wxWidgets может быть полезно для будущей кроссплатформенной совместимости, но ... приложение имеет пятнадцатилетнюю базу кода, сотни тысяч строк кода и очень укоренилось в VCL. Возможно для нашей следующей версии: p)
  • 0
    Вы уверены, что у него есть «движок на C ++»? Википедия считает, что написано на Common Lisp .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню