最近、exercism.ioというプログラミングを学ぶサービスを使ってみています。
世界を相手に腕を磨けるプログラミング学習サイト「Exercism.io」のWIREDの記事に惹かれてやってみたのですが、なかなか面白いです。
これは、ちょっとした問題を順に解いていく、というものです。解いた回答はサイトにサブミットし、サブミットすれば次の問題を取得、解くことができる、というものです。サブミットした回答は様々な人が見ることができる状態になり、時折、気になった解答例や自分の解答にコメントしてくれる人もいます。
同じ解き方を、面白い方法で解いたコードはナルホド、と思うところがありますね。
問題の内容自体は、TDDのようにテストコードがあらかじめ用意されており、そのテストコードがすべてグリーンになるまでプログラムを構築して解いていく、というものです。中には素数判定が必要なものもあったりと、ちゃんと考えればより高速なアルゴリズムで問題を回答できるといった種類の問題も存在します。
ちょっとしたプログラミングを使ったクイズみたいな位置づけですね。他の人の回答みたりすると、自分とは異なる使い方や、よりスマートな記述で問題を解いているものもあって、程よい頭の体操になりそうです。
Code Schoolのようなちゃんとした学習をするサービスもありますが、ここは小さな問題がたくさん転がっているので、カジュアルに遊ぶことができるのが面白い。
2015/01/24 時点で、以下の言語の問題が用意されています。
Active language tracks:
Clojure clojure 34 problems
CoffeeScript coffeescript 20 problems
C++ cpp 34 problems
C# csharp 41 problems
Elixir elixir 38 problems
Erlang erlang 18 problems
F# fsharp 11 problems
Go go 61 problems
Haskell haskell 67 problems
JavaScript javascript 59 problems
Common Lisp lisp 17 problems
Lua lua 22 problems
Objective-C objective-c 10 problems
OCaml ocaml 19 problems
Perl 5 perl5 61 problems
Python python 46 problems
Ruby ruby 64 problems
Scala scala 42 problems
Swift swift 13 problems
Inactive language tracks:
Assembly assembly 0 problems
Bash bash 0 problems
C c 2 problems
D dlang 0 problems
ECMAScript ecmascript 1 problems
Groovy groovy 11 problems
Java java 10 problems
Nimrod nimrod 4 problems
Perl 6 perl6 11 problems
PHP php 12 problems
Windows PowerShell powershell 0 problems
Mathematical Proofs proofs 0 problems
R r 0 problems
Rust rust 15 problems
Standard ML sml 0 problems
VB.NET vbnet 7 problems
私はRubyを少しやってみました。他のコードにも触れてみようかなと思ってます。