What is it, naokirin?

きのこ本 感想 Part15

いくらなんでも間が空き過ぎているので、久しぶりにページをめくってみることにしました。

43 プログラミング言語は複数習得すべき(ラッセル・ワインダー, Russel Winder)

プログラミング言語は複数習得すべき、というのはいろんなところで聞くことですが、やっぱり重要なのはその背景にある文化とパラダイムでしょうか。

エッセイでは「パラダイムの違う言語を学ぶ」という風に書いてあります。パラダイムが違うと、そのパラダイムに合わせてプログラムの書き方、アルゴリズム、パターンが変わってくるため、最初は別のパラダイムの言語で役に立つ感じはしませんね。

でも、全く同じように通用はしなくとも影響は少なからず受けるため、そういう点ではパラダイムの違う言語をやってみることはいいですよね。

エッセイ内では学ぶ際には、必ず正しくプログラムが書ける程度にはなっておくことが重要だと書いてあります。私も異なる色々なパラダイムの言語を学ぶことはありますが、ショートコードは書けるくらいまではやるようにしています。さすがに今まで触った言語のすべてでショートコードが書けるほどできるわけではないのですが、少なくとも少量のコードであれば、それなりに書けるように努力しています。

私は実は複数のパラダイムに触れるべきということを聞いてから、様々なパラダイムの言語を触り始めたので、C++C#と言った手続きやオブジェクト指向プログラミング言語以外の言語で初めてまともに触れたのは、「ガウディ本」のOzと言う言語でした。
コンピュータプログラミングの概念・技法・モデル (IT Architects' Archiveクラシックモダン・コンピューティング)

あの本から、様々なパラダイムがあることやそのパラダイムにどのような特徴があるのか、またどのような言語が存在するかを知りました。あの辺りからC++C#で固定されていた考え方が少し変わって、最近のスクリプト言語的な書き方や、関数型の書き方による考え方を手に入れました。C++の知識だけだと、どうしても書くときに「手続き型オブジェクト指向」になりやすいので、この辺りを見に付けることで、コードを書く際に幅が広がったかなと感じます。

この先もプログラミングは続けていきたいので、ぜひパラダイムの異なる複数の言語を習得して行きたいですね。

44 IDEを知る(ハインツ・カブーズ, Heinz Kabutz)

ああー…私はあんまり使えていないIDEですね。

最近、JavaやGroovyについて学び始めて、IntelliJ IDEAというIDEを使い始めたので少しずつIDEを使いこなせるようにしようと努力している最中です。

実は昔、Javaを勉強しているときにEclipseを使っていたのですが、どうしてもなじめなかったのが思い出としてあります。
きっとJavaそのものの開発スタイルになじめない部分もあったのでしょう。あとは実際にIDEの使い方を知らなかったという部分が大きかったです。リファクタリング機能なんてその時は全く使っていませんでしたし。

最近では、IDEを使えると便利だと思います。リファクタリング機能はかなり強力なツールですし、IDEがあればバージョン管理から統合まで全部できちゃったりします。

とはいえ、私は言語にもよるものだと思っています。どんな言語でもIDEを使えば万事解決とは思ってません。なので結構vimのようなIDEとエディタの中間に位置するようなものを使っていたり、完全にエディタであるようなものもよく使います。
その代わりに、例えばRubyではAutotestと言う「監視しているファイルが保存されたらテストを実行する」ようなツールを使うことで代用していたりします。

私はある種使い分けることも重要かなと思ってます。でも、オブジェクト指向言語や大規模開発の際には、IDEはきっと役に立つ存在だと思います。

45 限界を知る(グレッグ・コルヴィン, Greg Colvin)

私は絶対できてない…

私は最適化と言うのを実はあまり積極的に学習したことや適用したことが無く、むしろいかに読みやすくモジュール分割やコードの改良を行うかを重視している部分があります。
もちろん最適化が不要なものだとは思っていないのですが、そもそもアルゴリズムなどに疎い私にはなかなか最適化を明瞭にやることがとても難しいことに思えてしまっている節があります。

しかしながら、その場その場で必要なコードを書けるようにしなければならないので最適化という部分もいずれ学び、身につけなければいけないと考えています。
もう少し、アルゴリズムやデータ構造、アーキテクチャなどの知識を深めて、実際にコードを書く際に役立てられるようになりたいですね。