Jump to content

  • Log In with Google      Sign In   
  • Create Account


Language Advice


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
13 replies to this topic

#1 nooblet   Members   -  Reputation: 167

Like
0Likes
Like

Posted 21 May 2013 - 08:55 PM

Hello!

First and foremost, I'm very very sorry for creating another thread about this same topic. I've been searching the internet for opinions regarding this, but there's quite the diversity in responses it appears. Basically, I'm in a pickle between learning C++ and C# at this point. I'd like to elaborate for those who are interested in helping me.

 

I've been programming for many years, on and off, originally learning C++ and then migrating to C# when I realized how much easier it was. I absolutely love to program, but when I start to need to learn the "intermediate" or "advanced" topics of a language, I start to get discouraged and stop programming for months. I want to dedicate an hour or two of my time each day for the next year or so to just learn a language from the absolute basics to the more advanced topics. I don't just want to develop games, I want to become a programmer. I know for a fact that I'll have to learn C++ at one point in my life, but when I think about pointers, linked lists, algorithms, etc., I just want to immediately say "nope" and go back to C# where it's nice and cozy and I have someone holding my hand.

 

Basically, I'm relatively comfortable with both; with C++ I stopped using it when pointers were involved, and with C#, I stopped when I realized I had no idea what dictionaries do, how to do exception handling, or how to handle events. I want to become a programmer but I always get intimidated when it comes to more complicated topics and discourage myself from programming the next day. Not only that, but I can't ever find any good resources that appeal and grab my attention, and when I search on the forums, it usually has outdated recommendations that don't really work for me.

 

Anyways, I hope that covered where I'm at. If you have any recommendations, please feel free to throw them my way. Thanks so much!

 

TLDR: Stopped learning C++, went to C#, getting stuck at the "harder" subjects for both languages, and now I'm having trouble deciding if I should continue down C# or start to learn C++ now to make myself a better programmer. 



Sponsor:

#2 frob   Moderators   -  Reputation: 20257

Like
9Likes
Like

Posted 21 May 2013 - 09:40 PM

Why are you learning to program?

I enjoy art but am not a professional artist. I have taken art classes. I own an easel and a huge pile of art pads and have a shelf full of paint and pencils and drawing stuff. I study art and anatomy and cloth folds and color theory, and I do it because it is fun. I won't be a professional artist because I don't study the important topics that I don't like, but I'm okay with that. I can draw and paint, my daughters fight over who gets the paintings, and my family has framed a few of my creations. My intention is not to become a professional artist, but to enjoy creating art on my own.

Also, I enjoy law. I have taken classes on law, I have studied business law and IP law, but I have no intention to become a lawyer. If I need a lawyer I'm the first to admit I need to hire one. I am happy with the knowledge I have and my ability to interpret and understand legal documents.


If you are learning about programming to become a professional programmer you will need to study the topics. A professional programmer must know the data structures and algorithms. A hobbiest programmer can dabble, but they need to understand they won't reach the same level of competency and ability of a professional. And a hobbiest is okay with that.

So, why are you learning? Is your intention to be a professional and produce professional-quality work, or is it to dabble and enjoy the hobby?
Check out my personal indie blog at bryanwagstaff.com.

#3 nooblet   Members   -  Reputation: 167

Like
2Likes
Like

Posted 21 May 2013 - 09:48 PM

Hi frob,

 

It's funny that you of all people responded. I found a response from you in another thread (prior to creating this one) so I went through some of your posts to see your opinions and to do some more research. That, and I enjoy reading posts from those in the industry currently. To answer your question, although it's rhetorical (at least, the way I interpret it), I want to be a professional programmer (more specifically a game developer, but I'd like to branch myself out because I feel like the industry may be out of grasp for me), so it appears the next steps for me is to pick up a C++ book and try really hard to study these concepts and work my way towards becoming a professional.

 

Thank you for your insight, hopefully I can motivate myself to continue past my frustrations.


Edited by nooblet, 21 May 2013 - 09:49 PM.


#4 frob   Moderators   -  Reputation: 20257

Like
6Likes
Like

Posted 21 May 2013 - 10:09 PM

Since your goal is to program games professionally, understand that a professional game programmer usually has a four-year degree in computer science and has studied a broad base of topics (even the topics he doesn't like), or that the programmer has independently studied those same topics and created games in the process, often making a lateral move into games programming from a different programming job.

Matters of pointers and linked lists and exception handling are small things. They are implementation details. There are many more topics to study. About four years worth of topics.

If your intention is to get a job as a programmer at a game studio you will face the same requirements as any other job candidate. You don't exist in a vacuum and will need to be the best candidate for the job. Depending on where you are in life that may mean going back to school and getting a degree in computer science, or it may mean taking night classes in addition to self-educating and building your portfolio to the point of a lateral career move.
Check out my personal indie blog at bryanwagstaff.com.

#5 nooblet   Members   -  Reputation: 167

Like
0Likes
Like

Posted 21 May 2013 - 10:15 PM

Understood! I plan on going back to school this Fall, possibly taking care of my general education credits at a community college and then going to university again to work towards my CS degree (currently have enough credits to be considered a sophomore but didn't register for classes due to work). I think the points that you bring up is something that I needed to hear/read. I needed a reminder that I'll have to deal with topics that I may find boring to help land a career that I've wanted since high school. Again, I appreciate you taking the time to help me out with this! Thank you very much. For right now, I'm going to study the implementation and start self-teaching myself so that I can build my portfolio during school, and then I'll work towards the other topics when the time comes.



#6 0r0d   Members   -  Reputation: 813

Like
0Likes
Like

Posted 21 May 2013 - 10:45 PM

Other than going to school, one can certainly be a self-taught programmer. But, the main requirement for this is interest.  You must be interested and excited in learning about programming and game-related topics like rendering, physics, scripting, optimization, multi-threading, and many others.  I'm not saying that you need to be interested in all of these, but being interested in at least some is good.  If your reaction to having to learn about pointers and other topics is to not want to do it, then you might want to re-examine why you want to do this in the first place.

 

If you do decide you have the interest and want to continue teaching yourself, then I'd suggest going about it like this: Start with a broad and shallow approach, working through a good introductory book, and then do small projects afterwards.  The idea here being that in game programming and C++, there's a lot to cover and master.  Trying to master things one at a time is hopeless and doomed to failure.  You need to gain a wide understanding of what the language can do and what topics will arise in game development.  At that point you'll know what questions to ask, and where to look for answers when problems arise.  Then, to get a deeper understanding of specific topics, do different small game-related projects.  This will allow you to do something that's interesting, and where game-related issues will come up naturally.  You will have to use specific algorithms or programming techniques, and as you get more familiar with those and implement them, at that point you will get the deeper expertise you need... in that specific topic.  Do this over a year or two and then you'll start to be a decent all around game programmer.



#7 Ectara   Crossbones+   -  Reputation: 2916

Like
1Likes
Like

Posted 22 May 2013 - 12:28 AM

Basically, I'm relatively comfortable with both; with C++ I stopped using it when pointers were involved, and with C#, I stopped when I realized I had no idea what dictionaries do, how to do exception handling, or how to handle events.


I don't have much to add that wasn't already said, but I do have this to say. You will have a better understanding of what dictionaries are if you have a solid grasp of concepts in C++ like pointers and data structures; a dictionary or map is often implemented like a hash table or a red-black tree. I know that this knowledge isn't quite useful now, but my point is, if you progress in your understanding in one language, you will have knowledge you can apply to both languages.

#8 nooblet   Members   -  Reputation: 167

Like
0Likes
Like

Posted 22 May 2013 - 12:48 AM

Thanks everybody for your input with this.

 

@0r0d- It's not that I don't want to learn the material, it's the fact that I get frustrated with myself when I can't grasp the concept initially and eventually give up and blame the resource from which I'm learning the concept, although it's just me not pacing myself. Whenever I program without studying from a book or tutorial, I always have a blast and end up doing it for 12-14 hours straight because I don't realize the time has flown by. 

 

@Ectara - Yeah, I definitely understand what you mean. When I was studying C++, I learned some object-oriented principles, and of course the basics (like variables, functions, blah blah), so when I transitioned into C# it was amazing how much simpler it was to learn and grasp new concepts instead of spending days reading books and tutorials to try and figure out what functions and methods meant :P.



#9 Ectara   Crossbones+   -  Reputation: 2916

Like
0Likes
Like

Posted 22 May 2013 - 12:56 AM

If it helps, most of my C/C++ knowledge came not from reading books cover-to-cover, but from deciding what I want to do, and writing until I didn't know how to do something I needed to do. Then, I looked up how to do it in the most efficient way, and moved on. Repeat 100,000 times, and you're a wizard. I do have a lot of books, but most of them cover topics I already learned elsewhere.

If I had to pick something to understand first and foremost, go for pointers. Linked lists are nothing without pointers, and once you learn what a pointer is and why it is one of the most important things in a programming language (whether you manage them yourself, or the language does it for you), a lot of things will come easily.



#10 kunos   Crossbones+   -  Reputation: 2205

Like
1Likes
Like

Posted 22 May 2013 - 12:58 AM

my advice is to learn by doing, not learn to learn.

It's pointless to sit down with a C++ trying to understand everything without a final target.

Once you have the concept of functions and flow control you have all you need to create whatever program you want.. yes, the code will be ugly but it is important you get something done... only by doing messy programs you will really understand why higher abstractions are good and useful.

Learn to learn, in something as practical as programming, is just wasting time imo. Knowing a programming language is only a small part of being a programmer, the real skills are problem solving and the ability to find the info needed to solve a problem... that is where the line really is.


Stefano Casillo
Lead Programmer
TWITTER: @KunosStefano
AssettoCorsa - netKar PRO - Kunos Simulazioni

#11 lightxbulb   Members   -  Reputation: 666

Like
4Likes
Like

Posted 22 May 2013 - 02:45 AM

Thanks everybody for your input with this.

 

@0r0d- It's not that I don't want to learn the material, it's the fact that I get frustrated with myself when I can't grasp the concept initially and eventually give up and blame the resource from which I'm learning the concept, although it's just me not pacing myself. Whenever I program without studying from a book or tutorial, I always have a blast and end up doing it for 12-14 hours straight because I don't realize the time has flown by. 

 

@Ectara - Yeah, I definitely understand what you mean. When I was studying C++, I learned some object-oriented principles, and of course the basics (like variables, functions, blah blah), so when I transitioned into C# it was amazing how much simpler it was to learn and grasp new concepts instead of spending days reading books and tutorials to try and figure out what functions and methods meant tongue.png.

Maybe you picked the wrong tutorials if you became frustrated with pointers?

Here's what I do when I can't seem to understand some programming concept:

For example let's say I am reading on pointers here:

http://www.cplusplus.com/doc/tutorial/pointers/ (it's nicely written so you can check it if you haven't done so already)

If after I code plenty of "programs"(based on the ones in the chapter) I still cannot grasp pointers, I try another tutorial or book. There's no use getting discouraged when you don't understand something or if you can't grasp it fast enough - maybe it wasn't explained the way for you to understand - different people need a different approach to things. So I would recommend you to check up on these links:

 

(I cannot say that any of these tutorials/books is the best - I think it depends on the person, so you can check them out and find the best ones for you)

 

C++ tutorials:

http://www.cplusplus.com/doc/tutorial/ -  you can download it as a pdf

http://www.learncpp.com/

http://www.tutorialspoint.com/cplusplus/

http://www.cs.wustl.edu/~schmidt/C++/

http://www.cprogramming.com/tutorial/c++-tutorial.html

 

Books:

http://isocpp.org/get-started

http://www.computer-books.us/cpp.php

http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

 

http://www.amazon.com/Sams-Teach-Yourself-One-Hour/dp/0672335670/ref=sr_1_3?s=books&ie=UTF8&qid=1369211609&sr=1-3&keywords=C%2B%2B

(some people recommend these versions though:

http://www.amazon.com/Sams-Teach-Yourself-Days-5th/dp/0672327112/ref=sr_1_1?s=books&ie=UTF8&qid=1369211793&sr=1-1&keywords=Sams+tech+C%2B%2B

http://www.amazon.com/Sams-Teach-Yourself-Hours-5th/dp/0672333317/ref=sr_1_2?s=books&ie=UTF8&qid=1369211793&sr=1-2&keywords=Sams+tech+C%2B%2B

)

 

http://www.amazon.com/gp/product/1435457420/ref=s9_psimh_gw_p14_d0_i1?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1XZJA2XBCZA18ZAPEASD&pf_rd_t=101&pf_rd_p=1389517282&pf_rd_i=507846

http://www.amazon.com/Accelerated-C-Practical-Programming-Example/dp/020170353X/ref=sr_1_13?s=books&ie=UTF8&qid=1369212060&sr=1-13&keywords=C%2B%2B

http://www.amazon.com/Ivor-Hortons-Beginning-Visual-2012/dp/1118368088/ref=sr_1_fkmr0_1?s=books&ie=UTF8&qid=1369212096&sr=1-1-fkmr0&keywords=C%2B%2B+ivor+hor

http://www.amazon.com/gp/product/1840784326/ref=s9_psimh_gw_p14_d0_i7?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1XZJA2XBCZA18ZAPEASD&pf_rd_t=101&pf_rd_p=1389517282&pf_rd_i=507846

http://www.amazon.com/Primer-5th-Stanley-B-Lippman/dp/0321714113/ref=sr_1_7?s=books&ie=UTF8&qid=1369211855&sr=1-7&keywords=C%2B%2B

http://www.amazon.com/Absolute-C-5th-Walter-Savitch/dp/013283071X/ref=sr_1_1?s=books&ie=UTF8&qid=1369212165&sr=1-1&keywords=absolute+C%2B%2B

 

 

There are surely many more links that could be added and I'd be happy if the community does so. For now you can try checking out these ones.

 

P.S. Great thing there is a View autosaved content smile.png  - I unintentionally closed the tab I was typing into.


Edited by lightxbulb, 22 May 2013 - 02:45 AM.


#12 Yrjö P.   Crossbones+   -  Reputation: 1412

Like
2Likes
Like

Posted 22 May 2013 - 07:11 AM

TLDR: Stopped learning C++, went to C#, getting stuck at the "harder" subjects for both languages, and now I'm having trouble deciding if I should continue down C# or start to learn C++ now to make myself a better programmer.

Core programming skill is not about knowing a language. It's about the big picture of solving and managing the complexity of actual problems. Achieving a reasonable level of mastery over some language is just an initial hump you have to get over. With C#, you can get over it much faster than with C++, and the real progress can begin.

So stick with C#. You can (and should) learn more languages later, when you are already a decent programmer. For a beginner, C++ is just about the worst major language.

#13 Ectara   Crossbones+   -  Reputation: 2916

Like
1Likes
Like

Posted 22 May 2013 - 10:26 AM

So stick with C#. You can (and should) learn more languages later, when you are already a decent programmer. For a beginner, C++ is just about the worst major language.


This, I can agree with. I have 100 arguments why C is an easier language for a beginner to learn than C++, but if basic concepts need to be honed first, then I'd recommend C#, Python, or some other language that doesn't deal with the implementation details of the hardware. I started with BASIC many years ago, and I would not recommend it unless you are a mathematician.

#14 nooblet   Members   -  Reputation: 167

Like
0Likes
Like

Posted 22 May 2013 - 12:52 PM

Hi everybody,

 

Thank you all for the advice with this, especially lightxbulb for all of the resources for learning. I wouldn't necessarily classify myself as a "beginner", but I'm not great. I understand functions, classes, the flow of programs, arrays, looping, inheritance, and some other concepts. It's just "mastering" the language where I'm having trouble. Usually, when I learn a new topic for programming, then I immediately go out and create a new project and then get stuck again somewhere and stop learning again. I've made my own 2D games multiple times, and can say I'm a little better than most beginners, but I'm definitely not a great programmer as of right now I don't feel like. 

 

I think what I'll do is do some more studying with C# for a few months. I'll learn some of the other topics for it, such as debugging, event-driven programming, collections, and lambdas (I think that's what they're called?), and then when I feel like I'm a confident C# programmer, I'll start to transition into C++ and eventually make that my primary programming language. I think it'll be easier for me to transition into C++ rather than trying to master it first, plus I really enjoy C# right now just because of how simple it is and how easily everything fits together.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS