THE HELLO WORLD COLLECTION

"Hello World" is the first program one usually writes when learning a new programming language. This collection includes 127 Hello World programs in many more-or-less well known languages.

The list was compiled by Wolfram Rösler with help from many following people, most of them from MausNet. Click here for a list of all contributors.

Last update: Jul 18, 2002.

Please send all comments and contributions to wolfram@roesler-ac.de.


INDEX

ABAP4  Ada  Algol-60  Algol-68  APL  AppleScript  Asm-6502  Asm-68000-Amiga  Asm-68000-ST  Asm-68008  Asm-IBM-370  Asm-Intel  Asm-PDP11  Asm-Z80-Console  ASP-JavaScript  ASP-VBS  awk 
B  Basic  BCPL  Beta  BrainFxxx  BS2000 
C++  C++-ISO  C++-MFC  C++-Qt  C-Ansi  C-Curses  C-GEM  C-Intuition  C-K+R  C-Objective  C-PresManager  C-Sharp  C-Windows  C-X11-Athena  CAML-Light  Cobol 
dBase  Dylan 
Eiffel  Elan  Erlang  Euphoria 
Focal  Forth  Fortran  Fortran77  FortranIV 
Gofer  GynkoSoft 
Haskell  HP-41C  HP-48  HTML 
IBM-Exec  IBM-Exec2  ici  Icon  Informix-4GL  InstallScript  Intercal 
Java  Java-Mobile  Java-Server-Pages  Java-Servlet  JavaScript  JCL 
Limbo  Lisp  Logo 
MACRO10  Modula-2  MSDOS 
Natural  NewtonScript 
Oberon.oberon  Oberon.std  Occam  OPL.dialog  OPL.simple  OZ 
Pascal  Pascal-Windows  Perl  PHP  Pike  PL-SQL  PL1  Pocket  Postscript  Profan  Prolog  Python 
REALbasic  Rebol-view  Rexx  Rexx.simple  Rexx.window 
SAL  Sather  Scheme  Self  SenseTalk  Setl2  Shakespeare  Smalltalk.simple  Smalltalk.window  SML  Snobol  SPL  ST-Guide 
Tcl  TeX  Texinfo  TI-59  TI-8x  Tk  TSO-CLIST  Turing 
Unix 
Vatical  VAX-Macro  VisualBasic  VMS 
XHTML 

ABAP4

REPORT ZHB00001.
*Hello world in ABAP/4 *
WRITE: 'Hello world'.
Back to index
Ada

-- Hello World in Ada

with TEXT_IO; use TEXT_IO;
procedure Hello is
  pragma MAIN;
begin
  PUT ("Hello World!");
end Hallo;
Back to index
Algol-60

'BEGIN'
   'COMMENT' Hello World in Algol 60;
    OUTPUT(4,'(''('Hello World!')',/')')
'END'
Back to index
Algol-68

( # Hello World in Algol 68 # print(("Hello World!",newline)))
Back to index
APL

Hello World for APL. "[]" and "<-" are a single character in APL.
Comment character is Alt-comma.

[]<-'Hello World!'
Back to index
AppleScript

Hello World in AppleScript

tell application "Finder"
    display dialog "Hello World"
end tell
Back to index
Asm-6502

; Hello World for 6502 Assembler (C64)

ldy #0
beq in
loop:
jsr $ffd2
iny
in:
lda hello,y
bne loop
rts
hello: .tx "Hello World!"
       .by 13,10,0
Back to index
Asm-68000-Amiga

; Hello World in 68000 Assembler for dos.library (Amiga)

        move.l  #DOS
        move.l  4.w,a6
        jsr     -$0198(a6)      ;OldOpenLibrary
        move.l  d0,a6
        beq.s   .Out
        move.l  #HelloWorld,d1

A)      moveq   #13,d2
        jsr     -$03AE(a6)      ;WriteChars

B)      jsr     -$03B4          ;PutStr

        move.l  a6,a1
        move.l  4.w,a6
        jsr     -$019E(a6)      ;CloseLibrary
.Out    rts

DOS          dc.b    'dos.library',0
HelloWorld   dc.b    'Hello World!',$A,0
Back to index
Asm-68000-ST

; Hello World in 68000 Assembler (Atari ST)

     move.l #helloworld,-(A7)
     move   #9,-(A7)
     trap   #1
     addq.l #6,A7
     move   #0,-(A7)
     trap   #1
helloworld:
     dc.b "Hello World!",$0d,$0a,0
Back to index
Asm-68008

; Hello World in 68008 Assembler (Sinclar QL)

     move.l #0,a0
     lea.l  mess,a1
     move.w $d0,a2
     jsr    (a2)
     rts
mess dc.w   12
     dc.b   'Hello World!',10
     end
Back to index
Asm-IBM-370

ITLE 'Hello World for IBM Assembler/370 (VM/CMS)'
HELLO    START
BALR  12,0
USING *,12
*
WRTERM 'Hello World!'
*
SR    15,15
BR    14
*
END   HELLO
Back to index
Asm-Intel

; Hello World for Intel Assembler (MSDOS)

mov ax,cs
mov ds,ax
mov ah,9
mov dx, offset Hello
int 21h
xor ax,ax
int 21h

Hello:
  db "Hello World!",13,10,"$"
Back to index
Asm-PDP11

;       Hello World in Assembler for the DEC PDP-11 with the
;	RSX-11M-PLUS operating system
;
        .title Hello
        .ident /V0001A/
        .mcall qiow$s, exit$s
        .psect $code,ro,i
start:  qiow$s #5,#5,,,,<#str, #len, #40>
        exit$s
        .psect $data,ro,d
str:    .ascii / Hello World!/
        len=.-str
        .end start
Back to index
Asm-Z80-Console

; This is "Hello World" program for Z80 and TMS9918 / TMS9928 / TMS9929 /
; V9938 or V9958 VDP
; That means, that this should work on SVI, MSX, Colecovision, Memotech,
; TI-99 and many other
; Z80 based home computers or game consoles.
;
; Because we don't know what system is used, we don't know where RAM
; is, so we can't use stack
; in this program.
;
; This version of Hello World was written by Timo "NYYRIKKI" Soilamaa
; 17.10.2001
;
;----------------------------------------------------------------------
; Configure this part:

DATAP: EQU #98 ; VDP Data port #98 works on all MSX models
; (TMS9918/TMS9929/V9938 or V9958)
; #80 works on SVI 
; (for other platforms you have to figure this out by your self)

CMDP: EQU #99 ; VDP Command port #99 works on all MSX models
; (TMS9918/TMS9929/V9938 or V9958)
; #81 works on SVI
; (for other platforms you have to figure this out by your self)
;-----------------------------------------------------------------------
; Program starts here:

ORG 0 ; Z80 starts always from here when power is turned on
DI ; We don't know, how interrupts works in this system, so we disable them.

; Let's set VDP write address to #0000
XOR A
OUT (CMDP),A
LD A,#40
OUT (CMDP),A

; Now let's clear first 16Kb of VDP memory
LD B,0
LD HL,#3FFF
LD C,DATAP
CLEAR:
OUT (C),B
DEC HL
LD A,H
OR L
NOP ; Let's wait 8 clock cycles just in case VDP is not quick enough.
NOP
JR NZ,CLEAR

; Now it is time to set up VDP registers:
;----------------------------------------
; Register 0 to #0
;
; Set mode selection bit M3 (maybe also M4 & M5) to zero and 
; disable external video & horizontal interrupt
LD C,CMDP
LD E,#80

OUT (C),A
OUT (C),E
;---------------------------------------- 
; Register 1 to #50
;
; Select 40 column mode, enable screen and disable vertical interrupt

LD A,#50
INC E
OUT (C),A
OUT (C),E
;---------------------------------------- 
; Register 2 to #0
;
; Set pattern name table to #0000

XOR A
INC E
OUT (C),A
OUT (C),E
;---------------------------------------- 
; Register 3 is ignored as 40 column mode does not need color table
;
INC E
;---------------------------------------- 
; Register 4 to #1
; Set pattern generator table to #800

INC A
INC E

OUT (C),A
OUT (C),E
;---------------------------------------- 
; Registers 5 (Sprite attribute) & 6 (Sprite pattern) are ignored 
; as 40 column mode does not have sprites

INC E
INC E
;---------------------------------------- 
; Register 7 to #F0
; Set colors to white on black

LD A,#F0
INC E
OUT (C),A
OUT (C),E
;----------------------------------------

; Let's set VDP write address to #808 so, that we can write
; character set to memory
; (No need to write SPACE it is clear char already)
LD A,8
OUT (C),A
LD A,#48
OUT (C),A

; Let's copy character set
LD HL,CHARS
LD B, CHARS_END-CHARS
COPYCHARS:
LD A,(HL)
OUT (DATAP),A
INC HL
NOP ; Let's wait 8 clock cycles just in case VDP is not quick enough.
NOP
DJNZ COPYCHARS

; Let's set write address to start of name table
XOR A
OUT (C),A
LD A,#40
OUT (C),A

; Let's put characters to screen
LD HL,ORDER
LD B,ORDER_END-ORDER
COPYORDER:
LD A,(HL)
OUT (DATAP),A
INC HL

JR OVERNMI
NOP
NOP

; Here is address #66, that is entry for NMI
RETN ;Return from NMI

OVERNMI:
DJNZ COPYORDER

; The end
HALT

; Character set:
; --------------
ORDER:
DEFB 1,2,3,3,4,0,5,4,6,3,7
ORDER_END:

CHARS:

; H
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %11111000
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %00000000
; e
DEFB %00000000
DEFB %00000000
DEFB %01110000
DEFB %10001000
DEFB %11111000
DEFB %10000000
DEFB %01110000
DEFB %00000000
; l
DEFB %01100000
DEFB %00100000
DEFB %00100000
DEFB %00100000
DEFB %00100000
DEFB %00100000
DEFB %01110000
DEFB %00000000
; o
DEFB %00000000
DEFB %00000000
DEFB %01110000
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %01110000
DEFB %00000000
; W
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %10101000
DEFB %10101000
DEFB %11011000
DEFB %10001000
DEFB %00000000

; r
DEFB %00000000
DEFB %00000000
DEFB %10110000
DEFB %11001000
DEFB %10000000
DEFB %10000000
DEFB %10000000
DEFB %00000000
; d
DEFB %00001000
DEFB %00001000
DEFB %01101000
DEFB %10011000
DEFB %10001000
DEFB %10011000
DEFB %01101000
DEFB %00000000
chars_end:
Back to index
ASP-JavaScript

Hello World for Microsoft ASP (in JavaScript)

<%@ language="javascript" %>
<html><body>
<%
Response.Write('Hello World!');
%>
</body></html>
Back to index
ASP-VBS

Hello World for Microsoft ASP (in VBScript)

<%@ language="vbscript" %>
<html><body>
<%
Response.write "Hello World!"
%>
</body></html>
Back to index
awk

# Hello World in awk
BEGIN {
  print "Hello World!"
  exit
}
Back to index
B

/* Hello World in B */

main() {
  extern a, b, c;
  putchar (a); putchar (b); putchar (c); putchar ('!*n');
}

a 'hell' ;
b 'o, w' ;
c 'orld' ;
Back to index
Basic

10 REM Hello World in BASIC
20 PRINT "Hello World!"
Back to index
BCPL

// Hello world in BCLP
GET "libhdr"

LET start() = VALOF
$( writes("Hello world*N")
   RESULTIS 0
$)
Back to index
Beta

{ *** Hello World in BETA ***}
(#
  do
     'Hello World!'->putLine
#)
Back to index
BrainFxxx

Hello World in BrainF***, posted by Dmitri Katchalov <dmitrik@my-deja.com>
on comp.lang.misc on Feb. 14, 2000.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++.+++++++++++++++++++++++++++++.+++++++..+++.--------------
-----------------------------------------------------.-----------
-.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++.--------.+++.------.--------.-----------
--------------------------------------------------------.
Back to index
BS2000

/BEGIN-PROCEDURE LOGGING=N
/REMARK "HELLO WORLD" IN BS2000 (SDF)
/ASSIGN-SYSDTA TO-FILE=*SYSCMD
/WRITE-TEXT 'HELLO WORLD!'
/SET-JOB-STEP
/ASSIGN-SYSDTA TO-FILE=*PRIMARY
/END-PROCEDURE
Back to index
C++

// Hello World in C++

#include <iostream.h>

main()
{
    cout << "Hello World!" << endl;
    return 0;
}
Back to index
C++-ISO

// Hello World in ISO C++

#include <iostream>

int main()
{
    std::cout << "Hello World!" << std::endl;
}
Back to index
C++-MFC

// Hello World in C++ for Microsoft Foundation Classes
// (Microsoft Visual C++).

#include <afxwin.h>

class CHello : public CFrameWnd
{
public:
    CHello()
    {
        Create(NULL,_T("Hello World!"),WS_OVERLAPPEDWINDOW,rectDefault);
    }
};

class CHelloApp : public CWinApp
{
public:
    virtual BOOL InitInstance();
};

BOOL CHelloApp::InitInstance()
{
    m_pMainWnd = new CHello();
    m_pMainWnd->ShowWindow(m_nCmdShow);
    m_pMainWnd->UpdateWindow();
    return TRUE;
}

CHelloApp theApp;
Back to index
C++-Qt

// Hello World in C++ for the Qt framework

#include <qapplication.h>
#include <qlabel.h>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  QLabel l("Hello World!", 0);
  l.setCaption("Test");
  l.setAlignment(Qt::AlignCenter);
  l.resize(300, 200);
  a.setMainWidget(&l);
  l.show();
  return(a.exec());
}
Back to index
C-Ansi

/* Hello World in C, Ansi-style */

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  puts("Hello World!");
  return EXIT_SUCCESS;
}
Back to index
C-Curses

/* Hello World in C for Curses */

#include <curses.h>
main()
{
  initscr();
  addstr("Hello World!\n");
  refresh();
  endwin();
  return 0;
}
Back to index
C-GEM

/* Hello World for C with GEM */

#include <aes.h>
main()
{
  appl_init();
  form_alert(1,"[0][Hello World!][Ok]");
  appl_exit();
  return 0;
}
Back to index
C-Intuition

/* Hello World in C for Intution (Amiga GUI) */

#include <intuition/intuition.h>

struct IntuitionBase *IntuitionBase = NULL;

struct IntuiText hello_text = {-1,-1,JAM1,0,0,NULL,"Hello World!",NULL };
struct IntuiText ok_text    = {-1,-1,JAM1,0,0,NULL,"Ok",NULL };

void main(void)
{
   IntuitionBase = (struct IntuitionBase *)
                   OpenLibrary("intuition.library", 0);
   AutoRequest(NULL, &hello_text, NULL, &ok_text, NULL, NULL, 100, 50);
   CloseLibrary(IntuitionBase);
}
Back to index
C-K+R

/* Hello World in C, K&R-style */

main()
{
  puts("Hello World!");
  return 0;
}
Back to index
C-Objective

/* Hello World in Objective-C.
** Since the standard implementation is identical to K&R C,
** a version that says hello to a set of people passed on
** the command line is shown here.
*/

#include <stdio.h>
#include <objpak.h>
int main(int argc,char **argv)
{
    id set = [Set new];
    argv++;while (--argc) [set add:[String str:*argv++]];
    [set do:{ :each | printf("hello, %s!\n",[each str]); }];
    return 0;
}
Back to index
C-PresManager

/* Hello World for C with PresentationManager / OS/2 2.11  */

#define INCL_WIN

#include <os2.h>

int main( void )
{
   HMQ   hmq;

   hmq = WinCreateMsgQueue( 0, 0 );

   WinMessageBox( HWND_DESKTOP, HWND_DESKTOP, (PSZ)"Hello World!",
      (PSZ)"", 0, MB_OK );

   WinDestroyMsgQueue( hmq );

   return 0;
}
Back to index
C-Sharp

// Hello World in Microsoft C# ("C-Sharp").

using System;

class HelloWorld
{
    public static int Main(String[] args)
    {
        Console.WriteLine("Hello, World!");
        return 0;
    }
}
Back to index
C-Windows

/* Hello world in C for MS-Windows */

#include <windows.h>

int PASCAL WinMain(HINSTANCE hInstance,
  HINSTANCE hPrevInstance, LPSTR CmdLine, int Show)
{
  MessageBox(GetActiveWindow(), "Hello World!", "Hello Windows World", MB_OK);
  return 0;
}
Back to index
C-X11-Athena

/* Hello World in C with X11 using Athena widgets */

#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Xaw/Label.h>

main(int argc,char **argv)
{
  XtAppContext app_context;
  Widget toplevel,hello;

  toplevel = XtVaAppInitialize(&app_context,"XHello",NULL,0,
    &argc,argv,NULL,NULL);
  hello = XtVaCreateManagedWidget("Hello World!",labelWidgetClass,
    toplevel,(void*)0);

  XtRealizeWidget(toplevel);

  XtAppMainLoop(app_context);
  return 0;
}
Back to index
CAML-Light

(* Hello World in CAML Light *)

let hello =
   print_string "Hello World!";
;;
Back to index
Cobol

       * Hello World in Cobol

*****************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
MAIN SECTION.
DISPLAY "Hello World!"
STOP RUN.
****************************
Back to index
dBase

* Hello World in dBase IV

? "Hello World!"
Back to index
Dylan

module:			hello-world
author:			Homer
copyright:		(c) 1994 Homer
version:		1.0

// Hello World in DYLAN

define method main (#rest args)
  princ("Hello world!");
end;

main();
Back to index
Eiffel

indexing "Hello World in Eiffel"

class HELLO

creation
   run

feature

   run is
     local
       io : BASIC_IO;
     do
       !!io;
       io.put_string("Hello World!");
       io.put_newline;
     end; -- run

end; -- class HELLO
Back to index
Elan

(* Hello World in ELAN *)

putline ("Hello World!");
Back to index
Erlang

%% Hello World in Erlang

-module(hello).

-export(hello/0).

hello() ->
   io.format("Hello World!\n").
Back to index
Euphoria

-- Hello World in Euphoria

procedure Hello()

   print ("Hello World!")

end procedure
Back to index
Focal

1.01 COMMENT HELLO WORLD IN FOCAL
1.02 TYPE "HELLO WORLD", !
1.03 QUIT
Back to index
Forth

: Hello World in Forth
  ." Hello World!" cr
;
Back to index
Fortran

C     Hello World in Fortran

      PROGRAM HELLO
      WRITE (*,100)
      STOP
  100 FORMAT (' Hello World! ' /)
      END
Back to index
Fortran77

C     Hello World in Fortran 77

      PROGRAM HELLO
      PRINT*, 'Hello World!'
      END
Back to index
FortranIV

       PROGRAM HELLO
c
C      Hello World in Fortran IV (supposedly for a TR440)
c
       WRITE (6,'('' Hello World!'')')
       END
Back to index
Gofer

-- Hello World in Gofer
-- Simple version

helloWorld:: String
helloWorld = "Hello World!\n"


-- Hello World in Gofer
-- Dialog version

helloWorld :: Dialogue
helloWorld resps = [AppendChan stdout "Hello world!"]
Back to index
GynkoSoft

; Hello World in GynkoSoft
; Simple version
0.00 Protocol "Hello, World!"


; Hello World in GynkoSoft
; Dialog box output
0.00 Message "Hello, World!"
Back to index
Haskell

-- Hello World in Haskell

module Hello where
hello::String
hello = "Hello World!"
Back to index
HP-41C

Hello World for the HP 41C. No comment character exists.

01 LBL "HELLO"
02 "HELLO WORLD"
03 AVIEW
Back to index
HP-48

<<
@ Hello World for the HP-48
@ << and >> are one char each
"HELLO WORLD"
>>
Back to index
HTML

<HTML>
<!-- Hello World in HTML -->
<HEAD>
<TITLE>Hello World!</TITLE>
</HEAD>
<BODY>
Hello World!
</BODY>
</HTML>
Back to index
IBM-Exec

Hello World for IBM EXEC (under VM/CMS)

&CONTROL
*
&TYPE Hello World!
*
&EXIT 0
Back to index
IBM-Exec2

Hello World for IBM EXEC2 (under VM/CMS)

&TRACE OFF
*
&TYPE Hello World!
*
&EXIT 0
Back to index
ici

# Hello World in ici (http://www.zeta.org.au/~atrn/ici/)
printf("Hello World!\n");
Back to index
Icon

# Hello world in Icon (http://www.cs.arizona.edu/icon/)

procedure main()
    write("Hello world")
end
Back to index
Informix-4GL

# Hello World in Informix 4GL

MAIN

  DISPLAY "Hello World"

END MAIN
Back to index
InstallScript

// Hello World in InstallScript
// (Scripting language of InstallShield, a Windows install generator)

program
	MessageBox("Hello World!",INFORMATION);
endprogram
Back to index
Intercal

      HELLO WORLD IN INTERCAL NOT FORTRAN

      HELLO WORLD
Back to index
Java

// Hello World in Java

class HelloWorld {
  static public void main( String args[] ) {
    System.out.println( "Hello World!" );
  }
}
Back to index
Java-Mobile

// Hello World on a mobile Java device

package helloworld;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet {

  public HelloWorld()
  {
    Form form = new Form("Hello World");
    form.append("Hello world!");
    Display.getDisplay(this).setCurrent(form);
  }

  protected void pauseApp() {  }
  protected void startApp() throws
    javax.microedition.midlet.MIDletStateChangeException {  }
  protected void destroyApp(boolean parm1) throws
    javax.microedition.midlet.MIDletStateChangeException {  }
}
Back to index
Java-Server-Pages

<!-- Hello World for Java Server Pages -->

<%@ page language='java' %>
<%="Hello World!" %>
Back to index
Java-Servlet

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

//
// Hello World Java Servlet
//
public class HelloWorld extends HttpServlet {
public void service(HttpServletRequest request,
HttpServletResponse response)
throws IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

out.println("<html><body>");
out.println("Hello World!");
out.println("</body></html>");
}
}
Back to index
JavaScript

<html>
<body>
<script language="JavaScript" type="text/javascript">
// Hello World in JavaScript
document.write('Hello World');
</script>
</body>
</html>
Back to index
JCL

//HERIB    JOB  ,'HERIBERT OTTEN',PRTY=12
//* Hello World for MVS
//HALLO    EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT2   DD SYSOUT=T
//SYSUT1   DD *
Hello World!
/*
//
Back to index
Limbo

Hello World in Limbo.
Limbo is the programming language of the Inferno OS
(from Lucent Bell Labs).


implement Cmd;

include "sys.m";
include "draw.m";

Cmd : module {
    init : fn (ctxt : ref Draw->Context, args : list of string);
};

init(nil : ref Draw->Context, nil : list of string)
{
    sys := load Sys Sys->PATH;
    sys->print("Hello World\n");
}
Back to index
Lisp

;;; Hello World in Common Lisp

(defun helloworld ()
  (print "Hello World!")
)
Back to index
Logo

; Hello World in Logo

DRUCKEZEILE [Hello World!]
Back to index
MACRO10

TITLE HELLO WORLD
; HELLO WORLD IN MACRO 10 FOR TOPS-10
ENTRY OUTPUT
SEARCH UUOSYM

LAB:    ASCIZ /HELLO WORLD
/
OUTPUT: OUTSTR LAB              ; OUTPUT MESSAGE
        MONRT.                  ; RETURN TO MONITOR          
        END OUTPUT
Back to index
Modula-2

(* Hello World in Modula-2 *)

MODULE HelloWorld;
FROM InOut IMPORT WriteString,WriteLn;
BEGIN
  WriteString("Hello World!");
  WriteLn;
END HelloWorld.
Back to index
MSDOS

@ECHO OFF
REM Hello World for DOS batch

ECHO Hello World!
Back to index
Natural

Hello World in natural languages.

Czech (1):	Ahoj, svet!
Bengali:	Shagatam Prithivi!
English:	Hello World!
French:		Salut le Monde!
German:		Hallo Welt!
Hindi:		Shwagata Prithvi!
Italian		Ciao Mondo!
Portugese:	Ola mundo!
Spanish	(2):	!Hola mundo!
Swedish:	Hejsan värld!
Turkish:	Merhaba Dünya!

(1)	Upside-down "^" on the "e"
(2)	First "!" upside-down
Back to index
NewtonScript

// Hello World in NewtonScript

baseview :=
   {viewBounds: {left: -3, top: 71, right: 138, bottom: 137},
    viewFlags: 581,
    declareSelf: 'base,
    _proto: protoFloatNGo,
    debug: "baseview"
   };

textview := * child of baseview *
   {text: "Hello World!",
    viewBounds: {left: 33, top: 24, right: 113, bottom: 46},
    viewFlags: 579,
    _proto: protoStaticText,
    debug: "textview"
   };
Back to index
Oberon.oberon

MODULE HelloWorld;

(* Hello World in Oberon for the Oberon System *)

  IMPORT Oberon, Texts;

  VAR
      W: Texts.Writer;

  PROCEDURE Do*;
    BEGIN
        Texts.WriteString(W,"Hello World!");
            Texts.WriteLn(W);
                Texts.Append(Oberon.Log,W.buf)
                  END Do;

BEGIN Texts.OpenWriter(W)
END HelloWorld.
Back to index
Oberon.std

(* Hello World in Oberon for standard operating systems *)

MODULE HelloWorld;
IMPORT Out;
BEGIN
  Out.String("Hello World!");
  Out.Ln;
END HelloWorld;
Back to index
Occam

PROGRAM Hello
-- Hello world in Occam
#USE ioconv

SEQ
  write.full.string(screen,"Hello World!")
Back to index
OPL.dialog

REM Hello World for OPL (Psion Organizer 3a)
REM More complex version with menues and dialog boxes

PROC HELLO:
  LOCAL M%
  DO
    REM Display menu bar
    mINIT
    mCARD "Sprache","Deutsch",%d,"English",%e
    mCARD "Extras","Beenden",%x,"Info",%i
    M%=MENU
    REM process choosen function
    IF M%=%d
      REM Display german dialog box
      REM with an ENTER button to continue
      dBOX:(" ","Hallo Welt"," ","weiter",13)
    ELSEIF M%=%e
      REM Display english dialog box
      REM with an ENTER button to continue
      dBOX:(" ","Hello World"," ","continue",13)
    ELSEIF M%=%i
      REM Display copyright information ;-)
      dBOX:("Info","(C) Klaus Müller 0196","FrankfurtMain, Germany","",13)
    ENDIF
  UNTIL M%=%x
ENDP

PROC dBOX:(Z1$,Z2$,Z3$,Z4$,BUTTON%)
  dINIT Z1$
  dTEXT ""," ",0
  dTEXT "",Z2$",$102
  dTEXT "",Z3$,$202
  dBUTTONS Z4$,BUTTON%
  DIALOG
ENDP
Back to index
OPL.simple

REM Hello World for OPL (Psion Organizer 3a)
REM Simple version

PROC HELLO:
  PRINT "Hello World!"
  GET
ENDP
Back to index
OZ

Hello World in OZ, shell version:

Type the text
{Browse 'Hello World!'}
to a buffer in OZ mode and feed it for execution (e.g., by typing the
key M-l or by using the OZ menu). A window titled Oz Browser will pop
up showing the atom 'Hello World!'.
Back to index
Pascal

{Hello World in Pascal}

program HelloWorld;
begin
  WriteLn('Hello World!');
end.
Back to index
Pascal-Windows

{ Hello World in Borland Pascal 7 for MS-Windows}

PROGRAM HelloWorld;

USES
  WinCRT;

BEGIN
  InitWinCRT;
  WriteLn('Hello World!');
  ReadLn;
  DoneWinCRT;
END.
Back to index
Perl

# Hello world in perl

print "Hello World!\n";
Back to index
PHP

// Hello World in PHP

<?php
echo 'Hello World!';
?>
Back to index
Pike

// Hello world in Pike (pike.roxen.com)

int main(){
        write("Hello World!\n");
}
Back to index
PL-SQL

-- Hello World in Oracle PL/SQL

set serveroutput on
Declare
   txt varchar2(11);
begin
   txt:='Hello World';
   dbms_output.put_line(txt);
end;
/
Back to index
PL1

/* Hello World in PL1 */

Hello: procedure options(main)
       put list('Hello World!');
       put skip;
end Hello
Back to index
Pocket

Hello World for standard pocket calculators (7-segment display).
Type in and turn calculator upside down.

07734
Back to index
Postscript

% Hello World in Postscript
%!PS
/Palatino-Roman findfont
100 scalefont
setfont
100 100 moveto
(Hello World!) show
showpage
Back to index
Profan

' Hello World in Profan (http://www.profan.de/)

cls
print "Hello World!"
waitkey
Back to index
Prolog

% Hello World in Prolog

hello :- display('Hello World!') , nl .
Back to index
Python

# Hello World in Python
print "Hello World"
Back to index
REALbasic

' Hello World in REALbasic (http://www.realsoftware.com/)

msgBox "Hello World!"
Back to index
Rebol-view

Hello World in Rebol-view.

rebol[]
view layout[
text "Hello World!"
]
Back to index
Rexx

/* Hello World in Rexx */

SAY "Hello World!"
Back to index
Rexx.simple

/* Hello World in Rexx, simple version (writes to standard output) */

say 'Hello World!'
exit
Back to index
Rexx.window

/* Hallo World in Rexx, opens window */

call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
call SysLoadFuncs
call RxMessageBox 'Hello World!', 'Hello World Window', 'OK', 'EXCLAMATION'
exit
Back to index
SAL

// Hello World in SAL

proc main()
    MsgBox("Hello from SAL", "Hello, World!")
end
Back to index
Sather

-- Hello World in Sather

    class HELLO is
       main is #OUT + "Hello World!\n" end
    end
Back to index
Scheme

;;; Hello World in Scheme

(define helloworld 
        (lambda ()
                (display "Hello World")
                (newline)))
Back to index
Self

(|  "Hello World in Self"

  hello = (| | 'Hello World!' print)
|)
Back to index
SenseTalk

Hello World in SenseTalk.

on run put "Hello World!" end run 
Back to index
Setl2

-- Hello World in Setl2

procedure Hello();
   print "Hello World!";
end Hello;
Back to index
Shakespeare

The Infamous Hello World Program in Shakespeare.

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.


                    Act I: Hamlet's insults and flattery.

                    Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
 You lying stupid fatherless big smelly half-witted coward!
 You are as stupid as the difference between a handsome rich brave
 hero and thyself! Speak your mind!

 You are as brave as the sum of your fat little stuffed misused dusty
 old rotten codpiece and a beautiful fair warm peaceful sunny summer's
 day. You are as healthy as the difference between the sum of the
 sweetest reddest rose and my father and yourself! Speak your mind!

 You are as cowardly as the sum of yourself and the difference
 between a big mighty proud kingdom and a horse. Speak your mind.

 Speak your mind!

[Exit Romeo]

                    Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
 Thou art as sweet as the sum of the sum of Romeo and his horse and his
 black cat! Speak thy mind!

[Exit Juliet]

                    Scene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:
 Thou art as lovely as the product of a large rural town and my amazing
 bottomless embroidered purse. Speak thy mind!

 Thou art as loving as the product of the bluest clearest sweetest sky
 and the sum of a squirrel and a white horse. Thou art as beautiful as
 the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]


                    Act II: Behind Hamlet's back.

                    Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
 Speak your mind. You are as worried as the sum of yourself and the
 difference between my small smooth hamster and my nose. Speak your
 mind!

Juliet:
 Speak YOUR mind! You are as bad as Hamlet! You are as small as the
 difference between the square of the difference between my little pony
 and your big hairy hound and the cube of your sorry little
 codpiece. Speak your mind!

[Exit Romeo]

                    Scene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:
 Thou art as good as the quotient between Romeo and the sum of a small
 furry animal and a leech. Speak your mind!

Ophelia:
 Thou art as disgusting as the quotient between Romeo and twice the
 difference between a mistletoe and an oozing infected blister! Speak
 your mind!

[Exeunt]
Back to index
Smalltalk.simple

"Hello World in Smalltalk (simple version)"

Transcript show: 'Hello World!'.
Back to index
Smalltalk.window

"Hello World in Smalltalk (in an own window)"
"(to be entered in a special browser)"

VisualComponent subclass: #HelloWorldView
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'test'

displayOn: aGraphicsContext

	'Hello World!' asComposedText displayOn: aGraphicsContext.

open

	|window|
	window := ScheduledWindow new.
	window label: 'Hello World Demo:'.
	window component: self new.
	window open.
Back to index
SML

(* Hello World in SML *)

fun hello() = output(std_out, "Hello World!");
Back to index
Snobol

* Hello World in Snobol

        OUTPUT = "Hello World!"
Back to index
SPL

 HELLO: PROCEDURE OPTIONS(MAIN);
*
 /* Hello World in SPL4 (Siemens) */
*
 DCL PRINTC ENTRY;
*
 CALL PRINTC('Hello World!', 12);
 RETURN;
*
 END HELLO;
Back to index
ST-Guide

## Hello World for ST-Guide

@node "Hello World!"

Hello World!

@endnode
Back to index
Tcl

#!/usr/local/bin/tclsh
# Hello World in Tcl

puts "Hello World!"
Back to index
TeX

% Hello World in plain \TeX
\immediate\write16{Hello World!}
\end
Back to index
Texinfo

\input texinfo
@c Hello World for Texinfo

@setfilename hello
@settitle Hello World

@node Top, Hello, (dir), (dir)

@menu
* Hello:: Hello World
@end menu

@node Hello, , Top, Top

Hello World!

@contents
@bye
Back to index
TI-59

Hello World for the TI-59 with PC-100C thermo printer.
No comment character exists.

The TI-59/PC-100C can print up to 20 characters per line (upper case
only). They are coded as 2-digit decimal numbers (see manual for
details) in up to four print registers (of five characters each)
and then printed.
Before entering the program, press LRN to switch into learn mode.
After entering the program, cancel learn mode with LRN, turn on the
printer, and run the program with A.
A pleasant sound, and what a font! Real TRUE-TYPE!

The output looks like this:

      +--------------------+
      |         HALLO WELT!|
      |                    |
      +--------------------+


      TI59 Code   Comment

      LBL A       Start of program: label A
      OP 00       Clear the four print registers
      23          "H"
      OP 02       Write into print register 2
      13          "A"
      27          "L"
      27          "L"
      32          "O"
      00          " "
      OP 03       Write into print register 3
      43          "W"
      17          "E"
      27          "L"
      37          "T"
      73          "!"
      OP 04       Write into print register 4
      OP 05       Start printing
      ADV         Line feed (optional)
      R/S         End program

Remark: German output only, as submitted by the author. Sorry I
don't know the codes to translate the output into English.
-wr
Back to index
TI-8x

Hello World for TI 8x/9x basic (tested on a TI-83)

:ClrHome
:Disp "HELLO WORLD"
Back to index
Tk

#!/usr/local/bin/wish -f
# Hello World in Tk

label .l -text "Hello World!"
pack .l
Back to index
TSO-CLIST

PROC 0
/* Hello World in TSO CLIST */
write Hello World!
Back to index
Turing

Hello World as a Turing machine.

State   Read   |   Write     Step    Next state
---------------|---------------------------------
1       empty  |   H         >       2
2       empty  |   e         >       3
3       empty  |   l         >       4
4       empty  |   l         >       5
5       empty  |   o         >       6
6       empty  |   blank     >       7
7       empty  |   W         >       8
8       empty  |   o         >       9
9       empty  |   r         >       10
10      empty  |   l         >       11
11      empty  |   d         >       12
12      empty  |   !         >       STOP
Back to index
Unix

#!/bin/sh
# Hello World for the Unix shell

echo "Hello World!"
Back to index
Vatical

+ Hello World in Vatical

LITURGY:
	PRAY "Hello World!"
AMEN.
Back to index
VAX-Macro

Hello World in VAX Macro.

        .title  helloworld
        .ident  /hello world/
;
        .library        /sys$library:lib/
        $libdef
        $lib$routinesdef


        .psect  $data,wrt,noshr,noexe,long

hello:  .ascid  /Hello World!/

        .psect  $code,nowrt,shr,exe,long

        .entry  helloworld,^m<r9,r10,r11>

        pushaq  hello                   ; output the
message
        calls   #1,g^lib$put_output     ;

        ret                             ; GTFOH
        .end    helloworld              ;
Back to index
VisualBasic

REM Hello World in Visual Basic for Windows

VERSION 2.00
Begin Form Form1
   Caption         =   "Form1"
   ClientHeight    =   6096
   ClientLeft      =   936
   ClientTop       =   1572
   ClientWidth     =   6468
   Height          =   6540
   Left            =   876
   LinkTopic       =   "Form1"
   ScaleHeight     =   6096
   ScaleWidth      =   6468
   Top             =   1188
   Width           =   6588
   Begin Label Label1
      Caption         =   "Hello World!"
      Height          =   372
      Left            =   2760
      TabIndex        =   0
      Top             =   2880
      Width           =   972
   End
End
Option Explicit
Back to index
VMS

$ ! Hello World for VMS-CLI

$ WRITE SYS$OUTPUT "Hello World!"
Back to index
XHTML

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Hello World in XHTML -->
<html
 xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>
      Hello World!
    </title>
  </head>
  <body>
    <p>
      Hello World!
    </p>
  </body>
</html>
Back to index
Credits

Programs were contributed by:

Wolfram Roesler: C, Modula-2, Basic, Unix shell, Tcl, Tk, GEM, Curses, Texinfo, InstallScript, C++ (MFC), C++ (ISO), C#, English, German
Reinhard Hamann @ S2: Forth, Prolog, Lisp, 68000 Assembler (Atari)
Malte Schiphorst @ HH2: Pascal
Stefan Radermacher @ K: TeX
Marcus Schmidke @ K2: Occam, MSDOS batch, Intel Assembler, 6502 Assembler
Ralf Lenz @ F: Fortran IV, VMS
Marc Van-Woerkom @ AC: C++
Thomas Menschel @ B: 68008 Assembler
Heribert Otten @ K2: Cobol, PL/1, JCL
Thomas Piske @ HH: BS2000 batch
Thomas Preymesser @ N: Ada, pocket calculator
Adrian Nye & Tim O'Reilly: X11-Athena
Udo Halfmann @ K2: ELAN
Pedro Martins @ AZ: Portugese
Stefan Llabres @ OG: Postscript
Volker Wurst @ S3: Smalltalk
Dirk Theisen @ SU: Oberon (standard OS)
Georg Bauer @ MS3: Rexx (simple version), Erlang, SML, Snobol, Setl2, CAML light, Euphoria
Michael Glaesner @ F: Perl, awk
Christian Rosner @ WI: Eiffel
Markus Omers @ DU2: Presentation Manager
Thomas Dorner @ F: SPL
Jochen Kunz @ SB: Rexx (window version), HP-48
Sascha Bendinger @ LU: Dylan
Steffen Pohlen @ AC3: Visual Basic, Gofer (dialog)
Andreas Dierks @ OL2: Algol-60, Algol-68, Fortran, Fortran-77, dBase IV, Logo
Klaus Mueller @ F: TSO CLIST, OPL
Jens Kilian @ BB: Intercal, Self
Martin Uebing @ DO: Intuition
Andreas Maeder @ WUE: Borland Pascal 7
Stefan Brozinski @ HB2: Windows, HP-41C
Jens Schaefers @ DO: Beta
Wolfgang Houben <castor@newswire.gun.de>: PDP-11 Assembler
Pascal Costanza @ K2: Oberon (Oberon OS)
Martin Oefelein @ M: Sather, GynkoSoft
Ralf Unland <Ralf.Unland@LFS-Vechta.nsn.ni.schule.de>: TI-59
Stefan Rupp @ AC2: Java
Werner Huber @ A-L: Informix 4GL
Lutz Heitmann @ KI: Turing machine
Federico Hernandez-Püschel @ OF2: HTML
Thomas Lattner @ BB2: OZ
Gunter Baumann @ S: NewtonScript
Torsten Landschoff @ IZ: ST-Guide
Florian Erhard @ M2: Gofer (simple)
Niels 'Frolic' Froehling <Seal@CHATLINE.MCNET.DE>: 68000 Assembler (Amiga)
Michael Sievert @ UN: Rexx
Andy Newman <andy@research.canon.com.au>: ici
Sammy Mitchell <sammy.mitchell@semware.com>: SAL
Ian Trudel <ian.trudel@tr.cgocable.ca>: Icon, Objective C
Chris Locke <chris@cjl1.demon.co.uk>: Limbo
Dmitri Katchalov <dmitrik@my-deja.com>: BrainF***
Bora Bali <indefatigable@email.com>: Assembler IBM 370, IBM Exec, IBM Exec2, ASP (VB-Script and JavaScript), Java Servlet, Turkish, Italian
Neil L. Burman <nburman@yahoo.com>: VAX Macro
Thor Kottelin <thor@anta.net>: XHTML
Roel Adriaans <roel4@chello.nl>: PHP
Ad Boerma <a.boerma@chello.nl>: TI-8x/9x, PHP
hugh@raynerdesign.com.au: Haskell
Monwar <monwar1982@yahoo.com>: Bengali, Hindi
Jeff Hultquist <jhultquist@centricsoftware.com>: Scheme
Wolfgang Teschner <Wolfgang.Teschner@impress.com>: Python
Chris L. <clackerd@polymail.cpunix.calpoly.edu>: AppleScript
Joel Dimbernat <Joel.dimbernat@wanadoo.fr>: Rebol-view
Todd Nathan <big_boy_toddy@yahoo.com>: SenseTalk
Heiko Berges <hb-hallowelt@bsls.de>: BCPL, ABAP/4, Focal, B, MACRO10
Carlo Keil <carlo.keil@web.de>: Profan
Bruno Bord <b.bord@arobasque.fr>: French
Andreas Meinl <andreas.meinl@gmx.de>: C++ (Qt)
Mikael Brandström <mikael@brandstrom.org>: Pike
Mariano Corsunsky <zappa@fibertel.com.ar>: Spanish
Horváth Zsolt <horvath-zsolt@dbrt.hu>: PL/SQL
Thomas Fromm <tf@tfromm.com>: Java Server Pages
Josha Munnik <josha@ultraforce.com>: Shakespeare, Java-Mobile
Thierry Loiseau <thierry.loiseau@free.fr>: JavaScript
Fredrik Sandebert <sandebert@untitled.com>: REALbasic, Swedish
NYYRIKKI <perkele@mail2Hell.com>: Z80 Assembler for consoles


Back to home page