先日、C言語勉強会4回目を開催しました。

時、分、秒をscanf()で取り込み、1秒後の時、分、秒を計算してprintf()する例題を各自作成してもらった後に、どのように考えながら作成しているかの過程を実演で示しました。さらに柴田望洋氏の「新・明解C言語」を参考書として第5章の配列と第6章の関数の章末のまとめの部分を説明しました。

いよいよ難しい箇所に入ってきたので次回からは章末のまとめだけでなく本文の方に戻って例題をやりながら丁寧に進めたいと思います。
「音律と音階の科学」を読みました。

音律と音階の科学―ドレミ…はどのようにして生まれたか (ブルーバックス)/講談社

¥929
Amazon.co.jp

難しいところは斜め読みしたので全部を読み込んだ訳ではないですが、そこそこ理解できたと思います。以前から純正律と平均律についてもっと詳しく知りたいと思っていたのでぴったりの本でした。

定番のコード進行として5度進行がありますが、なんで5度の間隔をとって進行するのが普通になったのか疑問でしたが、基準になる音を定め、それと良く響きあう音は5度の音で、見つかった5度の音とさらに5度の間隔を持つ音(ただし1オクターブ内に入るように適宜移動する)を順に探していくことで音階ができている=音階がそもそも5度で作られている、ということを知ると、5度進行が定番なのは当然だと思えてきます。

このような感じで腑に落ちることが沢山書いてある本でした。何度も読み直して理解を深めたいと思います。
先日、JavaがJava8で新しくなった部分に焦点を当てたセミナーに行ってきました。

・Java8の一番の目玉はラムダ式。ラムダ式はStream APIと組み合わせて使うのが最も効果的。
・CPUのマルチコアが当たり前になってきたが、マルチコアを活かす=並列実行できる個所は並列に動くようにプログラミングするための記法としてラムダ式を用いる。
・抽象メソッドを1つしか持たないインタフェースが関数型インタフェース。
・関数型インタフェースをimplementsする際、今まで匿名クラス方式で書いていた中で多くの部分が推論できるため(例えばメソッドが1つしかないのだからメソッド名を書かなくて良い等)省略可能となりラムダ式の記述量は少なくて済む。
・コレクションや配列等を処理するAPIがStream API。
・まずStreamを取得し、中間操作で様々な処理(並び替え、変換、フィルタリング等)を複数回行い、最後に1回だけ終端操作(forEach()等)を行う。このためループの記法が大きく変わる。
*この部分はUNIXでコマンドをパイプで多数接続するやり方と似ていると感じました。

ラムダ式が導入された意義が分からないと、今までの方式でも書けていたのに新しい記法を使う気になれないですが、その点が非常にクリアになったのでとても有意義なセミナーでした。