What programing language was Revit written in? Was the whole thing written in C++? Or was it written in multiple languages (C#, VB, C++) and the .NET runtime. I was just curious.
|
|
|
What programing language was Revit written in? Was the whole thing written in C++? Or was it written in multiple languages (C#, VB, C++) and the .NET runtime. I was just curious.
While I don't work for the factory, an application that complex would have to be developed with C++.
HTH,
From talking to folks in the past that work at the Factory, I've heard that this is true. It's all in C++. Anyone from the factory wanna chime in about this?Originally Posted by Danny Polkinhorn
Well, provided that all our job openings ask for C++, it seems pretty public...
Could Revit be written in C# and still perform as well? I'm not trying to pry into the inner workings of Revit. I'm just amazed at Revits capabilities. I know C++ fairly well and have made numerous programs in the past that I still use today. Lately I have been learning C# as a hobby. I can do almost anything I want in C++ but I can do the same things faster in C#. I guess I was curious why they (the factory) chose one language over another. Should I not bother learning C# and stick with C++? Is C# just as capable as C++ in respect to writing Windows programs on par with Revit? I guess I am asking here because you the programer deal with this stuff all day and it seams there is no better source to hear insight from.
The choice between the two particluar languages may have to do with that C# did not exist eight years ago.
As far as your work... it depends on what you want to do. Every programming language can do everything that every other programming language can, but some languages are more suited for some tasks.
Why would C++ be more suited to make a program like Revit vs C#? I hate to bomb you with questions? I'm trying to soak in some of your wisdom and experience. Thanks for answering my questions. I really appreciate your time.
C# is very young, so implementing something like Revit on it is life on the bleeding edge. I'd expect unexpected performance problems.
There was a conversation a while ago about what would be the perfect language for Revit. I say LISP. Seriously.
The only languages that were given serious consideration were C, C++, and JAVA. In 1998 there was still a lot of talk about JAVA taking over the world but we weren't swayed by the hype. There were some aspects of C++ that weren't that mature at the time, but we decided that the best choice was C++ with some restrictions on how we used it. C# didn't exist at the time.
I actually knew of a CAD system that was written in LISP. It had various performance problems such as starting to do garbage collection in the middle of some interactive operation. The original developer told me he wouldn't use LISP if he were doing it over again, despite the fact that it was often very productive for the programmers. I don't know how far LISP has advanced since then. I doubt that an application like Revit could get good enough performance on today's hardware without explicit control of memory allocation and deallocation (which you have in C and C++, but not in JAVA and LISP).
To disambiguate: there was a conversation a while ago on this forum about which language would have been perfect for Revit. That's separate from the actual choice of language that Irwin is talking about.
To be fair, the .net environment and C# should be thrown in with the other garbage-collecting languages. Since LISP is 10 times older than C#, if garbage collection plagues LISP, it is pretty much guaranteed to plague C# too. Microsoft isn't afraid of rewriting pieces of Windows in .net though.
Anyway, it's all hypothetical, and there are too few data points to make an educated judgement. In C++ you get better performance by managing your own memory, but on today's screamer hardware, aren't you better off optimising bottlenecks in your code instead? Does the experience of a CAD application translate well to Revit, and did that guy just fail to figure out how to optimise LISP code? I don't know.