
Hello Worldと表示するコードを書いて
昔(1985年)のパソコン雑誌を引っ張り出して特集を読み返していたら、黎明期の百花繚乱の無限の可能性の息遣いが聞こえてきそうな気がしました。
そこで、
今話題のChatGPTに、新旧様々なプログラミング言語において、"Hello World"と表示するコードを書いてもらうようにお願いしてみました。
親切な解説付きで、其々の言語の雰囲気がわかるような気がします。
(コードの正確性については、保証できませんので悪しからず。)
言語によって、説明の深さが違う気がするのは気のせいですかね?
C言語で、Hello Worldと表示するコードを書いて
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
このコードでは、printf関数を使用して文字列を出力します。printf関数は、フォーマット文字列と呼ばれる文字列を引数として取り、そのフォーマット文字列に応じた出力をします。上記のコードでは、文字列 "Hello World!" を引用符で囲んでフォーマット文字列の中に埋め込んでいます。
また、main関数は、C言語でプログラムを実行する際に最初に呼ばれる関数であり、return文を使ってプログラムの終了ステータスを返します。上記のコードでは、main関数が 0 を返しているため、プログラムの終了ステータスが 0 になります。
改行コード(\n)が抜けているのが気になります。
C++言語で、Hello Worldと表示するコードを書いて
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
return 0;
}
このコードは、iostreamライブラリを使用して、文字列 "Hello World!" を標準出力に表示しています。main関数は、プログラムのエントリーポイントであり、return文によってプログラムを正常に終了しています。
C++は、C言語を拡張したオブジェクト指向プログラミング言語であり、C言語との互換性が高いため、C言語と同様に広く使用されています。C++は、高度な抽象化、ポリモーフィズム、データカプセル化などの特徴を持つ言語であり、ゲーム開発、組み込みシステム、デスクトップアプリケーションなど、多くの分野で使用されています。
はいはい、なんかこんな感じでしたね。
(個人的に、過去の苦い経験から苦手意識が先行してしまう)
Swift言語で、Hello Worldと表示するコードを書いて
print("Hello, World!")
このコードでは、print関数を使って文字列を出力します。print関数は、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello, World!" を引数として渡しています。
あれ?関数の説明だけだと簡単だけど、この関数を呼ぶためにもっとたくさん記述がいるような気がします。
Objective-C言語で、Hello Worldと表示するコードを書いて
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hello World!");
}
return 0;
}
このコードでは、NSLog関数を使用して文字列を出力します。NSLog関数は、フォーマット文字列と呼ばれる文字列を引数として取り、そのフォーマット文字列に応じた出力をします。上記のコードでは、文字列 "Hello World!" を引用符で囲んでフォーマット文字列の中に埋め込んでいます。
また、Objective-Cのプログラムで最初に実行される関数は、main関数であり、C言語と同様にint型を返します。上記のコードでは、main関数が 0 を返しているため、プログラムの終了ステータスが 0 になります。また、@autoreleasepoolブロックは、Objective-Cにおけるメモリ管理を行うための特別な構文です。
この言語は未体験。同じApple製でもSwiftと比べて随分と違うんですね。
C言語の雰囲気が漂っています。
C#言語で、Hello Worldと表示するコードを書いて
using System;
class HelloWorld {
static void Main() {
Console.WriteLine("Hello World!");
}
}
このコードでは、Console.WriteLineメソッドを使用して文字列を出力します。Console.WriteLineメソッドは、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello World!" を引用符で囲んでメソッドの引数に渡しています。
また、C#のプログラムで最初に実行される関数は、Mainメソッドであり、static修飾子を付けて定義されます。また、usingディレクティブを使用して、System名前空間をインポートしています。
この言語も未体験。classの定義から始まるんですね。
以上、C言語ルーツの諸言語ですが、随分と違うものです。
RUBY言語で、Hello Worldと表示するコードを書いて
puts "Hello World!"
このコードでは、putsメソッドを使用して文字列を出力します。putsメソッドは、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello World!" をダブルクォーテーションで囲んでputsメソッドの引数に渡しています。
また、Rubyは、簡潔で読みやすい構文を持つ動的型付け言語であり、Webアプリケーションの開発に広く使われています。
この言語も未経験。ChatGPTさん、メソッドの説明だけですか?
Java言語で、Hello Worldと表示するコードを書いて
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
このコードは、HelloWorldというクラスを定義し、その中にmainメソッドを記述しています。mainメソッドは、Javaアプリケーションのエントリーポイントであり、コードの実行が始まる場所です。System.out.printlnメソッドを使用して、文字列 "Hello World!" を標準出力に表示しています。
Javaは、オブジェクト指向プログラミング言語であり、プラットフォームに依存しない特徴があります。また、Javaは多くの場面で使用され、Webアプリケーション、モバイルアプリケーション、デスクトップアプリケーションなど、多岐に渡る分野で活躍しています。
ほんのちょっとだけ齧っただけですが、なんとなくこんな感じだったような気がします。
Java script言語で、Hello Worldと表示するコードを書いて
console.log("Hello World!");
このコードは、console.log関数を使用して、文字列 "Hello World!" をコンソールに表示しています。
JavaScriptは、Webブラウザでのクライアントサイドプログラミングや、サーバーサイドプログラミングに広く使用されるスクリプト言語です。JavaScriptは、動的型付け言語であり、オブジェクト指向プログラミングや関数型プログラミングもサポートしています。また、Node.jsというプラットフォームを使用することで、JavaScriptでサーバーサイドプログラミングを行うこともできます。
そういえば、HTMLに直に埋め込んで使ったような記憶があります。違ったかな?
Python言語で、Hello Worldと表示するコードを書いて
print("Hello World!")
このコードは、print関数を使用して、文字列 "Hello World!" を標準出力に表示しています。
Pythonは、インデントによるブロック構造、動的型付け、オブジェクト指向プログラミング、関数型プログラミングなどの特徴を持つ高水準言語です。Pythonは、Webアプリケーション開発、データサイエンス、機械学習、人工知能など、多くの分野で使用されています。また、Pythonはシンプルで読みやすい構文を持ち、初学者にも入門しやすい言語として人気があります。
この言語も未経験。これだけみたら、BASICみたいですね。
Visual Basic言語で、Hello Worldと表示するコードを書いて
Module HelloWorld
Sub Main()
Console.WriteLine("Hello World!")
End Sub
End Module
このコードでは、Console.WriteLineメソッドを使用して文字列を出力します。Console.WriteLineメソッドは、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello World!" を引用符で囲んでConsole.WriteLineメソッドの引数に渡しています。
また、Visual Basicのプログラムは、Moduleブロックから始まり、End Moduleブロックで終了します。Sub Main()は、プログラムの実際の処理を定義するブロックであり、プログラムのエントリーポイントとなります。
これもちょっとだけ齧っただけなんですが、標準出力だとこんな感じで、print文はデバッグ用になったんでしたっけ?
Quick Basic言語で、Hello Worldと表示するコードを書いて
PRINT "Hello World!"
このコードでは、PRINT文を使用して文字列を出力します。PRINT文は、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello World!" を引用符で囲んでPRINT文の引数に渡しています。
Quick BASICは、BASIC言語の1つで、直感的で簡潔な構文を持ち、初心者にとっても学びやすい言語です。
凄く馴染みがあります。懐かしい響き。
Motrola 6800で、Hello Worldと表示するアセンブラコードを書いて
ORG $1000 ; プログラムの開始アドレス
start LDAA #<msg ; メッセージの先頭アドレスをAレジスタにセット
LDAB #>msg
JSR puts ; puts関数を呼び出してメッセージを表示
END start ; プログラムの終了
msg FCB "Hello, World!",0 ; 表示する文字列
このコードでは、puts関数を呼び出して、文字列 "Hello, World!" を表示しています。puts関数は、文字列を引数として取り、それを標準出力に表示します。
また、msgラベルの下には、表示する文字列 "Hello, World!" が格納されています。文字列の最後には、ヌル文字 (0) が追加されています。
注意:上記のコードは、アセンブリ言語の一例です。Motorola 6800アセンブリ言語の構文や命令セットについては、詳しいドキュメントを参照してください。
久しぶりに見たらわかるかなと思ったけど、これ多分6800用じゃないよね。puts関数みたいな高度なマクロ機能はなかったと思う。
FORTRAN言語で、Hello Worldと表示するコードを書いて
PROGRAM HelloWorld
PRINT *, "Hello World!"
END PROGRAM HelloWorld
このコードでは、PRINT文を使用して文字列を出力します。PRINT文は、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello World!" を引用符で囲んでPRINT文の引数に渡しています。
また、FORTRANのプログラムは、PROGRAMブロックから始まり、END PROGRAMブロックで終了します。PRINT文の後には、*を使用して改行を表すことができます。
PRINTの後に、標準出力を示す番号を書くんじゃなかったっけ?
その番号で、JCLのDD文とリンクするような記憶が、、、。
COBOL言語で、Hello Worldと表示するコードを書いて
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY "Hello World!".
STOP RUN.
このコードでは、DISPLAY文を使用して文字列を出力します。DISPLAY文は、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello World!" を引用符で囲んでDISPLAY文の引数に渡しています。
また、COBOLのプログラムは、IDENTIFICATION DIVISIONとPROCEDURE DIVISIONという2つのセクションで構成されます。IDENTIFICATION DIVISIONには、プログラム名を定義するPROGRAM-ID文が含まれます。PROCEDURE DIVISIONには、プログラムの実際の処理が含まれます。最後に、STOP RUN文を使用してプログラムを終了します。
懐かしいなぁ。とにかくCOBOLのコードは長い。とにかく長い。
命令語とかもスペルが長い。
そんな印象です。
PLI言語で、Hello Worldと表示するコードを書いて
/* HELLO WORLD PROGRAM */
PUT LIST('Hello World!');
END;
このコードでは、PUT LIST文を使用して文字列を出力します。PUT LIST文は、引数として渡された文字列を標準出力に表示することができます。上記のコードでは、文字列 "Hello World!" をシングルクォートで囲んでPUT LIST文の引数に渡しています。
また、PL/Iのプログラムは、END文を使用してプログラムを終了することができます。この例では、END文を使用してプログラムを終了しています。
殆ど覚えてないけど、何となくCOBOLチックな、でも時々FORTRANチックな感じがして、、、違ったかな。
後記
全て英語がベースなのに、同じことをするのにこうも表現が異なるとは。
所詮、活きた言語は時代時代で変わるもの。
違う表現とその背景にある思想を知ることは、とても刺激的。
ここまで読んでいただき、有り難うございました。
いいなと思ったら応援しよう!
