Sign in to follow this  
Max_spectra

Which language should i choose?

Recommended Posts

Max_spectra    102
I've had the dream of becoming a video game developer/ programmer for a while now, and wanted to know which language should I learn for video game programming. I have a few books on C++, java, and python, but I dont know which one to start with. Please give your opinions, choices, and advice on the language and other things I should choose.

Share this post


Link to post
Share on other sites
jbadams    25677
"[url="http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx"]I want to be a game developer... now what?[/url]"

Ultimately it isn't hugely important; programming languages are just tools, and if you follow through and become an experienced developer you will end up using a huge range of languages throughout your career. After learning your first language, and more importantly the underlying concepts of programming, it becomes significantly easier to learn additional languages as needed, and a skilled programmer can pick up a similar language in a couple of hours and will usually need only around a week to become familiar with a very different language from those they already know. Remember that [url="http://clicktobegin.net/programming/your-choices-are-not-forever/"]your choices are not forever[/url], and that the most important thing is to choose [i]any[/i] language and actually get started.


That being said, given the choice of Python, Java or C++ I would probably rank them in that order of preference. I usually recommend beginners stay away from C++ because it can have a steeper learning curve and is often considered [url="http://clicktobegin.net/programming/why-is-c-difficult/"]more difficult[/url], and usually encourage higher level languages such as Python because they will allow you to concentrate on the fundamentals of programming and game development without having to worry about so many of the nitty-gritty details of memory management and weird errors that can be difficult for a beginner to understand and solve.


Do you have any programming experience yet, or are you starting from scratch?

Share this post


Link to post
Share on other sites
SciBerC    102
C# or Java are both really good languages to program in, python is a great language too, I recommend python or C# for developing your first game, even if the game is crap.. There is so many tutorials on C# and python on youtube, once you feel a little more confindent with c#/python start learning C/ C++. With C# use the XNA framework, with Python use the PyGame framework, with C/ C++ use opengl/ directx and with C++ use the sfml framework.

Share this post


Link to post
Share on other sites
Java is a clunky, unwieldy language. If you already knew Java, it would be fine to use it for game dev, but I don't consider it a good language for learning programming in general, nor is it a good language to learn specifically for game dev. There just are better choices out there.

C++ is reasonably productive when you are already very proficient with it, but it is very hard to get good at. I started with it myself but would strongly recommend against going that route.

Thus, go Python. It's just good. Even if you wanted to use another language later, you would still benefit because you could keep using Python for game scripting, as glue code, to make small tools for your build and testing and analysis processes, etc.

Share this post


Link to post
Share on other sites
debarra    121
I started out with Python. It's easy to learn, user-friendly and there is plenty of tutorials to help get you started. I would recommend using it with PyGame for game development. PyGame is a very good starting API to use.

[url="http://www.pygame.org"]http://www.pygame.org[/url]

Then I would learn Java if I were you, once I had a firm grasp on game programming of course. Edited by debarra

Share this post


Link to post
Share on other sites
NathanFR    118
Java is bad language for learning programming? Hum... i don't see why it would less good than C# or Python to learn programming. I'm interested to hear your arguments about that.

If you don't care about starting learning programming with low level languages to get a better understanding of how memory and system work, go with Java would totally fine and it would even be better than Python. I love Python, i used it for game development with PyGame during a while when i was getting started but i ran quickly in performance issues. Python/PyGame couple is good to start but i don't think it's a serious choice for more ambitious games. Of course Python is user friendly, you can make games super quickly once you are familiar with it and PyGame but you will end up writing C code each time you will need a bit of performance, and trust me, it's annoying.

Today i'm considering PyGame as a really slow library but other tools exist, for example, for 3D games, Panda3D seems to be really nice (i only played a bit with the example codes). Edited by NathanFR

Share this post


Link to post
Share on other sites
teccubus    307
Max_spectra: it depends on what kind of games you want to do. AAA titles are generally written in C++ (C and assembler in good, old days), so it has to be best language for programming spectacular games.

Share this post


Link to post
Share on other sites
Telastyn    3777
[quote name='teccubus' timestamp='1352296556' post='4998392']
Max_spectra: it depends on what kind of games you want to do. AAA titles are generally written in C++ (C and assembler in good, old days), so it has to be best language for programming spectacular games.
[/quote]

Correlation <> Causation

In the 90's Python and Java were not practical alternatives due to lack of adoption and library support. Since then, support for consoles have been of utmost priority for non-MMO AAA games. Those consoles can't support Python and Java, thus (often crippled implementations) of C++ are used.

Share this post


Link to post
Share on other sites
jbadams    25677
[quote name='teccubus' timestamp='1352296556' post='4998392']
Max_spectra: it depends on what kind of games you want to do. AAA titles are generally written in C++ (C and assembler in good, old days), so it has to be best language for programming spectacular games.
[/quote][url="http://clicktobegin.net/programming/the-reasons-of-professional-developers-do-not-apply-to-you/"]The reasons of professional developers do not (usually) apply to you[/url].

Whilst AAA developers have good reasons for choosing C++ in many cases, it can be a mistake to blindly follow after them without understanding the reasons and making your own decision. In many cases some of those same professionals would actually love to use another language, and if the reasons they were forced or lead towards C++ are not relevant to you there's no reason you need to also choose it.

Don't get me wrong -- C++ is a fine choice if it's the language you prefer and/or you have your own good reasons to choose it -- but it's a mistake to think that because professional developers choose it it must also be the best choice for you. Your situation is [i]very[/i] different to theirs, and the reasons they chose it will probably not apply to you.

([s]Posted from mobile[/s].EDIT: Fixed up formatting from a PC.) Edited by jbadams
: Adjusted formatting.

Share this post


Link to post
Share on other sites
NathanFR    118
In conclusion, go with the language you want, the one you feel the most comfortable with and just write a game. As @jbadams said, when you will get a bit experienced at programming, changing language regarding your requirements would be quite [i]easy[/i]. What you want right now is writing games to get experienced in general programming logic and general game development logic, both are language agnostic.

Have fun. Edited by NathanFR

Share this post


Link to post
Share on other sites
Hiwas    5807
[quote name='jbadams' timestamp='1352007781' post='4997092']
That being said, given the choice of Python, Java or C++ I would probably rank them in that order of preference. I usually recommend beginners stay away from C++ because it can have a steeper learning curve and is often considered [url="http://clicktobegin.net/programming/why-is-c-difficult/"]more difficult[/url], and usually encourage higher level languages such as Python because they will allow you to concentrate on the fundamentals of programming and game development without having to worry about so many of the nitty-gritty details of memory management and weird errors that can be difficult for a beginner to understand and solve.
[/quote]

Unfortunately this order is also pretty much backwards to hiring priorities in the games industry if games is the target job. On many trip A games, I don't think I've ever hired a Python programmer, pretty sure I've only hired Java programmers because they were good and were able to learn the C/C++ code and of course I focused on C/C++ folks as hires. Java folks were usually brought in as Juniors at best, no matter their experience, Python, as stated, never hired one to my knowledge unless they had the Java/C/C++ skills.

I've been making games for a long time and unfortunately the only time I consider Python programmers is if I should refer them to the web or script teams. I don't consider them for game programming positions. Maybe I'm too old school but in general my priorities are C++/C#/C/Java, in that order. I only include Java as a proof of ability to program, I never hire such folks as anything but a junior programmer and expect them to pick up C++ in a hurry. Unfortunately, I've ended up firing most of the Java folks, they just don't usually figure out memory management requirements.

So, 20 years of making games says I disagree pretty completely with your ordering of priorities. If I were a website maker, maybe your order or priority would make sense to me. Unfortunately I make games for a living and your priorities are completely backwards to mine.

Share this post


Link to post
Share on other sites
jbadams    25677
[quote name='AllEightUp' timestamp='1352358079' post='4998768']
So, 20 years of making games says I disagree pretty completely with your ordering of priorities.
[/quote]
Fair enough -- and you've raised some valid points -- C++ knowledge [i]is[/i] practically required for the overwhelming majority of AAA development jobs, and it's a language anyone wanting to get into the industry should learn. There are however two assumptions in your advice that don't necessarily hold true:[list=1]
[*]That the original poster will only learn one programming language. I don't know about you, but I've learned numerous languages during my career, and many of the highly experienced C++ developers I know started out with variations on BASIC, Hypercard, etc. When I recommend Python or C# I fully expect that it will only be a first language, and others will be learned as needed -- this is precisely why I initially spent time explaining that the choice of language wasn't particularly important and that the underlying concepts should be the initial focus; everyone learns differently, and some people swear by C++, but personally I think it's easier to learn many of those underlying concepts without having to deal with the additional complexities of C++ -- anyone wanting to get a job in the games industry should then proceed to learn C++.
[*]That the original poster wants to work as a AAA developer. While this possibility isn't unlikely, there are plenty of non-AAA game dev jobs that don't require C++, and hobbyist or indie developers are free to choose any language they like. If AAA development isn't the goal then C++ might not be required at all, but in cases where it is needed it can usually be put off and approached as a second or third language.
[/list]

Share this post


Link to post
Share on other sites
SimonForsman    7642
[quote name='AllEightUp' timestamp='1352358079' post='4998768']
I've been making games for a long time and unfortunately the only time I consider Python programmers is if I should refer them to the web or script teams. I don't consider them for game programming positions. Maybe I'm too old school but in general my priorities are C++/C#/C/Java, in that order. I only include Java as a proof of ability to program, I never hire such folks as anything but a junior programmer and expect them to pick up C++ in a hurry. Unfortunately, I've ended up firing most of the Java folks, they just don't usually figure out memory management requirements.
[/quote]

You actually hire programmers who classify themselves as <insert language here> programmers for junior positions ?
For senior positions it might be good to get a candidate with expertise in a specific language(the one your company is primarily using) but for junior positions I prefer to see candidates with a broad and solid base. (A candidate who only knows C or its derivates can't be all that interested in his craft).

For me personally C++ was my fourth language, Python fell in at 15+, There are still a whole bunch of languages out there that i know i should take a closer look at. Edited by SimonForsman

Share this post


Link to post
Share on other sites
rnlf_in_space    1894
I totally agree with jbadams. Many people I know tried to learn C++ as their first language, got frustrated and quit. And of those who made it through, many had adopted so many bad practices that it took them at lot of time to get rid of them.

If you want to learn modern programming, go with a language that makes it easy to learn modern concepts. Once you understand the concepts, go to an expressive language like C++ and see how to apply these concepts to it. It is easy to hack together a solution in C++, but it the easy way in C++ is likely to be either wrong, slow, dangerous or all of them.

I am programming C++ for about 15 years now and I still trip up on some of its details more often than I wished I'd do. And without a solid programming base, you will not even notice you're stumbling until it's too late and you have to do a few weeks worth of work again.

So, while C++ is still my language of choice, it is a bad language to start your programming training with. I recommend Python, it is easy, less error-prone and supports more or less every modern programming concept.

Share this post


Link to post
Share on other sites
Hiwas    5807
[quote name='jbadams' timestamp='1352359323' post='4998771']
[quote name='AllEightUp' timestamp='1352358079' post='4998768']
So, 20 years of making games says I disagree pretty completely with your ordering of priorities.
[/quote]
Fair enough -- and you've raised some valid points -- C++ knowledge [i]is[/i] practically required for the overwhelming majority of AAA development jobs, and it's a language anyone wanting to get into the industry should learn. There are however two assumptions in your advice that don't necessarily hold true:[list=1]
[*]That the original poster will only learn one programming language. I don't know about you, but I've learned numerous languages during my career, and many of the highly experienced C++ developers I know started out with variations on BASIC, Hypercard, etc. When I recommend Python or C# I fully expect that it will only be a first language, and others will be learned as needed -- this is precisely why I initially spent time explaining that the choice of language wasn't particularly important and that the underlying concepts should be the initial focus; everyone learns differently, and some people swear by C++, but personally I think it's easier to learn many of those underlying concepts without having to deal with the additional complexities of C++ -- anyone wanting to get a job in the games industry should then proceed to learn C++.
[*]That the original poster wants to work as a AAA developer. While this possibility isn't unlikely, there are plenty of non-AAA game dev jobs that don't require C++, and hobbyist or indie developers are free to choose any language they like. If AAA development isn't the goal then C++ might not be required at all, but in cases where it is needed it can usually be put off and approached as a second or third language.
[/list]
[/quote]

As to #1- most definitely true. But I say that if you want to make games,your 90%+ best path to success is C++. It is not that I'm a fanatic lover of C++, it's just the language of choice for 90%+ all game creation. (It's probably higher, but have to give MineCraft a times 100 weight. I'm a fan. :)) I am personally fluent in way too many other languages and have learned pretty much every language enough to write "hello world" and at least something a little more involved because I LOVE programming and am always looking at ways to be lazy by finding more appropriate solutions. :)

What I disagree with is the idea that C++ is so difficult to learn that other languages are preferable starting points.Take any "C for dummies" book and you can learn the book even though your compiler is actually C++. Confusing C++ high level complexity as meaning the language as a whole is to obtuse to start with is just wrong in my thinking. The other argument is that with C/C++ you can't do graphical systems easily where Python and Java have OS independent wrappers around such things. Well, in the case of Python, WxWidgets is PyWidgets adapted to Python, Swing, well that's a pure Java thing but I'd say that QT is comparable if not massively better. (Yeah, QT is available for many languages including Python and Java.)

So, I find the idea of avoiding the most used language as counter productive. Yes, more complicated as you move forward, but it is knowledge of such complications which often wins a job in a smallish market. "Knowing" C/C++ but being a primary Java guy will get you a job at any number of web companies, it won't get you a game job though.

As to #2- I didn't mean to suggest that trip A was the only way to go. I mean that EVERY game is shooting for trip A and they always want the best devs they can get. Lets say the company is hiring and they want programmers for some X game. If they are using any premade engine such as Source, Doom or UnReal, they will be looking for C/C++ programmers. (NOTE: UnReal, they will also be looking for Java like programmers for scripting.) Any other solution and they will almost always be looking for C/C++ because they have to write something from scratch. This is not a 100% thing, just the "most common" thing.

Disclosure: I absolutely despise Java as a language, lack of unsigned and no pass by reference unless in a struct, pisses me off to no end.

Share this post


Link to post
Share on other sites
Washu    7829
[quote name='AllEightUp' timestamp='1352362260' post='4998780']
What I disagree with is the idea that C++ is so difficult to learn that other languages are preferable starting points.Take any "C for dummies" book and you can learn the book even though your compiler is actually C++. Confusing C++ high level complexity as meaning the language as a whole is to obtuse to start with is just wrong in my thinking. The other argument is that with C/C++ you can't do graphical systems easily where Python and Java have OS independent wrappers around such things. Well, in the case of Python, WxWidgets is PyWidgets adapted to Python, Swing, well that's a pure Java thing but I'd say that QT is comparable if not massively better. (Yeah, QT is available for many languages including Python and Java.)[/quote]
Any C for Dummies or similar book is usually the worst possible starting point. I've never seen one of those books that got it right, or even close, to how things actually operate in the language. [url="http://www.scapecode.com/category/quizzes/"]C++ is a huge complex beast.[/url] We recommend newbies start off with more well defined languages, such as C# or Python, for the simple reason that C++ [b]IS [/b]a huge complex beast with plenty of trivial undefined behavior. The goal of a new programmer is not to learn a language but to learn the principle and practice of PROGRAMMING, i.e. problem solving, data structures, algorithms, and the associated bits and pieces of knowledge that goes with that. Learning those things in a language like Python, or C# is significantly easier than doing it in C++, and thus will allow the novice programmer to advance their knowledge and build ACTUAL WORKING programs faster than they would be able to in C++. This encourages and keeps the novice programmer's attention, thus furthering their education.

At no point do we suggest that new programmers should restrict themselves to a single language. Any GOOD developer will learn many languages over time. Starting out with an easy to work with and learn language provides many advantages over starting with the hardest possible language to pickup. Edited by Washu

Share this post


Link to post
Share on other sites
jbadams    25677
I can definitely respect that point of view. I still disagree, but I don't think either of us are really more correct than the other -- this is one of those situations where the right answer varies from person to person. Now that we've both clearly stated our points of view and articulated our reasoning hopefully the original poster can make their own decision.

[quote name='AllEightUp' timestamp='1352362260' post='4998780']
Disclosure: I absolutely despise Java as a language
[/quote]
I don't actually like it either -- but I do think it's a fine choice for those who are comfortable with it and is perfectly capable of creating good quality games when used correctly.

[quote name='AllEightUp' timestamp='1352362260' post='4998780']
Any other solution and they will almost always be looking for C/C++ because they have to write something from scratch. This is not a 100% thing, just the "most common" thing.
[/quote]
C++ knowledge is never a bad thing, but there are plenty of game development jobs where other languages are used. Tools and support scripts are often written in higher level languages. Many engines provide a higher-level scripting interface often utilising Lua, Python, JavaScript-like languages or custom scripting languages such as UnrealScript. Mobile games are often written in other languages such as Objective-C for iOS or Java for Android. Web-based and casual games -- some of which are created by big-budget professional teams -- are often developed using a host of higher-level languages.

C++ knowledge is invaluable, but knowledge of other languages will also very rarely go astray, and there are plenty of jobs available both in and outside of games.

Share this post


Link to post
Share on other sites
Hiwas    5807
[quote name='Washu' timestamp='1352363251' post='4998784']
Any C for Dummies or similar book is usually the worst possible starting point. I've never seen one of those books that got it right, or even close, to how things actually operate in the language. C++ is a huge complex beast. We recommend newbies start off with more well defined languages, such as C# or Python, for the simple reason that C++ IS a huge complex beast with plenty of trivial undefined behavior.
[/quote][quote name='Washu' timestamp='1352363251' post='4998784']
[quote name='AllEightUp' timestamp='1352362260' post='4998780']
What I disagree with is the idea that C++ is so difficult to learn that other languages are preferable starting points.Take any "C for dummies" book and you can learn the book even though your compiler is actually C++. Confusing C++ high level complexity as meaning the language as a whole is to obtuse to start with is just wrong in my thinking. The other argument is that with C/C++ you can't do graphical systems easily where Python and Java have OS independent wrappers around such things. Well, in the case of Python, WxWidgets is PyWidgets adapted to Python, Swing, well that's a pure Java thing but I'd say that QT is comparable if not massively better. (Yeah, QT is available for many languages including Python and Java.)[/quote]
Any C for Dummies or similar book is usually the worst possible starting point. I've never seen one of those books that got it right, or even close, to how things actually operate in the language. [url="http://www.scapecode.com/category/quizzes/"]C++ is a huge complex beast.[/url] We recommend newbies start off with more well defined languages, such as C# or Python, for the simple reason that C++ [b]IS [/b]a huge complex beast with plenty of trivial undefined behavior. The goal of a new programmer is not to learn a language but to learn the principle and practice of PROGRAMMING, i.e. problem solving, data structures, algorithms, and the associated bits and pieces of knowledge that goes with that. Learning those things in a language like Python, or C# is significantly easier than doing it in C++, and thus will allow the novice programmer to advance their knowledge and build ACTUAL WORKING programs faster than they would be able to in C++. This encourages and keeps the novice programmer's attention, thus furthering their education.

At no point do we suggest that new programmers should restrict themselves to a single language. Any GOOD developer will learn many languages over time. Starting out with an easy to work with and learn language provides many advantages over starting with the hardest possible language to pickup.
[/quote]

It is not my fault that C for dummies isn't written correctly, perhaps we should write "C For Dummies which Moves to C++, The Book That Doesn't SUCK". ) The thing about C/C++ is basically similar to Perl. You can write things so many different ways that there is "no" best way. C# and the other languages propose coding standards beyond just a "language". C# is every bit as complicated as C++ in most ways, as a language, only the support libraries and implied coding standard really make a difference

So, with C#, I'm not really sure how C/C++ is really that much more complicated? The things which usually throw nubes are duplicated in C# in terms of the basic language, What is different is availability of support libraries, standard naming conventions, and all sorts of other things you have to go find/link into a C++ program.

So, "how" is C# in anyway more easy? Templates? Hmm, C# has generics with even more complicated rules as to derivation with all the "where" clauses and such.

I don't mean to be an ass here, just trying to question this in the best way I can, it does sound assish, sorry about that. :)

Share this post


Link to post
Share on other sites
Hiwas    5807
[quote name='jbadams' timestamp='1352363871' post='4998786']
I can definitely respect that point of view. I still disagree, but I don't think either of us are really more correct than the other -- this is one of those situations where the right answer varies from person to person. Now that we've both clearly stated our points of view and articulated our reasoning hopefully the original poster can make their own decision.

[quote name='AllEightUp' timestamp='1352362260' post='4998780']
Disclosure: I absolutely despise Java as a language
[/quote]
I don't actually like it either -- but I do think it's a fine choice for those who are comfortable with it and is perfectly capable of creating good quality games when used correctly.

[quote name='AllEightUp' timestamp='1352362260' post='4998780']
Any other solution and they will almost always be looking for C/C++ because they have to write something from scratch. This is not a 100% thing, just the "most common" thing.
[/quote]
C++ knowledge is never a bad thing, but there are plenty of game development jobs where other languages are used. Tools and support scripts are often written in higher level languages. Many engines provide a higher-level scripting interface often utilising Lua, Python, JavaScript-like languages or custom scripting languages such as UnrealScript. Mobile games are often written in other languages such as Objective-C for iOS or Java for Android. Web-based and casual games -- some of which are created by big-budget professional teams -- are often developed using a host of higher-level languages.

C++ knowledge is invaluable, but knowledge of other languages will also very rarely go astray, and there are plenty of jobs available both in and outside of games.
[/quote]

I completely agree, I'm currently doing mosty C# work right now. Go figure. :)

I'm not questioning the suggestions out of some perverse reason to be negative, I just question the "learning" bit which everyone keeps saying is easier in other languages than C/C++. Unfortunately, I've written language parsers and every functional language is "structurally" the same damned thing. Parsers for 10 languages and all I had to do was search for different keywords and symbols. (or tabs in Python)

I pose the question then, if the languages are basically the same with different displays, what makes it easier in one than another? I suggest it doesn't really make much of a difference except 2 things. 1 is memory managment, all other suggested languages are GC'd 2. is that most other languages include a lot more support libraries.

Have I missed something?

Share this post


Link to post
Share on other sites
jbadams    25677
[quote name='AllEightUp' timestamp='1352368148' post='4998806']
Have I missed something?
[/quote]
Not really, but the way you phrased your question almost suggests you don't highly value the importance of a language's platform and support libraries. If anything these things are often more important than some simple syntax and grammar rules of a language. A good programmer should be aware of lower-level details and have a good knowledge of data-structures and algorithms, but should also use support libraries where appropriate to improve the quality of their work and the speed at which they are able to produce it. This is the very same reason middle-ware solutions and engines have become so popular and common.

Likewise, not having to deal with memory management makes a huge difference in the difficulty a beginner experiences in their first steps into programming. They should ideally become aware of these subjects -- whether they have to use it or not -- eventually, but (although some will disagree with this) don't really need to deal with it immediately.


The recommendation of higher level languages is valuable because it allows a beginner to focus on many of the underlying concepts rather than the specifics of memory management or difficult language-syntax, and as evidenced by the many skilled programmers who started out with punch-cards, BASIC variants, and similar languages this does not prevent mastery of a lower-level language later on.

Share this post


Link to post
Share on other sites
[quote name='NathanFR' timestamp='1352295227' post='4998383']
Java is bad language for learning programming? Hum... i don't see why it would less good than C# or Python to learn programming. I'm interested to hear your arguments about that.[/quote]Good first languages let the programmer concentrate on the data, and the algorithms and program logic used to process it. Flexibility, simple syntax, not having to remember library stuff or learn complicated tools is important. Java is rigid, verbose, relies on a giant library instead of the core language being expressive, is painful to use without learning an IDE, and forces the user to squeeze everything into objects whether that makes sense or not. A beginner needs to learn how to structure computations / functions. Before they have a handle on that, it's a totally wrong time to teach object orientation, and it will just get in the way of learning the things they could and should be learning at that stage. OO is just one way to structure programs, and frequently not the right one for a given problem.

I remember reading a paper from the "How to design programs" crew at MIT (you can probably google this up), where they report on using two different approaches to teach programming from the ground up. In the first way, they had a first course and a follow-up course that were both in Java. In the second way, they had the first course in Scheme and the follow-up in Java. What they found is that at the end of the second course, the people who had initially learned in Scheme (which, like Python, has better characteristics for a learning language) were better Java programmers than those who had twice as much Java experience. MIT now uses Python as their first teaching language.

Share this post


Link to post
Share on other sites
Washu    7829
[quote name='AllEightUp' timestamp='1352367155' post='4998805']
It is not my fault that C for dummies isn't written correctly, perhaps we should write "C For Dummies which Moves to C++, The Book That Doesn't SUCK".[/quote]
There is no such book that WOULDN'T suck. Its the nature of "for dummies" or any similar titles that try and condense a very complex subject down into a small book to be wrong. You just cannot cover all the necessary information in such a book.
[quote]The thing about C/C++ is basically similar to Perl. You can write things so many different ways that there is "no" best way. C# and the other languages propose coding standards beyond just a "language".[/quote]
Here you're speaking of language paradigms, and while I do agree that C++ has many different paradigms, C# ALSO has different paradigms available. You can write C# using functional paradigms as well, its not a strictly class based language. You could do it in a procedural manner too, although that's a bit of a hassle.
[quote]C# is every bit as complicated as C++ in most ways, as a language, only the support libraries and implied coding standard really make a difference[/quote]
No, the C# language is no where near as complex as the C++ language. Just as an example, you can implement a full C# parser that's an LL(k) or LARL parser. Good luck trying to do this with the C++ language. Furthermore, the C++ language has huge amounts of undefined behavior implicit in many of its most basic operations, C# is quite well defined in almost all areas. I could go on.
[quote]So, with C#, I'm not really sure how C/C++ is really that much more complicated? The things which usually throw nubes are duplicated in C# in terms of the basic language, What is different is availability of support libraries, standard naming conventions, and all sorts of other things you have to go find/link into a C++ program.[/quote]
The .Net framework is a significantly more complete framework than what you will get with any general C++ compiler. More importantly though, the libraries all make sense, being a unified API. Whereas with C++ you may have a dozen or more different APIs and libraries you interface with to do the same thing, each with their own unique style of naming syntax, scoping, macros, enumerations, etc. Edited by Washu

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this