What am I un-aware of?

Started by
40 comments, last by Baraclese 18 years, 4 months ago
Keep in mind I am not attempting to state which is better, I am only mentioning here what I have seen from personal experience as a hobbyist programmer :)

While there are many arguments against C/C++ development taking a long time, there are loads of utilities to prevent developers from reinventing the wheel each time they work on a project.

Memory management/linked lists? STL
Media API for access to sound/video/input? SDL
Network access? Raknet, SDL_net, and others
XML parser/utilities? TinyXML
Scripting language? Lua, and others

Certainly these by themselves do not constitute a game engine (and by far there are many other libraries which fit into these categories), but consider too that (unless there are licensing issues involved), when a feature-set is required for a particular facet of the game engine, an existing library will be used to cut down on development time and to save reinventing the wheel. C and C++ are by far the most common and most accessible of the programming languages out there, thus it is in the budding game developer's interest to learn these languages.

Selecting a newer language (C#) or a scripted language (Python), or one which is (generally) unavailable on a platform other than Windows (Visual Basic), may result in limitation of options, tutorials, discussion groups, support, guides, walkthroughs, and source code examples.

While the number of lines of code may be more in a C/C++ program compared to other languages, I don't think this has much bearing on the "learning curve" difficulty factor, particularly considering the difficulty later faced when a programmer seeks out community support or online documentation!
Advertisement
Thank you everyone

Massive-war

Note: And it's kind of weird. We're learning Java in our Computer Science class at school, and Java is relatively hard for me. I just love c++, no matter how hard/confusing/long it is to use, and it comes to me almost like native english. I don't know, I just get that feeling like I know what I'm doing with c++, and learning another language on more of a less-strict level might be more difficult.
A true American.One who supports his government.Is ambitious, successful, and hardworking.The direct definition of a conservative... the ones who actually get stuff done in this country.Long live Americans.
Quote:Original post by massive-war
Thank you everyone

Massive-war

Note: And it's kind of weird. We're learning Java in our Computer Science class at school, and Java is relatively hard for me. I just love c++, no matter how hard/confusing/long it is to use, and it comes to me almost like native english. I don't know, I just get that feeling like I know what I'm doing with c++, and learning another language on more of a less-strict level might be more difficult.


I'm not sure what you mean by a "less-strict level," but once you start using higher-level languages more often I bet you'll find that you'd rather use them than C++.
Quote:Original post by Roboguy
Quote:Original post by massive-war
Thank you everyone

Massive-war

Note: And it's kind of weird. We're learning Java in our Computer Science class at school, and Java is relatively hard for me. I just love c++, no matter how hard/confusing/long it is to use, and it comes to me almost like native english. I don't know, I just get that feeling like I know what I'm doing with c++, and learning another language on more of a less-strict level might be more difficult.


I'm not sure what you mean by a "less-strict level," but once you start using higher-level languages more often I bet you'll find that you'd rather use them than C++.


It's funny, because when I read that post, it reminded me ALOT of myself a year or two ago. For some reason I just thought C++ was easier to use..... the reality is though that you just feel more comfortable in C++, for whatever reasons (your used to it, or whatever....). Now that I'm comfortable in C#, I cringe when I look at C++ code [grin].
FTA, my 2D futuristic action MMORPG
Quote:Original post by massive-war
So many people talk about how c++ is a waste of time and how things can be done much quicker in other languages. Is there any way someone can enlighten me on this?


You should choose the langauge you're going to use based on the problem you're trying to solve.

If you need to do something involving textfiles or repetitive system administration tasks, the quickest way to get an app up and running is to use a language like perl. If you want to make a text adventure (interactive fiction) like Zork, you should consider using a lanaguage like Inform or TADS. These languanges tend to be centered on solving a specific set of problems, while C++ is a much more general language.

Personally I don't think C++ is a waste of time - but you should investigate languages like Java and C#, so you can determine what language you should use on a project based on your needs.
I love C++. Some years back, all my work was done in Visual Basic and before that, QBasic and Basic. I swore by it. I was perfectly content with it.

Then I decided one day I should start learning a language where I have more control about how things are done (granted I liked having some things done for me, like the ease of creating dialogs with forms, etc). That and I wanted something more challanging.

To this day, given the way the language works, I'll continue to use it. When I want to flesh out something very quickly with a somewhat complicated UI, I go the route of C#, which is relatively close to c++ anyway, which I like very much as well, but not as much as I do C++.
Well, I've done high level languages and I've done low level languages, and the bottom line is, each language is the right one under the right circumstances. If you're making a tool or other gui application, save yourself some time and trouble and go with C# or VB. If your making a high-performance game engine, use C++.

Personally though, I think everyone should at least learn C++ even if they prefer using something else because the language forces you to realize what's really happening in the code. Using higher level languages can hide many of the things that is happening 'under the hood' and can lead programmers into false conclusions about how their code works.
-Tom BlindGame Design and Developmenthttp://tomblind.squad-seven.comtomblind@squad-seven.com
I also stringly agree with the STL arguments.

Want range-checked arrays? Then just use std::vector and .at(), and you have the same thing, but you don't NEED to have it. Of course in DEBUG mode it'll usually assert() the indexes even if you use [], so you can have a nice middle-ground too, if you'd rather.

Don't want to worry about memory? Use Boost's Pointer Containers or smart pointers. shared_ptr is just as good as a GC if you can use weak_ptr to eliminate cycles, and still keeps deterministic behavior ( unlike a GC ).

Not to mention that C++ has RAII, which is the best resource-management idiom out there. RAII in C++ is just about the only way I've found to keep from violating OnceAndOnlyOnce with cleanup code -- and it sure beats having to copy it into finally blocks everywhere :|

Now all we need is Boost.GUI and we can do away with all these other 'pos'er languages :P

Quote:Original post by Aryabhatta
using C++ is like driving a stick shift.
C#, Java are like automatic.
:-)

If your main goal is to get to the destination, you would prefer to use the fastest/safest vehicle... Many people who like to ship products (and make money in the process) hate C++. Bad programming/understanding of C++ can lead to hours of time wasted tracking and fixing bugs which could have been saved by using C# or Java or whatever...

Some people just drive stick shifts for the fun of it. Some people use C++ for the same reason.


But you wont find many (any?) automatic transmissions in NASCAR or F1 >;)

Quote:Original post by TomBlind
Personally though, I think everyone should at least learn C++ even if they prefer using something else because the language forces you to realize what's really happening in the code. Using higher level languages can hide many of the things that is happening 'under the hood' and can lead programmers into false conclusions about how their code works.


Joel's Back to Basics article does a nice job of arguing this -- the Shlemiel the painter's algorithm moniker is unforgettable =)

Though it seems that it's still nessesary to make sure that people learn the HLL part of C++ first ( std::vector, std::string, etc ) to keep them from going down the C trap of using NotInventedHere-inspired solutions to everything.
Quote:Original post by Basiror
What about the MONO project for linux? did they implement a good .net framework?
or did microsoft already try to stop it?


MONO is okay, though there are huge portions still yet to be implemented (at least in the latest version I have).

I am often puzzled as to why people would think that Microsoft has any interest whatsoever in stopping MONO. I mean, they submitted the CLI as a ECMA standard, released the source itself (as Rotor, or Shared Source Common Language Infrastructure, at MSDN, which directly runs on FreeBSD and Mac OS X. They have not ever made an effort to stop or hinder development on MONO to my knowledge.

In fact, looking at the MONO source you will see that quite a bit of it is either directly from Rotor or slightly "massaged".

On the subject of the OP, I started my development career as a C++ programmer, and have always felt that I am a better programmer for having had that experience.

As mentioned by some other posters, I have written custom memory managers, proprietary file systems and database engines, etc. I feel that the deeper understanding of the "internals" makes me the programmer I am today.

I have now ben using C# almost exclusively since it's public release, except when doing web work, but I don't regret my years of C/C++ at all.
Quote:Original post by me22
But you wont find many (any?) automatic transmissions in NASCAR or F1 >;)
It's not because manual allowed faster speed (it doesn't) but because of rules that disallow automatic transmission. So if you're implying what I think you're implying, the analogy doesn't serve you.

This topic is closed to new replies.

Advertisement