I'm Lost in Programming Limbo

Pages: 12
Less study, more fingers-on experience. Get coding! It's the fastest and easiest way to learn ;)


I hear that a lot on the forums. It's simply not true. Both the fastest and easiest way that I've learned has been from reading. I suspect the "fastest and easiest way" part varies from person to person.
If you can absorb and remember how to do something without ever actually doing it, you are gifted.
If you can absorb and remember how to do something without ever actually doing it, you are gifted.


Agreed.
I think both are pretty equally important. You can't do something if you don't find out how to do it first (unless you learn by experimentation, which is fine but expect to make mistakes; reading can save you from making mistakes because many of those mistakes will have been made and documented by someone else). Similarly, L B's post is also true. You have to do both - first learn and then apply your learning to solidify it.

@BHXSpecter,
The Pragmatic Bookshelf one seems to be the correct one.
I agree with LB on this one. Reading is fine, but you do really need to do what you are reading too in order to solidify what you have just read. Because of the books that are out there I have become pretty efficient at coding terminal apps with menus (as it is the main thing most books teach -- terminal apps). I did an app a while back that had the menu code similar to this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void menu()
{
     int selection = 0;
     cout << "Make selection (1-4): ";
     cin >> selection;
     switch(selection)
     {
          case 1:
               addMenuItem();
          break;
          ......
          .......
     }
}

Then inside main() was just:
1
2
3
4
5
6
#include "menus.h"
int main()
{
     menu();
     return 0;
}

Each menu item went to a function that did the work I needed at the time. Just it seemed all my apps were simple terminal apps that did basically the same thing (like the Address book). Been wanting to move forward, but just kept feeling like I was always in the same place. Depressing when you feel like you are getting no where in your endeavors.
Last edited on by closed account z6A9GNh0
It might just be selection bias from the subset of programs you've showed us but it seems like you're not progressing because you're not challenging yourself or doing anything new. You should be working on projects that are 2 steps above your current skill level. It's what I do, and it's also depressing because you don't feel like you ever finish any non-trivial projects, but when you do, it's a good feeling because you can actually watch yourself improving - the program you couldn't even conceptualise a few months ago now flows from your fingers without thought.
it seems like you're not progressing because you're not challenging yourself or doing anything new. You should be working on projects that are 2 steps above your current skill level.

I agree completely. It may very well be what I'm doing because I seriously don't know how to gauge my skill level outside of saying I'm beginner. Which lends to not knowing what is 2 steps above my current skill level. Main reason I'm in this programmer's limbo right now, knowing how to do basics but having no clue what to do or where to go from there to progress the learning. Rather frustrating at times.
@BHXSpecter:
Data structures are a vital part of any application. I'd suggest reading up on Trees and Heaps on wikipedia (the articles are pretty good and not too hard). Then, try implementing a few.

An easy algorithm to test a Heap with is "Dijkstra's Algorithm": it finds the shortest path between a source and every other point in the set. Most implementations use a heap. The algorithm is very simple (literally 3 lines in my first implementation), so all focus lies on the data structure, but you still feel you're doing something useful rather than just making a data structure "because".
A good way to begin making more complex applications is to learn design patterns, idioms, and best practices. The key is to combine them to form a puzzle of understanding rather than just considering them one at a time.
@Gaminic:
Okay, found the wikipedia articles:

http://en.wikipedia.org/wiki/Heap_(data_structure)
http://en.wikipedia.org/wiki/Tree_(data_structure)

@moorecm:
Googling for design patterns, idioms, and best practices (at least the first two) brings up a lot of links to books that I can't afford. I broke down and spent $40 to get Bjarne's book (which my wife will kill me now because we are basically broke). Google is a handy tool granted you know how to use it properly :). I'll keep searching (trying to find an article on them from a source that is trustworthy.
Try out Design Patterns: Elements of Reusable Object-Oriented Software by Gof (¿is it legal to download it?)
It shows examples with C++ and smalltalk.
Try out Design Patterns: Elements of Reusable Object-Oriented Software by Gof (¿is it legal to download it?)
It shows examples with C++ and smalltalk.

If they permit you to download it free off their site, then yes, but if you are getting it without paying the no. It's illegal to get anything from a site for free if the main site selling the product isn't the one giving it away for free.

[REVISION]
How do I find the best practices online and know they truly are the best practices?
Last edited on by closed account z6A9GNh0
The GoF book is priceless. You can grab a used copy from Amazon for ~$30. The patterns covered are all explained online in various places. It's a very popular subject.

You might want to check out this book as well:
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Print_Version

C++ Coding Standards and C++ Gotchas are good books for learning best practices and what not to do.
Last edited on
I'll find a copy of Gof's book. I'll look into the others too.

Would this still be a good project list to do? http://www.cplusplus.com/forum/beginner/3473/

Kind of a fall back for when I get into a rut.
Last edited on by closed account z6A9GNh0
Look on google for MIT OCW. Its an excellent resource where lectures for various courses are recorded. There are many courses such as an introduction to computer science.
Topic archived. No new replies allowed.
Pages: 12