[wplug] Best programming language for beginner?

Pat Barron pat at lectroid.com
Fri Feb 22 12:05:32 EST 2013


Coming into this a little late, but I'll echo what others have said - it 
really depends on what you want to accomplish.

For someone interested in learning the "craft" of programming, coming in 
as a beginner, I would recommend that they start with a simple 
imperative or procedural programming language that is not strongly 
typed.  Among other things, this will help you build the mental 
discipline of taking a larger problem and breaking it down into smaller 
chunks.  In terms of modern languages, Python is probably good here, and 
is also a reasonable choice because you can easily use it to do real 
work on Linux.  But to be honest (and you'll probably think I'm insane, 
but here it is anyway...), I would probably recommend to anyone that 
they start with a language like Lisp.  It's *very* simple.  Because it's 
so simple, it really makes you think about the problem you're trying to 
solve, and it makes you learn a lot of things about modularization and 
code reuse. Admittedly, there are a lot of things that are difficult to 
do in such a language, but I think a certain amount of having to deal 
with stuff like that is valuable because it makes it much easier to 
understand why some features of more "complicated" languages are there - 
it's easier to understand if you're previously encountered the problems 
that those language features are attempting to solve.

I personally love the C family of languages, and I believe I'm most 
productive in them.  But I would hesitate to recommend them to a 
beginner as a "learning language".  There are a lot of ways to shoot 
yourself in the foot accidentally if you're not careful, which you need 
to be aware of (and that kind awareness, in my experience, most easily 
comes from exposure to other kinds of programming).  But, to paraphrase 
a common maxim about the Unix philosophy, "C doesn't stop you from doing 
stupid things, because that would also stop you from doing clever things".

Now, of course, you're not an absolute beginner, so you've already been 
exposed to some basic concepts - and you want to hit the ground running 
and be able to contribute to various projects and/or solve certain types 
of problems.  Unfortunately (sort of...), if your main goal is to work 
on modern web-based applications, the one language you absolutely have 
to learn is Javascript - it's actually a fairly complete programming 
language in itself, though of course it's most commonly used on the web, 
inside of a browser.  And there's also a whole package of stuff that you 
need to learn along with it, including HTML, CSS, and DOM.  Javascript 
in web applications uses a more asynchronous, event-driven programming 
model than you might be used to, and that can be challenging to wrap 
your head around if you're used to a programming environment where the 
flow of control through an application basically follows a predetermined 
path.  It just takes some getting used to.

Javascript and friends are primarily used in web applications to create 
the user interface.  What is used on the server side is largely up to 
you.  As others have pointed out, Ruby is a common choice here (as are 
Python, PHP, etc.).  And if whatever project you're going to be working 
on is built using a particular application framework, then you may not 
have much choice about what language you use.  For instance, Loomio 
(which you mentioned before) is built using the Rails framework.  And if 
you're using Rails, that means Ruby, and the various tools that support 
it.  But if you're not using a framework, you could even build the 
back-end of a web application using shell scripts (and I've actually 
done stuff like that)....

I'm not sure if that helps you at all, or just muddies the waters even 
more.  ;-)

--Pat.



More information about the wplug mailing list