# I need a C++ compiler.



## Ziff (Jul 15, 2010)

Now, I honestly don't know what that is, but I'm reading a book on C++ and to do the first thing I need one. can someone give a link to a site where I could download one? It would be greatly appreciated.

I might not respond immediately because I'm going to be playing LoL 

P.S. just an FYI, I have looked for one, but the ones I dl'd didn't work, and one I found cost money.


----------



## Ricky (Jul 15, 2010)

http://gcc.gnu.org/


----------



## ArielMT (Jul 15, 2010)

GNU Compiler Collection (GCC) if you want an always-free, cross-platform C++ compiler.

Visual Studio Express [Description] if you want to stay with Microsoft.


----------



## net-cat (Jul 15, 2010)

Realistically speaking, if you don't even know what a compiler is, you'd be best off with starting with the Visual Studio tools, as linked by ArielMT.

But if you're trying to learn to program, I'd suggest starting with something a little less convoluted than C++. Python, perhaps.


----------



## Ziff (Jul 15, 2010)

net-cat said:


> Realistically speaking, if you don't even know what a compiler is, you'd be best off with starting with the Visual Studio tools, as linked by ArielMT.
> 
> But if you're trying to learn to program, I'd suggest starting with something a little less convoluted than C++. Python, perhaps.


 
So, you're recommending me to learn a computer language to help me learn another computer language... maybe. How can python ease me into C++?


----------



## Irreverent (Jul 15, 2010)

Ziff said:


> So, you're recommending me to learn a computer language to help me learn another computer language... maybe. How can python ease me into C++?


 
First you learn computer algorithms in pseudo-code, then you learn a specific language's syntax to implement those algorithms.  That said python is a clean, unconvoluted high level language that is easy to pick up from a syntax perspective.

Mind you, an old fart like me would have recommenced you start with Pascal.


----------



## Kenneth (Jul 15, 2010)

Try Bloodshed's Dev-C++.
Free, quick, lotsa support.


----------



## Keitaro_Taru (Jul 16, 2010)

I currently use Microsoft Visual Studio 2008 to compile my code, and would highly recommend that to anyone. It is a bit more advanced but gives you many more options other programs don't. But, if you cannot afford it, which luckily the school i go to gave me a copy for free, you might try microsoft visual c++ express 2008, i don't know if they support this still or not but it used to be a free download.

As far as learning C++, i would recommend going after an easier language to start. I've spent the past 2 years learning how to develop programs using C++ and can tell you from first-hand experience that it can be an extremely confusing language to learn. I had done a good bit of work in html and touched on java, but even having just that basic knowledge in those two languages helped me out a ton when it came to learning C++.


----------



## net-cat (Jul 16, 2010)

Ziff said:


> So, you're recommending me to learn a computer language to help me learn another computer language... maybe. How can python ease me into C++?


Yes. I am. When learning to swim, you don't go straight for the high dive.

Python will teach you the basic constructs of programming in a simple, concise manner without having to worry about a "compiler" or anything like that. Just write the code and run it directly. (After you install the language, which is as simple as installing any other program.)



Irreverent said:


> First you learn computer algorithms in pseudo-code, then you learn a specific language's syntax to implement those algorithms.  That said python is a clean, unconvoluted high level language that is easy to pick up from a syntax perspective.


Pretty much this...


----------



## Nollix (Jul 16, 2010)

What net-cat said. Also, GCC is good, but the documentation is lacking. 
Since you're probably gonna come back and ask what IDE to use, I prefer Eclipse, though it's a little annoying to set up at first.


----------



## Ziff (Jul 16, 2010)

alright.... thanks so much for everyone's help. One last request though: can you give me links? how to learn python, any applications I might need, and whatever Eclipse is from Nollix's post.


----------



## Ricky (Jul 16, 2010)

Ziff said:


> alright.... thanks so much for everyone's help. One last request though: can you give me links? how to learn python, any applications I might need, and whatever Eclipse is from Nollix's post.


 
http://www.google.com/


----------



## Carenath (Jul 16, 2010)

Python, though I'm not at all sure what it's support is like on Windows, it's really easy to develop on a Linux box though and don't need to fuss with a compiler to run it. Google is your friend here.
Java, to develop on any platform is trivial and everything you need is all free. It's a great starter language, really simple to pick up, and it's a bit like a light version of C++.

A book for C++ that I highly recommend, once you've mastered one of the above, is Accelerated C++ by Koenig and Moo.

Compilers:
If you're on Windows (which I presume you are), the two easiest options are: Visual Studio Express, which you can download for free from the MSDN website, and, Bloodshed's DevC++ which is also free (it uses GCC behind the scenes). Both will compile C/C++ just fine for Windows.

As net-cat and others suggested, start with something like Python or Java (or possibly Perl), and move on from there.


----------



## net-cat (Jul 16, 2010)

Python (through python.org) and Perl (through ActiveState) are extremely well supported on Windows. Just a matter of downloading and installing it and it works (mostly) the same as it does on Linux.

Java has the same issue as C/C++, really. It's generally simpler than C++, but it still has that "compiler" step.

Perl can be run the same way as Python, but it's not really a "beginner" language. Lots of neat tricks you can learn instead of the right way.


----------



## benanderson (Jul 16, 2010)

Beginner language?

two words

*BBC BASIC*

Yes its from 1982 and you will need a BBC Microcomputer emulator to use it, but myself and my lectures all agree that its the perfect language to start with (One lecturer is even thinking of using it to teach the first years instead of C++). Its easy to use and easy to understand since its all in natural english; but its powerful (I'm writing a music tracker/composer in it called "BeebTrack" ), its very well structured (multi-dimensional arrays, Procedures, Functions, Flat-File database management, Do...While, Repeat...Until, IF...Then...Else/Else IF and so on) and forces you to write optimised code so it uses as little RAM as possible and executes as fast as possible.

Here is the BeebEm Emulator (be sure to set the keyboard to logical )
Here is the User Guide

I know all of you will be raising your eyebrows at me right now, but I am being deadly serious - this language is nothing short of fantastic!

Here's a screen-shot of a quick and dirty number guessing game I made for giggles one day to give you an idea. Gotta love 80s computer interfaces 
[noparse]http://benanderson.homeip.net/picup/uploads/phpqJwWFV.png[/noparse] - Link not working *edited by Arshes Nei*


----------



## Patrick (Jul 20, 2010)

people take Standard conformance very seriously when considering a compiler. If you can, avoid any compiler that doesn't  closely approximate the ISO standard or fails to supply a solid implementation  of the standard library. The recent releases from all the major C++ vendors do that.  If you are a novice and don't know how to see if a compiler is  conformant, try this: 
	#include<iostream>
	#include<string>

	using namespace std;

	int main()
	{
		string s;
		cout << "Please enter your first name followed by a newline\n";
		cin >> s;
		cout << "Hello, " << s << '\n';
		return 0; // this return statement isn't necessary
	}
If an implementation cannot handle this simple program as written, it is  not a good candidate for learning Standard C++ (if you cut and paste, beware of html for "less than" in the #include directives).  Though now outdated in all details, here is a long article  considering conformance and boost.org's  compiler status page. Conformance is just one aspect of a compiler's quality (quality of  generated code, error messages, compile speed, integration with tools, degree of  support, and backward compatibility are examples of other important aspects), but conformance is an important one. Use of a supplier's language extensions and non-standard-conforming  features limits the portability of your code and can prevent you from choosing a  new implementation supplier. 
 Most of these compilers are embedded in frameworks of software  development tools and libraries. These frameworks, environments, and libraries can  be most helpful, but do remember that their use can lock you into a single  vendor and that some uses have significant run-time performance implications. 
 When looking for C++ on the web, you find that much of the information  is "hidden" under various product names. In fact, I had more luck finding C++ compilers using google.com than by going directly to vendors that I  knew sold them. Here, I have chosen to list C++ implementations simply by the name of their provider, ignoring marketing labels. 
 Some compilers that can be downloaded for free (do check their conditions/licenses before attempting commercial use): 


 Apple C++. It also comes with OS X on the developer tools CD.
 Bloodshed Dev-C++. A  GCC-based (Mingw) IDE.
 Borland  C++
 Cygwin (GNU C++)
 Digital Mars C++
 MINGW - "Minimalist GNU for Windows". Another GCC version for Windows including a free (non-GPL) w32api.
 DJ Delorie's C++ development  system for DOS/Windows (GNU C++)
 GNU CC source


----------



## Panel (Jul 30, 2010)

I strongly recommend Java or Smalltalk for a starting language. Many colleges use these languages to teach the basics.

Smalltalk is good for learning object oriented concepts. Unfortunately it is more or less just an educational exercise since I can't think of anyone who would use it to write any real application. So if you use this as a starter language, be aware that it serves no other purpose than helping you learn object oriented programming principles.

Java is probably your best choice if you want to learn a language that is easy to learn and enjoys widespread use. It has similar syntax as C++ and takes away most of the knives and guns C++ has.


----------



## Arcum (Jul 30, 2010)

I have to agree with everyone here that stated to start off in Java first. Java I find to be easier later on. Your primary focus should really be to learn of the difference in variables, "public, private" rules, basic formation of functions, and basic manipulation of code. I would really suggest getting a book on programming if your new to the whole deal. From what I saw in benadnerson's post that particular language seems extremely simple to learn as well so I would suggest looking into it as well.


----------

