プログラミングとは何か

そもそもプログラミングとは何ぞや?という話。
……はい、申し訳ないですがまずはそんなところからです。
わからないことは用語辞典みたいなサイトで調べまくりなスタンスです。
真っ先にあたってみるのは以下のようなサイト。

IT用語辞典 e-Words
http://e-words.jp/
Wikipedia
http://ja.wikipedia.org/
Weblio|辞書<国語辞典・国語辞書・百科事典>
http://www.weblio.jp/

ではさっそく。

プログラミング(Programming)とは、プログラムを作成することにより、コンピュータに指示を与える行為である。

ほとんどのプログラミングは、プログラミング言語を用いて処理を記述することで行われる。これをコーディングという。類義語としてスクリプティングがある。

プログラミングの目的は、人間の意図した処理をコンピュータに行わせることである。

ほとんどのプログラミングは、プログラミング言語とよばれる人工言語を記述することによって行われる。 プログラミングには、文字による言語を記述する方法ばかりではなく、視覚的な表現や図形的な記号を入力するビジュアルプログラミングという方法もある。

なるほど。
自分なりの解釈でいくと、

  1. プログラミングとは、プログラムを作成することでコンピュータに指示を与えること
  2. プログラムは、プログラミング言語という人工言語を記述することで作成する
  3. ちなみにプログラミング言語でもって処理を記述することをコーディングと呼ぶ

ということらしい。

そうなると、プログラミングがしたかったらプログラミング言語という人工言語の使い方を学ばなくちゃいけない、ということになるらしい。
このブログの趣旨としては、Rubyを学びつつプログラミングの仕方を覚えよう、ということなので、プログラミング言語Rubyで決まり。
でもせっかくなので、他にどんなプログラミング言語があるのか知りたいと思ったら、Wikipediaにこんなページがあった。
プログラミング言語一覧 - Wikipedia
えーと……うん。いっぱいあります。

プログラミング言語の分類とRuby

このページではいくつかの観点からプログラミング言語が分類されています。その中で、我らがRubyがどこに分類されるのかを見てみます。すると、文法による分類では“手続き型言語”に属し、さらに“スクリプト言語”であって“オブジェクト指向言語”でもあるそうです。うーん。

とりあえず簡単に見ていくと、“手続き型言語”については、

もっとも原初的なプログラミング言語機械語であることから、必然的に史上初のプログラミング言語手続き型言語である。

という記述があります。さらに、他の○○型言語と比較するとダントツに数が多いので、要は「フツーで自然な書き方」ってことなんじゃないかと勝手に思っておきます。
プログラミング言語としては一番有名な(と何故か思ってる)C言語もこれに含まれているし、学びやすそうな印象です。
次に、“スクリプト言語”について調べてみます。

スクリプト言語(-げんご)とは、アプリケーションソフトウェアやソフトウェアツールの動作内容を、台本(Script)のように記述するための、簡易的なプログラミング言語の総称である。

さらに転じて、比較的単純なプログラムを記述するための、簡易的なプログラミング言語全般をいう。動的型付け言語を、スクリプト言語と呼ぶ定義もある。ただし、厳密な定義ないし区別は存在しない。いずれの場合も、多くはインタープリタ方式を採用している。

ということです。「厳密な定義ないし区別は存在しない」というあたりが不安です。
簡易的な、なんていう記述もありますが、これは別に言語として簡単である、という感じでもなさそうです。なんだか気楽にプログラミングできそうな言語、というくらいにとらえておきます。
インタープリタ方式」というのは「コンパイル方式」と対比しておくとよさそうです。
コンパイルというのは

人間がプログラミング言語を用いて作成したソフトウェアの設計図(ソースコード)を、コンピュータ上で実行可能な形式(オブジェクトコード)に変換すること。そのためのソフトウェアをコンパイラという。変換のみを一括して行い、生成したオブジェクトコードの実行は行わない。

で、インタープリタというのは

人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)を、コンピュータが実行できる形式(オブジェクトコード)に変換しながら、そのプログラムを実行するソフトウェア。インタプリタ型の言語はプログラムの実行時に変換を行なうため、その分だけコンパイラ型言語よりも遅い。

というもの。
要するに、コーディング作業によって作られたソースコードをそのまま実行できるのがインタープリタ方式で、一旦明示的に翻訳作業が必要なのがコンパイル方式、という理解でひとまずよさそうです。このあたりも、気楽にプログラミングができそうでいい感じです。

Rubyはやっぱり良さそう

ここまでをまとめて見てみると、Rubyは気軽にプログラミングが楽しめて、しかもフツーの書き方ができるから心配のなく使えそうな言語、という印象です。入門用には悪くないんじゃないでしょうか。
そういえば、最近こんな記事も話題になってました。

sumiiの日記 - 東京大学教養課程の第一プログラミング言語Ruby
http://d.hatena.ne.jp/sumii/20060928/1159394568

東大生とは頭の中身が違うのでアレですが、こういう記事をみると信頼性が増しますね。