CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさん、こんにちは。
Rubyistの皆さんは当然ながら、日々、Rubyを使われていることかと思います。別に、ほかの言語のことなんて気にならないよ、という方も多いかもしれませんが、でもやっぱりRubyをウォッチしていると、どうしても気になってしまうのが、Pythonではないでしょうか?
PythonはRubyと同じく、スクリプト言語であり、オブジェクト指向言語であり、オープンソースでもあります。Ruby言語自体の歴史は20年以上と意外と古いのですが、Rubyが全世界的にブームとなったのは2005年にバージョン1がリリースされたRuby on Railsという、当時ホットなアーキテクチャだったサーバサイドのWebアプリケーションの生産性を劇的に向上するフレームワークがきっかけでした。それを契機として、その後の新しい技術の流れを次々に取り込んでメジャーになっていったわけですが、Pythonもやはり同じく昨今のAIブームに乗って、一気に注目を浴びる言語となりました。最新の技術やアーキテクチャにフィットしてスターダムにのし上がるというストーリーに親和性を感じる人も多いのではないでしょうか?
ということで、ちょっと前置きが長かったですが、似ているようで似ていない?RubyとPythonの文法や環境をいくつか比較してみたいと思います。いちおう、Rubyistから見た視点になっていますので、「〇〇はPythonのほうがそもそも先なんだけど」みたいなことがありましたらどうかご容赦ください。
1. 似ている?対話型実行の仕組み
Rubyを使うときに、便利だなあと私が思うツールに、「irb」があります。Rubyのソースコードを普通に実行する際は、「ruby」コマンドでインタプリタを起動しますが、irbを使うと、きちっとしたプログラムを書いて保存しなくても、簡単に文法の確認を行ったりできるので、大変便利です。
実は、Pythonにも、同じような対話式のツールがあります。ただし、Rubyのようにインタプリタと別のコマンドになっているのではなく、インタプリタを起動する「python」コマンドで、引数を省略すると対話モードが起動するようになっています。
2. 似ていない!ブロックの記述方法
Rubyでは、ブロックの記法といえば「do~end」か「{ ~ }」を利用しますよね。つまりRubyのプログラムではブロックの終わりがどこかを知るには「end」か、「}」を探せばよいわけです。
実は、Pythonには、ブロックの終了を表すキーワードや記号がありません。何か区別できる表記がないと、どこがブロックの終わりかわからないではないか?とRubyistの常識では思うわけですが・・・Pythonでは、なんと「インデント」によってブロックを表現するのです!
つまり、あるブロックの中のコードは、必ずインデントが1段下がり、ブロックが終了した後のコードは、必ずインデントが1段戻るように記述することで、インデントが戻る前までのコードがブロックに含まれるという見方になるのです。
age = 16 if age>=18: print("選挙権を有します") print("選挙に行きましょう") else: print("選挙権がありません") print("あと{0}年待ちましょう".format(18-age))
3. 似ていない!真偽値
Rubyの真偽値は、falseとnil以外は全て真とみなすというのは皆さんご存知の通りかと思います。シンプルで分かりやすいルールですが、Pythonについてはどうでしょうか?
Pythonの真偽値とRubyの真偽値を比較した表がこちらになります。
Rubyの真偽値
内容 | 代表的な値 | Rubyで真偽値とみなされる値 |
---|---|---|
真 | true | 偽でない値全て |
偽 | false | falseまたはnil |
Pythonの真偽値
内容 | 代表的な値 | Pythonで真偽値とみなされる値 |
---|---|---|
真 | true | 0以外の数値 空でない文字列 要素を持つシーケンスやディクショナリ |
偽 | false | 数値の0 空文字列("") 空のシーケンス([])や空のディクショナリ({}) |
RubyとPythonに限りませんが、同じ真偽値といっても、言語によってその取扱いはかなり特徴があります。それぞれの言語のポリシーのようなものが、垣間見える部分なのかもしれないですね。
ということで、今回はRuby自体の話からは少し逸脱しましたが、いかがでしたでしょうか。次回もどうぞお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes