プログラミングと Ruby について少し

晴。暑い。
昨晩は AtCoder の過去問で夜更し。

午前中、AtCoder の過去問。


午後も AtCoder だが、まあいい加減にしておく。

老母が長いこと入院していたときもプログラミングには慰められたが、いまも似たようなものかも知れない。さて、プログラミングの「リアル」とは何だろうかと何となく考えている。まあわたしがそのような「リアル」に触れているというわけではないが、例えば Ruby のまつもとさんなんかは何かに触れている感じがするな。いまプログラミングは、素朴だがもっとも創造的だった時代を過ぎて、爆発的な普及時代に入ったとわたしは考えている。もちろん創造的でなくなったわけではないが、とにかく若いプログラマが大量に入ってきて、技術レヴェルの底上げが甚だしい。教える技術も整理されてきて、若い人たちはじつに効率よく、むずかしいことを瞬く間に吸収していく。わたしがプログラミングを始めたのはたぶん2014年、いまから 6年前であるが、その頃は結構年季を積んだオールド・プログラマにも、「オブジェクト指向プログラミング(OOP)がわからない」という(素直な)発言をされる方がいたなど、いまとは隔世の感がある。いや、大規模な OOP はいまでもやさしいものではなくて、といっているわたしも独学の素人であるから、大規模な OOP をやったことなどないのであるが、そんなレヴェルでなくて、とにかく、クラス、インスタンス、メソッド、継承、カプセル化ポリモーフィズム、移譲、デザインパターン等々、そうしたことの意味がわからないとかいったものだ。それまでは、OOP を知らなくても、仕事に差し支えがなかった、そんなのんびりした時代があったのである。

いまはプログラミングで爆発的にホットなのは、インターネット関連の仕事と、機械学習である。インターネット関連の仕事といってもいろいろだが、まあホームページ、ウェブサイトを作るサービスとしておくと、わたしの好きなプログラミング言語である Ruby は、そのお陰で世界中で広く使われるようになった。まつもとゆきひろ(Matz)さんの作った、純粋オブジェクト指向言語で、いわゆるスクリプト言語の一種である。プログラミングの世界で日本発のメジャーな存在というと、この Ruby しかないといって、まあよいだろう。Ruby機械学習の分野では圧倒的に Python (これもまたスクリプト言語である)の後塵を拝していて、まるで存在感がない。いずれにせよ、わたしは素人おじさんの遊びで Ruby をやっているので、あんまりそんな興亡には関係ないといいたいところだが、いや、自分の好きな言語が人気である・ないというのは、結構気になるものだというのが本音である。

思えば Ruby は、よき時代の最後の言語といえるのかも知れない。いまでも新しい言語が誕生し続けているが、メジャーになってきているのは Google (Go言語)、Apple (Swift)、MicrosoftC#) など、大会社の開発した言語が多く、それらは広大なプラットフォームをもっているので、必然的に使われることになる。あとは、ブラウザ上で使われる JavaScript。それから、昔からある C, C++, Java などもメジャーだ。いまはたくさんの人がプログラミングを仕事にするようになったので、必然的に「安全に使える言語」が好まれるようになってきている。Ruby は、自由度が極めて高く、どちらかといえばそれに逆らっている言語だ(笑)。

個人的な話だが、何でわたしは Ruby が好きなのだろうなと時々考える。Ruby は、様々な書き方のできる言語だ。基本的には純粋オブジェクト指向言語だが、関数型プログラミングパラダイムも流れ込んでいるし、メタプログラミングも可能だ。クロージャである第一級関数をもち、有名になった「ブロック」という、Ruby 独特の記法でそれを書くことができる。Ruby の記述性の高さは、この「ブロック」に拠るところが大きい。そして、「動的言語」といわれる、可塑性の高さをもつ。この自由度の高さゆえ、すべてを破壊してしまうことも容易い。これを Ruby では、「大いなる力には大いなる責任が伴う」という。それを使いこなしたときの「快感」は大したもので、結局この「気持ちのよさ」が Ruby らしさともいえるかも知れない。だから、逆に「Ruby キモい」という人も出てくるのである。楽しさを追求する言語、Ruby

わたしは、偶然にもよき時代の終わり頃にプログラミングを始めたのだった。

あああ、長文を書いてしまった。失礼。

夕方、散歩。




歩くと暑くなってきた。

夜、AtCoder のコンテスト(ABC165)に初めて参加してみた。使用言語はもちろん Ruby。始めたのは開始から30分ほど経ってからで、A, B, C の 3完だった。なかなかむずかしいね。