CAD / CAM без C++

Возможно ли создание программного обеспечения CAD / CAM без использования C++? Моя компания разработала свое программное обеспечение на c / C++, но это было более 10 лет назад. Сегодня существует много устаревшего кода, от которого переключение заставит нас избавиться, но мне было интересно, каковы реальные риски. У нас есть множество математических алгоритмов для расчета траектории, распознавания и моделирования элементов, а также 3D-рендеринга, и мне было интересно, сможет ли C# справиться со всем этим без большой потери производительности.

Утопия - переписывать такие алгоритмы на C# или этот язык должен иметь дело только с пользовательским интерфейсом. Мы не говорим здесь о разработке игр (Halo 3 или Call Of Duty), так какой объем обработки действительно требуется CAD / CAM?

Кто-нибудь может просветить меня по этому поводу? Большинство моих коллег - заядлые программисты на C++, и хотя я программирую на C++, я люблю .NET, но мне трудно продавать им .NET, кроме базового пользовательского интерфейса. Имеет ли смысл рассматривать переход на .NET в такой области, или это просто неразумная идея?

Спасибо

Для разработки приложений CAD / CAM на C# .net см.: occwrapper.com Также для разработки веб-приложений CAD / CAM см .: creativecadtechnology.com/OCC/…

Guido van Hilst 25.04.2018 11:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
1
3 875
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Если у вас есть много устаревшего кода, который необходимо переписать, я не вижу смысла в коммерческом переходе на другой язык. Даже если бы можно было получить выгоду от использования другого языка (что сомнительно), затраты на тестирование и отладку нового кода с лихвой превзошли бы их. У вас также есть команда разработчиков, которые являются экспертами в C++. Когда они быстро освоят новый язык, их продуктивность сильно упадет.

Переписывать устаревший код нужно только в случае реального кризиса. Такой кризис, например, возникает, когда ваш основной поставщик языка / платформы собирается продвигать еще один. Этот случай может произойти, например, если Microsoft решит отказаться от инструментария C++ в пользу инструментария .NET.

Gabriel Cuvillier 21.03.2010 18:31

C# Может взаимодействовать с кодом C++. Вы можете начать писать новый код на C# и при необходимости вызывать существующий код C++. Это должно было быть не только для пользовательского интерфейса. Изучите методы C++ / CLI и C# Interop для получения информации о том, как использовать существующий код C++ с новым кодом C#.

Также я задал здесь аналогичный вопрос: Производительность C# для прокси-сервера (по сравнению с C++)

Приложения CAD / CAM довольно интенсивны в вычислениях, и скорость определенно будет одним из критериев выбора пакета, поэтому я бы с осторожностью переходил на более медленный язык.

Вам нужно очень хорошо подумать о причинах переключения языка. Это потому, что вам не нравится C++, или потому, что C# принесет реальную пользу. Это может замедлить работу вашего приложения. Ознакомьтесь со сравнением скорости C++ C#.

Тесты компьютерного языка: игра C++ vs C#

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

Я использую приложения CAD / CAM каждый день на работе, и в пользовательском интерфейсе есть ряд вещей, которые действуют мне на нервы. Это были бы простые исправления, если бы я только мог добраться до источника.

Если ваша компания создает приложение CAD / CAM с пользовательским интерфейсом, написанным на языке сценариев, который я могу настроить (Lua, Python и т. д.), Я куплю копию.

Хьюго

Debian Sempron - это не самые свежие результаты тестов на сайте игры!

igouy 21.02.2009 20:24

Еще одна вещь, которую вы должны учитывать, - это независимость от платформы - если есть вероятность, что вам / вашей компании потребуется перенести ваше программное обеспечение САПР на Linux / Unix (конечно, для бизнес-решения), это будет довольно болезненно. В настоящее время даже C++ с вызовами MFC / Win32 доставил нам много головной боли ...

Библиотека Open Design Alliance является кроссплатформенной. Недавно они представили бета-версию .NET-версии своей библиотеки. См. Мой ответ на Библиотека для рисования cad (dwg) с открытым исходным кодом на C# для более подробной информации.

Сказав, что я согласен с другими ответами здесь - если он не сломан, не исправляйте его, как код, так и кодировщики. MSFT по-прежнему использует C++, как и ODA - их кодовая база основана на C++ и обернута для .NET.

Взгляните на pythonocc. Он предоставляет вам модуль python, который обертывает ядро ​​OpenCASCADE CAD. OpenCASCADE - единственное известное мне ядро ​​с открытым исходным кодом, сильное в отрасли. Приятными особенностями являются поддержка STEP и IGES, а также возможность создавать сетки FEM из данных BRep.

Другие вопросы по теме