Programming |OT| C is better than C++! No, C++ is better than C

#51
For C++ two of the very best books are Effective C++and More Effective C++. Once you understand the basic syntax of the language, the next step is to figure out how you should best program in that language and to begin to understand what the potential pitfalls are. These two books cover that subject matter and are absolutely fantastic.

If anyone else is quite experienced in non-C++ languages I'd love to know what books they think are equivalent in other languages. Something for the intermediate professional that explains how you should program in the language.
 
#53
Pretty good with vb.net/c# if people need help with that. Also know my way around asp.net if people have questions about that (I know, web stuff isn't 100% programming :p)

Still wanting to get into Objective C and iOS development on the side at some point, because that seems to be one area of growth in the market (mobile web stuff is getting big too) and expanding my skill set is a good idea. And I guess I'll try to have a basic understanding of C++ too thanks to this thread.
 
#54
I think this year I might try to take up some hardware projects...get myself an FPGA board and work on my VHDL skills. You can come up with some really neat and useful designs if you know how to work an FPGA board. Completely different mindset though, since FPGA programs run in full parallel. You really need to be comfortable with state machines to get anywhere. There is such a large sense of accomplishment from creating working FPGA based designs though. I made my own simulated MIPS processor in school...still one of the biggest highlights of my degree.
Just did this last week and it was indeed awesome.
 

Haly

One day I realized that sadness is just another word for not enough coffee.
#58
The "for Dummies" series of books are generally not well thought of, though I never read any of them. With a wealth of recommended and acclaimed resources why would you settle for one of those?
 
#59
Cool thread.
I'm currently looking forward to learning Java this summer (gotta refresh my memory for an entry exam first). Also doing some hobbyist stuff with Python and Pygame. Too bad knowing Python isn't exactly employable here, but Java spots are a plenty.
 
#60
I'd like to recommend this book by Eric S. Raymond called The Art of Unix Programming. Despite its name I really recommend reading it even if you're not planning on designing applications for Unix, because it teaches you good programming design philosophies that you can use in any programming environment.

http://catb.org/~esr/writings/taoup/html/

Especially this page is essential:
Basics of the Unix Philosophy

edit: A small taste of what it's about:

Culture? What Culture?

This is a book about Unix programming, but in it we're going to toss around the words ‘culture’, ‘art’, and ‘philosophy’ a lot. If you are not a programmer, or you are a programmer who has had little contact with the Unix world, this may seem strange. But Unix has a culture; it has a distinctive art of programming; and it carries with it a powerful design philosophy. Understanding these traditions will help you build better software, even if you're developing for a non-Unix platform.

Every branch of engineering and design has technical cultures. In most kinds of engineering, the unwritten traditions of the field are parts of a working practitioner's education as important as (and, as experience grows, often more important than) the official handbooks and textbooks. Senior engineers develop huge bodies of implicit knowledge, which they pass to their juniors by (as Zen Buddhists put it) “a special transmission, outside the scriptures”.

Software engineering is generally an exception to this rule; technology has changed so rapidly, software environments have come and gone so quickly, that technical cultures have been weak and ephemeral. There are, however, exceptions to this exception. A very few software technologies have proved durable enough to evolve strong technical cultures, distinctive arts, and an associated design philosophy transmitted across generations of engineers.

The Unix culture is one of these. The Internet culture is another — or, in the twenty-first century, arguably the same one. The two have grown increasingly difficult to separate since the early 1980s, and in this book we won't try particularly hard.
 
#61
Which one is better (not necessarily easier) to go to c++ from? Ruby or python?

Or should I just say fuck it, i'm a smart kid and dive headfirst into c++ regardless?
 
#63
For C++ two of the very best books are Effective C++and More Effective C++. Once you understand the basic syntax of the language, the next step is to figure out how you should best program in that language and to begin to understand what the potential pitfalls are. These two books cover that subject matter and are absolutely fantastic.

If anyone else is quite experienced in non-C++ languages I'd love to know what books they think are equivalent in other languages. Something for the intermediate professional that explains how you should program in the language.
I love effective c++ and I know exactly what you mean. I mostly work in C# and I think I have a pretty good understanding of it, but I am not exactly sure what to recommend. C# has a lot less gotchas than a language like C++, and Effective C++ is mostly a list of gotchas and good practices for dealing with them.

I read a lot of books like
The Art of Unit Testing
Dependency Injection in .NET

But they're about concepts not directly related to the language. Mostly I try to follow the SOLID principle and general good practices with regards to OOD. But again, none of it is directly applicable to C#.
 
#65
The "for Dummies" series of books are generally not well thought of, though I never read any of them. With a wealth of recommended and acclaimed resources why would you settle for one of those?
I'm looking for all the best possible resources out there. I'll stick with the ones on the OP, and decide which one is best suited for me.
 
#66
Depends on how in-depth the courses are... I find beginners get tripped up by the behavior of pointers along with related semantic items such as the dereference operator and the address-of operator. Otherwise, due to the limited number of features, the language itself is fairly simple.
"But besides that, how did you like the play Mrs. Lincoln?"
 
#68
For a beginner, is it best to start C or C#?
Absolute beginner to programming? Doesn't matter. Start with anything and just dive in. Don't be bothered with the religious "language wars." The basic stuff you need to learn exists in every language and the examples you find will be just as good. You're not learning a language, you're learning how to program.

edit: It's more important to find a good resource and good tools for learning than it is which language the resource/tools are in. Personally I think C and C++ are sub-optimal choices since it will be a lot easier to get stuck and not know what is wrong, where some languages with more modern/interactive tools will show you the exact problem when you make a mistake. But honestly, just dive in with whatever you want.
 
#70
Absolute beginner to programming? Doesn't matter. Start with anything and just dive in. Don't be bothered with the religious "language wars." The basic stuff you need to learn exists in every language and the examples you find will be just as good. You're not learning a language, you're learning how to program.
Python or C, it's generally up to you...
Thanks for the responses!

Edit: Python and C seem like the notable choices.
 
#72
Absolute beginner to programming? Doesn't matter. Start with anything and just dive in. Don't be bothered with the religious "language wars." The basic stuff you need to learn exists in every language and the examples you find will be just as good. You're not learning a language, you're learning how to program.

edit: It's more important to find a good resource and good tools for learning than it is which language the resource/tools are in. Personally I think C and C++ are sub-optimal choices since it will be a lot easier to get stuck and not know what is wrong, where some languages with more modern/interactive tools will show you the exact problem when you make a mistake. But honestly, just dive in with whatever you want.
Fight fight fight
 
#73
For a beginner, is it best to start C or C#?
I'd say start with something that's very portable. With those two, C is without a doubt the most portable programming language. It might even be the most portable language of all languages since there are C compilers for pretty much every CPU architecture and operating system out there. C# is pretty Microsoft centric.

And yeah, Python is a great beginners language that is also very advanced. So it's not only for beginners, you can do very advanced stuff with it.
 
#74
I kind of wish I started out in C++ rather than Java or C#. It's where all the jobs are and I would probably be a better programmer today if I learned to think with pointers earlier on.
This. My company looks for C++ or C as a backup and ignore all those other pansy languages. Don't get tied to some proprietary crap like C# unless you are a MS employee. Learn a real, cross platform language.

I started with C, then C++. I also use Python and Bash.
 
#76
I think python is probably the best language to go with when first learning programming. It's an excellent option. Great resources, interactive interpreter, easy to do stuff and immediately see the results.

But in the end, the language you choose doesn't really matter that much when you first start out. There's a huge amount of things you need to learn, and the language you use has very little impact. You just need to actually dive in.
 
#77
I started learning pascal at college which is a very simple language but it's not really relevant in this day and age.

If you are a beginner it doesn't really matter which language you start on. they all have similar principles. its mainly syntax differences.

But I do recommend you start with C++ as it is a big language in the programming space and the things you learn from it can easily been applied elsewhere. I've found the migration from c++ to c# to be quite simple for example.

Python is also a great beginners language as its so simple to get started and make something quickly.

I mad a simple angry birds clone in a couple of days using Python and the Pygame and Pymunk libraries for example. it really is a fun and interesting language.
 
#82
Quick question, Java-GAF!

For as long as I can remember, I have been declaring and initializing reference types like this:
List<Integer> list = new LinkedList<Integer>();
instead of:
LinkedList<Integer> list = new LinkedList<Integer>();

I could swear that there was an subtle advantage to my way, which is why I switched to doing it in the first place. I can't remember why. Am I crazy, or was there actually a reason for this? Thanks!
 
#83
Right now I'm working in XNA (C#) and loving it.

Trying to get this very simple game done and sent out to the marketplace to see what happens!
This new development has baffled me recently. For me the programming language for gaming always was C++, while C#, Java, VS, etc , etc, were meant for commercial applications, desktop or web. Are there any guides into how to enter this mysterious new world? I really want to start programming in what is my passion, I've been working for over 8 years, mostly .NET/c# with some java here and there, doing commercial stuff, that while is ok and you learn a lot, it really makes me feel like I die a little inside, simply because I can't get excited about what my applications are for.

And to be honest, and is not lack of modesty, I've made some neat stuff, but is never like actually making a freaking game. Somehow I always felt that it was just out of my league, but maybe I'm mistaken.
 

Tomat

Wanna hear a good joke? Waste your time helping me! LOL!
#84
I've taken two computer science courses focused on C++.

I feel like Bill Gates. When does the money start flowing in?
 
#86
Quick question, Java-GAF!

For as long as I can remember, I have been declaring and initializing reference types like this:
List<Integer> list = new LinkedList<Integer>();
instead of:
LinkedList<Integer> list = new LinkedList<Integer>();

I could swear that there was an subtle advantage to my way, which is why I switched to doing it in the first place. I can't remember why. Am I crazy, or was there actually a reason for this? Thanks!
In Java, List is an interface while LinkedList is a concrete implementation of the List interface. So there isn't much of an advantage to declaring the variable as a List, but there is an advantage to taking List parameters to functions or in your public properties etc. Because then you're coding to interface, not implementation. If your function just operates on List, you can pass in anything that implements List and it'll work.

So for example if you wanted to change to ArrayList, you would only have to change the one line, not everything.
 
#88
In Java, List is an interface while LinkedList is a concrete implementation of the List interface. So there isn't much of an advantage to declaring the variable as a List, but there is an advantage to taking List parameters to functions or in your public properties etc. Because then you're coding to interface, not implementation. If your function just operates on List, you can pass in anything that implements List and it'll work.

So for example if you wanted to change to ArrayList, you would only have to change the one line, not everything.
YES. I know about interfaces, but I could not remember how doing what I did was functionally advantageous. Of course, turns out, it's just easier for the coder. Thanks!
 
#89
I started going through Python with inventwithpython.com (I'm sure there's better online tutorials, like the ones mentioned) this weekend and it's crazy how much of an easier time I've had with it than trying to learn C++ on my own. I've been told it's a good language if you want to learn as a hobby but not necessarily for job purposes. I've had fun learning Python whereas with C++ I was struggling more with language mechanics, if that makes sense. Though I kind of want a viable skillset that could theoretically help in future employment. Would it be better to just suck it up and push through C++ instead until I get better or stick with Python and go back once I have a much better foundation?
 
#90
Anyone know any good guides/ebooks for learning ASP.net? I've got the basics of both VB and HTML, but combining them both isn't clicking as well as I'd hope for me.
 
#92
I started going through Python with inventwithpython.com (I'm sure there's better online tutorials, like the ones mentioned) this weekend and it's crazy how much of an easier time I've had with it than trying to learn C++ on my own. I've been told it's a good language if you want to learn as a hobby but not necessarily for job purposes. I've had fun learning Python whereas with C++ I was struggling more with language mechanics, if that makes sense. Though I kind of want a viable skillset that could theoretically help in future employment. Would it be better to just suck it up and push through C++ instead until I get better or stick with Python and go back once I have a much better foundation?
I've found that Python is indeed great for learning the basics of how programming actually works, so it is a good idea to start with Python and learn how everything there works because you can then use that knowledge when you're trying to learn other languages. After learning Python it would be a much more trivial task to learn C++ because you already know the basics of how programming works and just have to implement that knowledge into the new language's syntax and conventions.

And python is very popular for things like front-ends. The back-ends are usually written in something like C++ while the controlling front-end is written in scripting languages like Python. Actually, I think I read somewhere that it's required to know Python if you want to work as a software engineer for Google. I'm not sure if that's true or not, but I know Google uses python for a lot of their front-end implementations.

And don't forget that while learning it should always be fun. If you're not having fun learning C++ but do while learning Python, stick with Python because it's much easier to learn if you're having fun while doing it.
 
#93
Okay so I'm trying to pick up C++ on my own for the first time. I'm struggling to figure out yo best go about writing and compiling my code. VS 2010 seems a bit daunting to try to start out using, and writing in Notepad ++ leaves me the issue of figuring out how to compile my code.
 
#95
Okay so I'm trying to pick up C++ on my own for the first time. I'm struggling to figure out yo best go about writing and compiling my code. VS 2010 seems a bit daunting to try to start out using, and writing in Notepad ++ leaves me the issue of figuring out how to compile my code.
VS is actually one of the more 'easier' ones. It's just mainly not used for more experienced C++ programmers. I would have a look at VS and also Code::Blocks.
 
#96
All the tutorials and guides I've found so far all seem to be in C# too, but unfortunately work want it to be in VB. thanks for the link.
For the most part, VB.Net is C# There are only a few features that are in one or the other and not in both.

Dim myInt as Integer is the same as int myInt;
 
#98
Frighteningly little programming in my CS degree. Even my supposed 'large software project' (a very simple text adventure) ended up being about 20% coding and 80% writing up requirements and risk assessments and team managemet and design analysis. The idea was to simulate a business environment, and it would have been ok actually if the scope of the project wasn't so small that it rendered the whole thing farcical. Very much looking forward to pursuing some of my own interests this summer.

Been dipping my toe into iOS for a few months using the course on iTunes U which I'd highly reccomend. I've got an idea for a VERY simple game which I'm going to work on now I have the time. First though I will need a major refresher in OpenGL, and then I'll need to learn OpenGL ES. Looking at some of the program's I worked on last year is making me scratch my head a bit, even though it's mostly quite basic. Its fun though thinking about it in my head, how to cmpletely separate the rendering engine from the model and stuff.

Also signed up for a web development since it covers a lot of things I should probably know (HTML, php, etc) which I'll be doing more casually. Seems like a pretty big undertaking but it's aimed st beginners I think so I should have a head start and it was reduced by 92% so it doesn't really matter if I don't finish. My dad who is an absolute beginner signed as well so that should be interesting.
 
#99
Frighteningly little programming in my CS degree.
CS isn't about learning how to code. It's about the theory. Ideally by the end you'll be able to take the concepts you learned and apply it to any language.

If you want to learn the trade of coding, go into CIS, take extracurriculars, or just learn on your own.
 
CS isn't about learning how to code. It's about the theory. Ideally by the end you'll be able to take the concepts you learned and apply it to any language.

If you want to learn the trade of coding, go into CIS, take extracurriculars, or just learn on your own.
Every CS program is different. The distinction between CS and "CIS" does not exist in most places.

Many CS programs are very heavily focused on practical programming ability. Others are focused on theory / prepping for PhD programs. There's a hundred variations between.