[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