全15種類のプログラミング言語でHello, worldを実行したらこうなった

 

こんにちは!

 

プログラミングが三度の飯より好きだけど、週末に趣味のプログラミングしてても、飯はちゃんと1日三食食べる、しずかなかずしです。

 

突然ですが、私は仕事でソフト開発の現場におります。しかし、周りで聞いてみても、意外と自宅でデスクトップパソコンを使っている人は少ないようです。まして、職場ではよく見かける、LinuxのOS、Ubuntuを自宅のパソコンでも使っているよ、という人は稀有な存在です。

みなさん、仕事とプライベートはきっちり分けている、ワーク・ライフ・バランスがしっかりした人ばかり、ということですね。

 

さて、その自宅のUbuntuパソコンは3年くらい前から使い始めたのですが、古いディレクトリの中を色々と調べていたところ、ブログをはじめたころに、ブログのネタのつもりで作っていた、おもしろ動画を発見

ちょっと古い動画なのですが、まだどこにも公開していなかったので、本日は、一挙公開します。

 

プログラミング言語の最初はなぜかHello, world

プログラミング言語を習いたての時に、まずは「Hello, world!」を表示してみましょう、という課題に取り込む経験はありませんか?

 

私が最初に学んだプログラミング言語は、確か「BASIC」言語だったかと思いますが、その頃にHello, world!を表示した記憶がありません。しかし、最近のプログラミング言語の初心者の学習は、きっとHello, world!から始めるのではないでしょうか?

 

なぜその文化が現れたのか。

一説には、「C言語」解説書で有名なカーニハン・リッチーの「プログラミング言語C」という人もいます。

 

created by Rinker
¥3,080 (2020/08/09 00:28:40時点 Amazon調べ-詳細)

 

だとすると、私が大学時代にこの本に巡り合うまで、少なくともプログラムでHello, world!を記述することはなかったでしよう。子供の頃にBASIC言語でhello, worldをやったことがなかったのは間違いありませんね。

 

2020年現在では、初めてのプログラミングといえば、Hello, world!

今や、一般常識といえるでしょう。

 

Hello, worldを実行するプログラム

ご存知のように、プログラミングと一言で言っても、世の中にはさまざまなプログラミング言語が存在します。さながら、英語や日本語、中国語といった日常生活で使う自然言語のようでもあります。

「Hello」と「こんにちは」と「你好」とあいさつの仕方が異なる自然言語とは違って、プログラミング言語の場合は、Hello, worldはいつもHello, world。しかし、あいさつ文「hello, world!」という全く同じ表示をするプログラムでも、プログラムは言語毎に全く異なるのです。

つまり、あるプログラミング言語で文字列を表示させるのに「print文」を使うが、他の言語では「echo文」を使う、といった具合です。

 

例えば、Perlという言語をつかった以下の文章

と、bashというシェルのシェルスクリプトの以下の文章

 

 

そして、C言語になると、もっと全然違った文章(プログラム)を記述する必要があります。

 

 

しかし、これらの全く異なる文章に対する出力結果は、どの言語も1行で「hello, world!」が表示されます。そして、驚くことに、それらのプログラムの出力は一字一句違いがないのです!

これがプログラミング言語の面白いところ(と、私は勝手に思っています)なのです。

 

全15言語でhello,worldを表示する動画

ならば、そこらへんのめぼしいプログラミング言語の数々を使って、hello, world!を画面に表示させるとどうなるか??

 

ということで作ってみたのが、こちらの動画です。

 

この動画は、

  1. Linuxの’cat’コマンドを実行してプログラムを表示
  2. コンパイルが必要な場合はコンパイラーを実行
  3. プログラムを実行→hello, world!が表示

というサイクルを全15言語で繰り返す行うものです。

‘cat’とはファイルの中身を表示する有名なコマンドですが、これを使ってまずは、プログラムのソースコードを表示します。3で実行する前に、コンパイル言語の場合は、2を実行しています。

コンパイルとは、プログラムのソースコードから実行形式のコード(ファイル)を生成する事。コンパイラーは実行形式のファイル生成を行うためのプログラムのことです。

 

プログラムや実行手順は全く異なるのに、出力は(最後のおかしなのを除き…)全て一字一句違わぬ「hello, world!」。

 

このシュールな感じを是非お楽しみ下さい!

 

解説:プログラミング言語

動画に登場するプログラムは、Githubで公開中です。

実行しているのは、Ubuntu (18.04 LTS版) です。

 

動画で実行したプログラムの順番で、プログラミング言語の解説を加えていきます。

 

Python

hello_world.pyの拡張子でプログラムを記載しました。

Pythonはインタープリター言語なので、そのまま実行できます。

 

 

Javascript (nodejs)

hello_world.jsでプログラムを記載しました。

Javascriptはブラウザで動作するプログラミング言語として有名ですが、ここでは、サーバーサイドで用いられるnodejsを使っています。

 

 

PHP

hello_world.phpでプログラムを記載しました。

PHPはブログでお馴染みWordPressのプログラムの記述に使われるサーバサイドのプログラミング言語として有名です。インタープリター言語なので、PHPのプログラムでそのまま実行できます。

 

 

Ruby

hello_world.rbでプログラムを記載しました。

Rubyもサーバサイドのプログラミング言語として有名です。インタープリター言語なので、Rubyのプログラムでそのまま実行できます。

 

 

Perl

hello_world.plでプログラムを記載しました。

かつては、大いに流行ったスクリプト言語ですが、最近はあまり聞かなくなった気がします。インタープリター言語なので、Perlのプログラムでそのまま実行できます。

 

 

Swift

hello_world.swiftでプログラムを記載しました。

Swiftは、Appleが開発したプログラミング言語で、iOSやMacで動作するプログラムを記載する為に開発されたようですが、オープンソースの言語のため、私のUbuntuでも実行することができました。

「コンパイラ」もあるようですが、そのまま実行できます。

 

ちなみに、「コンパイル言語」とはプログラムを実行するために、一旦「コンパイラ」と呼ばれるプログラムで、実行コードに変更した上で、実行専用のオブジェクトファイルを生成してから実行するような言語のことです。

 

 

Bash Shell

hello_world.shでプログラムを記載しました。

‘bash’というのは、linuxなどの「ターミナル」アプリのコマンドラインの処理を実行しているプログラム(「シェル」と呼ばれる)です。

コマンドラインの羅列をファイルに記載することで、hello_world.shのようなプログラミング言語のように実行することができます。こういった形のファイルを「シェル・スクリプト」と呼んだりしますね。

一種のインタープリター言語なので、そのまま実行できます。

 

 

R言語

hello_world.Rでプログラムを記載しました。

R言語は統計とかデータ解析に使用されるプログラミング言語です。仕事では全く使ったことがない得体の知れない(失礼)言語です。数年前に新人で入ってきた新人類が操っていて、そんなものあるのだ、と初めて知った言語でした。インタープリター言語なので、そのまま実行できます。

 

 

 

C言語

hello_world.cでプログラムを記述しました。

泣く子もだまる「C言語」はコンパイラ言語の代表格ですね。私が仕事でプログラミングを始めた当初は、Cやこの後に登場するC++の全盛期でした。

最近のプログラミング言語では考えられないかも知れませんが、プログラムが使用するメモリーを自分で明示的に割り当てて、自分で開放する必要があります。その為、メモリー開放漏れ(メモリー・リーク)としょっちゅう戦うことになります。

コンパイラ言語なので、一旦、コンパイルして、デフォルトで出力される実行形式のファイル「a.out」を実行しています。

 

 

C++

hello_world.cppでプログラムを記述しました。

C++(シー・プラスプラス)はC言語を「オブジェクト指向言語」に拡張したものです。誤解を恐れずに、簡単に言ってしまうと「クラス」が使えるC言語です。(怒られそうな表現…)

色々手間がかかる言語仕様ですね。C言語同様、コンパイラで実行形式に変換する必要があります。しかも、hello, worldを出力するライブラリが必要になるので、gccというコンパイラで実行形式を出力する際に「-lstdc++」のように、C++の「標準ライブラリ」なるものをリンクする必要があるのです…(めんどくさい)

 

 

 

Go言語

hello_world.goでプログラムを記述しました。

Go言語は、C言語を「安全」にしたようなプログラミング言語です。「安全」というのは、C言語で開設したように、プログラマー任せに自由になっている部分をバグを産まないように安全側に倒れた言語仕様という意味です。

コンパイラ言語ですが、コンパイラプログラム自体がプログラマーに「やさしい」ので、実行形式のファイルを生成することなく「go run hello_world.go」のようにソースコードをいきなり実行できます。

 

 

Java

hello_world.javaでプログラムを記述しました。

Javaは古い言語です。スマートフォンのAndroid OSでアプリケーションを記載する時に使われるので、産まれは古いですが現役のプログラミング言語と言えます。

コンパイラ言語ですが、C言語と異なり、実行形式は、CPUやコンピュターのアーキテクチャによらず、どんなOSでも実行可能というのが登場当時のウリでした。ただし、実行のためにはVM(Virtual Machine)というプログラムが必要です。実行形式のファイル生成するのがコンパイラ(“javac”というプログラム)で、生成されたファイルを読み込んで実行するのがVM(“java”というプログラム)という関係になっています。

 

 

C#

hello_world.csでプログラムを記述しました。

C#(シー・シャープ)は、元々はマイクロソフトがWindows OS用に開発したプログラミング言語でした。Java風の言語仕様でJavaをやっていれば言語仕様自体は理解しやすいかも知れません。

.NETとよばれる実行環境(JavaでいうところのVM)が必要で、Windows updateなどでちょくちょく見かける方も多いかも知れません。言語仕様自体はオープンなので、Ubuntuで実行可能な、monoと呼ばれるマルチプラットフォームのVMで実行しました。

 

 

Visual Basic

hello_world.vbというプログラムで記述しました。

Visual BasicもC#同様マイクロソフトが開発したプログラミング言語です。当初のVisual Basicは 2000年初期に.NETがリリースされる以前は独自の言語仕様と実行環境がWindows向けに存在していました。

.NET以降は、C#とVisual Basicはプログラミング言語としては別物なのですが、コンパイルした結果の実行形式のファイルが共通になりました。つまり、別々のプログラミング言語から生成される実行ファイルが、同じVM(.NET framework)で実行可能となります。

したがって、上記の動画でも、コンパイルした後の.exeはC#もVisual Basicも同じ、monoという実行プログラムを使って実行しています。

 

 

HTML

hello_world.htmlで記述しました。

HTMLは、上記で扱っているような他のプログラミング言語とは違って、厳密にはプログラミング言語ではありません。文書を記載するための記述言語です。

が、ちょっと毛色の違ったものを最後に加えてみました。

 

 

最後に

あ…Androidの開発で使われるKotlinを入れるべきでした…

created by Rinker
¥1,881 (2020/08/09 03:29:11時点 Amazon調べ-詳細)
created by Rinker
¥1,711 (2020/08/09 04:07:33時点 Amazon調べ-詳細)
あなたへのおすすめ

仕事では、メーカーで20年以上のソフトウエア開発。 古くはWindows向けのアプリケーション開発、組み込み機器のソフト開発、などを経て、近年は大規模ソフトのプロジェクト・リーディングを行う。 根っからのプログラミング好きで、週末は、JavascriptやPythonでWeb開発。興味の幅が広く、以前は、仕事の傍らオンラインでBond大学のMBAを取得。 ブログに書くのは、料理、スポーツ、テクノロジー、建築、不動産、音楽、など色々なジャンルの雑記。
投稿を作成しました 343

コメントを残す

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。