General discussion


Budding Programming Interests by Students; Where to focus one's interest?

By billclewis2 ·
I AM NOT a developer/programmer although I played around with C,C++ (Borland Products), and Visual Basic years ago. When things progressed beyond DOS 6.22 and WIN 3.1 I didn't have time to keep up. In the interim I know that programming languages have undergone tremendous changes and the popularity of certain platforms have evolved.

My sons have asked where they should put their time in terms of learning a programming language (among the various species found in the world).

Given my lack of awareness, I would appreciate any suggestions that would give direction to their interest for learning a language.

The criteria would seemingly be: is it a language that will be around for several years to come? (given the rate of changes in the computer age); could it be used for application and game development?; would the language be useful for programming as a career interest?.

Thank you for your patience and answers.

This conversation is currently closed to new comments.

Thread display: Collapse - | Expand +

All Comments

Collapse -

C sharp. It might not be around if by the time they

by Tony Hopkinson In reply to Budding Programming Inter ...

start working, but the underlying techniques will.
You can download an express version for free off MS.
If they want to learn how to program though the should see whatever language they choose as the tool they use to express their learning.
Learning the language itself does not teach you how to program, it teaches you the syntax and semantics of how programs are expressed in that language.
C# is object oriented ,event based and has very good support for concurrency, (threading). It's also pretty much, the thing on the current market.
If they are interested in internet based stuff then this is a really good site.

Collapse -

Thank you Tony...

by billclewis2 In reply to C sharp. It might not be ...

We appreciate your insights. Being the "thing" on the market implies it has longevity and a larger user's support network.

They have taken CBT courses in the past and, I'm sure, will find your suggestions worthwhile.

Thank you again.

Collapse -

Got to be careful with that

by Tony Hopkinson In reply to Thank you Tony...

I've seen a lot of current things diminish into obscurity through market processes.

Use C# to learn OO, then when Bill launches D# mapping their experience over to the next new thing will be much easier.

If they are interetested in programming theory, they might want to look at other classes of environment like prolog, lisp, forth. 'Old school' procedural, Fortran, Cobol, C and Pascal, or even assembler. They might not be out there at the forefront of the market but the differences are very instructive.

There's a lifetime of learning out there, they could produce something I'm interested in learning, lots of other people have.

I hope they catch the bug. We are suffering from a lack of people who are interested in how and why.

Collapse -

Language options

by Mark Miller In reply to Budding Programming Inter ...

If your sons are really interested in programming techniques there are some languages that have been around for a very long time, and I suspect they will continue to be. For example if they want to learn about object oriented programming as a discipline I'd recommend Smalltalk or Ruby. They have a simple style that's easy to learn, and they are expressive so you can accomplish a lot with a little code. That helps with immediate gratification, and that can help get them interested in learning more.

The modern version of Smalltalk is called "Squeak". You can get it free at There's a book out now called "Squeak: Programming With Robots", published by Apress. I saw it a few weeks ago at Barnes & Noble. It's not about programming real robots, but virtual ones on screen. If you've ever seen the Logo language, the book uses Squeak in this way. The way the book bills itself is it's a REAL programming book, not merely child's play, but the approach was designed to be engaging and fun. I haven't read it in depth, but I'm sure it teaches object oriented principles. If they want to dig further into the language, there are free online books on the Smalltalk language, which works in Squeak, at They are PDF files.

The Squeak site says that the language can be used for writing games. The way Squeak is set up encourages experimentation. Smalltalk literature tends to emphasize it as a system for simulations, and games can be seen as a kind of simulation.

You can get Ruby free at They have links there to free tutorials and documentation, and books that can be bought.

In that same vein Lisp would be a good language to learn. It's not object oriented, but it has some features that most languages don't have and can come in useful in some circumstances. It's probably possible to emulate these features in other languages, but with some effort. I've heard from some that Lisp is a good language to learn even if you never actually use it in real world projects, because it teaches programming techniques that you would not normally be taught through other languages.

What I've heard is recommended as a development environment for Lisp is "Lisp in a box" at This sets you up with an editor pre-configured for Lisp, kind of like an IDE. It provides free downloads and some introductory material. Paul Graham, a Lisp developer, has a free book on the language at

The truly marketable languages right now are C++ (I think), C# or VB.Net, and Java. All follow the object oriented paradigm. You can get a pretty good idea of how popular each is currently by going to and doing a lookup on each language and see how many results you get. C++ has been around since the mid-1980s. I think it'll be around for quite a while longer. Java has been around since the mid-1990s. I'd say the same for it. C# and VB.Net are relatively new. They came out in 2002, but Microsoft is continuing to support them strongly.

It's possible to write games in any of these languages. C++ used to be the popular language for writing games. It might still be. A lot of the games that run on "smart phones" are programmed in Java. I'm not sure what the state of the art is for games at this point.

Microsoft has free development tools you can download at for C++, C#, VB.Net, and web development.

If they're looking to have marketable skills, I'd also suggest they learn about relational databases. It's kind of a different programming skill. Microsoft has a free database package available at the same URL called SQL Server Express.

For any of these technologies I'd suggest they get books that talk about them. There is documentation provided with them, but it's not great for a green beginner.

It's a lot to chew on, but programming is a big area to get into. It's possible to jump right in with the marketable languages and "learn to program in 24 hours", but that's a really shallow approach. Your sons might end up learning "just enough to be dangerous". That might get them employed, but they're probably going to end up committing gaffes and be part of failed projects (which there are a lot--have been for years). Personally I find it's a lot more rewarding to go in depth. I enjoy it. The people I've worked with have appreciated the depth of knowledge I have as well. It makes me someone they value working with.

Collapse -

So...C++ is exonerated as a language...

by billclewis2 In reply to Language options

Thank you for the in depth preview of options. Your response was both well reasoned and of sufficient depth to help us wade through the possibilities. While I was familar with several of your suggestions, I wasn't aware they were still viable alternatives. The bottom line still seems to be OOP, as presented in C++, however Ruby or Squeak might appeal to their budding minds with instant feedback instead of syntax mania!

Thank you for your efforts and counsel.

Collapse -


by Mark Miller In reply to So...C++ is exonerated as ...

All of the languages I mentioned have been used in real world projects somewhere. Smalltalk (basically the same as Squeak) and Lisp are rarely used in the U.S. in the commercial sector (I don't know about the government/public sector). The marketable languages I mentioned are the ones I would suggest in terms of getting a job today (though as mentioned by another post, this can change over time), just because there are a lot more of them that use these languages.

The hub of activity for Smalltalk seems to be in Europe, though there is some activity in Canada. There are Smalltalk jobs here and there in the U.S. This is ironic since Smalltalk was invented in the U.S.

Lisp has experienced a bit of a resurgence in the U.S. It's used in airline reservation systems. Orbitz or just about any online airline reservation web site is an example. Paul Graham has an article about this on his site somewhere. It's also been used from time to time to create search engines on the web.

Interestingly, Ruby could one day become a marketable language. There's a web application framework called "Rails" that works with Ruby (the combination is typically called "Ruby on Rails"). It's a "hot" up and coming technology in the U.S. for creating applications for the web. It's really just getting started at this point. In comparison to C++, Java, and the .Net languages, the job numbers for it right now are paltry.

The only reason I suggested the other languages (Smalltalk, Ruby, and Lisp) is they have more inherent power (you can accomplish a lot with a little bit of code) than the mainstream languages, and can, if nothing else, help teach programming techniques that will be useful in the mainstream languages. The mainstream languages tend to make up for their lack of inherent power via. powerful add-ons and code libraries.

Collapse -

In addition to those already mentioned..

by Jaqui In reply to Budding Programming Inter ...

They will have to pick an area and platform to develop on / for.

systems level programming:
assembly and c

graphics apps, including games:
Directx, opengl, directdraw.
c++, java
opengl, objective c [ cocoa ]
opengl [ mesagl ]
c, objective c, c++, java, python, perl ruby ...... [ every language listed except MS visual basic and MS .net framework based. ]

If they want their software to be cross platform, they will have to limit the languages they learn.
They would also have to be very carefull about supporting technologies, since graphics wise opengl is pretty much the only cross platform option.

A got ya with java is, you have to pick the jre to use, and remember it might not work right on other platforms.
[ personally, I won't use any java based software because there is more than one jre. java is "broken beyond usability because there is more than one interpreter / runtime environment." ]

python has some handy libraries for working with 3d graphics objects, specifically the lighting effects and texturing.

web based applications, they have to really pick the technologies to use carefully, since only windows servers will run any .net framework right every time.
they have to make sure they pick a technology that will function for the most people, if not for all people with websites.

the W3 Schools will show them what truly is a standard for websites, .net [ c#, asp, et-al ] are not web standards. They can't be until MS releases control to an international consortium, which won't happen ever.

A good place for them to read about some of the issues with coding, that often get overlooked is . They are completely focussed on security, and have easily reviewable records that show security for os, application as well as website scripts.

Collapse -

Jaqui...this is getting DEEP very quickly!

by billclewis2 In reply to In addition to those alre ...

We've looked at Ruby, Squeak, and several others in recent days and are exploring compiled vs interpreted programs and their programming paradigm.

There are many websites we've found that show side-by-side comparisons of the various programs and which are both interesting and a little daunting at first. However, insights like yours and others, and our reading has done much to part the veil.

Your discussion of the Java's JRE problems were VERY beneficial! It seems that everyone is pushing JAVA as the language to learn.

Thank you for your consideration and thoughtfulness.

Collapse -

Not Java for a 'first' language

by Tony Hopkinson In reply to Jaqui...this is getting D ...

If it wasn't almost as dead as a nit, I'd recommend vanilla pascal as start. C would probably a more future proof choice.
C# is OO, Pascal and C are procedural, other languages are set based, then there are those that are specifically designed for concurrency such as Occam.

If your chaps want to learn the theory of programming, then as Jacqui says you need to branch out a bit.

The thing about programming is while everybody talks about new and state of the art, they are talking about the tools we use to program and the environments we program in.

Programming itself hasn't changed since the Jacquard loom or the Babbage engine.
All it is breaking up a 'complex' task in to smaller steps. The size of those steps are the syntax of the language in use, whether it be machine code or bolting together components in a drag and drop IDE.

Effectively all that has happened is the size of the steps have got bigger.

For instance way back when things like linked lists and sort algorithms were things you had to know, now you just instantiate a list class and call it's sort method.

Now this might sound like a good thing, but I've seen code where to to do a sort Drag and Droppers have put an invisible list box on a form, populated it and then called it's sort method, which is wildly inefficient.

There is a temptation to dive straight in at the highest level, but if you skip how we got to it, you'll never know whether you are doing your best and you'll always be reliant on whether someone else has.

Besides it's interesting.

Collapse -

experience diving straight in at the highest level...

by crabbyabby86 In reply to Not Java for a 'first' la ...

i'm not sure how i feel about java as a first language.

it was mine, first year at university.

and then i did some web programming languages.

by then i was feeling pretty good about being able to crank of software that was useful really fast.

and now im going back to the not-so-high level languages in a course where linked lists and various sorts are all the rage... and it hurts.

we actually did a lot of this stuff in the second level java course. with the same professor and everything. im not sure why its not clicking for me now. and apparently im at the top of the class, so i shudder to think how my classmates are doing.

so. yeah. you can learn the stuff you have to know in a high level language. but then going back to the others hurts a lot.


good luck.

Related Discussions

Related Forums