# Programming For a Newbie.

**URL:** <https://boards.straightdope.com/t/programming-for-a-newbie/100880>\
**Category:** In My Humble Opinion\
**Created:** [March 30, 2002, 5:48am UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880 "2002-03-30T05:48:43Z")\
**Posts on this page:** 10\
**Page:** 2

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [March 31, 2002, 3:48am UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/21 "2002-03-31T03:48:03Z")

</div>

[http://www.borland.com/bcppbuilder/freecompiler/](http://www.borland.com/bcppbuilder/freecompiler/)

Apparently Borland is giving away their compiler. Who woulda thunk?

---

<div class="post-metadata">

**Author:** ![Urban\_Ranger](https://avatars.discourse-cdn.com/v4/letter/u/e9c0ed/32.png) [@Urban\_Ranger](https://boards.straightdope.com/u/Urban_Ranger)\
**Post date:** [March 31, 2002, 4:37pm UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/22 "2002-03-31T16:37:56Z")

</div>

> [@](#):
>
> \*Originally posted by ultrafilter \*  
> 2) While C++ is an object-oriented language, it can be used to write non-object-oriented code (as opposed to Java). It’s definitely good to compare two programs that solve the same problem, one done in an OO style and the other done in a non-OO style.

This generally ends up in a disaster. Why are you trying to teach a newbie two things at the same time when he doesn’t know any? Let him learn how to walk before learning how to run.

> [@](#):
>
> \*Originally posted by ultrafilter \*  
> 3) C++ has a few features that Java doesn’t (pointers and multiple inheritance), and those are good to learn. Having to do your own garbage collection forces you to have at least some idea as to how objects are allocated, and this (IMHO) gives you a better chance to write programs that use memory very efficiently. After that, it’s fine to move on to a language that does it for you. Multiple inheritance is one of those things that you need to know about for the one time in your career that you’ll use it, and it’s probably best to pick it up from the start.

IMO, this is very, very, very bad. The idea of doing your own garbage collection is a burden that’s a legacy from C. It really is unnecessary unless you are doing system level work. There are huge amounts of problems with teaching C to a newbie; I had a 4 month running debate with another person. He left the debate at the end, but came back one year later to tell me that I was right. To summarise my point it is paramount to teach good programming practices initially, and C unfortunately allows all sorts of bad crap to occur (not to mention the unsafe library calls). It will take years to get rid of bad habbits, if they can be at all corrected.

I will say Smalltalk is even better, but it is not widely available.

---

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [March 31, 2002, 6:16pm UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/23 "2002-03-31T18:16:35Z")

</div>

**Urban Ranger** : With regards to the OO vs. non-OO program comparison, the best answer I can give you is that that’s how I learned to program, and it worked for me. I think it helps to see exactly what it means for a program to be object-oriented. Of course, there’s a huge YMMV attached to this.

As for garbage collection…I think it’s good to know what it is and how to do it well even if you rarely use it. Better to have it and not need it than to need it and not have it.

Smalltalk is an interesting language, although I’ve never had a chance to play with it.

---

<div class="post-metadata">

**Author:** ![jkusters](https://avatars.discourse-cdn.com/v4/letter/j/fbc32d/32.png) [@jkusters](https://boards.straightdope.com/u/jkusters)\
**Post date:** [March 31, 2002, 6:32pm UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/24 "2002-03-31T18:32:05Z")

</div>

My advice is to avoid anything “Visual.” I would recommend starting with command-line programs because they tend to be a lot more straight-forward and easier to debug. When you try to learn using one of the “Visual” there are usually too many things interacting, and if something goes wrong, too many paths to check to find the problem.

JOhn.

---

<div class="post-metadata">

**Author:** ![ThreeLeggedBob](https://avatars.discourse-cdn.com/v4/letter/t/b4bc9f/32.png) [@ThreeLeggedBob](https://boards.straightdope.com/u/ThreeLeggedBob)\
**Post date:** [March 31, 2002, 9:46pm UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/25 "2002-03-31T21:46:39Z")

</div>

EagleEye,

Since you’re using this to try out the concept, I would go with Visual Basic as a first choice, Java as #2. Avoid C and C++ at this point. I’ve programmed in all of the above, and I agree with everyone who says that the future is Java and OO. However, for quick results that look professional, VB is much easier. When I program for myself recreationally (pathetic, isn’t it?), I use VB. IMO, OO really only pays dividends on fairly large projects.

As far as pricing goes, VB 6.0 has several different versions. There is a standard edition (may be called “Learning”) for about $100. Professional is about $400, Enterprise is close to $1000. Less publicized is the “Academic” version, which includes the Professional features, but costs about $100 to students. If you can buy this through a college, look into it. 6.0 is not the latest (.NET version just came out), but I don’t know the newest pricing.

I don’t know any current VB books, but I recommend Cay Horstmann’s “Core Java” books should you choose that direction.

TLB

---

<div class="post-metadata">

**Author:** ![OneChance](https://avatars.discourse-cdn.com/v4/letter/o/74df32/32.png) [@OneChance](https://boards.straightdope.com/u/OneChance)\
**Post date:** [March 31, 2002, 10:01pm UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/26 "2002-03-31T22:01:08Z")

</div>

I suggest taking a programming fundamentals course before jumping into any one particular language. These courses typically last 8-12 weeks and will give you a good foundation with which to work from.

---

<div class="post-metadata">

**Author:** ![Urban\_Ranger](https://avatars.discourse-cdn.com/v4/letter/u/e9c0ed/32.png) [@Urban\_Ranger](https://boards.straightdope.com/u/Urban_Ranger)\
**Post date:** [April 1, 2002, 8:59am UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/27 "2002-04-01T08:59:34Z")

</div>

> [@](#):
>
> \*Originally posted by ThreeLeggedBob \*  
> However, for quick results that look professional, VB is much easier. When I program for myself recreationally (pathetic, isn’t it?), I use VB.

Why not Delphi? It’s a RAD (rapid application development) environment like VB, but it’s based on a much better language than Basic.

---

<div class="post-metadata">

**Author:** ![Urban\_Ranger](https://avatars.discourse-cdn.com/v4/letter/u/e9c0ed/32.png) [@Urban\_Ranger](https://boards.straightdope.com/u/Urban_Ranger)\
**Post date:** [April 1, 2002, 9:02am UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/28 "2002-04-01T09:02:39Z")

</div>

> [@](#):
>
> \*Originally posted by ultrafilter \*  
> **Urban Ranger** : With regards to the OO vs. non-OO program comparison, the best answer I can give you is that that’s how I learned to program, and it worked for me. I think it helps to see exactly what it means for a program to be object-oriented. Of course, there’s a huge YMMV attached to this.

It’s much easier for me to teach newbies OO than procedural programming. OO is more natural to those who haven’t programmed before.

> [@](#):
>
> \*Originally posted by ultrafilter \*  
> As for garbage collection…I think it’s good to know what it is and how to do it well even if you rarely use it. Better to have it and not need it than to need it and not have it.

Indeed that can be quite true, though I think this is one of the advanced topics that should be addressed later.

---

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [April 1, 2002, 3:39pm UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/29 "2002-04-01T15:39:29Z")

</div>

> [@](#):
>
> \*Originally posted by Urban Ranger \*  
> **It’s much easier for me to teach newbies OO than procedural programming. OO is more natural to those who haven’t programmed before.**

Based on my fellow students, that doesn’t seem to be true, but many of them might have had some kind of procedural language before.

---

<div class="post-metadata">

**Author:** ![BMU](https://avatars.discourse-cdn.com/v4/letter/b/8dc957/32.png) [@BMU](https://boards.straightdope.com/u/BMU)\
**Post date:** [April 1, 2002, 6:30pm UTC](https://boards.straightdope.com/t/programming-for-a-newbie/100880/30 "2002-04-01T18:30:55Z")

</div>

> [@](#):
>
> \*Originally posted by LordVor \*  
> \*\*For Java, a good starter is getting the “Java Developer’s Kit” from Sun. It’s free, and it’s on several platforms (including Windows).
> 
> For c++…um, is there a version of gcc for windows?
> 
> Good luck!
> 
> -lv \*\*

do a search for lcc you’ll get some of the functionality of a real compiler from that 🙂

[Previous page](https://boards.straightdope.com/t/programming-for-a-newbie/100880.md?page=1)
