はじめに

edX で プログラミングパラダイムの講義を受けたのでその記録.

実は, この講座は受講が今回で 2 回目だ.前回受けたときの記録は以下.

なぜ 2 回も受けた?

理由は以下だ, 前回の講座で,

  • 単位を落とした…
  • 内容があまりにも素晴らしかった
  • 内容の理解をもっと深めたかった.

内容

内容は, 前回とまったく同じだった. スライドも動画も, そして問題も.

前回は 12week 連続で講義があったのに対して, 今回は 6week x 2 というように 2 つの講座に分かれていた.

あらためてパラダイムの整理

以下のようなパラダイムとコンセプトを順に説明していく.

Paradigms Concepts Features


Functional Programming Functions and recursion Hihger-order programming Single-assigned variables Object-Oriented Programming + cell Data Abstraction Polimorphism Inheritance Deterministic Dataflow Programming + thread No race conditions Concurrent transparency Streams and agents Multiagent Dataflow Programming + port Deterministic dataflow Nondeterminism where needed Active Object Programming + local cell Object-oriented programming Multi-agent dataflow

パラダイムを身につけることでどんな言語にも対応できる

この一年での言語の勉強記録

この 1 年で, たくさんの言語に触れた.

  • VBA (1 月)
  • Oz (3-4 月)
  • Scala (5 -6 月)
  • x86-x64 Assembly (7-8 月)
  • Python (9-10 月)
  • Haskell (11,12 月)
  • R (12 月)

2 ヶ月に 1 回は, 新しい言語に挑戦していた気がする.

また, 仕事で Ruby と Java をつかうようになって, オブジェクト指向言語を 利用することに対して抵抗がなくなった.

2 年前は C 言語しかできなかった

思い返せば, 2 年前は C 言語ただ一つしか使いこなすことができなかった.

このブログを始めたのが 2 年半前くらい. なんとなく, このままではダメだと思っていた.

去年はオブジェクト指向言語に触れようと思い, C++ と Ruby を独学で学んだ.

今年は関数型言語に触れようと思い, Scala や Haskell に触れた.

今では, 2 年前に感じていたような, 単一言語しかしらない劣等感がなくなっていた.

プログラミングを極める最良の方法とは

一つ一つ, 新しい言語に触れる度に, 理解するまでの時間が短くなっていくことを感じた. 言語のもつコンセプトの差異や共通点が見えてくるのが楽しい.

そして, そういう言語の妙を味わうための審美眼は, 間違いなくこの講座を受けることによって得たものだった.

プログラミング言語のコンセプトやパラダイムを身につけることが, 数多くの言語を身につけたり, 言語の本質を理解するための 効率のよい方法だということを, たくさんの言語に触れることで実感した.

この 1 年の最大の出会いは, CTMCP 本 (ガウディ本) に出会ったことだった.

これからどうするか?

CTMCP 本はいったん寝かせる

さらにプログラミングのコンセプトの理解を深めていきたい.

CTMCP 本を 2 回繰りかえして読んだのだが, まだまだ理解したとはいえない. 後半の方は読んでもいない.

ただ, edX があったからこそ読み進めることができたけれども, 一人じゃなんだかこの先を読むにも心が折れて挫折しそうだ.

この本は, この先も何度も何度も読み返していくことになるだろう. なので, いったん読むのを止めて, 別の本を読んでみようと思う.

最近発売された軽めの本

最近, コーディングを支える技術という本の電子書籍版 が出たのでこれを読んでみる.

電子書籍版は技術評論社の HP から.

目次を読む限り, 内容的にも重量的にも軽そうだ.

ガウディ本のライバル魔術師本

この CTMCP 本の前に出版された, 似たようなコンセプトでかかれた本がある.

通称, SICP 本, 魔術資本.これを来年読んでみる.

この本を扱った edX の講座と MIT のオンライン講義を見つけた. この講座のどちらかをベースにしつつ, 読んでみるつもりだ.

UC Berkeley: CS 61AS Structure and Interpretation of Computer Programs :SICP:

MIT courseware: Structure and Interpretation of Computer Programs