"Hello, World!" program: Difference between revisions

Content deleted Content added
Wernher (talk | contribs)
m subsubsection heading
no sentence
Tags: Visual edit Mobile edit Mobile web edit Advanced mobile edit
 
Line 1:
{{Short description|Traditional first example of a computer programming language}}
[[de:Hallo Welt]][[fr:Hello world]] [[ja:Hello world]] [[zh:Hello_World%E7%A8%8B%E5%BA%8F]][[pl:Hello world]]
{{Redirect-multi|2|Hello, World|Helloworld|other uses|Hello World (disambiguation)}}
{{Use dmy dates|date=March 2022}}
A '''"Hello, World!" program''' is usually a simple [[computer program]] that emits (or displays) to the screen (often the [[Console application|console]]) a message similar to "Hello, World!". A small piece of code in most [[general-purpose programming language]]s, this program is used to illustrate a language's basic [[Syntax (programming languages)|syntax]]. Such a program is often the first written by a student of a new programming language,<ref>{{cite book |last1=Langbridge |first1=James A. |url=https://books.google.com/books?id=y51NAgAAQBAJ&pg=PA74 |title=Professional Embedded ARM Development |date=3 December 2013 |publisher=John Wiley & Sons |isbn=9781118887820}}</ref> but it can also be used as a [[sanity check]] to ensure that the [[computer software]] intended to [[Compiler|compile]] or run [[source code]] is correctly installed, and that its operator understands how to use it.
 
==History==
A '''"hello world" program''' is a [[computer program]] that simply prints out "Hello, world!". It is used in many introductory tutorials for teaching a [[programming language]] and many students use it as their first programming experience in a language. A "hello world" program is typically one of the simpler programs possible in a computer language. Some are surprisingly complex, especially in some [[Graphical User Interface]] (GUI) contexts. Some others are surprisingly simple, especially those which heavily rely on a particular [[Command line interpreter|shell]] to perform the actual output.
[[File:Hello World Brian Kernighan 1974.jpg|thumb|"Hello, World!" program handwritten in the [[C (programming language)|C language]] and signed by [[Brian Kernighan]] (1978)]]
 
While several small test programs have existed since the development of programmable [[computer]]s, the tradition of using the phrase "Hello, World!" as a test message was influenced by an example program in the 1978 book ''[[The C Programming Language]]'',<ref>{{cite book |last1=Kernighan |first1=Brian W. |author1-link=Brian Kernighan |last2=Ritchie |first2=Dennis M. |author2-link=Dennis Ritchie |date=1978 |title=The C Programming Language |edition=1st |publisher=[[Prentice Hall]] |___location=[[Englewood Cliffs, New Jersey]] |isbn=0-13-110163-3 |url-access=registration |url=https://archive.org/details/cprogramminglang00kern |page=[https://archive.org/details/cprogramminglang00kern/page/6/mode/2up?q=%22hello%2C+world%22 6]}}</ref> with likely earlier use in [[BCPL]]. The example program from the book prints {{samp|"hello, world"}}, and was inherited from a 1974 [[Bell Labs|Bell Laboratories]] internal memorandum by [[Brian Kernighan]], ''Programming in C: A Tutorial'':<ref name="ctut">{{cite web |url=https://www.bell-labs.com/usr/dmr/www/ctut.pdf |title=Programming in C: A Tutorial |last1=Kernighan |first1=Brian |author1-link=Brian Kernighan |year=1974 |publisher=Bell Labs |url-status=live |archive-url=https://web.archive.org/web/20220322215231/https://www.bell-labs.com/usr/dmr/www/ctut.pdf |archive-date=22 March 2022 |access-date=9 January 2019}}</ref>
A "hello world" program can be a useful [[sanity test]] to make sure that a language's [[compiler]], [[development environment]], and [[run-time environment]] are correctly installed. Configuring a complete programming tool chain from scratch to the point where even trivial programs can be compiled and run may involve substantial amounts of work. For this reason, a simple program is used first when testing a new tool chain.
<!--
**********
Editor's Note: We do not need to have an example for every programming language ever created. Wikipedia is an encyclopedia. Please refrain from adding examples just because we can. If you think a particular example adds something unique and valuable to the article, petition on the talk page, first. Thanks. (User: DragonHawk)
 
Addendum: there are large repositories of Hello, World! programs all over the net, in every conceivable language. No need exists to list them all here. In fact, there is now a very comprehensive Wikibooks link: if you want to add a version for your language, do so there (you'll likely find it already exists). HERE IS NOT THE PLACE. The C version (which is not even correct in modern C) is here because it is the first in a non-obscure language, and the B example because it is the first known. There is no reason to have many others here. ADD NO MORE!
While small test programs existed since the development of programmable [[computer]]s, the tradition of using the phrase "Hello, world!" as the test message was influenced by an example program in the book [[C programming language/K and R|The C Programming Language]], by [[Brian Kernighan]] and [[Dennis Ritchie]]. The example program from that book prints "hello, world".
**********
-->
<!-- ADD NO NEWLINE, HEADER FILE, ADJUST WHITESPACE, OR INT DATA TYPE TO THIS CODE. THE ORIGINAL IN 1974 DIDN'T HAVE THEM, THANKS -->
<!-- See https://www.bell-labs.com/usr/dmr/www/ctut.pdf for original. -->
<syntaxhighlight lang="c">
main( ) {
printf("hello, world");
}
</syntaxhighlight>
 
In the above example, the {{samp|main( )}} [[subroutine|function]] defines where the program [[Entry point|should start executing]]. The function body consists of a single [[Statement (computer science)|statement]], a call to the {{samp|printf()}} function, which stands for "''print f''ormatted"; it outputs to the [[Console application|console]] whatever is passed to it as the [[Parameter (computer programming)|parameter]], in this case the [[String (computer science)|string]] {{samp|"hello, world"}}.
A collection of "hello world" programs written in various computer languages can serve as a simple "[[Rosetta Stone]]" to assist in learning and comparing the languages.
 
The C-language version was preceded by Kernighan's own 1972 ''A Tutorial Introduction to the Language [[B (programming language)|B]]'',<ref name="langb">{{cite book |last1=Johnson |first1=S. C. |last2=Kernighan |first2=B. W. |author2-link=Brian Kernighan |url=https://www.bell-labs.com/usr/dmr/www/bintro.html |title=The Programming Language B |publisher=Bell Labs |url-status=live |archive-url=https://web.archive.org/web/20150611114355/https://www.bell-labs.com/usr/dmr/www/bintro.html |archive-date=11 June 2015 |access-date=8 August 2024}}</ref> where the first known version of the program is found in an example used to illustrate external variables:
Here are some examples in different languages:
<!-- Do not adjust the whitespace or otherwise change this example below as it is meant to match the original in the source. -->
 
<syntaxhighlight lang="text">
== <u>Line-oriented (aka Console)</u> ==
main( ) {
 
extrn a, b, c;
=== [[ABC programming language|ABC]] ===
putchar(a); putchar(b); putchar(c); putchar('!*n');
 
}
WHILE (1=1) :
WRITE "Hello World "
 
=== [[Ada programming language|Ada]] ===
 
with Ada.Text_Io; use Ada.Text_Io;
procedure Hello is
begin
Put_Line ("Hello, world!");
end Hello;
 
=== [[AmigaE programming language|AmigaE]] ===
 
PROC main()
WriteF('Hello, World!')
ENDPROC
 
=== [[APL programming language|APL]] ===
 
'Hello World'
 
=== [[Assembly language]] ===
 
==== [[PDP-8|DEC PDP-8]], PAL-III syntax ====
 
''See the [[PDP-8#Example|Example section]] of the PDP-8 article''.
 
==== [[x86]]-architecture, [[MS-DOS]], [[Turbo Assembler|TASM]] syntax ====
 
MODEL SMALL
IDEAL
STACK 100H
 
DATASEG
HW DB 'Hello, world!$'
 
CODESEG
MOV AX, @data
MOV DS, AX
MOV DX, OFFSET HW
MOV AH, 09H
INT 21H
MOV AX, 4C00H
INT 21H
END
 
=== [[AWK]] ===
 
BEGIN { print "Hello, world!" }
 
=== [[BASIC programming language|BASIC]] ===
 
==== [[Microsoft BASIC|MS BASIC]] (traditional, unstructured)====
10 PRINT "Hello, world!"
20 END
 
==== [[TI-BASIC programming language|TI-BASIC]] ====
:Disp "Hello, world!"
 
==== Structured BASIC ====
print "Hello, world!"
 
=== [[BCPL]] ===
GET "LIBHDR"
 
LET START () BE
$(
WRITES ("Hello, world!*N")
$)
 
=== [[C programming language|C]] ===
 
#include <stdio.h>
 
int main(void) {
printf("Hello, world!\n");
return 0;
}
 
=== [[C plus plus|C++]] ===
 
#include <iostream>
using namespace std;
 
int main() {
cout << "Hello, world!" << endl;
return 0;
}
 
=== [[C Sharp programming language|C#]] ===
 
class HelloWorldApp {
public static void Main() {
System.Console.WriteLine("Hello, world!");
}
}
 
=== [[Clean programming language|Clean]] ===
 
module hello
 
Start :: String
Start = "Hello, world"
 
=== [[CLIST]] ===
 
PROC 0
WRITE Hello, World!
 
=== [[COBOL programming language|COBOL]] ===
 
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
 
ENVIRONMENT DIVISION.
 
DATA DIVISION.
 
PROCEDURE DIVISION.
DISPLAY "Hello, world!".
STOP RUN.
 
=== [[Common Lisp]] ===
 
(format t "Hello world!~%")
 
=== [[Eiffel programming language|Eiffel]] ===
 
class HELLO_WORLD
 
creation
make
feature
make is
local
io:BASIC_IO
do
!!io
io.put_string("%N Hello, world!")
end -- make
end -- class HELLO_WORLD
 
=== [[Erlang programming language|Erlang]] ===
 
-module(hello).
-export([hello_world/0]).
 
hello_world() -> io:fwrite("Hello, world!\n").
 
=== [[Forth programming language|Forth]] ===
 
." Hello, world!" CR
 
=== [[Fortran]] ===
 
PROGRAM HELLO
WRITE(*,10)
10 FORMAT('Hello, world!')
STOP
END
 
=== [[Haskell programming language|Haskell]] ===
 
module HelloWorld (main) where
 
main = putStr "Hello World\n"
 
=== [[Iptscrae programming language|Iptscrae]] ===
 
ON ENTER {
"Hello, " "World!" & SAY
}
 
=== [[Java programming language|Java]] ===
 
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
 
=== [[Logo programming language|Logo]] ===
 
print [hello world!]
 
=== [[Lua programming language|Lua]] ===
 
print "Hello, world!"
 
=== [[MIXAL programming language|MIXAL]] ===
 
TERM EQU 19 the MIX console device number
ORIG 1000 start address
START OUT MSG(TERM) output data at address MSG
HLT halt execution
MSG ALF "MIXAL"
ALF " HELL"
ALF "O WOR"
ALF "LD "
END START end of the program
 
=== [[MSDOS]] batch ===
 
@echo off
echo Hello, world!
 
=== [[Ocaml programming language|OCaml]] ===
let _ =
print_endline "Hello world!";;
 
=== [[OPL]] ===
PROC hello:
PRINT "Hello, World"
ENDP
 
=== [[Pascal programming language|Pascal]] ===
program Hello;
begin
writeln('Hello, world!');
end.
 
=== [[Perl]] ===
 
print "Hello, world!\n";
 
=== [[PHP]] ===
 
<?php
print("Hello, world!");
?>
 
=== [[Pike programming language|Pike]] ===
#!/usr/local/bin/pike
int main() {
write("Hello, world!\n");
return 0;
}
 
=== [[PLI|PL/I]] ===
 
Test: procedure options(main);
declare My_String char(20) varying initialize('Hello, world!');
put skip list(My_String);
end Test;
 
=== [[Python programming language|Python]] ===
 
print "Hello, world!"
 
=== [[REXX programming language|REXX]] ===
 
/* rexx */
say "Hello, world!"
 
=== [[Ruby programming language|Ruby]] ===
 
print "Hello, world!\n"
 
=== [[Sather]] ===
 
class HELLO_WORLD is
main is
#OUT+"Hello World\n";
end;
end;
 
=== [[Scheme programming language|Scheme]] ===
 
(display "Hello, world!")
(newline)
 
=== [[sed]] (requires at least one line of input) ===
 
sed -ne '1s/.*/Hello, world!/p'
 
=== [[Self programming language|Self]] ===
 
'Hello, World!' uppercase print.
 
=== [[Smalltalk programming language|Smalltalk]] ===
 
Transcript show: 'Hello, world!'
 
=== [[SML programming language|SML]] ===
 
print "Hello, world!\n";
 
=== [[SNOBOL]] ===
 
OUTPUT = "Hello, world!"
END
 
=== [[SQL]] ===
 
create table MESSAGE (TEXT char(15));
insert into MESSAGE (TEXT) values ('Hello, world!');
select TEXT from MESSAGE;
drop table MESSAGE;
 
=== [[StarOffice Basic]] ===
 
sub main
print "Hello, World"
end sub
 
=== [[Tcl]] ===
 
puts "Hello, world!"
 
 
 
=== [[Turing programming language|Turing]] ===
 
put "Hello, world!"
 
=== [[UNIX shell|UNIX-style shell]] ===
 
echo 'Hello, world!'
 
=== [[Romanian pseudocode (UBB Cluj-Napoca)]] ===
 
Algoritmul Salut este:
fie s:="Hello, world";
tipareste s;
sf-Salut
 
== <u>Graphical User Interfaces - as traditional applications</u> ==
 
 
=== C++ bindings for [[GTK]] graphics toolkit ===
 
#include <iostream>
#include <gtkmm/main.h>
#include <gtkmm/button.h>
#include <gtkmm/window.h>
using namespace std;
 
class HelloWorld : public Gtk::Window {
public:
HelloWorld();
virtual ~HelloWorld();
protected:
Gtk::Button m_button;
virtual void on_button_clicked();
 
};
 
HelloWorld::HelloWorld()
: m_button("Hello, world!") {
set_border_width(10);
m_button.signal_clicked().connect(SigC::slot(*this,
&HelloWorld::on_button_clicked));
add(m_button);
m_button.show();
}
 
HelloWorld::~HelloWorld() {}
 
void HelloWorld::on_button_clicked() {
cout << "Hello, world!" << endl;
}
 
int main (int argc, char *argv[]) {
Gtk::Main kit(argc, argv);
HelloWorld helloworld;
Gtk::Main::run(helloworld);
return 0;
}
 
=== [[Java programming language|Java]] ===
 
import java.awt.*;
import java.awt.event.*;
 
public class HelloFrame extends Frame {
HelloFrame(String title) {
super(title);
}
public void paint(Graphics g) {
super.paint(g);
java.awt.Insets ins = this.getInsets();
g.drawString("Hello, world!", ins.left + 25, ins.top + 25);
}
public static void main(String args [])
{
HelloFrame fr = new HelloFrame("Hello");
 
fr.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
System.exit( 0 );
}
}
);
fr.setResizable(true);
fr.setSize(500, 100);
fr.setVisible(true);
}
}
 
 
=== [[Qt toolkit]] (in C++) ===
 
#include <qapplication.h>
#include <qpushbutton.h>
#include <qwidget.h>
#include <iostream>
 
class HelloWorld : public QWidget
{
Q_OBJECT
 
public:
HelloWorld();
virtual ~HelloWorld();
public slots:
void handleButtonClicked();
QPushButton *mPushButton;
};
 
HelloWorld::HelloWorld() :
QWidget(),
mPushButton(new QPushButton("Hello, World!", this))
{
connect(mPushButton, SIGNAL(clicked()), this, SLOT(handleButtonClicked()));
}
 
HelloWorld::~HelloWorld() {}
 
void HelloWorld::handleButtonClicked()
{
std::cout << "Hello, World!" << std::endl;
}
 
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
HelloWorld helloWorld;
app.setMainWidget(&helloWorld);
helloWorld.show();
return app.exec();
}
 
=== [[Visual Basic]] ===
 
MsgBox "Hello, world!"
 
=== [[Windows API]] (in C) ===
 
#include <windows.h>
 
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
 
char szClassName[] = "MainWnd";
HINSTANCE hInstance;
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASSEX wincl;
 
hInstance = hInst;
a 'hell';
wincl.cbSize = sizeof(WNDCLASSEX);
b 'o, w';
wincl.cbClsExtra = 0;
c 'orld';
wincl.cbWndExtra = 0;
</syntaxhighlight>
wincl.style = 0;
wincl.hInstance = hInstance;
wincl.lpszClassName = szClassName;
wincl.lpszMenuName = NULL; //No menu
wincl.lpfnWndProc = WindowProcedure;
wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); //Color of the window
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION); //EXE icon
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION); //Small program icon
wincl.hCursor = LoadCursor(NULL, IDC_ARROW); //Cursor
if (!RegisterClassEx(&wincl))
return 0;
 
hwnd = CreateWindowEx(0, //No extended window styles
szClassName, //Class name
"", //Window caption
WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT, //Let Windows decide the left and top positions of the window
120, 50, //Width and height of the window,
NULL, NULL, hInstance, NULL);
 
//Make the window visible on the screen
ShowWindow(hwnd, nCmdShow);
//Run the message loop
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
 
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
TextOut(hdc, 15, 3, "Hello, world!", 13);
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
 
== <u>Graphical User Interfaces - [[Web browser]] based</u> ==
 
 
=== [[Java applet]] ===
 
:[[Java applet]]s work in conjunction with [[HTML]] files.
 
<HTML>
<HEAD>
<TITLE>Hello World</TITLE>
</HEAD>
<BODY>
 
HelloWorld Program says:
 
 
<APPLET CODE="HelloWorld.class" WIDTH=600 HEIGHT=100>
</APPLET>
 
</BODY>
</HTML>
 
import java.applet.*;
import java.awt.*;
 
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.drawString("Hello, world!", 100, 50);
}
}
 
=== [[JavaScript]], aka ECMAScript ===
 
:JavaScript is a scripting language used in [[HTML]] files. To demo this program Cut and Paste the following code into any HTML file.
 
<script language="javascript">
function helloWorld()
{
javascript: alert("Hello, world!");
}
</script>
 
The program above prints ''{{samp|hello, world!}}'' on the terminal, including a [[newline]] character. The phrase is divided into multiple variables because in B a character constant is limited to four [[ASCII]] characters. The previous example in the tutorial printed ''{{samp|hi!}}'' on the terminal, and the phrase ''{{samp|hello, world!}}'' was introduced as a slightly longer greeting that required several character constants for its expression.
<a href="javascript:this.___location()"
onclick="javascript:helloWorld();">Hello World Example</a>
 
The [[Jargon File]] reports that "hello, world" instead originated in 1967 with the language [[BCPL]].<ref>{{cite web |url=http://www.catb.org/jargon/html/B/BCPL.html |title=BCPL |work=[[Jargon File]] |access-date=21 April 2013 |archive-date=3 April 2018 |archive-url=https://web.archive.org/web/20180403000549/http://www.catb.org/jargon/html/B/BCPL.html |url-status=live}}</ref> Outside computing, use of the exact phrase began over a decade prior; it was the [[catchphrase]] of New York radio disc jockey [[William B. Williams (DJ)|William B. Williams]] beginning in the 1950s.<ref name=nytobit>{{cite web |url=https://select.nytimes.com/search/restricted/article?res=F50714FF3E5B0C778CDDA10894DE484D81| title=William B. Williams, Radio Personality, Dies |work=The New York Times |date=4 August 1986}}</ref>
:An easier method uses JavaScript implicitly, calling the reserved ''alert'' function. Cut and paste the following line inside the <BODY> .... </BODY> HTML tags.
 
==Variations==
<a href="#" onclick="alert('Hello, world!')">Hello World Example</a>
[[Image:PSP-Homebrew.jpeg|thumb|A "Hello, World!" program running on Sony's [[PlayStation Portable homebrew|PlayStation Portable]] as a [[proof of concept]]]]
 
"Hello, World!" programs vary in complexity between different languages. In some languages, particularly [[scripting language]]s, the "Hello, World!" program can be written as one statement, while in others (more so many [[Low-level programming language|low-level languages]]) many more statements can be required. For example, in [[Python (programming language)|Python]], to print the string ''{{samp|Hello, World!}}'' followed by a newline, one only needs to write <syntaxhighlight lang="python" inline>print("Hello, World!")</syntaxhighlight>. In contrast, the equivalent code in [[C++]]<ref>{{cite web |url=https://en.wikibooks.org/wiki/C%2B%2B_Programming/Examples/Hello_world |title=C++ Programming/Examples/Hello world |publisher=[[Wikibooks]] |access-date=16 March 2022 |archive-date=28 March 2022 |archive-url=https://web.archive.org/web/20220328130457/https://en.wikibooks.org/wiki/C%2B%2B_Programming/Examples/Hello_world |url-status=live}}</ref> requires the import of the [[C++ standard library]], the declaration of an [[entry point]] (main function), and a call to print a line of text to the standard output stream.
:An even easier method involves using popular browsers' support for the virtual 'javascript' protocol to execute JavaScript code. Enter the following as an Internet address (usually by pasting into the address box):
 
[[File:CNC Hello World.jpg|thumb|Computer [[numerical control]] (CNC) machining test in [[poly(methyl methacrylate)]] (Perspex)]]
javascript:alert('Hello, world!')
The phrase "Hello, World!" has seen various deviations in casing and punctuation, such as "hello world" which lacks the capitalization of the leading ''H'' and ''W'', and the presence of the comma or exclamation mark. Some devices limit the format to specific variations, such as all-capitalized versions on systems that support only capital letters, while some [[esoteric programming language]]s may have to print a slightly modified string. Other human languages have been used as the output; for example, a tutorial for the [[Go (programming language)|Go language]] emitted both English and Chinese or Japanese characters, demonstrating the language's built-in [[Unicode]] support.<ref>[http://golang.org/doc/go_tutorial.html#tmp_20 A Tutorial for the Go Programming Language.] {{webarchive |url=https://web.archive.org/web/20100726052120/http://golang.org/doc/go_tutorial.html#tmp_20 |date=26 July 2010}} The Go Programming Language. Retrieved 26 July 2011.</ref> Another notable example is the [[Rust (programming language)|Rust language]], whose management system automatically inserts a "Hello, World" program when creating new projects.
 
[[File:HelloWorld Maktivism ComputerProgramming LEDs.jpg|thumb|A "Hello, World!" message being displayed through long-exposure [[light painting]] with a moving strip of [[light-emitting diode]]s (LEDs)]]
=== [[XUL]] ===
 
Some languages change the function of the "Hello, World!" program while maintaining the spirit of demonstrating a simple example. [[Functional programming]] languages, such as [[Lisp (programming language)|Lisp]], [[ML (programming language)|ML]], and [[Haskell]], tend to substitute a [[factorial]] program for "Hello, World!", as functional programming emphasizes recursive techniques, whereas the original examples emphasize I/O, which violates the spirit of pure functional programming by producing [[Side effect (computer science)|side effects]]. Languages otherwise able to print "Hello, World!" ([[assembly language]], [[C (programming language)|C]], [[VHDL]]) may also be used in [[embedded system]]s, where text output is either difficult (requiring added components or communication with another computer) or nonexistent. For devices such as [[microcontroller]]s, [[field-programmable gate array]]s, and [[complex programmable logic device]]s (CPLDs), "Hello, World!" may thus be substituted with a blinking [[light-emitting diode]] (LED), which demonstrates timing and interaction between components.<ref>{{cite web|last1=Silva|first1=Mike|title=Introduction to Microcontrollers - Hello World|url=http://www.embeddedrelated.com/showarticle/460.php|website=EmbeddedRelated.com|access-date=19 May 2015|date=11 September 2013|archive-date=22 May 2015|archive-url=https://web.archive.org/web/20150522081938/http://www.embeddedrelated.com/showarticle/460.php|url-status=live}}</ref><ref>{{cite web|last1=George|first1=Ligo|title=Blinking LED using Atmega32 Microcontroller and Atmel Studio|url=https://electrosome.com/blinking-led-atmega32-avr-microcontroller/|website=electroSome|date=8 May 2013|access-date=19 May 2015|archive-date=5 November 2014|archive-url=https://web.archive.org/web/20141105123532/http://electrosome.com/blinking-led-atmega32-avr-microcontroller|url-status=live}}</ref><ref>{{cite web|last1=PT|first1=Ranjeeth|title=2. AVR Microcontrollers in Linux HOWTO|url=http://www.tldp.org/HOWTO/Avr-Microcontrollers-in-Linux-Howto/x207.html|website=The Linux Documentation Project|access-date=19 May 2015|archive-date=2 May 2015|archive-url=https://web.archive.org/web/20150502194301/http://www.tldp.org/HOWTO/Avr-Microcontrollers-in-Linux-Howto/x207.html|url-status=live}}</ref><ref>{{cite web|last1=Andersson|first1=Sven-Åke|title=3.2 The first Altera FPGA design|url=http://www.rte.se/blog/blogg-modesty-corex/first-altera-fpga-design/3.2|publisher=Raidió Teilifís Éireann|access-date=19 May 2015|date=2 April 2012|archive-url=https://web.archive.org/web/20150521222132/http://www.rte.se/blog/blogg-modesty-corex/first-altera-fpga-design/3.2|archive-date=21 May 2015|url-status=dead}}</ref><ref>{{cite web|last1=Fabio|first1=Adam|title=CPLD Tutorial: Learn programmable logic the easy way|url=http://hackaday.com/2014/04/06/cpld-tutorial-learn-programmable-logic-the-easy-way/|website=Hackaday|access-date=19 May 2015|date=6 April 2014|archive-date=20 May 2015|archive-url=https://web.archive.org/web/20150520063507/http://hackaday.com/2014/04/06/cpld-tutorial-learn-programmable-logic-the-easy-way/|url-status=live}}</ref>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box align="center">
<label value="Hello, world!" />
</box>
</window>
 
The [[Debian]] and [[Ubuntu]] [[Linux distribution]]s provide the "Hello, World!" program through their [[Package manager|software package manager]] systems, which can be invoked with the command ''{{samp|hello}}''. It serves as a [[sanity check]] and a simple example of installing a software package. For developers, it provides an example of creating a [[.deb]] package, either traditionally or using ''debhelper'', and the version of {{samp|hello}} used, [[GNU Hello]], serves as an example of writing a [[GNU]] program.<ref>{{cite web|title=Hello |url=https://www.gnu.org/software/hello/|website=GNU Project |publisher=Free Software Foundation |access-date=7 July 2017|archive-url=https://archive.today/20140529011826/http://www.gnu.org/software/hello/|archive-date=29 May 2014|url-status=dead}}</ref>
== Document Formats ==
 
Variations of the "Hello, World!" program that produce a [[Computer graphics|graphical output]] (as opposed to text output) have also been shown. [[Sun Microsystems|Sun]] demonstrated a "Hello, World!" program in [[Java (programming language)|Java]] based on [[scalable vector graphics]],<ref>{{cite news|last=Jolif|first=Christophe|title=Bringing SVG Power to Java Applications|newspaper=Sun Developer Network|date=January 2003}}</ref> and the [[XL (programming language)|XL]] programming language features a spinning Earth "Hello, World!" using [[3D computer graphics]].<ref>{{cite web|last=de Dinechin|first=Christophe|title=Hello world!|url=http://grenouillebouillie.wordpress.com/2010/07/24/hello-world/|publisher=Grenouille Bouillie|date=24 July 2010}}</ref> Mark Guzdial and [[Elliot Soloway]] have suggested that the "hello, world" test message may be outdated now that graphics and sound can be manipulated as easily as text.<ref>{{cite web|url=http://www.bfoit.org/itp/Soloway/CACM_Nintendo_Generation.pdf|title=Teaching the Nintendo Generation to Program|website=bfoit.org|access-date=27 December 2015|archive-url=https://web.archive.org/web/20160505190520/http://www.bfoit.org/itp/Soloway/CACM_Nintendo_Generation.pdf|archive-date=5 May 2016|url-status=dead}}</ref>
=== [[ASCII]] ===
 
In [[computer graphics]], rendering a triangle{{snd}}called "Hello Triangle"{{snd}}is sometimes used as an introductory example for [[Graphics library|graphics libraries]].<ref>{{Cite book |last=Vries |first=Joey de |title=Learn OpenGL - Graphics Programming |date= |publisher=Kendall & Welling |year=2020 |isbn=978-90-90-33256-7 |pages=26}}</ref><ref>{{cite magazine|magazine=[[The MagPi]]|issue=65|date=Jan 2018|title=Coding games on the Raspberry Pi in C/C++ Part 01|page=57|quote=next time we will expand our code to start working with graphics and the famous 'hello triangle' code that absolutely no one uses except game coders|first1=Brian|last1=Beuken}}</ref>
:The following sequence of characters expressed in hexadecimal notation:
48 65 6C 6C 6F 2C 20 77 6F 72 6C 64 21 0D 0A
 
===Time [[HTML]]to =Hello World==
 
"Time to hello world" (TTHW) is the time it takes to author a "Hello, World!" program in a given programming language. This is one measure of a programming language's ease of use. Since the program is meant as an introduction for people unfamiliar with the language, a more complex "Hello, World!" program may indicate that the programming language is less approachable.<ref name="ODwyer">{{cite book |last1=O'Dwyer |first1=Arthur |title=Mastering the C++17 STL: Make full use of the standard library components in C++17 |date=September 2017 |publisher=[[Packt Publishing Ltd]] |isbn=978-1-78728-823-2 |page=251 |url=https://books.google.com/books?id=zJlGDwAAQBAJ&q=%22TTHW%22&pg=PA251 |access-date=4 December 2019 |language=en}}</ref> For instance, the first publicly known "Hello, World!" program in [[Malbolge]] (which actually output "HEllO WORld") took two years to be announced, and it was produced not by a human but by a code generator written in [[Common Lisp]] {{see above|{{slink||Variations}}, above}}.
<HTML>
<HEAD>
<TITLE>Hello, world!</TITLE>
</HEAD>
<BODY>
Hello, world!
</BODY>
</HTML>
 
The concept has been extended beyond programming languages to [[Application programming interface|APIs]], as a measure of how simple it is for a new developer to get a basic example working; a shorter time indicates an easier API for developers to adopt.<ref>{{cite web |last1=Wiegers |first1=Harold |title=The importance of "Time to First Hello, World!" an efficient API program |date=28 June 2018 |url=https://apifriends.com/api-management/api-program-time-first-hello-world/ |access-date=19 February 2020 |archive-date=19 February 2020 |archive-url=https://web.archive.org/web/20200219061813/https://apifriends.com/api-management/api-program-time-first-hello-world/ |url-status=live}}</ref><ref>{{cite book |last1=Jin |first1=Brenda |last2=Sahni |first2=Saurabh |last3=Shevat |first3=Amir |title=Designing Web APIs: Building APIs That Developers Love |url=https://books.google.com/books?id=Dg1rDwAAQBAJ&q=%22time%20to%20hello%20world%22&pg=PT150 |date=29 August 2018 |publisher=O'Reilly Media |isbn=9781492026877 |access-date=19 February 2020}}</ref>
=== [[PostScript]] ===
 
==Wikipedia articles containing "Hello, World!" programs==
 
{{flatlist|*[[ABAP#Hello world|ABAP]]
/font /Courier findfont 24 scalefont
*[[Ada (programming language)#"Hello, world!" in Ada|Ada]]
font setfont
*[[Aldor#Examples|Aldor]]
100 100 moveto
*[[ALGOL#Timeline: (Hello world!) show|ALGOL]]
*[[ALGOL 60]]
showpage
*[[AmbientTalk#Hello world|AmbientTalk]]
*[[Amiga E#"Hello, World!" example|Amiga E]]
*[[Apache Click#Example|Apache Click]]
*[[Apache Jelly#Usage|Apache Jelly]]
*[[Apache Wicket#Example|Apache Wicket]]
*[[AppJar#Example|AppJar]]
*[[AppleScript#Hello, world!|AppleScript]]
*[[Applesoft BASIC#Sample code|Applesoft BASIC]]
*[[Arc (programming language)#Examples|Arc]]
*[[Atari Assembler Editor#Example code|Atari Assembler Editor]]
*[[AutoLISP#Examples|AutoLISP]]
*[[AviSynth#"Hello World"|AviSynth]]
*[[AWK#Hello World|AWK]]
*[[BASIC#Examples|BASIC]]
*[[Basic Assembly Language#Examples|Basic Assembly Language]]
*[[Ballerina (programming language)#Hello World|Ballerina]]
*[[BCPL#Hello world|BCPL]]
*[[Beatnik (programming language)#Hello World|Beatnik]]
*[[Befunge#Sample Befunge-93 code|Befunge]]
*[[BETA (programming language)#Hello world!|BETA]]
*[[Blitz BASIC#Examples|Blitz BASIC]]
*[[Brainfuck#Hello World!|Brainfuck]]
*[[C (programming language)#"Hello, world" example|C]]
*[[Caché ObjectScript#Caché programming examples|Caché ObjectScript]]
*[[Cairo (graphics)#Example|Cairo]]
*[[C/AL#Hello World|C/AL]]
*[[Carbon (programming language)#Example|Carbon]]
*[[Casio BASIC#Examples|Casio BASIC]]
*[[Charm (programming language)#Example|Charm]]
*[[CherryPy#Pythonic interface|CherryPy]]
*[[Clean (programming language)#Examples|Clean]]
*[[Clipper (programming language)#Programming in Clipper|Clipper]]
*[[C++#Language|C++]]
*[[C Sharp (programming language)#Hello World|C#]]
*[[COBOL#Hello, world|COBOL]]
*[[Cobra (programming language)#Hello World|Cobra]]
*[[Common Intermediate Language#Example|Common Intermediate Language]]
*[[Crystal (programming language)#Hello World|Crystal]]
*[[Cython#Example|Cython]]
*[[Dart (programming language)#Example|Dart]]
*[[Darwin (programming language)#Example Code|Darwin]]
*[[Data General Nova#Hello world program|Data General Nova]]
*[[Deno (software)#Examples|Deno]]
*[[DOORS Extension Language#"Hello, World" example|DOORS Extension Language]]
*[[Easy Programming Language#Programming examples|Easy Programming Language]]
*[[El-76#Program sample|Эль-76]]
*[[Elixir (programming language)#Examples|Elixir]]
*[[Enyo (software)#Examples|Enyo]]
*[[Ezhil (programming language)#Hello world|எழில்]]
*[[F Sharp (programming language)#Examples|F#]]
*[[FastAPI#Example|FastAPI]]
*[[Fjölnir (programming language)#Code examples|Fjölnir]]
*[[Flask (web framework)#Example|Flask]]
*[[Flix (programming language)#Hello world|Flix]]
*[[Forth (programming language)#“Hello, World!”|Forth]]
*[[Fortran#"Hello, World!" example|FORTRAN]]
*[[Fortress (programming language)#Example: Hello world!|Fortress]]
*[[FreeBASIC#Example code|FreeBASIC]]
*[[Go (programming language)#Hello world|Go]]
*[[Godot (game engine)#GDScript|Godot]]
*[[Google Gadgets#Technology|Google Gadgets]]
*[[GNU Smalltalk#Examples|GNU Smalltalk]]
*[[Hack (programming language)#Syntax and semantics|Hack]]
*[[Harbour (programming language)#Sample code|Harbour]]
*[[Haskell#Code examples|Haskell]]
*[[Hollywood (programming language)#Hello World program|Hollywood]]
*[[HTML#Markup|HTML]]
*[[HTML Application#Example|HTML Application]]
*[[IBM Open Class#Examples|IBM Open Class]]
*[[Idris (programming language)#Features|Idris]]
*[[INTERCAL#Hello, world|INTERCAL]]
*[[Internet Foundation Classes#Hello World|Internet Foundation Classes]]
*[[Io (programming language)#Examples|Io]]
*[[IRAF#IRAF specific languages|IRAF]]
*[[J (programming language)#Examples|J]]
*[[JADE (programming language)#Hello World!|JADE]]
*[[Jam.py (web framework)#Example|Jam.py]]
*[[Java (programming language)#Examples|Java]]
*[[JavaFX Script#Syntax|JavaFX Script]]
*[[JavaScript#Simple examples|JavaScript]]
*[[JFace#Example|JFace]]
*[[K (programming language)#Examples|K]]
*[[KERNAL#Example|KERNAL]]
*[[Kivy (framework)#Code example|Kivy]]
*[[K-Meleon#Customization|K-Meleon]]
*[[LibreLogo#Hello world example|LibreLogo]]
*[[Lisp (programming language)#Examples|Lisp]]
*[[LiveScript (programming language)#Syntax|LiveScript]]
*[[LOLCODE#Language structure and examples|LOLCODE]]
*[[Lua (programming language)#Syntax|Lua]]
*[[MAC/65#MAC/65 ToolKit|MAC/65]]
*[[MACRO-10#Programming examples|MACRO-10]]
*[[MACRO-11#Programming example|MACRO-11]]
*[[MAD (programming language)#"Hello, world" example|MAD]]
*[[Magik (programming language)#Hello World example|Magik]]
*[[Malbolge#Hello, World!|Malbolge]]
*[[MATLAB#"Hello, world!" example|MATLAB]]
*[[Mercury (programming language)#Examples|Mercury]]
*[[MicroPython]]
*[[Microsoft Small Basic#Language|Microsoft Small Basic]]
*[[mIRC scripting language#Code examples|mIRC scripting language]]
*[[MMIX#Architecture|MMIX]]
*[[Mockito#Example|Mockito]]
*[[Modula-3#Syntax|Modula-3]]
*[[Mojo (programming language)#Programming examples|Mojo]]
*[[Monad (functional programming)#IO monad (Haskell)|Monad]]
*[[MUMPS#Hello, World! example|MUMPS]]
*[[MXML#Example source code|MXML]]
*[[Nemerle#Hello, World!|Nemerle]]
*[[Newspeak (programming language)#"Hello World" example|Newspeak]]
*[[Nim (programming language)#Hello world|Nim]]
*[[NWScript#Hello world|NWScript]]
*[[OmniMark#Example code|OmniMark]]
*[[Opa (programming language)#Hello world|Opa]]
*[[OpenEdge Advanced Business Language#Hello World|OpenEdge Advanced Business Language]]
*[[Open Programming Language#Examples|Open Programming Language]]
*[[Oriel (scripting language)#Examples|Oriel]]
*[[ParaSail (programming language)#Examples|ParaSail]]
*[[Parrot assembly language]]
*[[Parrot intermediate representation#Example|Parrot intermediate representation]]
*[[Pascal (programming language)#Language constructs|Pascal]]
*[[PCASTL#Hello world|PCASTL]]
*[[PDP-8#String output|PDP-8]]
*[[Perl language structure#Basic syntax|Perl]]
*[[Perl module#Examples|Perl module]]
*[[PHP#Syntax|PHP]]
*[[Plack (software)#Examples|Plack]]
*[[Plua#Sample code, Plua 1|Plua]]
*[[Plus (programming language)#"Hello, world" example|Plus]]
*[[PostScript#"Hello world"|PostScript]]
*[[PowerBASIC#Hello world|PowerBASIC]]
*[[Prolog#Hello World|Prolog]]
*[[PureBasic#Hello World example|PureBasic]]
*[[Pure Data#Code examples|Pure Data]]
*[[PureScript#Examples|PureScript]]
*[[PyGTK#Syntax|PyGTK]]
*[[Python (programming language)#Code examples|Python]]
*[[Q (programming language from Kx Systems)#Examples|Q]]
*[[QB64#Syntax|QB64]]
*[[QuickBASIC#Syntax example|QuickBASIC]]
*[[R (programming language)#Hello, World!|R]]
*[[Rack (web server interface)#Example application|Rack]]
*[[Racket (programming language)#Code examples|Racket]]
*[[Raku (programming language)#Hello world|Raku]]
*[[React (software)#Basic usage|React]]
*[[React Native#Hello World example|React Native]]
*[[Rebol#Design|Rebol]]
*[[Red (programming language)#Hello World!|Red]]
*[[Refal#Basics|Refal]]
*[[RGtk2#Syntax|RGtk2]]
*[[Ring (programming language)#Hello World program|Ring]]
*[[Robot Framework#Examples|Robot Framework]]
*[[Ruby syntax#Interactive sessions|Ruby]]
*[[Rust (programming language)#Hello World program|Rust]]
*[[SAKO (programming language)#"Hello, world" example|SAKO]]
*[[SARL (programming language)#Hello, World!|SARL]]
*[[Scala (programming language)#"Hello World" example|Scala]]
*[[Scilab#Syntax|Scilab]]
*[[Scratch (programming language)|Scratch]]
*[[Sed#Hello, world! example|Sed]]
*[[Self (programming language)#Basic syntax|Self]]
*[[Shakespeare Programming Language#Example code|Shakespeare]]
*[[Simula#Classic Hello world|Simula]]
*[[SmallBASIC#Syntax|SmallBASIC]]
*[[Smalltalk#Hello World example|Smalltalk]]
*[[Standard ML#Hello, world!|Standard ML]]
*[[Standard Widget Toolkit#Programming|Standard Widget Toolkit]]
*[[Swift (programming language)#Basic Syntax|Swift]]
*[[TeX#How it is run|TeX]]
*[[TI-990#Assembly Language Programming Example|TI-990]]
*[[TI-BASIC#Hello world|TI‑BASIC]]
*[[Tornado (web server)#Example|Tornado]]
*[[Turbo Pascal#Syntax|Turbo Pascal]]
*[[Turing (programming language)#Syntax|Turing]]
*[[UCBLogo#Syntax|UCBLogo]]
*[[UEFI#Applications development|UEFI]]
*[[Umple#Examples|Umple]]
*[[Unlambda#Basic principles|Unlambda]]
*[[V (programming language)#Hello world|V]]
*[[Vala (programming language)#Hello world|Vala]]
*[[Visual Basic (.NET)#Hello World!|Visual Basic]]
*[[Visual IRC#Code examples|Visual IRC]]
*[[web2py]]
*[[Web Server Gateway Interface#Example application|Web Server Gateway Interface]]
*[[Whitespace (programming language)#Sample code|Whitespace]]
*[[Wt (web toolkit)#Code example|Wt]]
*[[XBLite#Sample Code|XBLite]]
*[[Xojo#Example code|Xojo]]
*[[Zig (programming language)#Hello World|Zig]]}}
 
===See [[TeX]] =also==
 
{{Portal|Computer programming}}
\font\HW=cmr10 scaled 3000
*[[99 Bottles of Beer#References in computer science|"99 Bottles of Beer" as used in computer science]]
\leftline{\HW Hello world}
*{{slink|Bad Apple!!|Use_of_video_as_a_graphical_and_audio_test}} (graphic equivalent to "Hello, World!" for old hardware)
\bye
*[[Foobar]]
*[[Java BluePrints|Java Pet Store]]
*[[Just another Perl hacker]]
*[[Outline of computer science]]
*[[TPK algorithm]]
*[[Computer programming|Coding]]
 
== See also References==
{{Reflist|30}}
 
==External links==
* [[Hello world program in esoteric languages]]
{{Commons category}}
* [[Just another Perl hacker]]
{{Wikibooks|Computer Programming|Hello world}}
* [[List of basic computer science topics]]
{{Wikiversity}}
*[https://helloworldcollection.de The Hello World Collection]
*{{cite web |title=Hello world/Text |url=https://rosettacode.org/wiki/Hello_world/Text |work=[[Rosetta Code]] |date=23 May 2024}}
*{{cite web |title=GitHub – leachim6/hello-world: Hello world in every computer language. Thanks to everyone who contributes to this, make sure to see CONTRIBUTING.md for contribution instructions! |website=[[GitHub]] |date=30 October 2021|url=https://github.com/leachim6/hello-world}}
*{{cite web |title=Unsung Heroes of IT: Part One: Brian Kernighan |url=http://theunsungheroesofit.com/helloworld/ |work=TheUnsungHeroesOfIT.com |access-date=23 August 2014 |archive-url=https://web.archive.org/web/20160326193543/http://theunsungheroesofit.com/helloworld/ |archive-date=26 March 2016 |url-status=dead}}
 
{{Standard test item}}
== External links ==
 
{{DEFAULTSORT:Hello World Program}}
* [http://www.latech.edu/~acm/HelloWorld.shtml ACM "Hello World" project]
[[Category:Test items in computer languages]]
* [http://www.gnu.org/fun/jokes/helloworld.html ''How the way people code "Hello World" varies depending on their age and job'' - GNU Humor Collection]
[[Category:Computer programming folklore]]
* [http://www.cuillin.demon.co.uk/nazz/trivia/hw/hello_world.html A Collection of Hello World Programs]
[[Category:Articles with example code]]
[[Category:Articles with quotation marks in the title]]