スクリプト言語 Pythonを使うか Rubyを使うか

お久しぶりです、じーこです。

今日は、プログラミング言語界で大きく派閥ができるPythonとRubyの2つの言語について触れようと思います。

スクリプト言語とは

Wikipediaたんによると

スクリプト言語(スクリプトげんご、英語: scripting language)とは、アプリケーションソフトウェアを作成するための簡易的なプログラミング言語の一種を指す。(Wikipedia スクリプト言語 より)

らしいです。

まぁ、例の通りわからんよね。

ってことでプログラムの動く仕組みから簡単に説明します。

一般的なプログラムの動き方

実は、っていうか当たり前だけどプログラミングしたコードがそのまま動いているわけではありません。

まぁ、そうだよね(笑)

それもそう。コンピューターは電気信号を使って動いています。

プログラム書いててもこのように信号だせーとか書いてないよねwww

ほんでもってその命令をしたいなら、プロセッサーに命令を送ればいい。

プロセッサーに命令を送るには機械語で喋らないといけません…

Can you speak machine language?

Noだよね!!

そのために、それをもっと人間にわかるような記号にしたのがアセンブラ。

アセンブラとかなら学校で勉強した人もいるはず。

ただ、そのアセンブラも問題点があります。

それは、人間にわかりやすいような記号で書いているとはいえ、人間の思考のレイヤーまではいってません。

じゃあどうするか?

人間の思考を直接的に表現できる言語にしたらいいのです!!

それがC言語だったり場合によっては(これは少しむずい区分だが)Javaな訳です。

ということで、人間にもわかりやすくしたのが普通のプログラミング言語ですが、このままでは動きません…

そう、これを最終的には機械語にしないといけないわけです。

プログラミング言語を機械語まで落とし込むツールが必要です。

これをコンパイラーといいます。そして、コンパイラーを使って機械語にすることをコンパイルと言います。

ここで整理しましょう。

プログラムを実行するには

  1. Cなどのプログラミング言語でコードを書く
  2. それを各言語ごとにコンパイラーにかける
  3. 実行ファイルが生成されるのでそれを実行する

という手順がいります。

スクリプト言語では…

ここで、さっきのプログラミング言語の考え方とは別のものが出てきます。

そう、スクリプト言語です!!

このスクリプト言語、実は、コンパイルが不要です!!

プログラムを書いたら即時実行可能です。

そして何より、より一層人間の思考に近いレイヤーでの開発ができます!!

ただ、これを聞いて疑問に思う方がいるでしょう…

どうやって動かしているのか、と。

この問いに簡単に答えます。

単純化すると、

コンピューター内に、スクリプト言語を理解できるプログラムを置いておき、そいつに読み込ませる

という方式なのです。

要は、すごい優秀な人間がコンピューター内にいて、そいつがあなたの書いたプログラムを逐一読んで実行してくれる、

と考えてください。

もちろん、コンパイルすることもできますが、パッと書いてパッと試す、という意味ではちょっと合わないでしょう。

PythonやRuby以前は…

このスクリプト言語界隈には昔(今でも使われてるけど…)、とても力のある言語がありました。

そう、

Perl

です。ケフィアじゃないです。

こいつがスクリプト言語として幅を利かせていました。

Unix周りで結構活躍していたのです。また、昔のWebプログラミングでは、

Perl + CGI

という組みわわせでも使われていました。

もちろん、当時はとても力がありました。

ただ、巨大化してしまったが故の難点もあります。

それは、

他人のPerlは読めないことがある

ということです。

実際、僕があったことのある人の中には

自分はガチのPerlエンジニアだった。短縮記法までマスターしてたし。昔、新人でPerlできまーすっていう人にコード見せたら解読不能だった

と言ってました…

Perlの良し悪しではなく、このようになってしまうことでメンテとか危ないですね…

他人の書いたPerlはメンテしたくないとかよく聞きます。

未だにその傷跡が残っていて、Perl自体のアップデートはとても遅くなってしまってます。

そこで…

このスクリプト言語を書きやすくしようと二人の男が立ち上がります。

一人はグイド・フォン・ロッサム。オランダ人のエンジニアでした。

彼が作り出した言語はPython。

インデントなどでの構造化など、シンプルであることにこだわり抜かれています。

もう一人はまつもとゆきひろ。生粋の日本男児です。

彼が作り出したのはRuby

楽しくかける、といったことにこだわって作られており、文字列操作に強みがあります。

各言語の特徴

Python

  1. オールラウンドな言語。Webから画像処理、機械学習まで、やりたいことは基本的にできる。
  2. スクリプト言語なので遅いが、Numpyなどの計算系ライブラリの内部はCで実装されている。
  3. Googleが社内の公式言語に入れている。
  4. 未だに2系vs3系の戦争が続いている

Ruby

  1. Pythonと比べると、スクリプト言語としての役割を中心としている。
  2. Web系だとRuby on RailsやSinatraなど、強力なライブラリがたくさんある。
  3. Made in Japan
  4. 短縮記法も多くあり、なおかつわかりやすい

どっちを使うべきか?

こればかりは個人の趣味にもよります。

ここで基準にするのは、

Webを主軸とするか?

です。

Webがメインになるのであれば、Rubyをお勧めいたします!!

だって、MVCモデルの元祖Ruby on Railsがあるし。

ただ、何作るか迷っている人にはPythonをお勧めします!!

例えば、ちょこっと触ってから画像処理やろうかなーっていっても簡単にできるし、

機械学習流行ってるなーってなったらそれも簡単にできるし

Webだってできます。

ですが、どちらか学んでからでももう片方も勉強できるので、心配しなくて大丈夫です。

最後に

僕自身はPythonからでした。Rubyは最近になってRailsとかで触ってます。

どちらにもそれぞれ良さがあります。

まぁ両方触ってみてからそれぞれ場合によって使い分けてください…

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL