The last week has been intersting journey for me, I can tell you than the seti science app code isn't really friendly in places.
If you worked with FORTRAN (great language
![Cheesy :D](http://lunatics.kwsn.info/Smileys/default/cheesy.gif)
) then In my opinion:
If you can learn about C++ first (maybe even try one of the "in 30 days" type books), then learn just enough ordinary C to read others legacy code, that would probably put you in good stead.
This way around avoids learning some bad habits, and would be enough (with some effort) to get you to compile the science app (provided you don't look inside too hard and get confused at this point)
For larger projects, interaction with the OS, and architecture of the processors is trending to favour the idea of compact efficient classes and objects (think cache, pipelines and alignment), Rather than long streams of branchy procedural code. This would mean the most reuseability and productivity, You would probably want some more advanced software engineering in Object Oriented techniques then because your understanding has outgrown your programming skills, or vice versa.
Then you can focus on optimisation which requires hardware knowledge and is much more specialist as you have to read other peoples "non_C++" code, much of it can be quite arcane and nothing whatsoever to do with objects
![Cheesy :D](http://lunatics.kwsn.info/Smileys/default/cheesy.gif)
more like Assembly. or maybe even a little like particularly loopy and arcane FORTRAN code you might have seen.
example: seti science app is a lot of different people's work over many years. It seems to be originally procedural C code, with a smattering of interface C++. The optimised parts are mostly compiler intrinsics, which are an alternate (slightly more portable) form of assembly, implementing the SSEn bits.
This makes for one mother of a spaghetti pile that will send you crosseyed, but it is all good fun
![Cheesy :D](http://lunatics.kwsn.info/Smileys/default/cheesy.gif)
Jason
.