Misplaced Pages

"Hello, World!" program: Difference between revisions

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Browse history interactively← Previous editContent deleted Content addedVisualWikitext
Revision as of 07:30, 9 February 2003 editEjrh (talk | contribs)180 editsm Alphabetic order← Previous edit Latest revision as of 19:17, 24 December 2024 edit undoKnitsey (talk | contribs)Extended confirmed users, Pending changes reviewers, Rollbackers27,497 editsm Reverted 3 edits by BetterToStopYapping (talk) to last revision by 174.202.6.16Tags: Twinkle Undo Mobile edit Mobile web edit Advanced mobile edit 
Line 1: Line 1:
{{Short description|Traditional first example of a computer programming language}}
]
{{Redirect-multi|2|Hello, World|Helloworld|other uses|Hello World (disambiguation)}}
A '''"hello world" program''' is a ] that simply prints out "Hello, world!".
{{Use dmy dates|date=March 2022}}
A '''"Hello, World!" program''' is usually a simple ] that emits (or displays) to the screen (often the ]) a message similar to "Hello, World!". A small piece of code in most ]s, this program is used to illustrate a language's basic ]. 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 such a program can also be used as a ] to ensure that the ] intended to ] or run ] is correctly installed, and that its operator understands how to use it.


==History==
This is a traditional first program to write when learning a new ], and can be a useful ] to make sure that a language's ], ], and ] are correctly installed.
] and signed by ] (1978)]]


While small test programs have existed since the development of programmable ]s, the tradition of using the phrase "Hello, World!" as a test message was influenced by an example program in the 1978 book '']'',<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=] |location=] |isbn=0-13-110163-3 |url-access=registration |url=https://archive.org/details/cprogramminglang00kern}}</ref> with likely earlier use in ]. The example program from the book prints {{samp|"hello, world"}}, and was inherited from a 1974 ] internal memorandum by ], ''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>
While minimal test programs such as this existed since the development of programmable computers, the tradition of using "Hello, world!" as the test message was probably started by its use as an example program in the book ], by ] and ].
<!--
**********
Editor's Note: We do not need to have an example for every programming language ever created. Misplaced Pages 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!
Here are some examples in different languages:
**********
-->
<!-- ADD NO NEWLINE, HEADER FILE, 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( )}} ] defines where the program ]. The function body consists of a single ], a call to the {{samp|printf()}} function, which stands for "''print f''ormatted"; it outputs to the ] whatever is passed to it as the ], in this case the ] {{samp|"hello, world"}}.
=== Console ===


The C-language version was preceded by Kernighan's own 1972 ''A Tutorial Introduction to the Language ]'',<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:
* ]
with Ada.Text_Io; use Ada.Text_Io;
procedure Hello is
begin
Put_Line ("Hello, world!");
end Hello;


<syntaxhighlight lang="text">
* ] (] CPU, ], TASM syntax)
main( ) {
MODEL SMALL
IDEAL extrn a, b, c;
putchar(a); putchar(b); putchar(c); putchar('!*n');
STACK 100H
}
a 'hell';
b 'o, w';
c 'orld';
</syntaxhighlight>


The program above prints ''{{samp|hello, world!}}'' on the terminal, including a ] character. The phrase is divided into multiple variables because in B a character constant is limited to four ] 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.
DATASEG
HW DB 'Hello, world!$'


The ] reports that "hello, world" instead originated in 1967 with the language ].<ref>{{cite web |url=http://www.catb.org/jargon/html/B/BCPL.html |title=BCPL |work=] |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 ] of New York radio disc jockey ] 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>
CODESEG
MOV AX, @data
MOV DS, AX
MOV DX, OFFSET HW
MOV AH, 09H
INT 21H
MOV AX, 4C00H
INT 21H
END


==Variations==
* ]
] as a ]]]
10 PRINT "Hello, world!"
20 END


"Hello, World!" programs vary in complexity between different languages. In some languages, particularly ]s, the "Hello, World!" program can be written as one statement, while in others (more so many ]) many more statements can be required. For example, in ], 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 ]<ref>{{cite web |url=https://en.wikibooks.org/C%2B%2B_Programming/Examples/Hello_world |title=C++ Programming/Examples/Hello world |publisher=] |access-date=16 March 2022 |archive-date=28 March 2022 |archive-url=https://web.archive.org/web/20220328130457/https://en.wikibooks.org/C%2B%2B_Programming/Examples/Hello_world |url-status=live}}</ref> requires the import of the ] (I/O) ], the manual declaration of an ], and the explicit instruction that the output string should be sent to the ] stream.
* ]
GET "LIBHDR"


] (CNC) machining test in ] (Perspex).]]
LET START () BE
The phrase "Hello, World!" has seen various deviations in casing and punctuation, such as 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 ]s may have to print a slightly modified string. For example, the first non-trivial ] program printed "HEllO WORld", this having been determined to be ].<ref>{{cite web|title=Malbolge|url=https://esolangs.org/Malbolge|website=Esolang|publisher=esolangs-wiki|access-date=28 October 2016|archive-date=27 August 2022|archive-url=https://web.archive.org/web/20220827150419/https://esolangs.org/Malbolge|url-status=live}}</ref>{{Unreliable source inline |date=November 2023}} Other human languages have been used as the output; for example, a tutorial for the ] emitted both English and Chinese or Japanese characters, demonstrating the language's built-in ] support.<ref> {{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 ], whose management system automatically inserts a "Hello, World" program when creating new projects.
$(
WRITES ("Hello, world!*N")
$)


] with a moving strip of ]s (LEDs)]]
* ]
++++++++++>++.>+.+++++++..+++.>++.<<
+++++++++++++++.>.+++.------.--------.>+.>.


Some languages change the function of the "Hello, World!" program while maintaining the spirit of demonstrating a simple example. ] languages, such as ], ], and ], tend to substitute a ] 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 ]. Languages otherwise able to print "Hello, World!" (], ], ]) may also be used in ]s, where text output is either difficult (requiring added components or communication with another computer) or nonexistent. For devices such as ]s, ]s, and ]s (CPLDs), "Hello, World!" may thus be substituted with a blinking ] (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>
* ]
#include <stdio.h>


The ] and ] ]s provide the "Hello, World!" program through their ] systems, which can be invoked with the command ''{{samp|hello}}''. It serves as a ] and a simple example of installing a software package. For developers, it provides an example of creating a ] package, either traditionally or using ''debhelper'', and the version of {{samp|hello}} used, ], serves as an example of writing a ] 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>
int main(void) {
printf("Hello, world!\n");
return 0;
}


Variations of the "Hello, World!" program that produce a ] (as opposed to text output) have also been shown. ] demonstrated a "Hello, World!" program in ] based on ],<ref>{{cite news|last=Jolif|first=Christophe|title=Bringing SVG Power to Java Applications|newspaper=Sun Developer Network|date=January 2003}}</ref> and the ] programming language features a spinning Earth "Hello, World!" using ].<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 ] 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>
* ]
#include <iostream>
using namespace std;


==Time to Hello World==
int main() {
cout << "Hello, world!" << endl;
}


"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=] |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 ] (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 ] {{see above|{{slink||Variations}}, above}}.
* ]
class HelloWorldApp {
public static void Main() {
System.Console.WriteLine("Hello, world!");
}
}


The concept has been extended beyond programming languages to ], 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>
* ]
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.


==Misplaced Pages articles containing "Hello, World!" programs==
ENVIRONMENT DIVISION.


{{flatlist|
DATA DIVISION.
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
*]
}}


==See also==
PROCEDURE DIVISION.
DISPLAY "Hello, world!".
STOP RUN.


{{Portal|Computer programming}}
* ]
*]
(format t "Hello world!~%")
*{{slink|Bad Apple!!|Use as a graphical and audio test}} (graphic equivalent to "Hello, World!" for old hardware)
*]
*]
*]
*]
*]


==References==
* ] batch
{{Reflist}}
@echo off
echo "Hello, world!"


==External links==
* ]
{{Commons category|Hello World}}
class HELLO_WORLD
{{Wikibooks|Computer Programming|Hello world}}
*
*{{cite web |title=Hello world/Text |url=https://rosettacode.org/Hello_world/Text |work=] |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=] |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}}
creation
make
feature
make is
local
io:BASIC_IO
do
!!io
io.put_string("%N Hello, world!")
end -- make
end -- class HELLO_WORLD


{{DEFAULTSORT:Hello World Program}}
* ]
]
."Hello, world!"
]

]
* ]
]
H

* ]
PLEASE DO ,1 <- #13
DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #112
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #238
DO ,1 SUB #7 <- #26
DO ,1 SUB #8 <- #248
DO ,1 SUB #9 <- #168
DO ,1 SUB #10 <- #24
DO ,1 SUB #11 <- #16
DO ,1 SUB #12 <- #158
DO ,1 SUB #13 <- #52
PLEASE READ OUT ,1
PLEASE GIVE UP

* ]
public class Hello {
public static void main(String args) {
System.out.println("Hello, world!");
}
}

* ]
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

* ]
program Hello;
begin
writeln('Hello, world!');
end.

* ]
#!/usr/local/bin/perl
print "Hello, world!\n";

* ]
<?php
print("Hello, world!");
?>

* ]
#!/usr/local/bin/pike
int main() {
write("Hello, world!\n");
return 0;
}

* ]
Test: procedure options(main);
declare My_String char(20) varying initialize('Hello, world!');
put skip list(My_String);
end Test;

* ]
#!/usr/local/bin/python
print "Hello, world!"

* ]
#!/usr/bin/ruby
print "Hello, world!"

* ]
(display "Hello, world!")
(newline)

* ] (requires at least one line of input)
sed -ne '1s/.*/Hello, world!/p'

* ]

Transcript show: 'Hello, world!'

* ]
#!/usr/local/bin/tcl
puts "Hello, world!"

* ]
put "Hello, world!"

* ]
#!/bin/sh
echo 'Hello, world!'

== Graphical User Interfaces ==

* ]
MsgBox "Hello, world!"

===X11===

using a program

xmessage 'Hello, world!'

using C++ and gtkmm 2

#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);
}

===Java===
import ].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);
}
}

===Java applet===
]s work in conjunction with ] 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===
] is a scripting language used in ] 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>

<a href="javascript:this.location()"
onclick="javascript:helloWorld();">Hello World Example</a>

:An easier method uses JavaScript implicitly, calling the reserved ''alert'' function. Cut and paste the following line inside the <BODY> .... </BODY> HTML tags.

<a href="#" onclick="alert('Hello World')">Hello World Example</a>

==External Link==
*.

See also: ]

*]

Latest revision as of 19:17, 24 December 2024

Traditional first example of a computer programming language "Hello, World" and "Helloworld" redirect here. For other uses, see Hello World (disambiguation).

A "Hello, World!" program is usually a simple computer program that emits (or displays) to the screen (often the console) a message similar to "Hello, World!". A small piece of code in most general-purpose programming languages, this program is used to illustrate a language's basic syntax. A program is often the first written by a student of a new programming language, but such a program can also be used as a sanity check to ensure that the computer software intended to compile or run source code is correctly installed, and that its operator understands how to use it.

History

"Hello, World!" program handwritten in the C language and signed by Brian Kernighan (1978)

While small test programs have existed since the development of programmable computers, 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, with likely earlier use in BCPL. The example program from the book prints "hello, world", and was inherited from a 1974 Bell Laboratories internal memorandum by Brian Kernighan, Programming in C: A Tutorial:

main( ) {
        printf("hello, world");
}

In the above example, the main( ) function defines where the program should start executing. The function body consists of a single statement, a call to the printf() function, which stands for "print formatted"; it outputs to the console whatever is passed to it as the parameter, in this case the string "hello, world".

The C-language version was preceded by Kernighan's own 1972 A Tutorial Introduction to the Language B, where the first known version of the program is found in an example used to illustrate external variables:

main( ) {
    extrn a, b, c;
    putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';

The program above prints 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 hi! on the terminal, and the phrase hello, world! was introduced as a slightly longer greeting that required several character constants for its expression.

The Jargon File reports that "hello, world" instead originated in 1967 with the language BCPL. 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 beginning in the 1950s.

Variations

A "Hello, World!" program running on Sony's PlayStation Portable as a proof of concept

"Hello, World!" programs vary in complexity between different languages. In some languages, particularly scripting languages, the "Hello, World!" program can be written as one statement, while in others (more so many low-level languages) many more statements can be required. For example, in Python, to print the string Hello, World! followed by a newline, one only needs to write print("Hello, World!"). In contrast, the equivalent code in C++ requires the import of the input/output (I/O) software library, the manual declaration of an entry point, and the explicit instruction that the output string should be sent to the standard output stream.

Computer numerical control (CNC) machining test in poly(methyl methacrylate) (Perspex).

The phrase "Hello, World!" has seen various deviations in casing and punctuation, such as 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 languages may have to print a slightly modified string. For example, the first non-trivial Malbolge program printed "HEllO WORld", this having been determined to be good enough. Other human languages have been used as the output; for example, a tutorial for the Go language emitted both English and Chinese or Japanese characters, demonstrating the language's built-in Unicode support. Another notable example is the Rust language, whose management system automatically inserts a "Hello, World" program when creating new projects.

A "Hello, World!" message being displayed through long-exposure light painting with a moving strip of light-emitting diodes (LEDs)

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, 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 effects. Languages otherwise able to print "Hello, World!" (assembly language, C, VHDL) may also be used in embedded systems, where text output is either difficult (requiring added components or communication with another computer) or nonexistent. For devices such as microcontrollers, field-programmable gate arrays, and complex programmable logic devices (CPLDs), "Hello, World!" may thus be substituted with a blinking light-emitting diode (LED), which demonstrates timing and interaction between components.

The Debian and Ubuntu Linux distributions provide the "Hello, World!" program through their software package manager systems, which can be invoked with the command 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 hello used, GNU Hello, serves as an example of writing a GNU program.

Variations of the "Hello, World!" program that produce a graphical output (as opposed to text output) have also been shown. Sun demonstrated a "Hello, World!" program in Java based on scalable vector graphics, and the XL programming language features a spinning Earth "Hello, World!" using 3D computer graphics. 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.

Time 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. 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 § Variations, above).

The concept has been extended beyond programming languages to 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.

Misplaced Pages articles containing "Hello, World!" programs

See also

References

  1. Langbridge, James A. (3 December 2013). Professional Embedded ARM Development. John Wiley & Sons. ISBN 9781118887820.
  2. Kernighan, Brian W.; Ritchie, Dennis M. (1978). The C Programming Language (1st ed.). Englewood Cliffs, New Jersey: Prentice Hall. ISBN 0-13-110163-3.
  3. Kernighan, Brian (1974). "Programming in C: A Tutorial" (PDF). Bell Labs. Archived (PDF) from the original on 22 March 2022. Retrieved 9 January 2019.
  4. Johnson, S. C.; Kernighan, B. W. The Programming Language B. Bell Labs. Archived from the original on 11 June 2015. Retrieved 8 August 2024.
  5. "BCPL". Jargon File. Archived from the original on 3 April 2018. Retrieved 21 April 2013.
  6. "William B. Williams, Radio Personality, Dies". The New York Times. 4 August 1986.
  7. "C++ Programming/Examples/Hello world". Wikibooks. Archived from the original on 28 March 2022. Retrieved 16 March 2022.
  8. "Malbolge". Esolang. esolangs-wiki. Archived from the original on 27 August 2022. Retrieved 28 October 2016.
  9. A Tutorial for the Go Programming Language. Archived 26 July 2010 at the Wayback Machine The Go Programming Language. Retrieved 26 July 2011.
  10. Silva, Mike (11 September 2013). "Introduction to Microcontrollers - Hello World". EmbeddedRelated.com. Archived from the original on 22 May 2015. Retrieved 19 May 2015.
  11. George, Ligo (8 May 2013). "Blinking LED using Atmega32 Microcontroller and Atmel Studio". electroSome. Archived from the original on 5 November 2014. Retrieved 19 May 2015.
  12. PT, Ranjeeth. "2. AVR Microcontrollers in Linux HOWTO". The Linux Documentation Project. Archived from the original on 2 May 2015. Retrieved 19 May 2015.
  13. Andersson, Sven-Åke (2 April 2012). "3.2 The first Altera FPGA design". Raidió Teilifís Éireann. Archived from the original on 21 May 2015. Retrieved 19 May 2015.
  14. Fabio, Adam (6 April 2014). "CPLD Tutorial: Learn programmable logic the easy way". Hackaday. Archived from the original on 20 May 2015. Retrieved 19 May 2015.
  15. "Hello". GNU Project. Free Software Foundation. Archived from the original on 29 May 2014. Retrieved 7 July 2017.
  16. Jolif, Christophe (January 2003). "Bringing SVG Power to Java Applications". Sun Developer Network.
  17. de Dinechin, Christophe (24 July 2010). "Hello world!". Grenouille Bouillie.
  18. "Teaching the Nintendo Generation to Program" (PDF). bfoit.org. Archived from the original (PDF) on 5 May 2016. Retrieved 27 December 2015.
  19. O'Dwyer, Arthur (September 2017). Mastering the C++17 STL: Make full use of the standard library components in C++17. Packt Publishing Ltd. p. 251. ISBN 978-1-78728-823-2. Retrieved 4 December 2019.
  20. Wiegers, Harold (28 June 2018). "The importance of "Time to First Hello, World!" an efficient API program". Archived from the original on 19 February 2020. Retrieved 19 February 2020.
  21. Jin, Brenda; Sahni, Saurabh; Shevat, Amir (29 August 2018). Designing Web APIs: Building APIs That Developers Love. O'Reilly Media. ISBN 9781492026877. Retrieved 19 February 2020.

External links

Standard test items
Artificial intelligence
Television (test card)
Computer languages
Data compression
3D computer graphics
Machine learning
Typography (filler text)
Other
Categories: