Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

専攻は情報学科のようですが。

他、元宣教師という変わった経歴もあり、Rubyの発展に影響を与えているのかもしれません。自分が普通だと思っている人は、なかなか多様性の大切さがわからなかったりもしますしね。

最近は禁句らしいですが。

驚き最小の原則

Rubyは黒魔術を得意とする言語です。

家電製品を例に考えてみましょう

Rubyが普及してきて、疑似コードの代わりにRubyを使う例が増えています。

もう説明のための仮の文法とかいりません。Rubyで十分ということです。

それだけ読みやすいと言われています。

Rubyはどうしたか

  • 本質的に読みやすい
  • 多くの機能を組み合わせるのが難しい
  • コンパイラなどによるパフォーマンスの最適化がやりやすい

わかりやすくするために日本語使っていますが気にしないよう

しかしそれは、Rubyでプログラムを書くためではありません。

Rubyの特徴の一部は未来のプログラム言語が向かう方向を示しています。

私は今、Rubyを学んでいます。

はじめに

プログラムを書くことよりも、読むことのほうが圧倒的に多いです。

書き直す前には必ずその周辺のコードは読み直さなくてはなりませんし。

メリット

SQL

その特徴ついて、解説していきます。

FORTRAN

Rubyを学ぶことによってRuby以外の言語を含むプログラムのスキルが上がるでしょう。

書く<<読む

宣言型

プログラミング

言語

命令型

プログラミング

言語

Lisp

Scala

デメリット

Java

Haskell

基本的な言語要素である関数宣言とループ構文を組み合わせることすら難しい。

Rubyは、書くときに考えることを増やすことにより、読むときに非常に読みやすくなる工夫が多く含まれています

宣言型プログラミング

見た目は宣言型なのでOK

だからループと組み合わせることもできます。

宣言に見えますが、実際には関数を作るという命令を順次実行しているだけです。

実際は手続型なのでOK

これは難しい

インタプリタの実装者が頑張れば、ある程度は何とか。

動く疑似コード

実際には徹底して命令型

そのうえで、見た目を宣言型にした。

Rubyを作った人です。

読みやすい文法

メジャー言語設計者としてはたぶん、史上最も文系な人です。

数学が苦手

これは、変数が初期化されていない時にのみ初期化する構文です。

なぜ

Rubyを

学ぶか

これ以上ないというくらい仕様を端的に宣言しています。

まつもとゆきひろ

別にいいんです。falseの可能性があるときはifで分岐すれば。この辺の感覚が自然言語に似ていますね。日本語などの文法は、論理的にすべての場合に正しくなることが保証されているわけではありません。しかし、話す人がわかりやすくなるように常に気を付けていれば、聞く人に解りやすいように話すことが可能です。

しかしこれは、値がfalseの可能性がある場合に破たんします。言語設計者の多くは、この段階であきらめると思います。論理的にあらゆる場合に適用できる構文ではないと使えないと。

この辺の文系感覚が、Rubyを読みやすくしているのだと思います。

+=と同じように||に=をくっつけた構文です。||は値がnilもしくはfalseの時はもう片方の値を返すので、初期化されずにnilが入っている場合のみ代入されます。

変数が初期化されていなければ代入を行い、すでに値が入っていれば何もしません。

ただ、人間にそう見えるというだけで、Rubyは別の解釈をしています。

Rubyでは、return文を書かないと、最後の値が戻り値として返されます。これを利用すると、非常に宣言的なメソッドを書くことができます。

論理的美しさより、文章としてのわかりやすさを重視した言語ができました。

インタビュア

String の連結は、左右が可換ではないのだから + ではなくて * だろうという話はいまさらだよねということでそのままなのを残念に思っていたりします。

元宣教師

slashdotインタビュー

まつもと

「Stringの連結が * であるべきだ」という主張は私には理解できていませんし、そうするつもりもありません。

これが理解できないとまで言うのは、メジャーな言語開発者としては初めてでしょう。

プログラマーには自由が与えられます。

Ruby のやり方に十分に慣れた人が持つ常識が一貫して通用する

仕事で使わされる言語として使いづらい面もありますが

最近の家電製品やコンピュータもそうですが分解ができないような仕組みになっています。多くの人が使わせるには、圧倒的にそのほうが便利です。

みんなで工夫すればどんどんよくなっていくオープンソースの言語としては、発展性があります。

しかし、昔の家電は中を空けていじれたそうです。このほうが、優秀な技術者は育ちやすい環境でしょう。

管理はしにくいですが、技術者も、言語そのものも、成長していきやすい環境ができます。

多様性は善

yugui

冗談交じりとはいえ、こう豪語するくらい自然なAPIができていますね。

それは、コレクションがあってシャッフルしたいと思ったら、shuffleと書いて、それで動かなきゃいけないんですよ。

@ITの記事

管理

Java

まつもと

Python

あっはっは。シャッフルできるはずだと。できなければRubyのバグだと。

C#

C++

Ruby

自由

Lisp

Learn more about creating dynamic, engaging presentations with Prezi