Domanda

È possibile eseguire software CAD / CAM senza utilizzare C ++? La mia azienda ha sviluppato il proprio software con c / C ++ ma è stato più di 10 anni fa. Oggi, c'è un sacco di codice legacy di cui il passaggio ci costringerebbe a sbarazzarci, ma mi chiedevo quali fossero i rischi reali. Abbiamo molti algoritmi matematici per i calcoli del percorso utensile, il riconoscimento e la simulazione delle funzionalità e il rendering 3D e mi chiedevo se C # potesse gestire tutto ciò senza grandi perdite di prestazioni.

È un'utopia riscrivere tali algoritmi in c # o quel linguaggio dovrebbe occuparsi solo dell'interfaccia utente. Non stiamo parlando di sviluppo di giochi qui (Halo 3 o Call Of Duty), quindi di quanta elaborazione ha realmente bisogno CAD / CAM?

Qualcuno può illuminarmi su questa questione? La maggior parte dei miei colleghi sono programmatori hardcore C ++ e sebbene io programmi in c ++ adoro .NET ma non riesco a vendere .NET a loro diverso dall'interfaccia utente di base. Ha senso considerare di passare a .NET in questo campo, o non è un'idea saggia?

Grazie

È stato utile?

Soluzione

Se hai un sacco di codice legacy che dovrebbe essere riscritto, non vedo che sia logico passare a un'altra lingua. Anche se si dovessero ottenere vantaggi dall'uso di una lingua diversa (il che è discutibile), i costi di test e debug del nuovo codice sarebbero più che superati. Hai anche un team di sviluppo che sono esperti in C ++. Ci sarebbe un grande calo di produttività mentre arrivavano ad accelerare la nuova lingua.

Altri suggerimenti

C # Può interagire con il codice C ++. Puoi iniziare a scrivere nuovo codice in C # e farlo chiamare codice c ++ esistente quando necessario. Non dovrebbe essere solo per l'interfaccia utente. Esaminare i metodi di interazione C ++ / CLI e C # per informazioni su come utilizzare il codice c ++ esistente con il nuovo codice C #.

Inoltre, ho posto una domanda simile qui: Performance C # per server proxy (vs C ++)

Le applicazioni CAD / CAM richiedono un calcolo piuttosto intenso e la velocità sarà sicuramente uno dei criteri per la selezione di un pacchetto, quindi diffiderei di passare a un linguaggio più lento.

Devi riflettere attentamente sui motivi per cambiare lingua. È perché non ti piace il C ++ o perché C # porterà vantaggi reali. È molto probabile che rallenti l'applicazione. Dai un'occhiata ai confronti di velocità C ++ C #.

Benchmark linguistici computerizzati Gioco C ++ vs C #

Secondo la mia modesta opinione, sarebbe meglio mantenere tutti i calcoli del percorso utensile in C ++ e se davvero devi spostare qualsiasi codice in un'altra lingua, spostarlo in un linguaggio di scripting che l'utente può facilmente modificare, senza ricompilare.

Uso applicazioni CAD / CAM ogni giorno al lavoro e ci sono diverse cose nell'interfaccia utente che mi fanno innervosire. Sarebbero semplici soluzioni se solo potessi arrivare alla fonte.

Se la tua azienda crea un'applicazione CAD / CAM con un'interfaccia utente scritta in un linguaggio di scripting che posso modificare (Lua, Python ecc.), ne comprerò una copia.

Hugo

Dai un'occhiata a pythonocc . Fornisce un modulo Python che avvolge il kernel CAD OpenCASCADE. OpenCASCADE è l'unico kernel open source di cui sono a conoscenza. Funzionalità interessanti sono il supporto STEP e IGES e la possibilità di generare mesh FEM dai dati BRep.

Un'altra cosa che devi considerare è l'indipendenza della piattaforma: se esiste la possibilità che la tua azienda debba migrare il tuo software CAD su Linux / Unix (ovviamente, per decisione commerciale), sarà piuttosto doloroso. Attualmente, anche il C ++ con chiamate MFC / Win32 ci ha dato molti mal di testa ...

La libreria Open Design Alliance è multipiattaforma. Di recente hanno introdotto una versione beta della versione .NET della loro libreria. Vedi la mia risposta alla Libreria open source cad drawing (dwg) in C # per maggiori dettagli.

Detto questo, concordo con le altre risposte qui - se non è rotto, non aggiustarlo, sia il codice che i programmatori. MSFT usa ancora C ++, così come ODA - la loro base di codice ha origine in C ++ & amp; è racchiuso in .NET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top