List of Hello world program examples

The Hello world program is a simple computer program that prints (or displays) the string "Hello, world!" or some variant thereof. It is typically one of the simplest programs possible in almost all computer languages, and often used as first program to demonstrate a programming language. As such it can be used to quickly compare syntax differences between various programming languages. The following is a list of canonical hello world programs in 91 programming languages.

A

ABAP

REPORT HELLOWORLD.
WRITE 'Hello World'.

ActionScript 3.0

trace ("Hello, world!");

or (if you want it to show on the stage)

package com.example
{
    import flash.text.TextField;
    import flash.display.Sprite;

    public class Greeter extends Sprite
    {
        public function Greeter()
        {
            var txtHello:TextField = new TextField();
            txtHello.text = "Hello, world!";
            addChild(txtHello);
        }
    }
}

Ada

with Ada.Text_IO;

procedure Hello_World is
 use Ada.Text_IO;
begin
    Put_Line("Hello, world!");
end;

Adventure Game Studio Script

Display("Hello, world!");

or (if you want to draw it to the background surface)

DrawingSurface *surface = Room.GetDrawingSurfaceForBackground();
surface.DrawString(0, 100, Game.NormalFont, "Hello, world!");
surface.Release();

ALGOL

BEGIN
   DISPLAY ("Hello, world!");
END.

ALGOL 68

print("Hello, world!")

Amiga E

PROC main()
   WriteF('Hello, world!')
ENDPROC

APL

⎕←'Hello world!'

Assembly Language — MOS Technology 6502, CBM KERNEL


 A_CR  = $0D              ;carriage return
 BSOUT = $FFD2            ;kernel ROM sub, write to current output device
 ;
         LDX #$00         ;starting index in .X register
 ; 
 LOOP    LDA MSG,X        ;read message text
         BEQ LOOPEND      ;end of text
 ;
         JSR BSOUT        ;output char
         INX
         BNE LOOP         ;repeat
 ;
 LOOPEND RTS              ;return from subroutine
 ;
 MSG     .BYT 'Hello, world!',A_CR,$00


Assembly language – x86 DOS

; The output file is 22 bytes.
; 14 bytes are taken by "Hello, world!$
;
; Written by Stewart Moss - May 2006
; This is a .COM file so the CS and DS are in the same segment
;
; I assembled and linked using TASM
;
; tasm /m3 /zn /q hello.asm
; tlink /t hello.obj

.model tiny
.code
org 100h

main  proc

      mov    ah,9                       ; Display String Service
      mov    dx,offset hello_message    ; Offset of message (Segment DS is the right segment in .COM files)
      int    21h                        ; call DOS int 21h service to display message at ptr ds:dx

      retn                              ; returns to address 0000 off the stack 
                                        ; which points to bytes which make int 20h (exit program)

hello_message db 'Hello, world!$'

main  endp
end   main


Assembly language – x86 Windows 32-bit

; This program displays "Hello, World!" in a windows messagebox and then quits.
;
; Written by Stewart Moss - May 2006
;
; Assemble using TASM 5.0 and TLINK32
;
; The output EXE is standard 4096 bytes long.
; It is possible to produce really small windows PE exe files, but that
; is outside of the scope of this demo.
         
         .486p
         .model  flat,STDCALL
include  win32.inc

extrn            MessageBoxA:PROC
extrn            ExitProcess:PROC

.data

HelloWorld db "Hello, world!",0
msgTitle db "Hello world program",0

.code
Start:
         push    MB_ICONQUESTION + MB_APPLMODAL + MB_OK
         push    offset msgTitle
         push    offset HelloWorld
         push    0
         call    MessageBoxA
         
         push 0
         call ExitProcess
ends
end Start

Assembly language – x86-64 Linux, AT&T syntax

    .section    .rodata
string:
    .ascii "Hello, world!\n\0"
length:
    .quad . -string     #Dot = 'here'

    .section    .text
    .globl _start       #Make entry point visible to linker
_start:
    movq $4, %rax       #4=write
    movq $1, %rbx       #1=stdout
    movq $string, %rcx
    movq length, %rdx
    int $0x80       #Call Operating System
    movq %rax, %rbx     #Make program return syscall exit status
    movq $1, %rax       #1=exit
    int $0x80       #Call System Again

Assembly language – Z80


 EQU CR    = #0D          ; carriage return
 EQU PROUT = #xxxx        ; character output routine
 ;
         LD  HL,MSG       ; Point to message
 ; 
 PRLOOP  LD  A,(HL)       ; read byte from message
         AND A            ; set zero flag from byte read
         RET Z            ; end of text if zero
         JSR PROUT        ; output char
         INC HL           ; point to next char
         JR  PRLOOP       ; repeat
 ;
 MSG     DB  "Hello, world!",CR,00
 ;

AutoHotkey

Msgbox, Hello, world!
Traytip,, Hello, world!

AutoIt

Msgbox(64, "", "Hello, world!")

AWK

BEGIN { print "Hello, world!" }

B

BASIC

PRINT "Hello, world!"

Batch File

@echo Hello, world!

BCPL

GET "LIBHDR"
LET START() BE
$(
  WRITES("Hello, world!*N")
$)

brainfuck

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'

C

C

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("Hello, world!\n");

    return 0;
}

C++

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}

C#

using System;
class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello, world!");
        Console.ReadKey(true);
    }
}

Casio BASIC

"HELLO, WORLD!"

Common Intermediate Language

.assembly Hello {}
.assembly extern mscorlib {}
.method static void Main()
{
    .entrypoint
    .maxstack 1
    ldstr "Hello, world!"
    call void [mscorlib]System.Console::WriteLine(string)
    call string[mscorlib]System.Console::ReadKey(true)
    pop
    ret
}

ColdFusion Markup Language (CFML)

CF Script:


    variables.greeting = "Hello, world!";
    WriteOutput( variables.greeting );

CFML Tags:

<cfset variables.greeting = "Hello, world!">
<cfoutput>#variables.greeting#</cfoutput>

Clojure

Console version:

(println "Hello, world!")

GUI version:

(javax.swing.JOptionPane/showMessageDialog nil "Hello, world!")

COBOL

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO-WORLD.
       PROCEDURE DIVISION.
           DISPLAY 'Hello, world!'.
           STOP RUN.

D

D

import std.stdio;

void main()
{
  writeln("Hello, world!");
}

Dart

main()
{
  print('Hello, world!');
}

DCL

WRITE SYS$OUTPUT "Hello, world!"

Delphi

{$APPTYPE CONSOLE}
begin
  Writeln('Hello, world!');
end.

E

Erlang

io:format("~s~n", ["Hello, world!"])

F

F#

printfn "Hello, world!"

Falcon

 printl( "Hello, world!" )

or

 > "Hello, world!"

Forth

." Hello, world! "

Fortran

(Fortran 95 and later)

program hello
    write (*,*) 'Hello, world!'
end program hello

(Fortran 90 )

program hello
   print *, 'Hello, world!'
end program hello

OR (FORTRAN 77 and prior)

       PROGRAM HELLO
       PRINT *, 'Hello, world!'
       END

G

Game Maker Language

str='Hello, world!'
//Using the show_message() function:
show_message(str);
//Using the draw_text() function:
draw_text(0,0,str);

Go

package main

import "fmt"

func main() {
   fmt.Println("Hello, world!")
}

Groovy

println "Hello, world!"

H

Haskell

main = putStrLn "Hello, world!"

HOP

(define-service (hello-world)
  (<HTML>
     (<HEAD>
    (<TITLE> "Hello, world!"))
     (<BODY>
    "Hello, world!")))

HTML

<!DOCTYPE html>
<html>
<body>
Hello, world!
</body>
</html>

I

IDL

print, "Hello, world!"
end

Io

 "Hello, world!" println

ISLISP

(format (standard-output) "Hello, world!")

J

J

  'Hello, world!'

Java

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

JavaScript

To write to an HTML document:

document.write('Hello, world!');

To display an alert dialog box:

alert('Hello, world!');

To write to a console/debugging log:

console.log('Hello, world!');

Using Mozilla's Rhino:

print('Hello, world!');

Using Windows Script Host:

WScript.Echo("Hello, world!");

K

Kotlin

package hello

fun main(args : Array<String>) {
  println("Hello, world!")
}

L

Lisp

(princ "Hello, world!")

LScript (LSL)

default
{
    state_entry()
    {
        llSay(0, "Hello, World!");
    }
}
print [Hello, world!]

Lua

print("Hello, World!")

M

M4

Hello, world!

Malbolge

('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>

Mathematica

Print["Hello, world!"]

Maple

print(`Hello, world!`);

MATLAB

disp('Hello, world!')

Medved

Medved-Rict(Veta(Kratka(!ZubniKaz(OTEVRITPUSU<Hello, world!>ZAVRITPUSU)))) pak Medved-Sednout

Medved++

import Medved.*;
import Les.zimnispanek;
public: declare - string helloWorld = "Hello, World!";
startFunction HelloWorld(){
MedvedVzbudit();
performAction - Medved.zarvat(helloWorld);
}
function MedvedVzbudit(){
endAction - Les.zimnispanek;
performAction - Medved.vzbuditse;
performAction - Medved.cekat(HelloWorld);
performAction - Medved.sednout;
performAction - Medved.cekat(5s);
performAction - Medved.spat;
startAction - Les.zimnispanek;
}

Medved RSS Edition (Rohlik Se Salamem)

cntM _ po
    0 S &s1 <Hello, world!>
0

mIRC Script

echo -a Hello, world!

MUMPS

main()
 write "Hello, world!"
 quit

O

Oberon

MODULE Hello;
   IMPORT Out;
BEGIN
   Out.String("Hello, world!");
   Out.Ln
END Hello.

Obix

system.console.write_line ( "Hello, world!" )

Objective-C

#import <stdio.h>
int main(void)
{
    printf("Hello, world!\n");
    return 0;
}

Otherwise (by gcc on pre-OpenStep/Apple Object based runtime):

#import <stdio.h>
#import <objc/Object.h>
@interface Hello: Object
- (void) say;
@end
@implementation Hello
- (void) say {
  printf("Hello, world!\n");
}
@end
int main() {
  Hello *hello = [Hello new];
  [hello say];
  [hello free];
  return 0;
}

Pre-Modern (post-1994 OpenStep based Foundation APIs:

@interface Hello:NSObject
- (void) say;
@end
@implementation Hello
- (void) say {
   NSLog(@"Hello, world!");
}
@end
int main(int argc, char *argv[])
{
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];
    Hello *hello = [Hello new];
    [hello say];
    [hello release];
    [p release];
    return 0;
}

Modern (llvm, ARC memory management):

@interface Hello:NSObject
- (void) say;
@end
@implementation Hello
- (void) say {
   NSLog(@"Hello, world!");
}
@end
int main(int argc, char *argv[])
{
    @autoreleasepool {;
        [[Hello new] say];
    }
    return 0;
}

OCaml

 print_endline "Hello, world!"

Opa

A "hello world" web server:

Server.start(Server.http, 
    { title: "Hello, world!", 
      page: function() { <>Hello, world!</> } })

Oriel

MessageBox(OK, 1, INFORMATION, "Hello, world!", "Oriel Says Hello", ResponseValue)

P

Pascal

program HelloWorld;
uses crt;

begin
  WriteLn('Hello, world!');
end.

Pawn

main()
{
    print("Hello, world.");
}

Perl 5

print "Hello, world!";

Or

use v5.10;
say 'Hello, world!';

PHP

<?php echo 'Hello, world!' ?>

or

<?php print 'Hello, world' ?>

or

<?= 'Hello, world!' ?>

PL/SQL

SET SERVEROUTPUT ON;
BEGIN
    DBMS_OUTPUT.PUT_LINE('Hello, world!');
END;

PowerShell

Write-Host "Hello, world!"

Prolog

main :- write('Hello, world!'), nl.

Python 2

print "Hello, world!"

Python 3

print("Hello, world!")

Pythonect

"Hello, world!" -> print

R

R

cat('Hello, world!\n')

Racket

Trivial "hello world" program:


"Hello, world!"

Running this program produces "Hello, World!". More direct version:

#lang racket
(display "Hello, world!")

A "hello world" web server using Racket's web-server/insta language:

 
#lang web-server/insta
(define (start request) (response/xexpr '(html (body "Hello, world"))))}

REXX

say Hello, world!

RPL

<< "Hello, world!" MSGBOX >>

RTL/2

TITLE Hello, world!;
LET NL=10;
EXT PROC(REF ARRAY BYTE) TWRT;
ENT PROC INT RRJOB();
    TWRT("Hello, world!#NL#");
    RETURN(1);
ENDPROC;

Ruby

puts "Hello, world!"

Rust

fn main() {
  io::println("Hello, world!");
}

S

S-APL

{sapl:I sapl:do java:ubiware.shared.PrintBehavior} sapl:configuredAs {p:print sapl:is "Hello, world!"} .

Scala

object HelloWorld extends App {
  println("Hello, world!")
}

Scheme

(display "Hello, world!")

Shell

echo Hello, world!

Simula

Begin
   OutText ("Hello, world!");
   Outimage;
End;

Smalltalk

Transcript show: 'Hello, world!'.

SNOBOL

  OUTPUT = 'Hello, world!'
END

Speakeasy

As an interactive statement :

"Hello, world!"

As a program :

program hello
   "Hello, world!"
end

SQL

SELECT 'Hello, world!' FROM DUMMY; -- DUMMY is a standard table in SAP HANA.
SELECT 'Hello, world!' FROM DUAL; -- DUAL is a standard table in Oracle.
SELECT 'Hello, world!' -- This will work in SQL Server.

Smalltalk

Transcript show: 'Hello, world!'.

Stata

display "Hello, world!"

T

Tcl

puts "Hello, world!"

TI-BASIC

Disp "Hello, world!"

U

UnrealScript

Log("Hello, world!");

V

Vala

void main ()
{
    print ("Hello, world!\n");
}

Visual Basic

 MsgBox "Hello, world!"

Visual Basic .NET

Module Module1
    Sub Main() 
        Console.WriteLine("Hello, world!")
    End Sub
End Module
'non-console example:
Class Form1
    Public Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load()
        MsgBox("Hello, world!")
    End Sub
End Class

W

Whitespace

This example shows the program with syntax highlighting. Without highlighting, it would appear to be blank space.
S S S T S S T S S S L T L S S S S S T T S S T S T L T L S S S S S T T S T T S S L T L S S S S S T T S T T S S L T L S S S S S T T S T T T T L T L S S S S S T S T T S S L T L S S S S S T S S S S S L T L S S S S S T T T S T T T L T L S S S S S T T S T T T T L T L S S S S S T T T S S T S L T L S S S S S T T S T T S S L T L S S S S S T T S S T S S L T L S S S S S T S S S S T L T L S S L L L

de:Liste von Hallo-Welt-Programmen/Höhere Programmiersprachen es:Anexo:Ejemplos de implementación del «Hola mundo» fr:Liste de programme Hello world ja:Hello worldプログラムの一覧 nl:Hello_world_(programma) zh:Hello World程序样例