PDA

View Full Version : Windows Vista, Oh no!. O Yes! C/C++ Dilema


Novak002
12-04-2006, 04:20 PM
I have programmed quite a bit GUI for my Game Engine/Editor, Im not a guru or anything pretty noobie to C/C++ comapaired to some people. But anyways I have done lotsa work on the GUI and menus.etc and then I realized with Windows Vista comming out will my GUI code be any use, Its programmed in Win32, so when I get Vista will I have to redo all my code since Win32 is no longer in use>?...

If I do please tell me what type of code ill have to change it too. And if possible link some tutorials.

Thanks...

[Why am i useing Win32 Instead of MFC?]
-Eeek, I, i... Find MFC very messy and confusing.
*Programmers Give Evil Eye*

Cronholio
12-04-2006, 06:36 PM
If your main concern is Windows programming for Vista, your best bet is to start using C#. It makes things a whole lot easier. if you are concerend about performance, you can still implement the meat of your application in C++, while using C# to do all the window management. It really does simplify things a whole lot.

mummey
12-05-2006, 06:11 AM
keep the structure of the program in C++. You be able to mostly keep the windowing code detached except when you need to call it. This will also keep your options open in case you want to port it elseware (Cocoa, SDL, Qt).

Nima-3dman
12-16-2006, 10:28 PM
so when I get Vista will I have to redo all my code since Win32 is no longer in use>?...


No major difference in your code if you donít want to use new features, Windows vista is similar to previous versions just with some differences:

- New Theme/Style (like win XP Silver rather than 98), you can donít use it if you donít want to support new Style.
- 64-bit, if you like to support 64 bit CPU you can replace some of your functions and Pointers/Variable with new ones quickly and easily (donít frighten). Otherwise continue with 32 bit as before with some small changes.
- Microsoft always support previous functions, because many people want to make a program for several versions of windows, so the differences are very small when you donít want to use new features, if you want, you can change some pieces of your codes and thatís it.
- And many more features, no need to mention here...

You are working with Win32 (now we call it Windows API), the most powerful language for windows but more complex than C# / VB,Ö so donít worry, new windows means adding new features beside previous features (at least for those versions that are still supported).
www.Microsoft.com/msdn/ is the best place to find your answers.

Nima NF

Tlock
12-22-2006, 03:20 AM
How could anyone really consider migrating to something like C# or VB.NET and even managed C++. You might as well had over your source code with your application. Obviously Microsoft doesn't consider your code worth the computer it was written with. ALL managed code can be decompile to source code! How can that not be Langauge killer.

Cronholio
12-22-2006, 06:05 AM
Have you ever actually decompiled C#? Yes it's human readable, but it's not exactly easy to pick through and reuse. Even a knowledgable programmer could end up spending weeks or months reverse engineering a moderately complex C# application that had been decompiled. Microsoft also provides obfuscation tools, and like I said earlier, you can implement critical parts of your appplication in unmanaged C++ if you like.

I used to turn up my nose at C# until I sat down and actually started using it. It's a great language, it's high performance, and it really does simplify working with Windows and Direct X a whole bunch. It's going to be the language of choice for application development on Vista, so it's deffintiely worth knowing if you want to program graphical applications on Microsoft's future operating systems.

Tlock
12-22-2006, 02:23 PM
To be totally honest i don't have any direct issues with C#, VB.NET or managed C++. I even use Visual Studio 2005 exclusively cause i just love the IDE. So i can definitely see the advantages these new langauges offer and I know i will have to breakdown and go that route or go the C++ only route, which i don't want to do.

Now since you seem like you are rather familiar with these types of discussion, do prefer C# or VB.NET. I have used both VB6 and C++ a lot, which route would take now that you have comitted to .NET?

Shanytc
12-22-2006, 03:03 PM
long live Win32API!

Tlock
12-22-2006, 03:37 PM
The problem with Win32 and GDI is that it will all sit on top of an emulator, just like 16bit apps do in the 32bit world. It seems as though .NET will be our only path to 64bit on Windows. If there are alternative please tell me i would love to know.

Shanytc
12-22-2006, 03:44 PM
the entire .net framework sits ontop of win32, .net enventually uses win32 functions for it's underlying calls.
.net is the only 'emulator' out there, and a pretty damn slow and bloated one. I could say the the same as any executable created by this (c#, vb.net).

thats why asm/win32 is the ultimate power when it comes down to real programming.

Robert Bateman
12-22-2006, 05:37 PM
the entire .net framework sits ontop of win32

no.

.net is the only 'emulator' out there, and a pretty damn slow and bloated one. I could say the the same as any executable created by this (c#, vb.net).

rubbish. Firstly, it is not an emulator. Secondly, mono exists which actually works very well on linux & win32. Thirdly, it is not slow and bloated.

thats why asm/win32 is the ultimate power when it comes down to real programming.

How much asm programming have you actually done? What do you consider to be 'real' programming exactly? Why the hell would you want to GUI code in asm?

C# is a damn good language, and possibly the best languages i've seen to date to allow you to write robust applications quickly. You also get C#, VB and JS scripting essentially thrown in for free within your apps. Now, my experiance in writing large scriptable 3D apps tells me that writing apps in C++ and Win32 takes orders of magnitude longer than doing them in C#. C# just bypasses all of the crap and lets you get down to the business of sorting out the optimisations where they are needed (as said before, you can, and probably will, be writing a C++ core and using the .NET languages to make your GUI bulletproof).

The fact of the matter is, you are far better letting the compiler take care of optimisations for you these days. The other point is that optimising code by inserting it into asm is just plain stupid. Install vtune, then go optimise you C++ algorithms. Within a couple of hours you'll have been more productive than writing any line of asm.

Now since you seem like you are rather familiar with these types of discussion, do prefer C# or VB.NET. I have used both VB6 and C++ a lot, which route would take now that you have comitted to .NET?

I prefer C#, but that's simply because i prefer the syntax. The reality is that there is little difference between the performance of the 2 anymore - you're stilling calling the core .NET funcs. I just insert all of my C++ stuff into a managed C++ class library. If you are careful about it, you can then lever the features of C# over the top of unmanaged C++ - ie, you're C++ objects become garbage collected, and you can use reflection to extract properties and generically write attribute editors etc. By compiling into a dll, you can then get access to the code provider services of VB and C# and point it at your dll. You then have a scripting interface to the core dll and you're laughing basically. It's actually shocking how easy it is to get working.....

Shanytc
12-22-2006, 05:56 PM
no.



rubbish. Firstly, it is not an emulator. Secondly, mono exists which actually works very well on linux & win32. Thirdly, it is not slow and bloated.



How much asm programming have you actually done? What do you consider to be 'real' programming exactly? Why the hell would you want to GUI code in asm?

C# is a damn good language, and possibly the best languages i've seen to date to allow you to write robust applications quickly. You also get C#, VB and JS scripting essentially thrown in for free within your apps. Now, my experiance in writing large scriptable 3D apps tells me that writing apps in C++ and Win32 takes orders of magnitude longer than doing them in C#. C# just bypasses all of the crap and lets you get down to the business of sorting out the optimisations where they are needed (as said before, you can, and probably will, be writing a C++ core and using the .NET languages to make your GUI bulletproof).

The fact of the matter is, you are far better letting the compiler take care of optimisations for you these days. The other point is that optimising code by inserting it into asm is just plain stupid. Install vtune, then go optimise you C++ algorithms. Within a couple of hours you'll have been more productive than writing any line of asm.



I prefer C#, but that's simply because i prefer the syntax. The reality is that there is little difference between the performance of the 2 anymore - you're stilling calling the core .NET funcs. I just insert all of my C++ stuff into a managed C++ class library. If you are careful about it, you can then lever the features of C# over the top of unmanaged C++ - ie, you're C++ objects become garbage collected, and you can use reflection to extract properties and generically write attribute editors etc. By compiling into a dll, you can then get access to the code provider services of VB and C# and point it at your dll. You then have a scripting interface to the core dll and you're laughing basically. It's actually shocking how easy it is to get working.....

ok, not an emulator for you, a "virtual machine" than :) which uses the msil opcodes (ewww on the same time) and yes, every application created by .net and uses it's VM is damn well slow considered to an actual "direct calls" to the hardware which is done by winApi

"How much asm programming have you actually done? What do you consider to be 'real' programming exactly? Why the hell would you want to GUI code in asm? "
I have coded, and still code in assembler, 'real prgramming' is different in everyone's eye, but to my point of view, a language that lets you have freedom in every aspect, and that, only asm can give you.
Coding GUI in asm is as easy as hell! and you can do it as fast as in every existing IDE (VS6/VS2005..etc), just because YOU don't code GUI in asm doesn't mean that it can be done in the same time.

second of all, you are most welcome to disassemble C# or any .net compiled langauge and you can enjoy the bloat and the downside of optimization.

BTW! its not a flame war, those are just points that programmers should take!

Nima-3dman
12-22-2006, 11:39 PM
The problem with Win32 and GDI is that it will all sit on top of an emulator, just like 16bit apps do in the 32bit world. It seems as though .NET will be our only path to 64bit on Windows. If there are alternative please tell me i would love to know.
32-bit programs run differently on vista, but it is very different from an emulator that you think, what you are talking is about all 32-bit programs and any language in vista, not only Windows API. It means the future is 64-bit. I think you read it somewhere from Microsoft but you thought thatís emulator.



Some other issues to note:
- Vista support both 32-bit and 64-bit, it means you can develop your programs with this new technology, For unmanaged C/C++ programming ,Microsoft now call it ďWindows APIĒ instead of using ďwin32Ē (The name Windows API more accurately reflects its roots in 16-bit Windows and its support on 64-bit Windows, refer to Microsoft MSDN)Ö

So donít tell that again windows vista is for C#, VB, win32 or anything else, you can develop your programs with all of these languages; all of them have abilities and disabilities and with one difference, you donít need to install .Net Framework on vista, because now it is supported and installed internally with better management and performance.

- I myself am not saying that Windows API can do more things, Microsoft says, but that is not enough for all programs. The time of developing is the most important part.
Many People, many companies, my friends, etc canít code with that style of programming , it is very complicated, time-consuming and difficult for developing small programs, for example developing those programs just use a database and cost only $5000 and need a lot of works. (Some companies call them Tools, others call them personal programs for offices, Not as huge as Adobe Photoshop but however it can be, and Not a cross-platform program like that)

If you donít want to develop for cross-platform, yeah, you are right, you can use C# and forget the performance (because it is not very understandable for many programs but not for all of them like developing games, you canít use C# on play station or Linux, I like to see that but Microsoft donít let us, thatís the problem)

Briefly:
-(C/C++ and Windows API):
low-level, Very powerful, the ability of migrating to other platforms , Ability to create device drivers, high performance if you use that correctly ----> but complicated and difficult for many people, time-consuming,Ö

- .NET (C# , VB):
high-level, Very powerful, simple and easy to learn, enables rapid application development----> but less control on performance rather than Windows API, the lack of cross-platform programming,Ö

Regards
Nima NF

Cronholio
12-23-2006, 12:51 AM
ok, not an emulator for you,... blah blah blah

I'm sorry but reading what you've written here I can't help but think you really don't know what you are talking about. Do you really believe what you are saying; do you expect anyone here to believe this nonsense? Opening a window and drawing some menus is not such a processor intensive task that you need direct access to the hardware. You honestly would rather sit and write hundreds maybe thousands of asm calls to draw a window and handle events rather than like half a dozen lines of C# because it might make your window draw 1 nanosecond faster, and further you want people here to believe that it's just as easy as using the any of the methods and languages provided by Microsoft? Seriously, who do you think you are talking to here? The people here know programming. It's just not possible to be productive writing Windows applications in asm, an honestly it's pure idiocy to do so.

Shanytc
12-23-2006, 06:25 AM
Cronholio,

asm has developed greatly in time, just because you never had the time learning or even checking it out doesn't mean that u can't write with it today with great speed.

"people here know programming"
right, I didn't see they don't, I just mentioned that you can today use ASM as fast as other languages. If they had the time exploring how ASM has developed in Time they would find out how amazing it has become.

"write hundreds maybe thousands of asm calls to draw a window and handle events rather "
and yet you don't know what are you talking about, now days you can write a complete basic window bone with msg handlers in like 10 lines of asm code (using resources) or max 60 lines using window creation and registration.
this doesn't looks like thousands to me.

Cronholio
12-23-2006, 09:03 AM
My last post came off a bit harsh, but I really do think it's ridiculous to suggest people use Win32 and asm at this point with all the great technology MS is providing for application programming in Vista. Honestly you keep talking about freedom, but I think there is more freedom to be had by being far more productive using modern higher level languages and tools, than by chasing imperceptible performance gains in ASM.

I've written asm for x86, and ARM, and I still inline assembly on occassion in C++. As for your 10-60 lines of code, that will get you a window that doesn't do anything. Using C# you could have a window using an accelerated graphics device displaying a piece of geometry and processing input messages in about 60 lines, and the performance difference between it and the same appication written purely in C++ or ASM will be impercetible to the end user. Now extrapolate out that to an application that actually does something meaningful. You are talking about writing code that is much more difficult to manage, much more difficult to debug, and will require many, many more lines to accompilsh the same end result. With C# you are free to use unmanaged C++ or even ASM to make optimizations where it will actually count.

Nima-3dman
12-23-2006, 09:10 PM
I donít know why you still tell your personal opinions, please read my last post. Today you canít say which programming language is better, that depends on your jobÖ
ASM is very useful and a MUST for Play Station programming but when you are talking about windows programming thatís different, as Cronholio told we can go with C#. You can use it or not, because you have many other choices.

Cronholio, you only see C# because you only see Vista or generally Windows platform. If somebody requests for migrating your codes to other platforms, then what will happen?! Yeah, so that depends on the situation. (Btw, windows API is from Microsoft and so is C#, donít forget it)

Shanytc, No need to prove it, you are doing a job that many people canít do or understand why we should do that. From view of an engineer it is a MUST for many parts of hardware programming, and absolutely it doesnít mean only Menus or GUI, far from those simple tasks that there are many easier ways for that. (Again that depends on the situation and our job, not your idea)

At the end, you all are right, but please donít think your programming language is the best. Iím a windows API programmer, but I can never say it is the best or better than other Languages. So please do it too.

Robert Bateman
12-24-2006, 04:47 AM
asm has developed greatly in time, just because you never had the time learning or even checking it out doesn't mean that u can't write with it today with great speed.

Well, i've used asm on pc, xbox, GC & ps2 *when* it has been needed, not because i chose to. These developments you talk about, are essentially macros added to provide you source that looks more like C. The argument still holds that it takes far longer to work with asm than other languages. Now, you can write an app in asm and win32 if you like - but i think you are wasting your time. Ever tried getting the code to run on linux or a ps3? There are very good reasons why we use programming languages you know....

"people here know programming"
right, I didn't see they don't, I just mentioned that you can today use ASM as fast as other languages. If they had the time exploring how ASM has developed in Time they would find out how amazing it has become.

No you can't. Write me a game engine on Ps3 in asm in the same or less time than in C++ and i might believe you. (i.e. get out of the 0x86 box you seem to be stuck in).

and yet you don't know what are you talking about, now days you can write a complete basic window bone with msg handlers in like 10 lines of asm code (using resources) or max 60 lines using window creation and registration.
this doesn't looks like thousands to me.

I know. You can do the same in about 10 lines of C# - however you'd have a complete gui with widgets and all. Once you start adding into the equation little things like robust undo mechanisms, file versioning, scripting support etc you're argument goes out of the window. There is in my opinion a huge difference between writing a single window, and writing a complete application.

second of all, you are most welcome to disassemble C# or any .net compiled langauge and you can enjoy the bloat and the downside of optimization.

Take any large scale 3D application today, and you'll notice that half of the functionality is contained within scripts that are freely available and freely modifyable by the end user. (mel in maya for example). The point you are trying to make is moot. I really don't care who dissasembles my compiled binaries - they don't need to - i'm happy to give them source code and plugin API's to access and add whatever they want to the core. Most of the speed critical stuff is still done in C++, and hell you could disassemble that in softice if you really wanted to.


Cronholio, you only see C# because you only see Vista or generally Windows platform. If somebody requests for migrating your codes to other platforms, then what will happen?! Yeah, so that depends on the situation. (Btw, windows API is from Microsoft and so is C#, donít forget it)


The C# exe's that visual studio generate can be executed under mono without re-compilation. That includes the System.Windows.Forms classes! (sounds hard to believe, but try it and you'll be suprised). There are a couple of widgets that don't run under linux, but they are the more esoteric ones. Obviously if you use DirectX, you're screwed for cross platform stuff - however you can use the opengl class libraries from the Tao framework. (and SDL/glut/gtk# libraries are available if needed). But anyway, the point is that it does run cross platform with a hell of a lot less work than with say C++.

Java is from (and owned by) Sun.
C#, C and C++ are all governed by an iso standard. C# is definately not MS only....

I'm sorry but reading what you've written here I can't help but think you really don't know what you are talking about. Do you really believe what you are saying; do you expect anyone here to believe this nonsense?

Here here! I'm just glad i don't work with him ;)

I donít know why you still tell your personal opinions, please read my last post. Today you canít say which programming language is better, that depends on your jobÖ
ASM is very useful and a MUST for Play Station programming but when you are talking about windows programming thatís different, as Cronholio told we can go with C#. You can use it or not, because you have many other choices.

I write runtime middleware for PS3 & 360. Asm is not preferable since the core libs have to be portable (and thinking you'll beat a C++ compiler at optimisation is just plain dumb - you might write less lines of asm, but that probably means you've ignored things like lack of a branch predictor, and the caching required). For everything else (ie, GUI apps over the top), you can use .NET (whether thats VB, C#, js, or managed C++ is up to you). You could use other solutions (ie, wx, win32, gtk, Qt, tcl/tk etc etc), but you are going to be hard pressed to find anything better than .NET.

At the end, you all are right, but please donít think your programming language is the best. Iím a windows API programmer, but I can never say it is the best or better than other Languages. So please do it too.

Small point, windows API is not a language.

At work, we have a large C++ framework to support the 3D applications we write - most of which is there to support attribute editors, scripting languages and GUI stuff (ie, remove everything to do with 3D graphics & animation, and you would be left with our crossplatform framework). That framework has taken a lot of people, a number of years to write (try fully binding a scripting language into your app and then you'll see why it takes time in C++).

I can get about 80% of the functionality of that framework within 500 lines of code in C# (and yes, it will still work on linux). The other 20% would probably take about 3 months. Now, i'm not going to say C# is better than C++, because that is not what i am talking about. I will instead say that the .NET framework gives you almost every library you'll ever need to write a professional standard application with minimal amount of time. It is .NET that makes C# powerful, and C# is itself designed around that framework to make programming as painless as possible.

Ultimately the code i write will always fall back onto C++ and asm, since Ps3 and 360 demand it at the moment (and probably always will do). .net is however an incredible tool to allow you to write the surrounding code with ease. It is not the answer to everything, but i do recommend that you take time to have a look at it.

Robert Bateman
12-24-2006, 05:17 AM
Just to re-iterate, the following statements are false.

If you donít want to develop for cross-platform, yeah, you are right, you can use C# and forget the performance (because it is not very understandable for many programs but not for all of them like developing games, you canít use C# on play station or Linux, I like to see that but Microsoft donít let us, thatís the problem)

C# runs on linux without re-compilation. linux runs on Ps3, therefore mono runs on Ps3, so C# does indeed work and run on Ps3. It's definately not the language of choice for writing AAA Ps3 titles (thats going to be C++ and asm for years to come). And another thing, C# is not slow!


-(C/C++ and Windows API):
low-level, Very powerful, the ability of migrating to other platforms , Ability to create device drivers, high performance if you use that correctly ----> but complicated and difficult for many people, time-consuming,Ö

Can't migrate to other platforms easily at all, even between compilers it's a royal pain in the a***.

- .NET (C# , VB):
high-level, Very powerful, simple and easy to learn, enables rapid application development----> but less control on performance rather than Windows API, the lack of cross-platform programming,Ö

It is cross platform, and if you are worrying about the performance of a button click event, i don't think the problems reside in the language.... (and actually, C# performs better at win32 coding the C++ and the windows API. It is after all what it was designed to do). You do also have full access to pointers, and an incredibly well written memory manager underpinning it. If your C++ app does not have a memory manager, i suspect you'd find that a C# port will be quicker and more robust.

Cronholio
12-24-2006, 07:20 AM
Heh, I just realised who this Robert Bateman is. Your pages on Maya API programming saved my life this last year. Thanks!

Since some people seem to think I'm some sort of C# zealot I thought I'd clear things up. I started with a variant of Basic back in the 80's moved on to C and ASM in the 90's, then C++, and just within the last few months C#. I've programmed games, applications and tools on Amiga, Mac, GBA, PS2, Linux and Windows. At my day job I use Linux, write plugins in C++, and use a bunch of MEL, Python, and some Perl. At home I play around with game development on Windows and now the Xbox 360. I do not consider myself a software engineer as I am self taught. C++ is the language I feel most comfortable with. However, after writing just a couple of small applications in C# ( which i initially completely dismissed for many of the same false preconceptions some people in this thread are expressing ) I can see C# is going to make application and game programmers far more productive and better enable them to take advantage of the latest hardware and software technology, particularly in Vista. If you've used .net at all, you'd realize this is not too subjective an opinion, C# and .net really are that good.

The original question in this thread was what should be done about migrating game and application programming to Windows Vista, not PS3, Wii, Linux, whatever. I think in that light we can say without a doubt if you are not seriously considering C# and .net for development, you are doing yourself a huge disservice. Everyone is going to have their own opinions about language is the best for whatever reason, but again we're talking about Vista development here. C# is going to be the way to go, there is no doubt at all in my mind.

StefanDidak
12-24-2006, 07:01 PM
you are most welcome to disassemble C# or any .net compiled langauge and you can enjoy the bloat and the downside of optimization.


That's what obfuscators like Dotfuscator are for. Try decompiling an assembly that has gone through that, I'd say. Given the direction of this discussion I guess I'll just put in a shameless .NET plug (http://www.stefandidak.com/pub/net3d.php) here. :)

Nima-3dman
12-24-2006, 10:19 PM
Thank you for your nice explanations.


The original question in this thread was what should be done about migrating game and application programming to Windows Vista, not PS3, Wii, Linux, whatever. I think in that light we can say without a doubt if you are not seriously considering C# and .net for development, you are doing yourself a huge disservice. Everyone is going to have their own opinions about language is the best for whatever reason, but again we're talking about Vista development here. C# is going to be the way to go, there is no doubt at all in my mind.

Yeah, 100% agree, accurate response.

why did I say that you all should talk with explanation and reasons, was because many people think they should forget some languages like C++ completely after seeing your answers and they think it is useless and superseded after vista and 64-bit (Like 20 of my friends).
So please donít worry, some of us are here to improve our knowledge or to teach something to others that donít know. These are very helpful discussions, I appreciate that you have participated.


C# runs on linux without re-compilation. linux runs on Ps3, therefore mono runs on Ps3, so C# does indeed work and run on Ps3.


Come on, Indeed if we use linux on PS3 it is not a gaming console, it is a desktop PC. You know it is different from Ps3 titles.
I appreciate it, Very clear and reasonable answers except of one thing that you mentioned below, I canít understand, could you explain it for me, please:


The C# exe's that visual studio generate can be executed under mono without re-compilation. That includes the System.Windows.Forms classes! (sounds hard to believe, but try it and you'll be suprised).


- Is it 100% safe and trusted like what we have in windows?
- Are all things supported?
- If so, why donít many new or famous companies use that for their Linux Apps? Will they? Probably there are lots of problems that many companies donít use it. Whatís the problem?
- They told that Microsoft isnít helping Novell with this project, so how are they doing that?

At the end, I wish to see .NET can be installed by Microsoft on all platforms in future (include PS, Linux, Mac), then we will have a nice world for programming. (I wishÖ)

Robert Bateman
12-25-2006, 11:59 PM
Come on, Indeed if we use linux on PS3 it is not a gaming console, it is a desktop PC. You know it is different from Ps3 titles.

Indeed. C++ isn't going away anytime soon, infact i doubt it'll disappear for a very long time indeed. Whether .NET is taken seriously for console development remains to be seen. I somehow doubt that Sony would get behind a C# toolset for the PS4...


I appreciate it, Very clear and reasonable answers except of one thing that you mentioned below, I canít understand, could you explain it for me, please:

- Is it 100% safe and trusted like what we have in windows?
- Are all things supported?


Everything is suported in mono, since it adheres to the C# iso spec. Where things get patchy is when you start looking at the classes in the Microsoft (ie, DirectX) and System.Windows namespaces (ie, the windows registry). Since these classes are very much windows specific, they are not covered in the ISO spec. Some things are supported and work well, basic widgets and windows forms for example, however caution is advisable when using those classes. The tao project does however include very reliable and easy to use cross platform dll's for OpenAL, OpenGL, SDL, Ode, DevIL, glfw, cg and glut - which can be used instead of DirectX. Gtk# also exists if you want to use cross platform GUI without using System.Windows.Forms.

The only area that can be a bit wierd, is the managed C++ side of things. Managed C++ isn't really supported as a language by mono. Mono has the restriction that if you use any C runtime classes in your managed C++ dll's, then it will not run on linux or mac. In all honesty though, that's the same as all C++ code as we well know. The process of binding unmanaged C++ into mono is different to Managed C++. There is however a nice easy solution, just ignore the MS implimentation and use mono for the windows build ...


- If so, why donít many new or famous companies use that for their Linux Apps? Will they? Probably there are lots of problems that many companies donít use it. Whatís the problem?


Havok are using it to write their dev tools at the moment - however i wouldn't expect to see app's like Maya being converted into C# anytime soon, to do so would simply be far too much effort for no net gain (it already is cross platform in C++ - if it ain't broke, dont fix it....).


- They told that Microsoft isnít helping Novell with this project, so how are they doing that?


That's a bit like saying Microsoft isn't helping to write gcc, so how can it compile C++ code? If a language has an Iso spec, you have pretty much know everything you need to write a compiler for it.

At the end, I wish to see .NET can be installed by Microsoft on all platforms in future (include PS, Linux, Mac), then we will have a nice world for programming. (I wishÖ)

Mono already works on Linux & Mac! There is a nice world for programming out there already.... ;)


why did I say that you all should talk with explanation and reasons, was because many people think they should forget some languages like C++ completely after seeing your answers and they think it is useless and superseded after vista and 64-bit (Like 20 of my friends).

C++ definately isn't going anywhere, and for any serious development you will still be using C++ for portions of the code. Adding C# into the mix just makes you more productive.

That's what obfuscators like Dotfuscator are for. Try decompiling an assembly that has gone through that, I'd say. Given the direction of this discussion I guess I'll just put in a shameless .NET plug (http://www.stefandidak.com/pub/net3d.php) here. :)

Nice article.

StefanDidak
12-26-2006, 03:22 PM
Adding C# into the mix just makes you more productive.


And that's exactly it. The area of software development has gradually, and is still increasingly, moving towards getting things quicker to the market (or an internal user base) and with every development hour having a certain cost associated with it, it is only logical to move to a development platform that supports the business aspects while not sacrificing the technical aspects.

Development of software is more demanding than in the past because of increased demands from users, increased demands for having software interface with or be compatible with certain things users expect. Wether that's a style of UI or a form of network access, it puts more demand on the entire feature set of a piece of software. The more of these little things as well as larger things a developer has to take care of, the more time is spent, the more it will cost. Minimizing that time and cost is where most of software development is headed and development platforms like .NET and C# facilitate that a lot more than if one would have to do it all in a more traditional way.

I'm currently looking into a company that has asked me to evaluate the cost factors involved in a decision between overseas outsourcing of Win32/C++ based development vs. keeping all development local to the company and moving towards .NET/C#. While each individual case would be different, this one is showing signs that both options will end up within the same budgetary frame. In that case the additive value of using existing staff on location should be a determining factor in the decision making process. While it's nice in a purist kind-of way that people would rather stick to C++ (or assembler) all the way, it's also nice to see how jobs can be saved by moving along with the times. Of course in this case I'm looking at there is no provision for outsourcing C# development... that would most definitely skew the picture. :)

CGTalk Moderation
12-26-2006, 03:22 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.