---
deprecated: true
excerpt_separator: <br/>
category: technology
layout: post
title: 'Programming: The theory'
date: '2006-08-22T04:14:00.000-04:00'
author: Anna Wiggins
tags:
- programming
- Technology
modified_time: '2013-10-22T11:19:50.878-04:00'
blogger_id: tag:blogger.com,1999:blog-4209116010564764361.post-3711031036226478256
blogger_orig_url: http://www.stringofbits.net/2006/08/programming-theory.html
---

One of my biggest problems with the IT community, both in amateur programmers and prospective employers, is the following question:  "So, what programming languages do you know?"  This implies that learning a language is an extremely difficult task, and collecting languages like trophies is somehow a worthy pursuit.<br/><br/>A programming language is a tool.  A skilled craftsman isn't good at her trade because she knows how to use a given set of tools; anyone can learn that.  Rather, true skill comes from knowing how to *apply* the tools.  The fundamental concepts behind programming are the skills on which we should be focusing.<br/><br/>This applies to academia as well.  The language you use to teach students, especially the first language they encounter, *is* important.  I'm not about to advocate "teaching languages" like Pascal, though.  I think it's important to choose a real-world language, with all the pitfalls and caveats of a real-world language, as a student's first language.  At the same time, it should be a language with the features available to demonstrate all the fundamental concepts in programming.  A language that doesn't support recursion would be a Bad Choice, for example.<br/><br/>So, when someone (a peer or a hopeful programmer-to-be) asks me "what languages do you know?", I won't respond "Well, I know C, C++, Java, perl, php, xhtml/xml/css (if you count those), lisp, prolog, LotusScript, Javascript, LSL..." etc.  Instead, I'll say "I've used a number of languages, but the key thing is that I know how to learn any language."  When an employer asks, I suppose I'll have to say "Well, I know @languages...".  Then, though, I might add "...but I consider the fundamental concepts behind programming languages to be more important, because mastering those means I can learn to get around in any language given a week or two of study."<br/><br/>In summary:  Learning a programming language is trivial, once you know the fundamental concepts of programming.