Virtuous Programmer Adventures of an Autodidact

About

What I'm Doing

I've always been fascinated by programming languages. Each one is someone's attempt to describe computation and find a useful or interesting way to interact with a computer. I'll be using this blog as an opportunity to explore a variety of languages and share what I learn.

To this end I'll be trying to gain basic competency in a new computer language every month, by week my goal is:

Week 1:

  • What I want to know:
    • Why I should learn the language.
    • How to get started using it.
  • How I'll get there:
    • Read the wikipedia article.
    • Read the About/FAQ on their web page.
    • Install the environment.
    • Write and compile a "hello world" program.
    • Start creating a cheatsheet that defines all the keywords in the language and common activities like creating functions and using conditional statements.

Week 2:

  • What I want to know:
    • How to write code in the structure natural to that language: Objects, functions, subroutines, agents.
    • How to use its conditional and looping structures.
    • How to test code in that language.
  • How I'll get there:
    • Solve the FizzBuzz problem in that language.
    • Test the results using its testing libraries.

Week 3:

  • What I want to know:
    • How to use the languages libraries.
    • What can I do with it when I'm working on real world tasks.
    • Become more familiar with its features and idiosyncrasies.
  • How I'll get there:
    • Write a basic RSS aggregator in that language that will:
      1. Extract a list of sources from a file.
      2. Download the RSS data from the given sources.
      3. Parse through the RSS feed and extract the sections and title of each article.
      4. Print the sections/article to the screen in a decently readable fashion.

Week 4:

  • What I want to know:
    • How to develop a GUI application in that language (or the equivalent to CURSES if there is no GUI system)
  • How I'll get there
    • Write a front end for the aggregator I developed during Week 3.

What You'll See

I'll publish the source code with an analysis of it every week early Monday morning. On months with 5 Mondays I'll publish a writeup on a tool that I find interesting on that particular month. Please feel free to send me any languages/tools you think I'd be interested in.

My Current Schedule

November: Python / Markdown
December: Scala
January: Prolog / Robot Framework
February: Squeak Smalltalk
March: Lua
April: Intercal, LOLCode, Shakespeare
May: Oz
June: J

Comments (2) Trackbacks (0)
  1. great site. haskell should be next language

    • Thanks for the feedback. Haskell will be on the list eventually, but I already know it and there are a lot of languages I don’t know that I’d like to explore first.


Leave a comment

No trackbacks yet.