Fog Creek Software
Discussion Board




Where to begin...

I'd like to begin learning some sort of programming language. I'd also like to find a good starting place. Can anyone recommend a website or text that could shed some light on computer languages, how they fit/relate together and what their applications are?

Is there a general consensus among professionals that C++ is perhaps a good place to start for a beginning programmer?

I appreciate ANY feedback.
Fisk.

Fisk
Thursday, January 31, 2002

This question gets asked so often, I wonder if it should belong in a JoelOnSoftware discussion group FAQ.  =-)

While more capable hands than mine work to make that FAQ a reality, let me provide you with Alyosha's handy-dandy ultra-easy 18-step program on how to go from a clueless newbie to a software guru.  Mind you, though, this is just how *I* did it.  There may be easier and quicker ways of becoming a computer soopah-genius, but I am unware of them.

1. Get yourself a Commodore 64.  Learn BASIC.
2. Get bored with the glacial speed of BASIC.  Learn 6510 assembly.
3. Get bored with the glacial speed of a Commodore and glacial speed of programming in assembly.  Get a 286 and learn Pascal.
4. Get frustrated with the fact that no one uses Pascal and everyone uses C.  Learn C.
5. Get curious about the machine code the C compiler generates, and learn x86 assembly.
6. Get a book on how OO programming languages are all "the rage".  Learn C++.
7. Get a personal website.  Learn HTML.
8. Get frustrated with just knowing how to write console applications.  Learn the Win32 API.
9. Get bored with static HTML pages.  Learn JScript and DHTML.
10. Get annoyed with the stupidities of C++ and the sheer mind-numbing frustration of using it with the Win32 API, and learn Java.
11. Get a new computer.  Isn't it about time you gave that 286 a rest?
12. Get curious about writing web-based applications, and learn CGI and perl.
13. Get a new job.  Learn COM in a hurry, because you have to.
14. Get bored with CGI applications.  Learn ASP.
15. Get ashamed of the performance of flat files for data storage, and learn SQL and ADO.
16. Get frustrated by the recurring stupidities and chaos at work, and learn about software development methodologies, both classical and XP.
17. Get crazy, and learn a little VB in your spare time.
18. Get bored with the Windows platform.  Install linux on your home computer, and learn how to use it.

Okay, so I lied.  I'm not really a soopah-genius.  A real guru would have done all this, plus learned PHP, Tcl/Tk, Delphi, C#, the Qt, Motif, and GTK toolkits, DirectX, linux framebuffers, written compilers and device drivers, used Oracle databases, can configure Cisco routers, and so on and so on ... and I haven't gotten that far yet.

Maybe one of these days, I will learn how to program!

In short, start anywhere.  It's gonna take you a long time to get proficient anyways, and chances are pretty much anything you dabble in is going to aid your education in one way or another, even if it doesn't seem like it right now.

http://www.alyosha.net/

Alyosha`
Thursday, January 31, 2002

As to which programming language you should use to learn programming...
Well, first of all I would say it doesn't really matter. Learning programming is not so much about programming languages, than it is about some general concepts. Once you know how to programit wont matter which language you use.
Second of all, I think C++ is not a good start. I know this will start an awful discussion, but I personally think this is one messed up programming language.
My trail was:
Basic
Pascal
C
(HTML)
Perl
(PL/SQL)
Java
C++
TCL (darn Vignette Story Server..;-)
If I look back, I would say I knew 80% about programming when I was done with Pascal.
Another advise: skip the assembler stuff.

Stephan
Thursday, January 31, 2002

Opinions differ to say the least. It all depends on what you want. This is what I would recommend:

For efficient native application development use:
Delphi/Kylix (Windows/Linux)
C# (if you want a MS only solution)

For dynamic web sites use:
HTML
PHP + (MYSQL or POSTGRESQL)

For complex server side development use:
Java

If you want to make money in a big company learn:
Java

Jan Derk
Thursday, January 31, 2002

I also think, the actual language is not that important, but there are some things you might want to consider.

Like almost everyone here, I started with BASIC on a C64 back in the eighties. The good thing about it was: it had a very limited scope. It came with a little manual that actually taught you how to write small programms in BASIC. BASIC also functioned as operating system, so you had to learn it anyway, at least to some extend, if you wanted your computer to do anything. You just read the manual and were equipped with everything you needed to get started. You did not even have to install a programming environment. It was all there. The rest was learning by doing. And learning by reading. Every time I switched to a new programming language (next I did Pascal, then C and later C++) I had to learn some new concepts and embraced the new possibilites that came with them, but I did not find it difficult to change. It was always like: I can still do everything I did before and so much more...

Of course, this is not the eighties and even if you could find yourself an old C64, this is just not the way to go any longer. But you should try to find yourself a small comfortable little world to start in. At my university they use Scheme, a functional programming language, as a start, but I cannot recommend this, since functional programming really approaches problems differently and it is not that easy to change from there.

Never mind what language you choose, find yourself a good developing environment, where you just have to type in your code, push a button and get the resulting programm, push another button and run it in a debugger. Otherwise learning to handle the tools will drive you nuts and you will probably give up before getting your first "Hello World" programm to run. (This happened to me when I tried to compile a Modula2 programm on a command line compiler for the university once and it was a rather frustrating experience. I wrote the code for that class without ever compiling it and just handed it in. The person who corrected it did not find many bugs, which makes me believe he did not compile it either.)

Most of all, get going, just start to programm. It is like learning a foreign language, you can take a lot of classes and read a lot of books and still can't talk. You only learn this by actually figuring it out for yourself, just babble away in whatever language you choose. After a while, the words will start to make sense.

Have fun,

Jutta Jordans
Thursday, January 31, 2002

I first learnt to program in BASIC on a Sinclair Spectrum (A british home PC similar, but superior, to the C64 ;-)

However, nowadays I think the best place to start is in Microsoft Office.

The VBA editor in Word and Excel provide all the debugging tools you need, along with the ability to step through your code.

They also give you a rich object model to experiment with and an easy ways to enter data.

Once you have mastered VBA in word and excel, you can then  progress onto Access, which takes you one step closer to a real programming environment.

The step from Access to Visual Basic is almost inperceptible.

If you don't have MS Office, Smartsuite can be brough very cheaply and it's Lotusscript is almost identicial to VBA, except it has superior Object Orientated feautres (ie inheritance) but a weaker editor.

Ged Byrne
Thursday, January 31, 2002

Python will teach you good habits, and is quite an easy one for a beginner to learn (having been based originally on a teaching language).

It's got quite a lot of nice libraries for it, too, and a big usenet base for support.

Alternatively you could try Perl, which is more widely used but which won't teach you any good habits unless you're *very* disciplined....

JP
Thursday, January 31, 2002

Here is a good place to start

http://www.cs.rice.edu/CS/PLT/packages/drscheme/

The book is online or you can get the dead trees version.

Ryan Ware
Thursday, January 31, 2002

My first experience was also with a Sinclair Spectrum, then GW-Basic, QBasic (No line numbering, procedures and functions, sheer heaven back then :), C, C++ and a lot of Pascal. After the switch from DOS to Windows, I tried a little Visual Basic, fell in love with Delphi and never looked back. Never liked the Ideea of Java ( I don't want my apps, which where written for a pc to run on a toaster, and that's what Sun promised back then). I'm starting these days to experiment with VS.NET + C#, and the first impressions a positive, although it's scary how much it resembles Delphi.
I'd say, download Delphi 6 Personal Edition (it's free) and have look, you won't regret it.

Szasz Attila
Thursday, January 31, 2002

Sorry for the "accent" I was in a hurry :)

Szasz Attila
Thursday, January 31, 2002

I'd recommend something simpler than C++.  I suggest Visual Basic.  You should be able to find a beginner's book in the bargain section of a bookstore.  You may be able to find one that has a crippled version of VB included with the book.  You can get your feet wet that way at minimal cost and with lots of hand-holding.

Python is a sweet language, and it's free (www.python.org).  I believe there is a tutorial on site.  It wouldn't be a bad starting point either, in some ways better, but making something that looks exciting on the screen will come faster with VB.

As somebody else said, the main thing is to sit down and get started.  Good luck!

Matt Conrad
Thursday, January 31, 2002

I realize I sound like a dinosaur for saying this, but…
Go buy a copy of “The C Programming Language” by Kernighan and Ritchie. You may have to look hard; it is a small book in among the useless thousand page tomes. Definitely read it before you start doing anything with C++. It will not take long to read, and it is definitely the best book I have ever read on how to program with a specific language.
There are other, easier languages. Some day, if you want to be a real programmer, you will have to deal with pointers, and pointers to pointers.  Do it sooner, not later. You will be a better programmer.
When we hire a new programmer, if they don’t drag in a dog-eared, coffee stained copy in the first week, I get worried. Honest.

Doug Withau
Thursday, January 31, 2002

Hmm.
What I did was...

1. Start playing with BASIC on a Radio Shack Color Computer while in 2nd grade.
2. Toy around with GW-BASIC and DOS batch files through high school
3. Take intro to C while an EE major; sleep through class; get A.
4. Fail 2nd EE course by building circuits that didn't work.
5. Change major to CS.
6. Spend most of college coding in C and C++, along with trace amounts of VB, Scheme, Prolog, x86 Assembler, and Java.
7. Do summer work in VBA/Access.
8. Pick up Perl for a web-based senior project.
9. Get a job doing VB out of school.
10. Lose that job; pick up a job doing ASP and VB/COM and a .COM.
11. Lose that job, move to the in-house web staff of a traditional company, again mostly in VB. Play with .NET betas while unemployed.
12. Start learning VB.NET for future projects because the combination of a CS degree and three years of work mostly in VB had me thinking in VB.NET before it existed.

I don't recommend doing this. On the other hand, I really like VB.NET.

Dave Rothgery
Thursday, January 31, 2002

I think JavaScript might be an easy introduction to programming. Everyone has a JavaScript-enabled web browser. The new programmer's results are immediate, visual, and look "real" (because they are inside a web browser).

The language is approachable yet powerful (such as object-oriention and first-class functions). It has C/C++/Java like syntax but without crashes. The only disadvantage I see is that web browsers do not provide helpful (or any) diagnostic error messages for syntax errors.

Banana Fred
Thursday, January 31, 2002

I went from Pascal to C++ to Perl and PHP.  Don't learn Pascal, and don't start with Perl. 

I avoided Java for the longest time because I could never decide who to pay attention to in the flamewars and religious debates.  It was always "Java izz slo\/\/" versus "My Java app runs faster than your perl script, so there!"

Recently I bit the bullet and decided to learn Java while avoiding any topic that sounded too much like a marketing ploy, and was very pleasantly surprised.  I think in the long run it'll make me a better programmer all around because the strict OOP forces you to break down your problems more than in free-flowing languages like perl (and to a lesser extent, c/c++).  And I happen to LOVE the standard library, even though I'm sure it has it's fair share of flaws.  It makes the tedious things quick, and the complex things easy. 

Start with Java or C++, and be sure to learn both pretty well before too long.  Then you can decide for yourself and branch out to other things. 

The best advice is to choose one and stick with it long enough to get the main idea of programming in general, then expand your horizons as much as possible to gain a better understanding of which tool to use when.

Patrick Lioi
Thursday, January 31, 2002

You should start with VisualBasic. With VisualBasic you can develop standalone Windows apps (like CityDesk) as well as web-based apps (like FogBUGZ).

It's a fine introduction to programming and you will actually be able to create useful applications in a metter of days or weeks. There is a big and growing market for VB developers. There are tons of VB resources including web sites, sample scripts and books. You can get started with VBScript/ASP immediately and for free at Brinkster.com

pb
Thursday, January 31, 2002

My god.

This is truly a much larger and more helpful response than I anticipated.

Thanks to everyone who's responded/responding to my admittedly ignorant request for info. If anybody wants info on the incredibly high-brow black-turtlenecked world of graphic design, just let me know

Fisk.

Fisk
Thursday, January 31, 2002

I started off with Fortran IV on an IBM 370. You don't want to do that.

It realy depends why you want to learn a programming language. If it's for personal interest, I don't think you can beat Kernighan and Ritchie's "C Programming Language", probably the best book ever written on any subject. Well, okay, maybe it's not quite that good, but it's my all-time favourite book on a programming language. Maybe follow that up with Kernighan & Pike's "Practice of Programming".

If you're thinking of getting a programming job down the line, I would guess that something like C++, Visual Basic, Java, or C# is likely to be more marketable. For C++ I really like Koenig & Moo's "Accelerated C++". Most VB & Java books seem to be 1000 page behemoths, but "The Java Programming Language" by Arnold & Gosling is not bad. You'll still need the behemoths to master the class libraries though. I'd put in some weight training first.

Andrew Simmons
Thursday, January 31, 2002

Something that should influence your choice is the quality of development tools available (probably, preferably for no/minimal cost) and the quality of documentation available to help you out.

I'd say that it's pointless buying any of the "For Dummies..." books, "In 21 Days.../24 Hours..." books or any of the ones with the rabbit on the front ("Easy Start"? "Quick Start"?) as they seem geared towards people who wish to achieve very specific things and not towards teaching an understand of concepts that are more widely applicable.

For the same reason I'd be cautious of recommending JavaScript, as a previous poster did. Even though I agree with that poster's comments - JavaScript is a lot more capable language than most people realise - most of the books and online tutorials that "teach" you JavaScript are of a pretty poor standard. The best JavaScript resources I know of are Danny Goodman's O'Reilly "JavaScript: The Definitive Guide" book and the online reference manuals on MSDN and the Netscape Developer connection, but these probably are not suitable for someone who is starting out.

As seems to be the case I started out programming as an 8 year old, writing BASIC on a Texas Instruments computer using Usborne books. The thing I liked about this series  was that they provided "assignments" - eg. write a program to add up numbers input by the user (these books are/were aimed at kids) - which gets you thinking about how to solve problems with code and writing code is the best way to learn how it's done.

So I'd recommend any language for which you can get a good quality learners guide that sets you programming assignments. Visual Basic may be a good fit here, but make sure you have a good book to guide you (looking on Amazon.com is a good place to get a sense of what is good and what is not).

From there you should look at getting books like Kernighan & Ritichies "The C Programming Language", Kernighan & Pikes "The Practice of Programming" and, depending on your language choice books like "Effective C++" (Meyers), "Effictive Java" (Bloch), "Practical Java".

Walter Rumsby
Thursday, January 31, 2002

What I always tell people who want to learn programming is that they should
1. Come up with some simple, straightforward program they want to write. Ask around and make sure the app you want to write really is simple and straightforward, but make sure it's useful.
2. Pick a language that's good for doing that.
3. Get to work. Ask a lot of questions. Find the popular internet hangouts for programmers of your language. Look for FAQs, HOWTOs, and stuff.

Dave Rothgery
Thursday, January 31, 2002

"Can anyone recommend a website or text that could shed some light on computer languages, how they fit/relate together and what their applications are?"

Not really, since programming languages are partly tugs-of-war between people who want to sell you something.  So mainly, it's just marketing.  But Gödel Escher Bach puts things in an interesting perspective:
http://www.amazon.com/exec/obidos/ASIN/0465026567/qid=1012538845/sr=1-1/ref=sr_1_14_1/102-7281480-6911326

Many people dislike the idea of C++ for beginners, since it's a very heavy language with many C artifacts for legacy software.

In fact, if you think about it, language is just notation, and building one is often the right way to express a particular problem area.  So languages are to some extent arbitrary.  It's not the language itself that matters, but factors like documentation, what you enjoy, etc.

So, depending on your resources, C with the K&R book could be nice.  Especially if you have a Unix system.  Or Java, since there is a lot of documentation, runs on many platforms nicely, and can do pretty things in a very standard way.

Just keep in mind that there's nothing magical about these languages; learning history is good, because I imagine that people held the same derision for Unix that people now reserve for Microsoft.  Now, Unix is considered the Wisdom of the Ancients.

Arnaud Michals
Friday, February 01, 2002

I see some have similar history as I, started with a ZX80, progressed to a Spectrum, moved to a C64 then unto CPM machines. Learned machine codeing, Basic, C, dBaseII, dBaseIII, Clipper,Clarion and a few others. Today I'm looking at Linux, Ruby ( ala Phyton,Perl but cleaner in syntax http://www.ruby-lang.org/en/index.html )

Now doing work for a major retail company in the UK in Clarion with SQL backend. All self taught. Not bad for an old gezzer like me. 

Nigel Soden
Friday, February 01, 2002

Personally I would start with Smalltalk and move onto Java.
Smalltalk is very easy to learn and teaches you very good concepts. Then move onto Java, because it will be the domanant language by the time your done. Even though you should be good at smalltalk in less than a week. Its that simple.

Regs,

James Ladd
Sunday, February 03, 2002

I wish people would quit saying that others should start with Visual Basic:

I'm a complete believer in the "It doesn't matter where you start" theroy; The theory that you simply need exposure to lots of different things, solving lots of different problems.  But with VB, too much is hidden from the beginner.  I tried to help a friend learn programming, and I chose VB to start her out.

Big Mistake.

She had the hardest time with the concepts like why does this function execute when a button is pressed.  Or why can't does lblOne = lblTwo make the captions match, when Set lblOne = lblTwo make the var lblOne reference a new control?  These things may make sense to a person with some development knowledge, but to a complete new person, who doesn't know what a simple variable is, let alone an object reference... well, it's just hell.

She ended up thinking development is just magic.  And I guess that with VB, lots of stuff is done "by magic" (the runtime) for you. That's what makes it great.  But for my next victim, I'll teach them with a language that  1) has very few magic tricks up its sleeve, and 2) can create a console application (I'll leave event-driven GUIs for a second lesson)

Philip Rieck
Sunday, February 03, 2002

I've said it before, but mileage varies. I know a developer who made >$100K last year, who did his very first development in VB3 when he decided that he was tired of building whitebox PCs. To him, it made perfect sense. That may be because he was of the video game generation, and sometimes VB is more like a video game than a computer language.

I'm in the "it doesn't matter where you start" (with me it was DigiComp, CARDIAC, 8088 assembler...) but I am beginning to think that there needs to be a caveat added: "...and if you don't like it, then try two or three other languages before you give up." Some people really take to LISP, or perl, or for all I know COBOL (now available for .NET!) as a first language. It would be interesting to some day see research on how to choose an appropriate language for a beginner based on their history or personality tests or something, but for now the best we can do may be to just give them a smorgasbord to choose from.

Mike Gunderloy
Monday, February 04, 2002

Phillip, if you're starting someone off with VB now, you'd start them off with VB.NET (because VB6 is dead), and both Set and the weirdness of default properties are gone.

Dave Rothgery
Monday, February 04, 2002

"If anybody wants info on the incredibly high-brow black-turtlenecked world of graphic design"

For turtle graphics, use Logo :-)

"with me it was DigiComp" - Mike Gunderloy

Are you referring to the DigiComp II (the plastic and wire hand-cranked unit from the 60's)? That was _my_ first computer.  I moved on to FORTRAN IV on a Burroughs 5500, then the original BASIC on DTSS, Integer BASIC on an Apple II, then 6502 assembly, and on from there.

To a large extent, it doesn't matter what language you start with, as long as you have resources (specifically, experienced programmers who know that language) handy. Books are indispensible, but likely insufficient.

I also agree with having a project you want to do. I've never been able to learn a language from a book just by following their examples; I have to have some task that _I_ want to accomplish. It not only provides me with incentive, it usually tends to take me "beyond the book."

Steve Wheeler
Tuesday, February 05, 2002

Definitely don't start with Smalltalk. You probably won't even be able to find a reasonable development environment for it!

I completely disagree with Philip on VB. The whole reason it's good for a beginner is specifically that you can build real world apps almost immediately. Nothing creates enthusiasm more than completing useful projects. The guy didn't say he wanted to learn "programming". He said he want to learn "some sort of programming language".

The most positive thing I can say about VB is that you could use it to create apps like FogBUGZ and CityDesk that people will actually buy! And you'll have marketeble skills in a matter of weeks!

Be interested to know what Fisk chooses and how it pans out.

pb
Tuesday, February 05, 2002

Steve - Yep, that was the DigiComp that I had in mind. You could program it with pieces of plastic soda straws after you lost the original pieces.

And CARDIAC was the Cardboard Illustrated Aid to Computing -- A paper computer developed at Bell Labs. Turns out you can still buy the darned thing, so now I have one again, my original having vanished long ago after one too many moves. More information on my site at http://www.larkfarm.com/cardiac_answers.htm .

Mike Gunderloy
Tuesday, February 05, 2002

And I started on IBM 360s and punched card so I wouldn't suggest that at all.

Given the current climate I'd recommend Market Gardening instead, at least you'll never starve.

Simon Lucy
Wednesday, February 06, 2002

Mike's reference to the CARDIAC brings back great memories of the Computer Math class I took as a high school junior.  We learned programming concepts with the CARDIAC's, but that's not the great memory.  The great memory was my friend Pete who gestured wildly as he went on loudly about what he'd like to do to a certain well-endowed girl in our class ... not realizing that she was standing right behind him.  The even better memory was that we let him continue without warning him.  After all, once he mentioned the handcuffs and the ruler, it would've been rude to interrupt a good story.

Fisk, if you're even still reading this, I've got a slightly different tack on which language to learn first.  I assume that you have an end goal in mind for learning a language. Something like ... (a) you have a void in your life that you think would best be filled by spending endless hours cursing at a computer when it's not doing what you obviously and eloquently programmed it to do, or (b) you want to get a job.  I'm guessing (b).

Granted, I have an engineering background, not computer science, so my take on this may be slanted. But after 10 years of engineering, the last several in management, I have decided to change career tracks into software development.  The following is the general recipe that I've come up with for deciding what languages on which to concentrate.

First, get your local Sunday paper or go on-line to job web sites and see what's in demand in your local area.  Tally them up.  While I agree with the above comments that developing solid programming skills in any language will deepen your undertanding, the reality is that what you put on your resume must make it through the screeners in HR.  So I would go with languages that are relevant to the market.

Second, assess your budget.  Personally, I think that even if you have plenty of cash to spend on software development tools, you are better off starting with the free ones.  ( http://www.devshed.com is a nice site with links to many of these, and it has well written tutorials that don't aim over your head.)

Third, go to Amazon for their book reviews.  I feel guilty because I hardly ever buy from them (bookpool.com is cheaper), but their customer reviews are a great source for weeding out the good from the bad. On-line tutorials make lousy bathroom reading (monitor cord's not long enough), so I prefer to kill a few trees. But software books are expensive, so know before you buy. Amazon gets a wide cross section of customers, so the reviews run the gamut from newbie to experienced.

Fourth, aim for a balanced approach.  By that I mean learn some standalone application development, some web development, and some database development.

Fifth, pursue a certification track.  This might raise some eyebrows on this site, but I have a solid reason for suggesting this. When I interview candidates for entry-level engineering positions, I want someone with a degree. I don't care about the piece of paper itself, but I do care that they studied within a standardized framework of courses that provide a solid foundation.  To me, certification is analogous.  Don't do it for the piece of paper because odds are that most companies won't care that much about it.  Instead, I suggest studying for a certification as a (self-disciplinary) means to stay on focus with the core fundamentals of a language.

With all that said, I would start with Java.  There is a demand for it (albeit, skewed toward advanced development) and it's free.

Although I'd taken many programming classes through high school and college (Basic, Fortran, C, Pascal, Assembly), I never had a need to put any of them to use in my career.  Then several years ago, I started writing small Access and VB apps to support manufacturing and test operations.  Then, I decided to take a C++ class, and many of the behind the scenes things in VB made more sense.  Then, I took a Java class and the OOP stuff from C++ suddenly made more sense.

From that perspective, Java is a language that just seems to make sense on a lot of levels.  My perspective may be limited, but that above all is why I would recommned starting with Java.

Nick Hebb
Wednesday, February 06, 2002

Excellent suggestions, Nick. I would add one thing about using Amazon reviews for guidance though: always ignore the best and the worst reviews of any given book. The worst review normally comes from some reader with an ax to grind, often only dimly related to the book: they don't like the language at hand, or they had a run-in with the author at a conference and couldn't get free consulting, or they wrote a competing book. The best review is all too often the author posting from a Hotmail account or some crony of his doing likewise.

Mike Gunderloy
Wednesday, February 06, 2002

I remember the soda straws. I also remember the CARDIAC; I think I had one.

Haven't seen it or the DigiComp in years, but I'm certain I've got the Digicomp instructions; I remember seeing them a year or so ago. I thought about scanning it in, because it included outline drawings of the various pieces.

Not having a pantograph, I figured I could enlarge them in a graphics package and print them out as templates. I know someone who makes laser engraving machinery, and thought it might be nice to make a reproduction out of lucite or mahogany.

Steve Wheeler
Thursday, February 07, 2002

I'd recommend starting with Python, or possibly Ruby (I've heard lots of good things about Ruby, but cannot vouch for it myself...yet;).  I've spent a fair amount of time in Perl, VB and Java, and much less time in straight C and C++; I've been most taken with Python.  It's deliberately designed to be elegant and simple, and it shows.  The other very nice thing with Python is that it is not a language you'll need to learn and then leave behind, as it's used in some big projects (maps.yahoo.com, google, Disney animation labs, etc.)  So you can invest a lot of time into it and not feel cheated later.

Beyond that, I'd tend to _not_ recommend VB these days, my sense from several years of checking up on dice.com for trends is that Visual Basic is in decline.  So beyond Python, I'd recommend Java or C# (extremely similar syntax).  If you want to keep going after that, I'd say it would be time to bite the the bullet and learn C/C++.  I concur with others, the book "Accelerated C++" is excellent.  The perverse thing is, I don't think in this day and age one needs to know C++ because every assignment will use it (typically Java is the "must have" these days) but C++ knowledge is often viewed as a sort of weeder requirement; the thinking is, if candidate X knows C++, odds are candidate X is an intelligent person and an experienced programmer.  And C++ can give you the aura of authority to say "we should do this in Python", and then the project gets done ahead of schedule, and you become a deity in the programming circles where you work  ;)

Cole Thompson
Sunday, December 01, 2002

*  Recent Topics

*  Fog Creek Home