Best first programming language

Joseph Sinclair plug-discussion at stcaz.net
Tue May 19 13:58:46 MST 2009


I'd start with Java.

* Starting with C teaches too many bad habits.  I've spent more time with C programmers breaking bad habits than any other strongly-typed language.
* Starting with C++ is like starting with C, except there is 100 times more to learn before you're productive, and 10 times more bad habits if you haven't learned good Object Oriented Design first.

* CS schools used to start everyone in Pascal, because it teaches structured programming very well and strongly discourages bad habits.  C was taught AFTER the students, presumably, learn good structured programming habits in Pascal.  With the rise of Object Oriented programming, this needed to change.
* Current curricula usually start with Java for the same reason they used to start with Pascal.  Java teaches good Object Oriented Development habits with strong discouragement for bad habits (although there are still a few areas where Java can teach bad habits, particularly for Swing programming).
* Starting with a scripting language (like Python, Ruby, Perl, PHP, Javascript, etc...) is like learning to drive trucks using a motorcycle.  The rules are COMPLETELY different, and you'll pick up a lot of bad habits you may have difficulty unlearning later.  Also, these languages are generally frowned upon in business applications, so it's a long twisty route to where the student wants to get.
* C# forces a dependency on proprietary subsystems and patented API's.  It's a nice language, but most of the jobs using it are really ASP jobs using the C# syntax as a scripting engine. It's sort of like writing JSP pages with Java, you don't really use the language well, and you learn absolutely TERRIBLE bad programming techniques because the whole system architecture for the typical ASP site is a Frankenstein's Monster twisting of good design principles. ASP (and JSP) can be useful tools (I use them myself in almost all web-based multi-tier applications), but the vast majority of uses I've seen abuse the technology to create 70's style monolithic applications because the software designer/architect simply doesn't know (or doesn't care) how to create an effective multi-tier system for
the web.
* Visual Basic is widely used in business simply because there are a ton of cheap, and low-skill, programmers available who ONLY know VB (many great programmers also know VB, but they tend not to be cheap).  Most VB projects are done in VB because they have to be done very quickly, quality doesn't matter, and it has to be cheap.

* Ada is a great language to learn structured procedural programming, but there's very little use for it, and the industry has mostly moved forward to Object Oriented design, so procedural programming is being squeezed into smaller and smaller niches (mostly very low-level code in the embedded or O/S space, sometimes packaged applications still use procedural code, but that's getting rare).
* If you want to torture yourself working on Mainframes in dark cramped dilbertian cubicles, learn COBOL, it's valued mostly because very few people are learning it, but millions of lines of legacy code is still in use.
* If you're really interested in learning just procedural programming (C, Ada, etc...), start with Pascal, and then learn C.  You'll learn how to program well before having to deal with the much greater complexity of C.

* All the minority languages (BASIC, scheme, lisp, smalltalk, eiffel, D, awk, snobol, icon, forth, etc...) make sense as languages to learn thoroughly once you've actually mastered at least 3 major languages (Java then C++; then C#, Ruby, Python, or Javascript).

All of the above is my opinion only, and is a VERY brief summary, no offense is intended and many statements are broad generalities about the language; not intended to depict any particular person or group.

Hope that helps.

Dennis Kibbe wrote:
> I searched the archive but didn't find a previous discussion about this.
> 
> A friend who graduates from high school next week wants to take a summer course in programming. His goal is to become a business applications programmer.
> 
> He asked me what language he should start with. I'd guess the prgramming landscape is changing with more services going into the cloud.
> 
> Joseph, Hans, Charles I'm sure you have opinoins and I welcome anyone elses.
> 
> My friend, Ian isn't on the list so I'll point him to gmane.org to follow the discussion.
> 
> dennisk
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: OpenPGP digital signature
Url : http://lists.PLUG.phoenix.az.us/pipermail/plug-discuss/attachments/20090519/7b8faead/attachment.pgp 


More information about the PLUG-discuss mailing list