風邪を引いたのに続いて、仕事がプチ修羅場になって。
長らくブログの更新ができてませんでしたが。

何とか復帰したということにしていいかな。
明日から頑張ります。
昨日、多少プライベートなことも書くと書いたので、
さっそくになりますが。

風邪をひいて寝込んでいて、
あまり勉強が進みません。

どうも咳が止まらなくなってきました。

基本的に体は強くないので、
たまにあるのですけれどね。

過去のブログを調べてみると、
同じようなことを書いたことが一度だけありますねえ。

ちょっとこの調子だと更新もきついですね。
仕方がないのでブログはちょっとお休みしましょうか。

プライベートなことを書くブログは以前やったことがあるのですが、
どうもうまくまとまらないので。

このブログは、プライベートなことは書かずに、
プログラマーとしての自分に関係のあることだけを書くことにしていたのですが。

毎日書くということにすると、それだと書くことが足りなくなるのですよねえ。
毎日書くということにしないと、書かなくなってしまいそうですし。

一応プログラマーとしてといいつつも、
もう少し範囲を広げてみましょうかねえ。
多少まとまってない感想とかも書いてみるとか。

まあ今日のような記事もプライベートといえばプライベートなのですけれどね。
実際どうもうまくまとまってませんし。
こういうのばかりにはならないようにはしないといけませんけれど。

プログラマーを始めて10年ほど。

自分の限界が見えてきました。
やっぱり世界や、日本でもトップクラスで活躍している人は、
なかなか遠いですねえ。

まあそれがわかるようになったのは進歩したのだと思います。
ちょっと自分をほめてみる。

人間、ちょっと勉強を始めたくらいの分野は、
自分が何でもできるような気がするものです。

たとえば、
相対性理論は間違っていると言い出す、
在野の研究家とかを見ていると、よくわかりますね。

私も、ちょっと興味を持っている、
比較言語学とか哲学とかの分野では、
なんか偉そうに意見を言ってみたくなったりもしますが、
よく考えると、専門書を読んだこともないのですよね。
(とはいえ意識のハードプロブレムはどう考えてもいちゃもんだと思うのですけれど)

物理の分野は、大学で叩き込まれたときに、
自分がいかにわかってないかはわかるようになりました。

で、プログラムの分野でも、
勉強すればするほど、自分がいかに勉強不足なのかがわかってくる気がします。
勉強すればするほど、勉強してない部分の巨大さが見えてくる。
まあそんなものですね。

まあ実際のところ。
トップクラスの人の何がすごいのかというのは、
それを追いかけてみないとわかりませんからね。
知識のないころの自分にわかったとは思えないです。
今だからこそ何がすごいのかある程度でも説明ができるようになってきたというものです。

ま、成長したということですかね。

最近Rubyの勉強をしている都合上、
Rubyを賛美する発言が増えてますけど。

もともと私のネイティブプログラム言語はC#です。
総合的に見て、こちらのほうが大変素晴らしいと思っています。

とはいえ、誉めるとなると難しい言語でもあります。
いろいろとあちこち、素晴らしいところは多いんですけどね。
RubyとかSmalltalkのように、熱狂的に素晴らしいと賛美する一点がないような気がします。

はっきり言ってしまうと。
作っているところに大量の予算があって、
かつ作ることにより大きな利益が見込まれる、
というのがC#の最大の利点だといってしまっていいんじゃないでしょうか。

言語開発を含み、ソフトウェア開発というものは、
コストをかければかけるだけよいものができる、
という性質を持っています。

まあ、どれだけでもお金を無駄に使うことができるという性質もありますし、
また天才的なひらめきのようなものはコストでは補えないため、
コストをかけたものが、必ずいいものというわけではないですが。
お金を無駄に使わず、適切に使うことができたなら、
そのお金の分だけはよいものができます。

そしてMicrosoftは、適切に膨大な予算をつぎ込んでいます。
世界でトップクラスの人材を何人も雇い、
そのほかにも高レベルの人材を大量に使うことができます。
それらの人材を使い、
設計やユーザビリティ調査、品質テスト、そして実装などを、
徹底的に行うことができます。

その結果。
C#を使えば、
言語の文法、ライブラリ、IDEサポート、インストーラまで、
すべてにおいてよく考えられ、コストをいとわず作りこまれた環境で、
作業をすることができます。

言語の文法は野心的な機能も含め、ユーザビリティのよいものが揃えられています。
また、たとえばジェネリックの実相の時も、Javaなんかはライブラリの変更コストを考えて折衷案が採用されたようですが、C#はライブラリを作りなおしました。
IDEのサポートはきめ細かで、、かつたいていの環境ではワンクリックでインストールできます。

その一つ一つの要素においては、C#より良い面を持つ言語は、
世の中にはたくさんあるでしょう。
が、全体的に最も効率よく作業できる環境を一つ選ぶなら、
それはC#になると思います。
世のブログなんかを見ていると、
Windows8はタブレット用なので、
デスクトップでは使いにくい、と書いてあるものが結構あるのですが。

本当に使ったうえで言っているのでしょうか。
デマだと思うんですが。

たしかに、タブレットでは使いやすくなっています。
が、デスクトップで使いにくくなっているかというと、それは別の話。

基本的には、スタートメニューが一画面全体に表示されるようになった、
というだけですよ。
ボタンは大きくなってタブレットで押しやすくなりましたが、
大きなボタンがマウスで押しにくいかというとそういうわけでもないです。

少なくとも、数時間使って慣れれば、十分に使いやすいと思います。

デスクトップモードアプリとメトロモードアプリの切り替えはちょっと面倒ですかね。
まあその辺は今まで通りの作業をするならデスクトップアプリだけで済むのであまり関係ない話です。

あと、画面の隅っこを触って何かするという動きが増えました。
これは、やってみないとわからないので、その分知らずに困る人は増えるかもしれませんが。
一度やってみればわかる話です。

今までのパソコンにいれるのはおすすめではない、
というのはデマだと思うのですがね。
それが売れ行きに響かねばいいのですが。

Windows8専用アプリは作り方が違うので、
ある程度普及してもらわないと困るんですけどね。
Ruby版の開発を進めていますが、
最近今一つ時間が取れないので、
会社の昼休みも使って進めています。

会社のお昼休みは、Railsを勉強しようかとも思っていましたが、
ある程度以上進捗がないとだんだん続かなくなっていくものですし。
ここはまとめて進めたほうがいいかと思いつつ。

とりあえず、最低限の機能を実装した後でいろいろ問題点を直していますね。

この調子でいくと、Rubyの勉強には今年いっぱいくらいかかりますかねえ。
C#を放り出してやっているわけなので、早めに終わらせたいものですが。

Rubyにはメタプログラミングという技法がありますが。
それについて解説した本です。

いや、メタプログラミングはJavaとかC#でもできるんですけどね。
ただ、かなり限定された特殊な用途でしか使えません。

しかし、Rubyではそれが、ごく普通のプログラム要素として使えるようになっています。
初心者でも簡単に、というわけではないですけどね。

これによってRubyは、
書きやすいライブラリを作ることや、重複の排除が、
一段上のレベルで可能となっています。

これを最大限に取り入れたライブラリとして、
Ruby on Railsなどが有名ですね。
これによってRubyは、ある意味言語の進化を先導しています。

まあそれと引き換えにしてしまったものもありますけどね。
処理速度とか。

この本は、そのメタプログラミングの技法を、
丁寧に説明した本です。

メタプログラミングを扱うには、
Rubyの文法をかなり根源的な部分まで理解しないといけないので、
簡単というわけではありませんが。

理解すれば普通のプログラムとなります。
本文で挙げられている通り、
「メタプログラミングというものなど存在しない。すべてはただのプログラミング」ですね。

原書はかなりフランクでわかりやすい文章だったのだろうと思いますが。
翻訳もかなりいいと思いますね。
「恐ろしい子!」なんていう訳を見た時にはどうしようかと思いましたが。

Rubyを初級以上に使いこなしたいなら、
必ず読んでおかねばならない本ですね。

めでたいですね。

会社がどうしても受けろといってきたので、
勉強せずに受けてみましたが。
合格しました。

基本的に、この辺の公的資格は、
範囲が広いため、受験勉強がどうしても受験にしか役に立たないものになりがちがなこと、
また、私個人としてプレッシャーに弱い性質があるため、勉強にかかるストレスがかなりかかること、
の二つから、
勉強の労力に対する効果がきわめて低いと思われるため、
逃げていましたが。

勉強せずに受かるなら、受けておけばよかったですね。
受けない理由の二つとも、受験勉強をしなければ関係ないですから。

しかもぎりぎりではなく、
午前75点、午後82点。
午前は合格者中の上位で、
午後は合格者中の上位10%には入っています。

特に試験に特化した受験勉強をせずに受かったということは、
これまで勉強してきた成果が素直に出たと期待できるので。
これは誇っておいてもよさそうですね。
勉強してきたかいがあったというものです。

最近、GitHub for Windowsが出ましたが、
最初は日本語対応済みのGitを使っているにもかかわらず、
日本語ファイルがあるとcommit、push、pullがエラーを出していました。

そのため、その辺はGitを直に使う必要があったのですが。
今試した見たところ、さっそく対応されているようです。
よかったですね。

まあ最初使えなかったおかげで、
ちょっとはCUIでたたく練習もできましたし、
それはそれでよかったですけどね。

普段使いするならGUIのほうがいいです。