• Forum
  • Lounge
  • Need Advice (Programming related loosely

 
Need Advice (Programming related loosely)

Ok, I have been trying to learn C++ and have every intention of learning others after it like C#, PHP, Python, LUA, etc. The thing I need advice on is that when I ask about learning C++, I get comments like this:

People focus on the language too much. Programming is more about the art than the language.

OR

Don't worry about the language, learn the concepts first and everything else will follow.

When I ask about what they mean by concepts, they reply even more cryptic. "Just program in your language and you will learn the concepts." With that sort of reply for the past 12 years I have been more and more self conscious to where all I did for 12 years was do cin/cout apps. I went to DeVry Online for the GSP program and the programming courses were my main complaint about the Online part (campus was way better). With those kind of replies I have got to where I don't get on forums much anymore or IRC. Coming here is kind of my last resort as I've exhausted everywhere I can think of asking for advice and help.

What do I do, by concepts do they mean the paradigms (logic, function, declarative) or something else? Because of my lack of confidence due to the past 12 years I have found I am not so good at taking programming ideas, breaking them down to smaller parts, making them pseudo code, and then C++ code (the problem analysis and design aspect of it). How do I improve this or is it possible? I've been told you either can do it or you can't, which I disagree with as you learn to break down math problems in school so I think you can learn to break down programming problems.

I am currently reading C++ Programming From Problem Analysis to Program Design 3rd Edition (on chapter 9 of 19) and slowly picking up my confidence. Just wanting advice (and yes I'm programming as I read, I'm not doing what a lot of new programmers do; read then think I know it).
closed account (3hM2Nwbp)
Generally, concepts should include:

Control Structures

if / else / while / for / do-while / switch / goto


Well Known Paradigms

Object Oriented / Procedural / Event Driven, etc


General CS Details

Do I know how my OS(es) work(s)? Do I understand how memory works?



Problem Solving

I think this is where your concern lies. There are nearly infinite ways to solve any given problem, a programmer should eventually be able to make a good one, if not the best. This unfortunately usually only comes with experience. I still find myself looking back on work that I've done in the past and saying "Wow, that was a stupid way to do it." The only sure-fire way to get better at problem solving is to get out there and start solving problems! You might also like to do some reading along the way. The link below is for a Wikibook entitled "More C++ Idioms" - but the general concept holds true for other languages as well. Another way to learn is by associating with the experts. This forum has a few (well, 7 or 8 that I know of) users that I'd gladly call experts, and they love answering questions.


http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms
If they talk about a vague notion of "concepts" in a language-independent way, then they're definitely talking about:
1. At the beginner level, the ability to build procedures that perform simple functions using the basic constructs of decision and iteration.
2. At the advanced level, the ability to abstract away from the small details and perceive a collection of building blocks as a single, more complex building block.
3. Finally, the ability to understand computational costs, and deciding the most appropriate choice between different choices of algorithms and data representations, and hopefully how to create new, better ones when necessary.
This is the core of programming. All languages have mechanisms that allow these things. That's why in some cases (e.g. learning) the choice of language doesn't matter too much. Although many agree that some languages are better as first languages than others; what they don't agree on is which ones.
It is OK to "focus on the language". You cannot learn, for example, French if you do not focus on the French language. You already know how language works -- you use one every day of your life.

Be careful when you get people's advice on learning things. One's own ability to use a programming language does not necessarily translate into a correct pedagogy -- if you wish to ask advice on learning <language X> (like C++), ask someone who knows something about teaching it to others. Simply being proficient is not enough. (If it were, there would be fewer crap books about C++ or vb or whatever in bookstores.)

I've been told you either can do it or you can't, which I disagree with ...

Alas, you have been told correctly (more or less).

It is true that everyone can learn to program (or paint, or play music, or drive with a manual-transmission...) to some level of competence, but some skills require a certain internal way of thinking to be less than... strenuous. Yes, you can overcome with intensive training and practice, but that takes years. Even some people who want it very badly find that they struggle with it unendingly.

That said, don't put too much stock in it. If you want to and enjoy programming, then there is no reason you can't. Pick a subject you enjoy and work at it.

If you want to make a specific application, start working on it. You will need to learn how to do things you haven't done before, as well as learn better ways to do things you have done before, as you research and study and work your way through it.

Here is a final piece of advice: don't ask vague questions (like, "what is a good way to learn C++"). The best way to get useful advice is to ask very specific questions about some aspect of C++. Like:

  ■ Why would you use the ?: operator instead of an if..else construct?
  ■ Which regex library do you prefer and why?
  ■ I've been having trouble keeping my console window open at the end of the program.
    What might cause that?
  ■ My file-reading loop isn't working right. Would you mind taking a look at it to see what I'm doing wrong?

People may not be able to teach you "how to program" but they are very happy to share what they do know about specific things. You will likely get a lot of good (and some bad) advice about these specific topics.

You just need to come across the topic as you are working your way through your task.

Hope this helps.
Yes, it helps. Also makes me think that maybe everyone over the past 12 years were telling the truth to me. I just may not be cut out for programming. Thanks for all the input though.
My first language was a hard drive, a steady hand and a magnetized needle. I think my first language is the best.
My teacher keeps stressing about having the algoritm written down in simple steps that owuld translate to two lines of C++ first before going to actually code it. I see why, as when I know every signle step of what to do (when doing what I did in C# in C++), the code gets cleaner and I think of more efficient ways.
Learning something concrete is always easier than learning something abstract. Don't be so concerned with what other people tell you.
Exactly. Work on the problems you want to do, and learn as you go, and it'll be ok.
Thanks for the advice, wasn't sure what to do in this regards.
My teacher keeps stressing about having the algoritm written down in simple steps that owuld translate to two lines of C++ first before going to actually code it. I see why, as when I know every signle step of what to do (when doing what I did in C# in C++), the code gets cleaner and I think of more efficient ways.


Absolutely agree but during implementation, the choice of programming language matters too. Before C++ STL was available, what can you do when you want a dynamic expanding array, tree, linked list etc ? You either reach out for commercial libraries or you code your own isn't it ?

So a programming language with a lot of ready to use data structure classes/functions available will keep our implementation much simpler and faster. That is also the reason why for some Uni Professors with newer choice opt for Python and the like. Old times of using C is just too slow. Those code for data structures "cloud" the algorithm you have when you look at the program source code. Of cuz there was why functions/procedures/classes were introduced to keep the code manageable but does it really work in reality ?
Topic archived. No new replies allowed.