[LUGSB] What do you think would be a good "first programming language", and why?

Michael Graffam mgraffam at mathlab.sunysb.edu
Thu Dec 11 18:42:13 EST 2003



On Thu, 11 Dec 2003, Erez Zadok wrote:

> A lisp-like language is also good as a starting language, but I find
> lisp-based languages too impractical for common use once you graduate.
> They're great for teaching concepts such as dynamic scoping and data-is-code
> and functional programming.  But you cannot do much w/ LISP once you
> graduate.

First of all, whatever language you learn first is somewhat irrelevent.
Over the course of a lifetime, a programmer will learn several languages
because technology changes.In fact, the language you learn in school might
not be widely used once you get out into the "real world". As a "real
world" programmer, you need to know a whole variety of languages.

Like natural languages, the programming language that you learn first
greatly influences how you think about programming. As such, the first
language that you learn ought to be one with principles that you can
grow with.

Lisp and/or Scheme is a great language for this. You can code in Lisp in
a functional, OOP, imperative, and even a procedural way. Lisp is not
tied to any one programming paradigm.

I don't think it is a good idea to teach programmers based on what the
current popular language is: this produces bad programmers that think
about programming in a bad way. Rather, teach programmers to think about
programming in a clear, coherent way and they will be excellent
programmers -- regardless of the language that they choose.

> I cannot think of a single scripting language that's better than Java as a
> first programming experience.

Bash is better than Java by far. If a would-be programmer is familiar
with Linux/UNIX and familiar with the command-line and can form pipeline
commands then Bash is by far the best programming language to learn. It is
immensely practical, can automate tasks far better than Java and is more
likely to actually be USED on a daily basis. A programmer who learns Java
_might_ be inspired to write a small Java game or some such kruft, but
a Bash programmer gets practice whenever they need to rename a diverse
collection of files.

And, of course, practice in whatever language you choose is the #1
indicator of success.

> That said, the dept. will be offering a new course (CSE-130) next semester,
> which is an intro to C for non-majors.  It'll be interesting to see how
> it'll go.  For sure it'd be a challenge to teach such a course.

I don't think so -- not if the instructor really knows C. I took C
programming as an intro course to programming at a community college. I
was already a decent Pascal programmer by that point, but I knew several
newbie students that did just fine.




More information about the lugsb mailing list