# Computer programming class question

**URL:** <https://boards.straightdope.com/t/computer-programming-class-question/69467>\
**Category:** In My Humble Opinion\
**Created:** [June 20, 2001, 2:10pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467 "2001-06-20T14:10:48Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Bill\_H](https://avatars.discourse-cdn.com/v4/letter/b/a5b964/32.png) [@Bill\_H](https://boards.straightdope.com/u/Bill_H)\
**Post date:** [June 22, 2001, 9:00am UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/21 "2001-06-22T09:00:47Z")

</div>

I don’t believe you could find a job actually programming in Basic. VB on the other hand will give you plenty of opportunities. Yeah, it’s low on the respect ladder, but there’s lots of application for it, if you intend to make money with your new-found coding knowledge.

Other thoughts:

The suggestion to take Pascal is an aweful one. You’ll probably find people who’ll suggest Cobol or Fortran as well, but ignore 'em. Learn something that’s relevant today and tomorrow, not legacy crap (including Basic).

C is my primary language, but I disagree with **Chronos**. You’re better off to learn something more object-oriented and relevant for the future. Best bet: Java.

---

<div class="post-metadata">

**Author:** ![bryanmaguire](https://avatars.discourse-cdn.com/v4/letter/b/d07c76/32.png) [@bryanmaguire](https://boards.straightdope.com/u/bryanmaguire)\
**Post date:** [June 22, 2001, 9:22am UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/22 "2001-06-22T09:22:43Z")

</div>

> [@](#):
>
> \*Originally posted by urban1 \*  
> \*\*
> 
> > [@](#):
> >
> > \*Originally posted by Chronos \*  
> > \*\*If you want to learn to program, then VB is one of the worst languages you could learn. Do you have the option to take some other language entirely, rather than BASIC? C, for instance, is somewhat harder to learn than BASIC, but one you’ve learned C, you can pick up any programming language in a few days or a week (well, you might still need to refer to the books, but you could get by). C is also a much more practical language than BASIC in its own right, and it’ll prepare you especially well for Java, if you decide to go that route (Java is heavily based on C).
> > 
> > I’m biased a little towards C here, but a course in Fortran, say, or even Pascal, would probably be almost as helpful. \*\*
> 
> There’s about 3.3 million developers out there who would disagree with you about VB, Chronos. \*\*

I am an VB programmer and I have to agree with Chronos that it is a bad language to learn programming with. Learn C instead. If you can learn that you can learn anything.

Some peole have commented that VB teaches you bad habits (and in some cases encourages it). It does **allow** you to write some awful code but then so does C/C++. Bad programs dont come from bad languages they come from bad programmers.

**ultrafilter**  
I would like to consider myself a serious programmer that writes serious programs. I can do anything in VB that a Visuall C++ programmer can do, and in a lot less time.  
As for variables changing type during the course of a program you are incorrect. They do not change type, they never had a type in the in first type.

---

<div class="post-metadata">

**Author:** ![Mangetout](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mangetout/32/19_2.png) [@Mangetout](https://boards.straightdope.com/u/Mangetout)\
**Post date:** [June 22, 2001, 10:35am UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/23 "2001-06-22T10:35:16Z")

</div>

> [@](#):
>
> \*Originally posted by Cerowyn \*  
> **HOWEVER, and I think this is Chronos’ point, it is not a good language to start with if you have an ambition of being a career, professional programmer. Like a lot of Microsoft products, it tends to emphasize the pragmatic approach to accomplishing things, over the theoritical or “right” way.**

Just to put my own spin on this; I _know_ that there are ‘right/good’ and ‘wrong/bad’ ways to write programs, but **bryanmaguire** is right, there are good and bad programmers, the good and bad programs are only the result.

OK, BASIC does allow you to do things in a very messy way if you want to - I did admit that earlier, but I’ve worked with programmers who were so hung up on the ‘right’ way to do something that they would tell the user/customer that certain things simply weren’t possible and that they should reorganise their business to fit around what _could_ be done.

It’s possible to write very efficient, useful and stable applications with VB, but the discipline to do so has to come from the programmer, it’s not enforced by the environment, this isn’t intrinsically a bad thing.

I’m not saying that C or Java or whatever isn’t faster and more portable, but IMHO they involve bigger learning curves and are less intuitive.

---

<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:** [June 22, 2001, 1:16pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/24 "2001-06-22T13:16:29Z")

</div>

> [@](#):
>
> \*Originally posted by bryanmaguire \*  
> **ultrafilter**  
> I would like to consider myself a serious programmer that writes serious programs. I can do anything in VB that a Visuall C++ programmer can do, and in a lot less time.  
> As for variables changing type during the course of a program you are incorrect. They do not change type, they never had a type in the in first type. \*\*

Didn’t mean that as a slight–I certainly do recognize that there are serious programmers who primarily write in VB. And you’re right about the variables, but that doesn’t really change my objection.

---

<div class="post-metadata">

**Author:** ![Mangetout](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mangetout/32/19_2.png) [@Mangetout](https://boards.straightdope.com/u/Mangetout)\
**Post date:** [June 22, 2001, 1:25pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/25 "2001-06-22T13:25:49Z")

</div>

> [@](#):
>
> \*Originally posted by ultrafilter \*  
> \*\*
> 
> > [@](#):
> >
> > \*Originally posted by bryanmaguire \*  
> > **ultrafilter**  
> > I would like to consider myself a serious programmer that writes serious programs. I can do anything in VB that a Visuall C++ programmer can do, and in a lot less time.  
> > As for variables changing type during the course of a program you are incorrect. They do not change type, they never had a type in the in first type. \*\*
> 
> Didn’t mean that as a slight–I certainly do recognize that there are serious programmers who primarily write in VB. And you’re right about the variables, but that doesn’t really change my objection. \*\*

We’re talking about **Variants** aren’t we? are they unique to VB?

---

<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:** [June 22, 2001, 1:30pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/26 "2001-06-22T13:30:51Z")

</div>

> [@](#):
>
> \*Originally posted by Mangetout \*
> 
> We’re talking about **Variants** aren’t we? are they unique to VB? \*\*

I’ve never seen any other language that uses them. Take that as you will.

---

<div class="post-metadata">

**Author:** ![bryanmaguire](https://avatars.discourse-cdn.com/v4/letter/b/d07c76/32.png) [@bryanmaguire](https://boards.straightdope.com/u/bryanmaguire)\
**Post date:** [June 22, 2001, 1:43pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/27 "2001-06-22T13:43:24Z")

</div>

> [@](#):
>
> \*Originally posted by ultrafilter \*  
> \*\*
> 
> > [@](#):
> >
> > \*Originally posted by Mangetout \*
> > 
> > We’re talking about **Variants** aren’t we? are they unique to VB? \*\*
> 
> I’ve never seen any other language that uses them. Take that as you will. \*\*

To answer **Mangetout** we are talking about variants.  
Although they are part of the language they are generally considered by professional VB programmers **to be a bad thing**. I have personally bitch-slapped junior programmers who used them.

---

<div class="post-metadata">

**Author:** ![missdavis102](https://avatars.discourse-cdn.com/v4/letter/m/7feea3/32.png) [@missdavis102](https://boards.straightdope.com/u/missdavis102)\
**Post date:** [June 22, 2001, 2:45pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/28 "2001-06-22T14:45:51Z")

</div>

So essentially, the consensus is as follows:

[ul]BASIC is a poor choice for introductory programming because it is antiquated and encourages sloppy coding. Or, BASIC is a good choice for introductory programming in spite of its problems, because it introduces fundamental programming concepts and it has been improved over the years.

VB may or may not be a good choice, because it is useful for applications environments but it lacks certain fundamental features that other languages contain (and this absence would make other languages harder to pick up). Further: VB is either easy to pick up without knowing BASIC, or it is hard to pick up without knowing BASIC. However, people who know VB are employable, and it is at least in some circles considered “serious programming done by serious programmers”.

C or C++ get at least two people’s vote (do Mod votes count more?) for best language to begin with. Theory being, learn a more intricate (?) complete (?) language first, and others will seem easy by comparison. But,

A few people also say Fortran would be okay, or

Pascal would probably be just as good. And a certified BS in Computer Science suggests Pascal to begin since it _is a training language_, and recommends completely against either BASIC or VB. [/ul]

Basically, so to speak, no consensus, other than that clean code should be the goal regardless of what language is used. This is good. I have learned way more hearing everyone’s opinions than I would from just “Take BASIC first, yeah”. Thanks to all for your responses so far.

I guess I should make some statement about why I plan to take any CS courses. I am currently enrolled in nursing school and hope to someday (in the next 5 or so years) work in public health in the developing world. I currently know next to nothing about programming. I think that the cross training will be helpful – not only in the raw “I can write code, so I’m more employable” way, but also in building logic and reasoning skills, clean problem solving, and encouraging patience in detailed work. 'Course, I wouldn’t think I’d be _less employable_ for knowing how to program. After all, technology will come to the third world fast, once the infrastructure is there, and someone’s going to need to know how to make it all work.

And a final question: If I do make it into the class, can I get some help from you VB experts if I need it? 🙂

---

<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:** [June 22, 2001, 2:59pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/29 "2001-06-22T14:59:46Z")

</div>

**missdavis102** : You have good reasons for wanting to learn to program. With regard to logic/problem-solving skills, it doesn’t really matter what language you take; any programming language will give you those skills. Best of luck with the BASIC/VB.

---

<div class="post-metadata">

**Author:** ![bryanmaguire](https://avatars.discourse-cdn.com/v4/letter/b/d07c76/32.png) [@bryanmaguire](https://boards.straightdope.com/u/bryanmaguire)\
**Post date:** [June 22, 2001, 3:24pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/30 "2001-06-22T15:24:29Z")

</div>

> [@](#):
>
> \*Originally posted by missdavis102 \*  
> \*\*And a final question: If I do make it into the class, can I get some help from you VB experts if I need it? 🙂  
> \*\*

Always happy to help someone who wants too learn. Ask away.

---

<div class="post-metadata">

**Author:** ![evilhanz](https://avatars.discourse-cdn.com/v4/letter/e/ba8739/32.png) [@evilhanz](https://boards.straightdope.com/u/evilhanz)\
**Post date:** [June 22, 2001, 6:24pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/31 "2001-06-22T18:24:19Z")

</div>

missdavies102: It helps to know _why_you want to persue programming. Thanks for the clarification.

If you were on course to become a professional programmer, I would suggest learning C as your first language. Although the syntax is at first difficult for the novice and the overall learning curve is steep, it is a foundation language which will expose to you the fundamental concepts and problems invovled in software development.

That being said, I am a professional software developer who prefers VB for daily programming tasks. Most of my company’s clients don’t care what language we develop in as long as we can do the job: quickly, efficiently (low-cost), and write scalable, maintainable code. For these reasons, our development shop prefers VB. We write extremely complex code for some of the more prestigous companies in the US that you’ve probably never heard of. 🙂 VB is easy to learn and there is a huge pool of labor. We can prototype in days, rather than weeks or months. Lately my skills have been in more demand for (non-java) intranet web applications, though.

In my experience, professional C/C++ programmers are more likely to be found in academics than in industry. So here’s my recommendation. If theory is your game, learn C/C++. It can’t be beat If you want to learn a programming language that will be valuable and in demand for quite some time, learn VB. But also, learn some web programming beyond simple HTML.

If you are simply interested in being a useful addition to any office, learn MS Access. The purists among us will decry that statment because it isn’t “real” programming. However, you _will_ learn the fundamentals of programming with VBA (a subset of VB), user interface design, and the basics of database development and management. Most small office problems can be solved much more quickly in an Access application than with any solution you can roll with a custom program. Classes in Access are easy to find. In the past 5 years or so, I’ve seen a lot of competent programmers come out of Access development. They’ve worked in small offices doing simple work, got a taste for it, and wanted something more. Sure they may not know OO theory, but the job gets done.

---

<div class="post-metadata">

**Author:** ![DougC](https://avatars.discourse-cdn.com/v4/letter/d/7feea3/32.png) [@DougC](https://boards.straightdope.com/u/DougC)\
**Post date:** [June 22, 2001, 6:50pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/32 "2001-06-22T18:50:16Z")

</div>

> [@](#):
>
> …is the prerequisite for lots of the more advanced programming courses and web development stuff, but it is only offered in one time slot and conflicts with a class I have to take as part of the nursing curriculum (also offered only one time slot)…

- 
  - 
    - Now that I read it again, it sounds like we might be attending the same college. I had to take an “Intro to the PC” class because they added it as a prerequisite, after two years of taking numerous courses VB, Java, COBOL, C++, database and web programming. “This is the monitor. This is the mouse…”  
zzzzzzzzzzzzzzzzzzzz…  
~

- A lot of people here seem to forget that the reason the school wants students to take Quick Basic before Visual Basic is that having some experience with the former helps quite a bit with understanding the latter. Learning other languages involves lots of other stuff that VB doesn’t involve, and it makes little sense to go on about high-flying concepts when a _beginning_ VB course very likely isn’t going to require such knowledge at all. - MC

---

<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:** [June 22, 2001, 7:05pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/33 "2001-06-22T19:05:36Z")

</div>

> [@](#):
>
> _Originally posted by evilhanz \*  
> If you are simply interested in being a useful addition to any office, learn MS Access._\*

I second this. Data management is one of the biggest challenges an office faces today, and you will be invaluable if you know how to design/implement/manage database applications. Access is pretty easy to get started in, so it’s a good first choice; plus, it does use VBA, which will put your VB experience to good use.

---

<div class="post-metadata">

**Author:** ![JillGat](https://avatars.discourse-cdn.com/v4/letter/j/9fc29f/32.png) [@JillGat](https://boards.straightdope.com/u/JillGat)\
**Post date:** [June 22, 2001, 7:59pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/34 "2001-06-22T19:59:59Z")

</div>

Some years ago I kept an alternate database at work in DBase. A new geek came to work with us and immediately moved it into MS Access, which he said was “more powerful.” Well yeah, anything is more powerful _if you know how to use it_, but I didn’t find Access intuitive to learn at all. And DBase did every single thing I needed to do with that database. I hate it when people do that. Anyway, that being said, I’m thinking there is no “factual” answer to this question. I think it might go better in the IMHO forum. - Jill

---

<div class="post-metadata">

**Author:** ![Mangetout](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/mangetout/32/19_2.png) [@Mangetout](https://boards.straightdope.com/u/Mangetout)\
**Post date:** [June 22, 2001, 9:51pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/35 "2001-06-22T21:51:48Z")

</div>

> [@](#):
>
> \*Originally posted by bryanmaguire \*  
> \*\*To answer **Mangetout** we are talking about variants.  
> Although they are part of the language they are generally considered by professional VB programmers **to be a bad thing**. I have personally bitch-slapped junior programmers who used them. \*\*

I’ve had cause to use them once only when I needed a function that would work on a string or a number (and the result that it returned was always an integer); I could have written two virtually identical functions, one for each parameter type, but that seemed wasteful.

---

<div class="post-metadata">

**Author:** ![rjung](https://avatars.discourse-cdn.com/v4/letter/r/45deac/32.png) [@rjung](https://boards.straightdope.com/u/rjung)\
**Post date:** [June 23, 2001, 5:59am UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/36 "2001-06-23T05:59:45Z")

</div>

> [@](#):
>
> \*Originally posted by evilhanz \*  
> **In my experience, professional C/C++ programmers are more likely to be found in academics than in industry.**

Speaking as a software developer geek with over twelve years of professional experience and a Masters’ in CSCI, I’ll respectfully disagree.

For large, complex systems that are both reliable and efficient, C and C++ are currently the languages of choice (with C++ being in the lead). By “large, complex systems,” I’m talking about things like nationwide air-defense command and control, automated traffic management, real-time rail control, military-grade battlefield communications, and so forth. The only time Visual Basic even gets into the picture is if someone needs to bang out a quick-and-dirty tool to reduce and analyze 5 gigabytes of simulation/test data for the latest performance results. Suggesting that Visual Basic be used systemwide would earn you derisive laughter – if you’re lucky.

Like other Microsoft titles, IMO Visual Basic is a mediocre product that’s survived as long as it has only because it’s used by people who don’t know better. It’s good for dinking around and quickie prototype efforts, but I wouldn’t use it for _real_ work.

---

<div class="post-metadata">

**Author:** ![DougC](https://avatars.discourse-cdn.com/v4/letter/d/7feea3/32.png) [@DougC](https://boards.straightdope.com/u/DougC)\
**Post date:** [June 23, 2001, 10:26am UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/37 "2001-06-23T10:26:15Z")

</div>

> [@](#):
>
> For large, complex systems that are both reliable and efficient, C and C++ are currently the languages of choice…

- Language _of_ choice. _Of_ choice. A few years back I spilled a stale bottle of Yoo-Hoo on my PC Jr’s keyboard and while mopping it up, happened to write a fairly secure missle defense system in Quick Basic. I stored it on a cassette tape drive and during my walk home, noticed the Ramones playing a bar mitzvah and popped the wrong tape in to my Walkman to record the event. Turns out the darn batteries were almost dead, and it only recorded a couple minutes at a speed that made Joey sound like Barry White. I sold it to an Israeli on EBay and he must like Barry, because for a while I kept getting fairly large amounts of cash in the mail every now and then.  
It’s a wonderful life. - MC

---

<div class="post-metadata">

**Author:** ![DMC](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/dmc/32/18049_2.png) [@DMC](https://boards.straightdope.com/u/DMC)\
**Post date:** [June 23, 2001, 5:22pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/38 "2001-06-23T17:22:39Z")

</div>

Pascal - if you wish to learn proper structured programming techniques

C - if you wish to be able to write tight, fast programs

COBOL - if you wish for your remains to be studied by archeologists in 1000 years. 😃

C++ - as a first language, just say no. If you ever do get proficient at it, you will be highly employable.

Java - fairly decent primer in object orientation; make sure to learn some OOP principles on the side.

VB - In the first year of development, you will be one of millions of other developers, but you can easily stand out from the crowd with some effort and experience. When you start talking about threading issues and API calls, you’ve left the millions and joined the tens of thousands that are highly sought after. “Option Explicit” is your best friend.

I would probably recommend starting with C or Java. C is fairly accessible to a novice, yet still an extremely powerful way to get your feet wet. Java is probably easier for a new programmer to learn than for an old hat procedural developer, and you’ll learn some decent OOP that can be useful in other languages.

After that, pick up whatever suits your fancy. Java, C++, or the combination of VB, SQL, and normalization techniques, will make you very employable.

---

<div class="post-metadata">

**Author:** ![dropzone](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/dropzone/32/7515_2.png) [@dropzone](https://boards.straightdope.com/u/dropzone)\
**Post date:** [June 23, 2001, 5:42pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/39 "2001-06-23T17:42:04Z")

</div>

> [@](#):
>
> \*Originally posted by missdavis102 \*  
> **Basically, so to speak, no consensus, other than that clean code should be the goal regardless of what language is used.**

:tapping my nose:

You got it. Once you learns to do that IN ANY LANGUAGE you can transfer those skills TO ANY OTHER language.

> [@](#):
>
> \*Originally posted by rjung \*  
> **By “large, complex systems,” I’m talking about things like nationwide air-defense command and control, automated traffic management, real-time rail control, military-grade battlefield communications, and so forth.**

True, I suppose, but most of us don’t write “large, complex systems” like that. Most programs are “quick and dirty” and any variety of BASIC is ideal for that.

---

<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:** [June 23, 2001, 7:06pm UTC](https://boards.straightdope.com/t/computer-programming-class-question/69467/40 "2001-06-23T19:06:16Z")

</div>

> [@](#):
>
> \*Originally posted by DMC \*  
> \*\*C++ - as a first language, just say no. If you ever do get proficient at it, you will be highly employable.  
> \*\*

I’m gonna have to half-disagree with that. C++ was my first language, and after my first two classes in it (with teachers who left a bit to be desired), I had enough background to intern as a developer with a major internet company. The half-disagreement is because I had to help teach it and take some theory classes before I got really proficient at it. However, it’s definitely a realistic choice for a first language.

With regard to the OP, though, some sort of BASIC is fine.

And I agree with what **dropzone** said about clean code. And for the sake of all involved, comment your code. It will save everybody who has to use it (including you six months down the line) a huge amount of time.

I also agree with what **DMC** said about VB. If you can do threading, you will stand very far above the crowd. But that’s a pretty advanced topic.

[Previous page](https://boards.straightdope.com/t/computer-programming-class-question/69467.md?page=1)

[Next page](https://boards.straightdope.com/t/computer-programming-class-question/69467.md?page=3)
