I bought a ~600 page book yesterday from my library for 25 cents that's supposed to help teach you C++, so I was wondering before I even started:
What are some likes and dislikes from the people that code it?
Should I learn another programming language before jumping into this one?
What's a good compiler I can use on a WinXP box?
For those wondering what the book is:
C Primer Plus, THird Edition by Stephen Prata (SAMS Publishing) copyright 1999
I dislike MSVCC. The port of GNU MingW+MSYS for Win32 (http://www.mingw.org/) is an awesome compiler, which can be extended to compile C++, Java, and Assembly (it comes with C compiling). I really like it.
One thing I dislike about C++ (mostly due to learning VB6 first), is that I can't use a globally accessible variable (IE: class main has a value, but I need to pass an instance of main to every other class so that I can access 1 variable). It's very annoying, but I've gotten somewhat used to it.
QuoteWhat are some likes and dislikes from the people that code it?
Likes:
- Fast and small binary files
Dislikes:
- After learning VB, this is hard++.
QuoteShould I learn another programming language before jumping into this one?
I think Java is a lot easier than C++, yet uses the same basic syntax, so you should probably learn a bit of that first.
QuoteWhat's a good compiler I can use on a WinXP box?
I settle for MSVC++.
Sounds like you got a C book instead of a C++ book. :P
Anyway, I like it in general, although I find that it's generally cumbersome to use for things more than just trivial programs, but this is probably just because I haven't worked at learning it as well as I should.
I don't know the difference between the compilers, but I generally like the MSVC 2003 IDE. It's not QUITE as clunky as the VC6 IDE, although still not nearly as intuitive as VC# or VB.NET (I don't really understand why, either, given that they use the same IDE).
Meh. I don't use C++ much any more, but I liked it when I did. It was the first language I learned (or started learning, anyway). I used Borland C++, which actually seemed to work pretty well.
Quincy uses mingw and works quite well for a lightweight C/++ tool on WinXP. It will need a little more intuitivity, though.
Quote from: Quik on September 18, 2005, 04:10:05 PM
Quincy uses mingw and works quite well for a lightweight C/++ tool on WinXP. It will need a little more intuitivity, though.
Intuitivity? I don't think that's a word. :p
Quote from: rabbit on September 18, 2005, 01:02:18 PM
I dislike MSVCC. The port of GNU MingW+MSYS for Win32 (http://www.mingw.org/) is an awesome compiler, which can be extended to compile C++, Java, and Assembly (it comes with C compiling). I really like it.
One thing I dislike about C++ (mostly due to learning VB6 first), is that I can't use a globally accessible variable (IE: class main has a value, but I need to pass an instance of main to every other class so that I can access 1 variable). It's very annoying, but I've gotten somewhat used to it.
You're talking about a "static" variable.
class A
{
public:
static int a = 3;
};
...........
A.a = 5; // no instance of A! Just the class itself!
I don't think that'll compile, since I seem to remember that C++ has something stupid about static variables, but yeah.
Anyway, is the book on C or C++?
C is invaluable to learn. Once you know C, any other language is fairly easy. If you ever plan to do anything low-level, like hardware programming or even game hacks, you're going to be doing it in C. C has been around for 25 years, and isn't going anywhere.
I love how C code looks. It's nice code, if you know it well you can do anything. You can even do object oriented-style programming in C, and I like doing it in C a lot better than C++.
C++, I don't like. It's shambled together on top of C, and makes thing more complicated. In trying to maintain their reverse compatibility with C, they added a lot of kludges and workarounds that make code really ugly (like static class variables have to be initialized outside of the class, or something like that). C++ code tends to be much more mangled and ugly than the equivalent C code. I very much dislike C++. If I intend to do something object-oriented, I use Java. Java wasn't trying to maintain reverse compatibility, so it's a lot nicer.
It's like comparing IA-64 assembly to HP-Tru64. HP-Tru64 was designed and built to be 64-bit. So it's faster and cleaner. IA-64, on the other hand, maintains reverse compatibility with 32-bit and 16-bit, and, as such, is pretty ugly.
Quote from: Sidoh on September 18, 2005, 04:20:58 PM
Quote from: Quik on September 18, 2005, 04:10:05 PM
Quincy uses mingw and works quite well for a lightweight C/++ tool on WinXP. It will need a little more intuitivity, though.
Intuitivity? I don't think that's a word. :p
Then I made it up, from the root 'intuitive'. Same difference.
The book is on C, my bad. I thought it was C++.
C++ really doesn't add too much to C, and since you're starting out the only thing you'll probably miss will be that C doesn't have classes.
Quote from: deadly7 on September 18, 2005, 05:51:38 PM
The book is on C, my bad. I thought it was C++.
Then I recommend learning it.
A good compiler is gcc, which is cross-platform. On Windows, it comes with Dev-C++ (www.bloodshed.net).
You can also get a Unix-style compatibility layer, which will let you have access to Unix libraries and stuff, but apparently it's a pain to install. It's called cygwin. Google to find it.
Quote from: iago on September 18, 2005, 06:21:19 PM
Quote from: deadly7 on September 18, 2005, 05:51:38 PM
The book is on C, my bad. I thought it was C++.
Then I recommend learning it.
A good compiler is gcc, which is cross-platform. On Windows, it comes with Dev-C++ (www.bloodshed.net).
You can also get a Unix-style compatibility layer, which will let you have access to Unix libraries and stuff, but apparently it's a pain to install. It's called cygwin. Google to find it.
I said gcc! It's part of the MinGW/MSYS package. I tried installing cygwin last year, and "pain" isn't a strong enough adjective.
Quote from: rabbit on September 18, 2005, 06:30:34 PM
I tried installing cygwin last year, and "pain" isn't a strong enough adjective.
I didn't have any problems installing cygwin, other then taking FOREVER to download. :P
Need help, message me. :P
Ok, so what's a good compiler for C? I got some for C++ that I googled, but they were for C++..
gcc!
A C++ compiler can also compile C code.
MSVC is free too :P http://www.microsoft.com/downloads/details.aspx?FamilyID=272be09d-40bb-49fd-9cb0-4bfa122fa91b&DisplayLang=en
Incidentally, static variables work differently in C than C++. Static variables in C still had scope, typically at function-level:
void doSomething(int a) {
static int num;
num += a; // probably will generate a compiler error, as num is unassigned.
}
In C++, "static" variables are supposed to belong to a class as opposed to an instance of the class (like in Java and C#).
Quote from: MyndFyrex86] link=topic=2945.msg28397#msg28397 date=1127174162]
MSVC is free too :P http://www.microsoft.com/downloads/details.aspx?FamilyID=272be09d-40bb-49fd-9cb0-4bfa122fa91b&DisplayLang=en
Incidentally, static variables work differently in C than C++. Static variables in C still had scope, typically at function-level:
void doSomething(int a) {
static int num;
num += a; // probably will generate a compiler error, as num is unassigned.
}
In C++, "static" variables are supposed to belong to a class as opposed to an instance of the class (like in Java and C#).
Yeah, the example I gave, and the one that RaBBiT wanted, was in a class. So that's C++.
It wouldn't make sense to make a globally-static variable outside of a function in C, because that was the beauty of static variables; they retained their value from one function call to the next.
Quote from: iago on September 18, 2005, 05:17:44 PM
Quote from: rabbit on September 18, 2005, 01:02:18 PM
I dislike MSVCC. The port of GNU MingW+MSYS for Win32 (http://www.mingw.org/) is an awesome compiler, which can be extended to compile C++, Java, and Assembly (it comes with C compiling). I really like it.
One thing I dislike about C++ (mostly due to learning VB6 first), is that I can't use a globally accessible variable (IE: class main has a value, but I need to pass an instance of main to every other class so that I can access 1 variable). It's very annoying, but I've gotten somewhat used to it.
You're talking about a "static" variable.
class A
{
public:
static int a = 3;
};
...........
A.a = 5; // no instance of A! Just the class itself!
I don't think that'll compile, since I seem to remember that C++ has something stupid about static variables, but yeah.
Anyway, is the book on C or C++?
C is invaluable to learn. Once you know C, any other language is fairly easy. If you ever plan to do anything low-level, like hardware programming or even game hacks, you're going to be doing it in C. C has been around for 25 years, and isn't going anywhere.
I love how C code looks. It's nice code, if you know it well you can do anything. You can even do object oriented-style programming in C, and I like doing it in C a lot better than C++.
C++, I don't like. It's shambled together on top of C, and makes thing more complicated. In trying to maintain their reverse compatibility with C, they added a lot of kludges and workarounds that make code really ugly (like static class variables have to be initialized outside of the class, or something like that). C++ code tends to be much more mangled and ugly than the equivalent C code. I very much dislike C++. If I intend to do something object-oriented, I use Java. Java wasn't trying to maintain reverse compatibility, so it's a lot nicer.
It's like comparing IA-64 assembly to HP-Tru64. HP-Tru64 was designed and built to be 64-bit. So it's faster and cleaner. IA-64, on the other hand, maintains reverse compatibility with 32-bit and 16-bit, and, as such, is pretty ugly.
Anything other than static integral values need to be defined outside the class.
cpp (the GNU thing), MSVC++ 98 (talk to xar (IRC)), Bloodshed Dev-Cpp
Quote from: Joe[e2] on September 18, 2005, 01:06:56 PM
QuoteWhat are some likes and dislikes from the people that code it?
Likes:
- Fast and small binary files
Dislikes:
- After learning VB, this is hard++.
QuoteShould I learn another programming language before jumping into this one?
I think Java is a lot easier than C++, yet uses the same basic syntax, so you should probably learn a bit of that first.
QuoteWhat's a good compiler I can use on a WinXP box?
I settle for MSVC++.
yeah from what I've read, cpp is fast, but cant the binaries sometimes get really big too? I guess i'm sort of comparing this to asm. is it true that some asm binaries can be down to bytes even? like 25 bytes?
Yeah that's true, but rarely will a system load a code-only binary except at boot time (files such as ntldr are code-only). They're hard to trust, and the extra information helps to keep the system safe.
Sure, an assembly file can be 25 bytes, but it's useless.
Any program (assembly or c++) has to call library functions to be useful. Often, the libraries are included in the executable, which makes it pretty big.