Programming Languages - Antony - Asking for advice

From: Antony
To: Martin Baker
Subject: Asking for advice.
Date: 16 August 2002 23:13

Dear Sir,
After visiting your site I took the courage to e-mail you and ask for your advice and opinion.
I am currently trying to decide whether I should learn C or C#.Having read quite a lot for both languages, I have reached a certain state in which I must choose,for the time being,one to proceed more thorougly.You are going to ask why am I not learning C++?After carefull consideration,some reading did occured,I found C++ two complex and in many cases dangerous when building a program, since you can mess up with memory.Not that you cannot mess up with C but it is more stable and easy.I realize the C is a structure language and C# an object oriented but nevertheless I would like to hear your opinion.
My primary use of either language is going to be 3D Programming.This means construction of a 3D Engine or the tweaking of an already made one like Unreal or Quake III.However I would like to have the ability to use the language for other jobs that are not game oriented since you never know what might arise ahead.So I do asking from you your opinion about the marketability of C and C#.
I realise that my e-mail is quite long and I am apologizing in advance,but after visiting your site I knew that i could ask and receive a professional responce.
I am looking forward in hearing from you.


Yours Sincerely,
Antony.


From: Martin Baker
To: Antony
Subject: Re: Asking for advice.
Date: 17 August 2002 09:58

Hi Antony,

Seems like you are already aware of most of the issues, but here are some
thoughts.

I don't have any experience with Unreal or Quake III ,but I suspect you
would be better off learning C, for the construction of a 3D Engine.

C# does not directly support OpenGL or DirectX yet (until DirectX 9 is
released) . There are some ways to do this indirectly, but if you want to do
low level programming of a 3D engine these may not be very appropriate.

Personally I much prefer writing software with modern object oriented
languages like Java and C# but they can have problems for low level
real-time programming (such as performance issues when interpreting
intermediate code, garbage collection and lack of low level interfaces). So
I accept that C may be better for this type of program.

I don't know much about the wider programming job market, I get the
impression that Java or C# skills would be much more marketable for
commercial work such as programming web services.

Martin


From: Antony
To: Martin Baker
Subject: Final decision.
Date: 17 August 2002 14:26

Dear Sir,
After reading through your e-mail I realized that C# is better in general.My primary concern is that C is very old thus difficult to find job with it.Since many companies are jumping to OOP languages what chance will I have if my job description reads only C.
I agree that C might be better for 3D Engines but even as we speak many companies are building their engines with newer languages.I cannot stress you how fustrated I am about either choosing C or C#.Let me be honest.The game industry is changing by the minute.In one moment you had a job and the next you dont because of cut backs.Who tells me then that the next job he/she might look next might be gaming related.So the final question would which language,C or C#,is overall the best for 3d game production and general programming.
I cannot thank enough for finding the time to answer me.I just hope I am not disturbing you from you work.
I look forward in hearing from you.


Yours Sincerely,
Antony.


From: Martin Baker
To: Antony
Subject: Re: Final decision.
Date: 18 August 2002 15:48

Hi Antony,

I think your right. C# or Java will be easier to learn because the class libraries are built in and much more consistent. Once you have learned one of these languages you will know most of the concepts you need making it easier to also learn C or any of its derivatives.

Good luck with you studies,

Martin


From: Antony
To: Martin Baker
Subject: Re: Final decision.
Date: 18 August 2002 17:01

I am very honored that you included my thoughts to your site.Here a new thought that came to me after accidentatly selected a VB .NET window project in the visual studio instead of the C#.
At first i thought i was under the C# environment.When i doubled click a textbox to see the code i saw the VB's code.I was curious so i opened the help system to see the new features of the vb.And their i had the biggest surprise.VB is actually a C# with a different syntax.Since i havent used VB6 too much i now saw an OOP VB.So the logical question would be:"VB .NET or C#?".From every aspect,easier for a beginner,for game development,finding non game related work.Any thoughts?You think i should go with VB .NET instead?
As always i cannot stress the fact that you have been very helpfull.I only hope you are not tired by my e-mail's.

Antony


From: Martin Baker
To: Antony
Subject: Re: Final decision.
Date: 18 August 2002 18:42

Hi Antony,

Yes, as I understand it, all the .NET languages C#, VB and Managed C++
compile to the same intermediate language, which is then interpreted by the
Common Language Runtime (CLR). They also use the same class libraries. This
means that the languages have a similar capability and there is even the
possibility to mix the languages in the same assembly.

I think I would choose C# because:
1) It is a more modern language designed for .NET rather than an older
language that has been mangled to do the job.
2) C# is closer to Java, C and C++ so if you want to move over to these in
the future it will be a smaller step.
3) I think that C#, Java, C and C++ are more likely to be used in commercial projects and therefore these skills could be more marketable (I'm not an expert on the job market so I could be wrong)

> I only hope you are not tired by my e-mail's.

Not at all, although my website gets quite a lot of hits, I don't get much
feedback so its good to hear from you.

Martin


From: Antony
To: Martin Baker
Subject: Opinion.
Date: 19 August 2002 12:20

How difficult would be for me to learn C++?Do i really have to use pointers or constructors with C++?Lets face it,if you know C++ then you dont have to learn C# or VB .NET if you dont want to.Is the learning curve of C++ that steep,only for learning the language.Any opinions?

Antony

P.S. Any good books for C++.I am thinking of "Sams Teach Yourself C++ In 21 Days" since i already have the "Sams Teach Yourself C++ In 24 Hours".


From: Martin Baker
To: Antony
Subject: Re: Opinion.
Date: 19 August 2002 16:06

Antony,

Yes, I think that C++ is more difficult to learn because:
1) It has a lot of legacy features which make things more complicated.
2) It uses pointers and you have to manage resources yourself (for instance
it does not have garbage collection). I find this makes it more difficult to
debug programs as its easy to get memory leaks or use pointers wrongly.
3) The language is not closely coupled with the class library (for OS calls,
for example creating screen items such as dialog boxes). So you have to
choose which libraries to use such as MFC or ATL , which have lots of quirks
and there may be gaps in what these libraries support so you may end up
calling the OS API directly.

So if I was starting out now, I would start with Java or C# to learn the
concepts and then move to C++ if I had to.

There is an intermediate option if you have visual studio .NET. That is
'managed C++' this has C# features such as using the .NET framework class
library and garbage collection but it does not have a graphical forms
editor. This still has a lot of the disadvantages of C++ without the
advantages.

So it you want to get a book about C++, I think you first have to decide
what class library to use (MFC, ATL, NET framework, wxwindows, etc.) then
get a book which covers the appropriate library in addition to the language
itself.

Martin


metadata block
see also:
Correspondence about this page

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2023 Martin John Baker - All rights reserved - privacy policy.