13 Replies - 10336 Views - Last Post: 13 December 2012 - 10:41 PM

#1 Crockeo  Icon User is offline

  • D.I.C Head

Reputation: 44
  • View blog
  • Posts: 247
  • Joined: 21-June 11

Getting Past The Plateau - Beware, Wall of Text

Posted 14 June 2012 - 01:10 PM

Before actually asking my question, I want to tell a short story (sort of). I've been programming for a couple of years now (literally 'a couple' [2]). I've switched between languages a lot, but I've found that my favorite languages have always been C, C++, and Java. I've been a Java programmer for a little more than a year now, but I got into C++ again a few months ago. I've been learning quite a lot since I first started programming in C++ (I have more general programming experience, so I can now learn how to do it in syntax specific ways rather than learn the concepts).

I've encountered what many people might call 'The Wall,' but I call it 'The Plateau.' It's that point where you've learned just enough that to make a program, you don't need to learn anything new. I'm by no means and expert with C++, I know enough to get by, and I want to change that. This is the part where I usually bail out and try something else, but I find that I really want to learn C++, even more than I had learned Java.


Now after that giant story, here comes the real question: Where can I learn 'advanced' C++. All tutorials I find seem to end at OO design. They never get into anything 'interesting' if you will.

Does anyone have a personal favorite, or just something that looks good?

Thank you (especially for reading all of that text!)
~Crockeo

Is This A Good Question/Topic? 0
  • +

Replies To: Getting Past The Plateau - Beware, Wall of Text

#2 modi123_1  Icon User is online

  • Suitor #2
  • member icon



Reputation: 8375
  • View blog
  • Posts: 31,131
  • Joined: 12-June 08

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 14 June 2012 - 01:44 PM

What's not interesting about them?

Have you poked through amazon under "advanced c++"?
Was This Post Helpful? 0
  • +
  • -

#3 aresh  Icon User is offline

  • It's a 16-Bit World!
  • member icon

Reputation: 273
  • View blog
  • Posts: 4,089
  • Joined: 08-January 12

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 14 June 2012 - 02:32 PM

How about Thinking in C++ ??
Was This Post Helpful? 1
  • +
  • -

#4 ishkabible  Icon User is offline

  • spelling expret
  • member icon





Reputation: 1616
  • View blog
  • Posts: 5,707
  • Joined: 03-August 09

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 14 June 2012 - 02:44 PM

I recommend reading some books and trying to re-implement small parts of advanced libraries that you aren't sure how to(try implementing boost.sprit. that stuff is crazy). try new libraries like boost and Loki.

code review is also VERY helpful. post code here and I'll look at reviewing it(and others more experienced than me can review it too!). helping out in the C++ forums here has helped me almost more than anything else. ask questions in the forums too! you'll get more incite into the language that you would on your own by asking questions becuase more experienced people can explain it.

learning new languages with new concepts will allow you to see C++ in a different way so trying a new language isn't a bad idea. I recommend a lisp, Prolog, or, my favorite, Haskell. those will really make you think differently.

books that are good to read at this point:
  • Modern C++(this book will blow your mind)
  • C++ programing language: special edition
  • almost anything from this page
  • C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
  • C++ Templates: The Complete Guide
  • C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond


Quote

What's not interesting about them?

I keep telling people this but OOP is just simply not an interesting concept in C++, the support is horrible. It has it's place but people WAY over use it. C++ has SOOOO much more than just OOP. C++ is a multi-paradigm language and you have to learn to use it all in combination.

This post has been edited by ishkabible: 09 October 2012 - 09:05 PM

Was This Post Helpful? 2
  • +
  • -

#5 Crockeo  Icon User is offline

  • D.I.C Head

Reputation: 44
  • View blog
  • Posts: 247
  • Joined: 21-June 11

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 15 June 2012 - 05:25 PM

Thanks for the suggestions everyone, I've been looking through the suggestions and I'll probably order one (or find an internet version) sometime soon.

Thanks for the help!
Was This Post Helpful? 0
  • +
  • -

#6 Bench  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 854
  • View blog
  • Posts: 2,338
  • Joined: 20-August 07

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 16 June 2012 - 04:17 AM

In addition to the excellent C++-focused books which ishkabible has listed, there are other non-C++ books which are well worth a read as a means to improving yourself generally as a programmer; especially if you ever want to work on a project with other people
  • Code Complete 2nd Ed - McConnell
  • The Pragmatic Programmer - Thomas/Hunt

The advice in these books is fairly generic to the craft of software construction (i.e. how to think like a programmer) - they cover programming as a whole without really hitting on any specific language.
They contain a lot of very valuable lessons about writing 'good', robust, working code which somebody else (or yourself in 6 months time) will be able to understand and maintain.

I realise these books don't quite fit what you're looking for right now, but they are worth keeping in mind as 'must read these one day'

This post has been edited by Bench: 16 June 2012 - 04:23 AM

Was This Post Helpful? 1
  • +
  • -

#7 vividexstance  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 630
  • View blog
  • Posts: 2,107
  • Joined: 31-December 10

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 16 June 2012 - 07:03 AM

View Postishkabible, on 14 June 2012 - 05:44 PM, said:

C++ is a multi-paradigm language and you have to learn to use it all in combination.

Stroustrup would go even farther and call it a:

Quote

general-purpose programming language with a bias towards system programming that
- is a better C
- supports data abstraction
- supports object-oriented programming, and
- supports generic programming

Like aresh, I would recommend Thinking in C++, especially volume 2 if you feel you already know most of the basics of C/C++. I also suggest "The C++ Programming Language" and possibly "The Annotated C++ Reference Manual".
Was This Post Helpful? 1
  • +
  • -

#8 NickDMax  Icon User is offline

  • Can grep dead trees!
  • member icon

Reputation: 2247
  • View blog
  • Posts: 9,237
  • Joined: 18-February 07

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 20 June 2012 - 01:40 PM

*
POPULAR

If you really feel as though you have reached a "plateau" you are only going to get so much more out of "Advanced" books.

Once you get a handle on a language the next step is to begin to USE it. You really learn more about software development from DOING it than reading up on advanced techniques.

Reading and hacking on other people's code is an excellent way to learn -- there are lots of open source project you can download, build and then pick at (you don't have to grok the whole project, just pick some features that interest you and look into them).

Another great way to expand your mind is to break out of your comfort zone. I highly recommend learning some Haskel (or another Functional programming language) - you will find more and more functional aspects to procedural languages. You might also notice a slow shift towards functional techniques in many of the procedural languages.

Since computing seems to be moving away from the single process(or) computing and onto multi-cored chips, and into the cloud -- parallel/concurrent programming techniques are becoming vital. Do you really know what a thread is? What is a Mutex? What a semaphore is used for?

Knowing the language just means that you are ready to play. It is only a TINY little piece of programming -- now you have to learn STUFF! There are APIs for everything under the sun, there are common libraries, there are common integrations (ever talk to a DataBase? post data to a web site?), etc...
Was This Post Helpful? 5
  • +
  • -

#9 BetaWar  Icon User is online

  • #include "soul.h"
  • member icon

Reputation: 1105
  • View blog
  • Posts: 6,918
  • Joined: 07-September 06

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 20 June 2012 - 02:59 PM

I have found that coming up with projects to accomplish (or using the ones in something like the list of projects) helps a lot. Especially if you don't limit yourself to one area.

For instance, I went through and made a web server and a IRC bot to learn about sockets and threading. I attempted to make an OS (a few different times at this point) to learn about assembly and C/C++ interaction as well as firmware development. Bit packing can be a fun way of learning about compression (just create a simple huffman tree and read/ write the compressed files out). The algorithm behind RSA encryption isn't too bad either, and if you limit the numbers you are using to, say, a 32-bit integer, you should even be able to get it working pretty quickly (though I haven't tried this one). There is also graph theory, and things along the lines of a traveling salesman program (that was fun, both graphically and terminal based). I am currently making a game to learn OpenGL, byte mashing, online play (game server, multi-user async communications, centralized storage) and just to have fun in general. It is really amazing how much you get to thinking about things when you take up a project and follow it through.

You could always go about writing your own new and delete operators for C++ such that you allocate a block of memory when the program starts and all allocations and deletions from that point forward have to go through your functionality. It is a cool way to learn about simple memory management and what types of things you actually need to store in/ around allocated memory to ensure you do the correct thing when freeing it (such as the length of the allocated memory).

Just come up with something you haven't tried before and give it a try. It is a lot of fun.
Was This Post Helpful? 3
  • +
  • -

#10 Quitonarch  Icon User is offline

  • New D.I.C Head

Reputation: 1
  • View blog
  • Posts: 1
  • Joined: 09-October 12

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 09 October 2012 - 04:49 PM

This thread has helped me a lot too! Thanks guys!
Was This Post Helpful? 1
  • +
  • -

#11 ishkabible  Icon User is offline

  • spelling expret
  • member icon





Reputation: 1616
  • View blog
  • Posts: 5,707
  • Joined: 03-August 09

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 09 October 2012 - 09:31 PM

I really like it when we help more than just the person who asked; it's the whole point. thanks for telling us! we don't hear that enough.

you should up-rep the posts that helped you as well, it helps others like you identify the best information.

This post has been edited by ishkabible: 09 October 2012 - 09:32 PM

Was This Post Helpful? 1
  • +
  • -

#12 NathanMullenax  Icon User is offline

  • D.I.C Head
  • member icon

Reputation: 83
  • View blog
  • Posts: 176
  • Joined: 23-September 12

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 10 October 2012 - 01:08 PM

I can't say enough about UVa Online Judge and Project Euler for programming practice.

UVa is great practice for optimization and algorithms, and if you go after the hard problems you'll be writing solvers for cases of NP-complete problems. Project Euler focuses on number theory and organizes its problems in order of difficulty so there's always a harder problem to solve unless you're one of the masochists who can keep up with new problem releases.

Both websites are great for (at worst) making one feel inadequate as a programmer and (at best) giving one a sense of accomplishment by providing feedback. PE has 'badges' and 'levels' that correspond to different achievements, like 'solved 100 consecutive problems'. UVa gives you more raw data, like ratio of solving submissions to submissions overall, how fast your solution was relative to others, and ranking.

http://uva.onlinejudge.org/
http://projecteuler.net/
Was This Post Helpful? 0
  • +
  • -

#13 stackoverflow  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 164
  • View blog
  • Posts: 545
  • Joined: 06-July 11

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 11 October 2012 - 08:52 PM

The only way to get "better" or pass the plateau is to make more programs. Try your hand at making a non-trivial program (graphical game, networking applications, etc).
Was This Post Helpful? 0
  • +
  • -

#14 antolyevich  Icon User is offline

  • New D.I.C Head

Reputation: -6
  • View blog
  • Posts: 12
  • Joined: 02-September 12

Re: Getting Past The Plateau - Beware, Wall of Text

Posted 13 December 2012 - 10:41 PM

If your education in C++ is only in the basics consider taking a college course in C++ at your local community college. Taking a class, online or traditional is the easiest way to learn a language, and scale the "wall"
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1