New to Programming

Associate
Joined
27 Jan 2005
Posts
830
I want to get into programming and I think C+ or C++ is the way to go.

Obviously I need books and to study, but what's the best software, and what other software will I need - Are compiler's seperate or do they come with the C+

Also what's a good book to learn this language from *** ground up.

Thanks.
 
i'd suggest java to start with. just personal opinion, but most uni courses have a year of java before any c/c++ so i guess there's a reason for that.
 
I started with C++, moved onto C then did Java.

I'd recommend starting with Java tbh, it's very newbie friendly and there's a nice, easy GUI.

Whatever you do, don't give up straight away. When I was really new I tried learning raw win32 API to create GUIs, to say it was challenging would be an understatement... 94 lines to create a window that had no menues or anything on it IIRC. :eek:

Java is much easier, and there's a huge class library to start on.

I've not done any programming for a long time, not since I was 13 (started when I was 10), so two years ago now. Raw win32 was a pretty impressive feat for a 12 year old. ;)
 
Whilst there are lots of people's impressions of perfect ways to learn programming, progressing from one language to another in a way that forges a perfect programmer, I think what a lot of people ignore is that, when someone is trying something new, they want to see results or they quickly get disheartened.

For example: sure, you might get a better grasp of how computers work, and improve the quality of your later code---appreciating what the compiler does to it---if you start by learning Assembly, but I think most newbies would give up in a fit of frustration after a couple of minutes---I know I would were I just starting! For that reason, I think any good quality languages that facilitate rapid GUI development are the best choice for beginners, and amongst those your best two options are (in my opinion, of course) Java and C# (or any other .NET language, I suppose).

Each has their zealots (and I should state for fairness that I fall into the C# camp), but both are excellent languages and both have the backing of excellent libraries. There is enough pre-written code in both that you shouldn't have to delve into developing low-level things unless you want to (there are lots of existing data structures, for example), they're both fast (fast enough---let's not get into the "Java is slow!" debate), they're both portable (although Java much more so), they're both very easy to get the hang of.

I believe Eclipse is the environment of choice in the Java world; for C#, Visual Studio is what you want. Microsoft offer cut-down, single-language versions of Visual Studio called "Express Editions" that you can get for free; you can get Visual C# Express here.

I don't know of any good resources for learning Java---not having learned it myself---but for C#, there are literally bazillions of websites devoted to tutorials, such as Code Project, and if you want to spend a bit of cash then you can't go wrong with Learning C#, a book by Jesse Liberty that teaches you both how to program and how to program with C#.

Phew!
 
What sort of software do you plan to write? There is no such thing as C+, its either C or C++ :) I would advise against java for a number of reasons.

A compiler is totaly seporate from an IDE, however some IDE's (Mainly the windows ones) come with one (VS).

In linux the main ones are gcc (for C) and g++ (for c++) however there are many others.

I advise against using an IDE to learn.. and just stick with a simple text editor such as VIM.
 
Last edited:
Java really does my head it, sooo bloated. C#.NET is a good chcoice for Windows/Web applications.

C/C++ are also good but i just havnt got round to working much with them.
 
We use Sun Studio, which is just a rebranded version of NetBeans and some new functionality.

My biggest complaint with Java is that it has crap GUI libraries. Swing and AWT are a joke compared to what .NET has. So much so that I'm actually rearchitecting an existing system here to have a Java backend and a .NET front end (with XML IPC in between). That is the extent I will goto to avoid dealing in Java GUI code! Of course, Java on mobile phones is unrivalled at the moment so we're doing one GUI in .NET and one compact/mobile version in Java :o

Oh and JSP pages are the devil. ASP.NET is so much easier on the eyes.

That article about Java in schools is just rubbish. The guy clearly has his own agenda and probably isn't quite living in the real world when it comes to development. Shock horror: C/++ is old and is avoided whenever possible these days. Java/.NET offer real productivity and code maintainability advantages. Code performance, with the exception of a few markets, is rarely a concern these days also.
 
Last edited:
robmiller said:
It's not a rant about Java at all, have you even read it :confused: It's a rant about universities' dumbing down their course material, the fact that they do so with Java is entirely tangential.

I did not mean its specifically a "rant on java" as such. But gives some reasons why using it as a teaching language (I.e learning language) is a bad idea.

The original poster states he wants to learn from the ground up. Java/C# (C# less so) hide all the powerful features which make C++ and the general understanding of programming from the ground up.
 
Java and .NET don't need or use pointers. They have been superceded.

Recursion is simple to understand once you've nailed the basics. Even then, I can't remember the last time I _had_ to use recursion. Recursion can almost always be avoided - and decent programmers will avoid it like the plague. (Stack overflow anyone? ;))

The author is living in a world of about 20 years ago.
 
You'll also find that rant is very biased. Teaching Pointers and Hashtables doesn't just weed out 'incompetent' programmers, it makes people quit out of sheer boredom, so infact you can say it's a counter argument because if people learn that first, before anything else like the author says, the new students will probably think "holy cow CS sucks, I'm outta here."
 
NathanE said:
Java and .NET don't need or use pointers. They have been superceded.

Recursion is simple to understand once you've nailed the basics. Even then, I can't remember the last time I _had_ to use recursion. Recursion can almost always be avoided - and decent programmers will avoid it like the plague. (Stack overflow anyone? ;))

The author is living in a world of about 20 years ago.

Oh please how do you plan to do any systems programming if you don't understand pointers? Any embeded systems? Even games programming for that matter? Managed languages are fine if you write business apps, but most of the pro-java/c# coders I know throw memory around like its going out fashion.

Managed languages are slower whatever anyone says, and I don't see us moving from C++ any time in future (game development) even if it would speed up development times.

Yes anything can be done with iteration that can be done with recursion but recursion can simplify code a great deal. Things like writting a quicksort without using recursion would be a pain.
 
Last edited:
TBH Java and C# are so similar that the choice between them is almost always down to the target systemas/ platforms. If you have Visual Studio available I'd choose C# at the moment becouse the .NET platform will be ubiquitous very soon and imho Java is on the down side of it's uptake curve.

BUT there is nothing wrong with the Java platform at all. I can and do sill use J2EE for large scale apps.

If you find that after learning OO programming in Java/C# that you need to get a bit lower level and use direct memory management, pointers, system calls etc. then go ahead and use C++ (or C) but untill you need to there is no need to bother. 99% of buisness programming tasks can be performed more than adequately in a nice sandboxed virtual runtime enviroment. You'll find C++ much easier to understand if you already understand, inheritance, interfaces, properties and all the other little bits of syntak and basic programming.

I am a HUGE advocate of not teaching a language but teaching how to program. When I leant to code at uni I was tought SQL, C and assembler for 4 months, then OO concepts(for delphi), systems programming (in C on *NIX) and software engineering techniques (using C++ examples) for 4 months. Despite not being a specialist in any of the languages I understood enough about programming to pick up a new language (java) in the 4 months it took me to complete my research project and then get a job programming in it. I have since leaned innumerable other languages and I'm convinced that this would not have been so easy if I'd done all my uni work in one language.

HT
 
I think most if not all universities teach it's students Java these days, for me however it was taught more as a tool rather than THE language i.e. the concepts of OO programming were engraved into our memories.

They occasionally throw us assignments in other languages and just expected to get on with it, without specifically having been trained in it.

So yeah we were taught all the usual data structures, and how OS worked etc etc.

So I don't think using Java as your base is necessarily dumbing down as such.
 
happytechie said:
I am a HUGE advocate of not teaching a language but teaching how to program. When I leant to code at uni I was tought SQL, C and assembler for 4 months, then OO concepts(for delphi), systems programming (in C on *NIX) and software engineering techniques (using C++ examples) for 4 months. Despite not being a specialist in any of the languages I understood enough about programming to pick up a new language (java) in the 4 months it took me to complete my research project and then get a job programming in it. I have since leaned innumerable other languages and I'm convinced that this would not have been so easy if I'd done all my uni work in one language.

Yeah I totaly agree with this. Learning languages is not really that hard, its designing your solution/implementing it well is the tricky part. This is why I think teaching a language like ML/scheme/haskell first for the concepts of programming is a good idea. However this is not very practical in a non academic enviroment, so my choice for beginner programmers would be either Ruby or Python. Both of these have a large amount of documentation and a good user base.

If they wish to learn c++ at the start by all means, but be warned there are many pitfalls in it while still being a brillient language.

Java/.NET do not really teach you programming from the ground up, because all you are doing is using the VM.

Java is not even properly object orientated in the same way a language like smalltalk is.

Using java to teach data structures is fine, but using it to teach about OS's is just silly.
 
Last edited:
Una said:
Oh please how do you plan to do any systems programming if you don't understand pointers? Any embeded systems? Even games programming for that matter? Managed languages are fine if you write business apps, but most of the pro-java/c# coders I know throw memory around like its going out fashion.

Managed languages are slower whatever anyone says, and I don't see us moving from C++ any time in future (game development) even if it would speed up development times.

Yes anything can be done with iteration that can be done with recursion but recursion can simplify code a great deal. Things like writting a quicksort without using recursion would be a pain.
Game development is of course one of the market exceptions I was referring to.

PS: I do understand pointers... I'm just saying there is no need to know them to be a successful programmer.
 
I remember starting programming on a ZX81 with Basic in 16K. Nice and straightforward, limited commands and certainly no OO. However, it did introduce the basic concepts such as conditions, loops etc. in an easy manner. Learning today using something as big as Java or as complex as C++ must be very difficult in comparison.

As Una says, the emphasis is on learning how to program in a general sense rather than being bound to one particular language. IMHO it's also important to get something visual running quickly so you see things other than lines of text, particularly if you're not in an academic environment. Gives a greater sense of achievement than just seeing text appear or tackling number crunching exercises.

So, and I'm probably going to get flamed for this, maybe VB6 would be a good starting point just to get the hang of general things quickly e.g loops, conditions, error handling (even if it's a bit basic) etc. and then move onto something OO like Java/C# as soon as possible.
 
Back
Top Bottom