annabunches.net/_posts/2006-08-22-programming-theory.html

16 lines
2.3 KiB
HTML
Raw Normal View History

2016-04-11 22:01:00 +00:00
---
2016-05-04 18:41:25 +00:00
excerpt_separator: <br/>
category: technology
2016-04-11 22:01:00 +00:00
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.