Clan x86

Technical (Development, Security, etc.) => General Programming => Topic started by: deadly7 on September 18, 2005, 12:32:34 pm

Title: C++ , likes/dislikes?
Post by: deadly7 on September 18, 2005, 12:32:34 pm
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
Title: Re: C++ , likes/dislikes?
Post by: 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.
Title: Re: C++ , likes/dislikes?
Post by: Joe on September 18, 2005, 01:06:56 pm
Quote
What are some likes and dislikes from the people that code it?
Likes:
- Fast and small binary files
Dislikes:
- After learning VB, this is hard++.

Quote
Should 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.

Quote
What's a good compiler I can use on a WinXP box?
I settle for MSVC++.
Title: Re: C++ , likes/dislikes?
Post by: MyndFyre on September 18, 2005, 03:38:17 pm
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).

Title: Re: C++ , likes/dislikes?
Post by: Sidoh on September 18, 2005, 04:07:23 pm
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.
Title: Re: C++ , likes/dislikes?
Post by: 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.
Title: Re: C++ , likes/dislikes?
Post by: Sidoh on September 18, 2005, 04:20:58 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
Title: Re: C++ , likes/dislikes?
Post by: iago on September 18, 2005, 05:17:44 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. 

Code: [Select]
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. 



Title: Re: C++ , likes/dislikes?
Post by: Quik on September 18, 2005, 05:38:57 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.
Title: Re: C++ , likes/dislikes?
Post by: deadly7 on September 18, 2005, 05:51:38 pm
The book is on C, my bad. I thought it was C++.
Title: Re: C++ , likes/dislikes?
Post by: rabbit on September 18, 2005, 06:18:05 pm
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.
Title: Re: C++ , likes/dislikes?
Post by: iago on September 18, 2005, 06:21:19 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. 
Title: Re: C++ , likes/dislikes?
Post by: rabbit on September 18, 2005, 06:30:34 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.
Title: Re: C++ , likes/dislikes?
Post by: Blaze on September 18, 2005, 06:53:53 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
Title: Re: C++ , likes/dislikes?
Post by: deadly7 on September 19, 2005, 06:12:04 pm
Ok, so what's a good compiler for C? I got some for C++ that I googled, but they were for C++..
Title: Re: C++ , likes/dislikes?
Post by: iago on September 19, 2005, 06:57:39 pm
gcc!

A C++ compiler can also compile C code. 
Title: Re: C++ , likes/dislikes?
Post by: MyndFyre on September 19, 2005, 07:56:02 pm
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:

Code: [Select]
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#).
Title: Re: C++ , likes/dislikes?
Post by: iago on September 19, 2005, 08:03:35 pm
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:

Code: [Select]
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++. 
Title: Re: C++ , likes/dislikes?
Post by: MyndFyre on September 19, 2005, 08:07:59 pm
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.
Title: Re: C++ , likes/dislikes?
Post by: Hauptmann Raub on September 20, 2005, 06:14:16 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. 

Code: [Select]
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.
Title: Re: C++ , likes/dislikes?
Post by: Joe on September 20, 2005, 07:58:16 pm
cpp (the GNU thing), MSVC++ 98 (talk to xar (IRC)), Bloodshed Dev-Cpp
Title: Re: C++ , likes/dislikes?
Post by: mfqr on September 24, 2005, 03:46:24 am
Quote
What are some likes and dislikes from the people that code it?
Likes:
- Fast and small binary files
Dislikes:
- After learning VB, this is hard++.

Quote
Should 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.

Quote
What'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?
Title: Re: C++ , likes/dislikes?
Post by: MyndFyre on September 24, 2005, 04:57:41 am
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.
Title: Re: C++ , likes/dislikes?
Post by: iago on September 24, 2005, 11:54:54 am
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.