「Hello, World!」プログラムは、 一般的には、画面(多くの場合コンソール)に「Hello, World!」に似たメッセージを出力(または表示)する単純なコンピュータプログラムです。ほとんどの汎用プログラミング言語の小さなコード片であるこのプログラムは、言語の基本的な構文を説明するために使用されます。「Hello, World!」プログラムは、新しいプログラミング言語を学ぶ学生が最初に作成するプログラムであることがよくありますが、[1]このようなプログラムは、ソースコードをコンパイルまたは実行するためのコンピュータソフトウェアが正しくインストールされ、その操作者がその使用方法を理解していることを確認するための健全性チェックとしても使用できます。
歴史

小規模なテストプログラムはプログラム可能なコンピュータの開発以来存在していたが、テストメッセージとして「Hello, World!」というフレーズを使用する伝統は、1978年の書籍「プログラミング言語C 」 [2]のサンプルプログラムに影響を受けており、おそらくBCPLでもそれ以前に使用されていたと思われる。この本のサンプルプログラムは次のように印刷する。"こんにちは世界"これは、1974年にベル研究所でブライアン・カーニハンが書いた内部メモ「C言語によるプログラミング:チュートリアル」から継承されたものである。[3]
main ( ) { printf ( "hello, world" ); }
上記の例では、主要( ) 関数はプログラムの実行開始位置を定義します。関数本体は1つの文と、printf()関数は「 print formatted」の略で、パラメータとして渡されたもの、この場合は文字列をコンソールに出力します。 "こんにちは世界"。
C言語版の前には、カーニハン自身の1972年の著書『A Tutorial Introduction to the Language B』[4]があり、その中で外部変数を説明するために使用された例の中に、プログラムの最初のバージョンが見つかりました。
主要( ) {
外部a、b、c;
putchar(a); putchar(b); putchar(c); putchar('!*n');
}
「地獄」
弓';
c 'ドメイン';
上記のプログラムは以下を印刷しますこんにちは世界!端末に改行文字を含む文字列が出力されます。このフレーズは複数の変数に分割されていますが、これはBでは文字定数が4つのASCII文字に制限されているためです。チュートリアルの前の例では、こんにちは!端末に、そしてフレーズこんにちは世界!表現にいくつかの文字定数を必要とする、少し長めの挨拶として導入されました。
Jargon File によると、「hello, world」は 1967 年にBCPL言語で誕生したそうです。[5]コンピューター以外では、このフレーズの使用は 10 年以上前から始まっており、1950 年代からニューヨークのラジオのディスク ジョッキーであるWilliam B. Williamsのキャッチフレーズとして使われていました。 [6]
バリエーション

「Hello, World!」プログラムの複雑さは言語によって異なります。一部の言語、特にスクリプト言語では、「Hello, World!」プログラムを 1 つのステートメントで記述できますが、他の言語 (低レベル言語など) では、さらに多くのステートメントが必要になる場合があります。たとえば、Pythonでは、文字列こんにちは世界!の後に改行が続く場合は、 と書くだけで済みます。対照的に、C++ [7]の同等のコードでは、入出力(I/O)ソフトウェアライブラリのインポート、エントリポイントの手動宣言、および出力文字列を標準出力ストリームに送信するという明示的な指示が必要です。
print("Hello, World!")

「Hello, World!」というフレーズは、先頭のHとWの大文字化や、カンマや感嘆符の有無など、大文字と小文字や句読点に関してさまざまな例外が見受けられます。デバイスによっては、大文字のみをサポートするシステムではすべて大文字のバージョンなど、特定のバリエーションにフォーマットを制限しているものもあれば、難解なプログラミング言語ではわずかに変更した文字列を印刷しなければならないものもあります。たとえば、最初の非自明なMalbolgeプログラムは「HEllO WORld」を印刷しましたが、これで十分であると判断されました。[8] [信頼できない情報源? ]他の人間の言語も出力に使用されており、たとえばGo 言語のチュートリアルでは、英語と中国語または日本語の両方の文字を出力し、言語に組み込まれたUnicodeサポートを実証しました。[9]もう 1 つの注目すべき例はRust 言語で、その管理システムは新しいプロジェクトを作成するときに自動的に「Hello, World」プログラムを挿入します。

いくつかの言語は、単純な例を示すという精神を維持しながら、「Hello, World!」プログラムの機能を変更する。Lisp、ML、Haskellなどの関数型プログラミング言語は、「Hello, World!」を階乗プログラムに置き換える傾向がある。関数型プログラミングは再帰的手法を強調するのに対し、元の例は I/O を強調しており、副作用が生じることで純粋関数型プログラミングの精神に反するからである。 「Hello, World!」を印刷できる言語 (アセンブリ言語、C、VHDL ) は、テキスト出力が困難 (コンポーネントの追加または別のコンピュータとの通信が必要) または存在しない組み込みシステムでも使用されることがある。マイクロコントローラ、フィールドプログラマブルゲートアレイ、複合プログラマブルロジックデバイス(CPLD)などのデバイスでは、「Hello, World!」を点滅する発光ダイオード(LED)に置き換えて、コンポーネント間のタイミングと相互作用を示すことができる。[10] [11] [12] [13] [14]
DebianとUbuntu Linuxディストリビューションは、ソフトウェアパッケージマネージャシステムを通じて「Hello, World!」プログラムを提供しており、これは以下のコマンドで呼び出すことができます。 こんにちはこれは、ソフトウェアパッケージのインストールの健全性チェックと簡単な例として役立ちます。開発者向けには、従来の方法またはdebhelperを使用して.debパッケージを作成する例と、こんにちはGNU HelloはGNUプログラムの記述例として使用されている。[15]
「Hello, World!」プログラムのバリエーションとして、テキスト出力ではなくグラフィカルな出力を生成するものも公開されている。Sunはスケーラブルベクターグラフィックスに基づくJavaの「Hello, World!」プログラムを実演し、[16]XLプログラミング言語は3Dコンピュータグラフィックスを使用して回転する地球「Hello, World!」を特徴としている。[17] Mark GuzdialとElliot Solowayは、グラフィックスとサウンドがテキストと同じくらい簡単に操作できるようになったため、「hello, world」テストメッセージは時代遅れかもしれないと示唆している。[18]
Hello Worldの時間です
「Hello Worldまでの時間」(TTHW)は、特定のプログラミング言語で「Hello, World!」プログラムを作成するのにかかる時間です。これはプログラミング言語の使いやすさを測る1つの基準です。このプログラムは言語に馴染みのない人向けの入門用として意図されているため、「Hello, World!」プログラムが複雑であるほど、そのプログラミング言語がとっつきにくいことを示している可能性があります。[19]たとえば、Malbolgeで最初に公に知られるようになった「Hello, World!」プログラム(実際には「HEllO WORld」を出力)は、発表されるまでに2年かかり、人間ではなくCommon Lisp で書かれたコードジェネレータによって作成されました。
この概念はプログラミング言語を超えてAPIにまで拡張され、新しい開発者が基本的な例を動作させるのがどれだけ簡単であるかを測る尺度となっています。時間が短いほど、開発者が採用しやすいAPIであることを示しています。[20] [21]
「Hello, World!」プログラムを含む Wikipedia の記事
- ABAP
- エイダ
- アルドール
- アルゴル
- アルゴル60
- アンビエントトーク
- アミーガE
- アパッチクリック
- アパッチゼリー
- アパッチウィケット
- アプリジャー
- AppleScript
- アップルソフトベーシック
- アーク
- Atari アセンブラ エディタ
- オートLISP
- アビシンセ
- AWK
- ベーシック
- 基本的なアセンブリ言語
- バレリーナ
- BCPL
- ビートニク
- ベファンジ
- ベータ
- ブリッツベーシック
- ブレインファック
- C
- Caché オブジェクトスクリプト
- カイロ
- C/AL
- 炭素
- カシオベーシック
- 魅力
- チェリーパイ
- クリーン
- クリッパー
- C++
- C#
- コボル
- コブラ
- 共通中間言語
- 結晶
- シトン
- ダーツ
- ダーウィン
- データジェネラルノヴァ
- デノ
- DOORS 拡張言語
- 簡単なプログラミング言語
- エル-76
- エリクサー
- エンヨ
- 拡張可能な埋め込み言語
- எழில்
- ファ#
- 高速API
- フィヨルニル
- フラスコ
- フリックス
- 4番目
- フォートラン
- 要塞
- フリーBASIC
- 行く
- ゴドー
- Google ガジェット
- GNUスモールトーク
- ハック
- 港
- ハスケル
- ハリウッド
- html
- HTML アプリケーション
- IBMオープンクラス
- イドリス
- インターカル
- インターネット基礎クラス
- イオ
- イラク空軍
- J
- ジェイド
- ジャム
- ジャワ
- JavaFX スクリプト
- JavaScript
- Jフェイス
- 柔道
- け
- カーネル
- キヴィ
- K-メレオン
- リブレロゴ
- リスプ
- ライブスクリプト
- 笑 ...
- ルア
- MAC/65
- マクロ-10
- マクロ-11
- 狂った
- マジック
- マルボルジュ
- マテリアライズド
- 水銀
- マイクロPython
- マイクロソフト スモール ベーシック
- mIRC スクリプト言語
- MMIX
- モッキート
- モジュラ3
- モジョ
- モナド
- おたふく風邪
- MXML
- ネメルル
- ニュースピーク
- ニム
- NWスクリプト
- オムニマーク
- オパ
- OpenEdge 高度なビジネス言語
- オープンプログラミング言語
- オリエル
- パラセール
- Parrotアセンブリ言語
- オウム中間表現
- パスカル
- PCASTL
- PDP-8
- パール
- Perlモジュール
- PHP の
- プラック
- プルア
- プラス
- ポストスクリプト
- パワーベーシック
- プロローグ
- ピュアベーシック
- ピュアデータ
- ピュアスクリプト
- ピグテール
- パイソン
- 質問
- QB64
- クイックベーシック
- R
- ラック
- ラケット
- 楽
- 反応する
- リアクトネイティブ
- レボル
- 赤
- リファル
- RGtk2
- 指輪
- ロボットフレームワーク
- ルビー
- さび
- サコ
- サール
- スカラ
- シラボ
- 傷
- セド
- 自己
- シェイクスピア
- シミュラ
- スモールベーシック
- 雑談
- 標準ML
- 標準ウィジェットツールキット
- 迅速
- テックス
- TI-990
- TI-BASIC について
- 竜巻
- ターボパスカル
- チューリング
- UCBロゴ
- UEFI
- アンプル
- アンラムダ
- 五
- ヴァラ
- ビジュアルベーシック
- ビジュアルIRC
- ウェブ2パイ
- Web サーバー ゲートウェイ インターフェイス
- 空白
- 重量
- XBLite
- Xハーバー
- ゾジョ
- XULジェット
- ジグ
参照
- コンピュータサイエンスで使われる「99本のビール」
- Bad Apple!! § グラフィックおよびオーディオ テストとして使用します(古いハードウェアの「Hello, World!」に相当するグラフィック)
- フーバー
- ジャワペットストア
- 単なるPerlハッカー
- コンピュータサイエンスの概要
- TPKアルゴリズム
参考文献
- ^ Langbridge, James A. (2013 年 12 月 3 日)。プロフェッショナル Embedded ARM 開発。John Wiley & Sons。ISBN 9781118887820。
- ^ カーニハン、ブライアン W. ;リッチー、デニス M. (1978)。プログラミング言語 C (第 1 版)。ニュージャージー州エングルウッドクリフス:プレンティスホール。ISBN 0-13-110163-3。
- ^ Kernighan, Brian (1974). 「C言語でのプログラミング:チュートリアル」(PDF)。ベル研究所。2022年3月22日時点のオリジナルよりアーカイブ(PDF) 。 2019年1月9日閲覧。
- ^ Johnson, SC; Kernighan, BW The Programming Language B. Bell Labs. 2015年6月11日時点のオリジナルよりアーカイブ。2024年8月8日閲覧。
- ^ “BCPL”. Jargon File . 2018年4月3日時点のオリジナルよりアーカイブ。 2013年4月21日閲覧。
- ^ 「ラジオパーソナリティのウィリアム・B・ウィリアムズ氏が死去」ニューヨーク・タイムズ、1986年8月4日。
- ^ “C++プログラミング/例/Hello world”. Wikibooks . 2022年3月28日時点のオリジナルよりアーカイブ。2022年3月16日閲覧。
- ^ “Malbolge”. Esolang . esolangs-wiki. 2022年8月27日時点のオリジナルよりアーカイブ。 2016年10月28日閲覧。
- ^ Go プログラミング言語のチュートリアル。Wayback Machineに 2010 年 7 月 26 日にアーカイブ。Go プログラミング言語。2011 年 7 月 26 日閲覧。
- ^ Silva, Mike (2013 年 9 月 11 日). 「マイクロコントローラ入門 - Hello World」. EmbeddedRelated.com . 2015 年 5 月 22 日時点のオリジナルよりアーカイブ。2015年5 月 19 日閲覧。
- ^ George, Ligo (2013年5月8日). 「Atmega32マイクロコントローラとAtmel Studioを使用したLEDの点滅」electroSome . 2014年11月5日時点のオリジナルよりアーカイブ。 2015年5月19日閲覧。
- ^ PT, Ranjeeth. 「2. AVR Microcontrollers in Linux HOWTO」. Linux Documentation Project . 2015年5月2日時点のオリジナルよりアーカイブ。 2015年5月19日閲覧。
- ^ Andersson、Sven-Åke (2012 年 4 月 2 日)。 「3.2 最初のアルテラ FPGA デザイン」。ライディオ・テイリフィス・エイリアン。 2015 年 5 月 21 日のオリジナルからアーカイブ。2015 年5 月 19 日に取得。
- ^ Fabio, Adam (2014 年 4 月 6 日). 「CPLD チュートリアル: プログラマブル ロジックを簡単な方法で学ぶ」. Hackaday . 2015 年 5 月 20 日時点のオリジナルよりアーカイブ。2015年5 月 19 日閲覧。
- ^ 「Hello」。GNU プロジェクト。フリーソフトウェア財団。2014 年 5 月 29 日時点のオリジナルよりアーカイブ。2017年7 月 7 日閲覧。
- ^ Jolif, Christophe (2003 年 1 月)。「Java アプリケーションに SVG のパワーをもたらす」。Sun Developer Network。
- ^ de Dinechin、Christophe (2010 年 7 月 24 日)。 "こんにちは世界!"。グルヌイユ・ブイエ。
- ^ 「任天堂世代にプログラミングを教える」(PDF)。bfoit.org 。 2016年5月5日時点のオリジナル(PDF)からアーカイブ。2015年12月27日閲覧。
- ^ O'Dwyer, Arthur (2017 年 9 月)。C++17 STL をマスターする: C++17 の標準ライブラリ コンポーネントを最大限に活用する。Packt Publishing Ltd。p. 251。ISBN 978-1-78728-823-2. 2019年12月4日閲覧。
- ^ Wiegers, Harold (2018年6月28日). 「効率的なAPIプログラムにおける「最初のHello, World!」までの時間の重要性」。2020年2月19日時点のオリジナルよりアーカイブ。 2020年2月19日閲覧。
- ^ Jin, Brenda; Sahni, Saurabh; Shevat, Amir (2018 年 8 月 29 日)。Web API の設計: 開発者が愛する API の構築。O'Reilly Media。ISBN 9781492026877. 2020年2月19日閲覧。
外部リンク
- Hello World コレクション
- 「Hello world/Text」。Rosettaコード。2024 年 5 月 23 日。
- 「GitHub – leachim6/hello-world: あらゆるコンピューター言語で Hello world を実現。貢献してくださった皆様に感謝します。貢献方法については CONTRIBUTING.md を必ず参照してください!」。GitHub。2021年 10 月 30 日。
- 「IT業界の無名の英雄たち:パート1:ブライアン・カーニガン」。TheUnsungHeroesOfIT.com 。 2016年3月26日時点のオリジナルよりアーカイブ。2014年8月23日閲覧。
