]]> ]]>

Hello, World!

Традиционная первая программа при изучении языка программирования.

Вывод программы должен выглядеть следующим образом: Hello, World!

Пример для версий Seed7 2007-06-07, Seed7 2012-01-01

$ include "seed7_05.s7i";

const proc: main is func
begin
    writeln("Hello, World!");
end func;

Пример для версий boo 0.7.6.2237, boo 0.8.2

print("Hello, World!")

Пример для версий Scala 2.5.1-final, Scala 2.7.7-final

object HelloWorld {
    def main(args: Array[String]) {
        println("Hello, World!")
    }
}

Пример для версий gpcp 1.3.4-JVM, gpcp 1.3.4-NET 1.1, gpcp 1.3.9-NET

MODULE Hello;
  IMPORT CPmain, Console;
BEGIN
  Console.WriteString("Hello, World!");
END Hello.

Пример для версий BlackBox Component Builder 1.5

О том как запустить программу на выполнение — см. Как запустить Блэкбокс и выполнить первую программу. Для запуска после конца описания модуля добавляется строка с коммандером и действием Hello.Do (см. скриншот). При нажатии на коммандер действие выполняется.

MODULE Hello;

IMPORT StdLog;

PROCEDURE Do*;
BEGIN
  StdLog.String("Hello World");
END Do;

END Hello.

Запуск программы в BlackBox
Запуск программы в BlackBox

Пример для версий Euphoria 3.1.1

puts(1,"Hello, World!")

Пример для версий Python 2.x

print "Hello world"

Пример для версий Python 3.x

print ("Hello, world!")

Пример для версий gmcs 2.0.1

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Пример для версий Borland C++ Builder 6, g++ 3.4.5, g++ 4.x, Microsoft Visual C++ 6, Microsoft Visual C++ 9 (2008)

#include <iostream>

int main(void)
{
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

Пример для версий Oracle 10g SQL, Oracle 11g SQL

Строка ‘Hello, World!’ выбирается из встроенной таблицы dual, используемой для запросов, не требующих обращения к настоящим таблицам.

select 'Hello, World!'
  from dual;

Пример для версий clisp 2.47, Corman Common Lisp 3.0, gcl 2.6.6, SBCL 1.0.1, SBCL 1.0.29

Результат выполнения этого кода в интерактивном режиме имеет следующий вид:

Hello, World!
NIL

Первая строка содержит стандартный поток вывода, вторая — значение, возвращаемое кодом (в данном случае — его отсутствие).

(format t "Hello, World!~%")

Пример для версий gcj 3.4.5, Groovy 1.7, Sun Java 6

Для Java приведенный код должен находиться в файле HelloWorld.java.

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

Пример для версий Free Pascal 2.2.0, Free Pascal 2.2.4, gpc 20070904, PascalABC.NET 1.8, Turbo Pascal 1.0, Turbo Pascal 2.0, Turbo Pascal 3.0, Turbo Pascal 4.0, Turbo Pascal 5.0, Turbo Pascal 5.5, Turbo Pascal 6.0, Turbo Pascal 7.0

program helloworld;

begin
    writeln('Hello, World!');
end.

Пример для версий Microsoft Visual Basic 6

Microsoft Visual Basic предназначен для разработки приложений с оконным интерфейсом, поэтому создание простейшего консольного приложения является нетривиальной задачей. В примере показаны: импорт нужных функций из стандартной библиотеки, создание консоли, получение указателя на ее стандартный поток вывода, собственно вывод сообщения в этот поток и освобождение использованных объектов.

Option Explicit

    Declare Function AllocConsole Lib "kernel32" () As Long
    Declare Function FreeConsole Lib "kernel32" () As Long
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
    Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
           (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _
           nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
           lpReserved As Any) As Long
    Declare Function Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) As Long

Private Sub Main()
    'create a console instance
    AllocConsole
    'get handle of console output
    Dim hOut As Long
    hOut = GetStdHandle(-11&)
    'output string to console output
    Dim s As String
    s = "Hello, World!" & vbCrLf
    WriteConsole hOut, ByVal s, Len(s), vbNull, vbNull
    'make a pause to look at the output
    Sleep 2000
    'close the handle and destroy the console
    CloseHandle hOut
    FreeConsole
End Sub

Пример для версий bwBASIC 2.50, QBasic 1.1, QuickBasic 4.50

PRINT "Hello, World!"

Пример для версий EsCo 0.511 (Brainfuck), Müller's Brainfuck 2.0, weave.rb

Существует много способов сказать “Hello, World!” на Brainfuck. Ниже приведен самый простой из них: использовать только одну ячейку памяти и последовательно изменять ее значение на ASCII-код каждой буквы сообщения. Каждая строка примера выводит один символ.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++.
+++.
------.
--------.
-------------------------------------------------------------------.

Пример для версий EsCo 0.511 (Brainfuck), Müller's Brainfuck 2.0, weave.rb

В этом примере используется три основные ячейки памяти — первая для прописных букв ‘H’ и ‘W’, вторая для строчных букв и третья для знаков препинания ‘,’, ‘ ‘ и ‘!’ — и три дополнительные индексные ячейки для сокращения записи изменений ASCII-кодов. Использованная память выглядит следующим образом:

(индексная ячейка 1) (ячейка прописных букв) (индексная ячейка 2) (ячейка строчных букв) (индексная ячейка 3) (ячейка знаков препинания)

++++++[>++++++++++++<-]>.
>++++++++++[>++++++++++<-]>+.
+++++++.
.
+++.
>++++[>+++++++++++<-]>.
<+++[>----<-]>.
<<<<<+++[>+++++<-]>.
>>.
+++.
------.
--------.
>>+.

Пример для версий Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012, MySQL 5, PostgreSQL 8.4, PostgreSQL 9.1, sqlite 3.7.3

select 'Hello, World!';

Пример для версий iconc 9.4

procedure main ()
   write ("Hello, world!")
end

Пример для версий Visual Prolog 7.2

Visual Prolog создает проекты автоматически. Для запуска примера следует создать новый проект, выбрав “Console” в качестве UI Strategy, перейти к редактированию файла main.pro и заменить его содержимое приведенным кодом.

implement main
    open core

constants
    className = "main".
    classVersion = "".

clauses
    classInfo(className, classVersion).

clauses
    run():-
        console::init(),
        stdio::write("Hello, World!"),
        programControl::sleep(1000),
        succeed().
end implement main

goal
    mainExe::run(main::run).

Пример для версий ARIBAS 1.53

writeln("Hello, World!");

Пример для версий VB.NET 9 (2008), vbnc 2.4.2

Module Module1
    Sub Main()
        Console.WriteLine("Hello, World!")
    End Sub
End Module

Пример для версий EsCo 0.511 (Brainfuck)

Этот пример является переводом на Ook! этого примера на Brainfuck.

Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? 
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook! Ook! Ook? Ook! 
Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? 
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? 
Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! 
Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! 
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. 

Пример для версий EsCo 0.511 (Brainfuck)

Этот пример является переводом на Spoon этого примера. Отметим, что Spoon позволяет не разделять отдельные команды пробелами, но текущая версия EsCo требует, чтобы команды разделялись пробелами.

1111110010001011111111111101100000110100010100101111111111001000101111111111011000001101
0100101011111110010100010101110010100101111001000101111111111101100000110100010100111110
0100010000000000000011000001101000101001101101101101111100100010111110110000011010001010
0100100010101110010100000000000000000000010100000000000000000000000000010100100101001010

Пример для версий PHP 5.2.4, PHP 5.3.2

<?php
echo("Hello, World!\n");
?>

Пример для версий Oracle 10g SQL, Oracle 11g SQL

В этом примере используется анонимный блок PL/SQL, который выводит сообщение в стандартный поток вывода с помощью пакета dbms_output.

begin
    dbms_output.put_line('Hello, World!');
end;

Пример для версий g95 0.93, gfortran 4.5.0, Intel Visual Fortran 11.1

Этот пример написан в свободном формате, поддерживаемом Fortran 90 и последующими стандартами, а также диалектом F.

! Fortran 90-style comment
program HelloWorld
  print *, "Hello, World!"
end program HelloWorld

Пример для версий B-Prolog 7.4-3, ECLiPSe CLP 6.0 #188, gprolog 1.3.0, Poplog 15.5 (Prolog), swipl 5.6.x

Этот пример не требует загрузки фактов или правил. Запрос выполняется в интерактивном режиме, и его результат выглядит следующим образом:

Hello, World!
yes

Первая строка является собственно выводом предиката write, вторая — результат оценивания запроса.

Следует отметить, что замена одинарных кавычек на двойные выводит строку как массив ASCII-кодов отдельных символов:

| ?- write("Hello, World!").
[72,101,108,108,111,44,32,87,111,114,108,100,33]

yes

write('Hello, World!'), nl.

Пример для версий Poplog 15.5 (POP-11)

=> — оператор вывода.

'Hello, World!' =>

Пример для версий Lua 5.0

print("Hello, World!")

Пример для версий SpiderMonkey (Firefox 3.5)

JavaScript может применять для вывода сообщений различные команды в зависимости от того, в какой среде он используется:

  • print: при использовании интерпретатора с интерфейсом командной строки выводит сообщение в стандартный поток вывода, при использовании браузера — вызывает диалог печати для текущего документа;
  • document.write: при использовании браузера — записывает текст на страницу;
  • console.log: команда плагина Firebug, предназначенная для вывода отладочных сообщений в консоль плагина;
  • alert: при использовании браузера — создает всплывающее окно информации с этим текстом.
print('Hello, World!');

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

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

alert('Hello, World!');

Пример для версий GHC 6.10.4

module Main where

main = do
    putStrLn "Hello, World!"

Пример для версий Furry Paws

~x — функция-константа (обозначенная как % в Interactive FP). emit — стандартная функция, выводящая свой аргумент в стандартный поток вывода. main — функция, наличие которой в программах на Furry Paws обязательно, т.к. при выполнении программы она вызывается первой.

main = emit.(return ~"Hello, World!\n")

Пример для версий gnat 3.4.5

with Ada.Text_IO; 
 
procedure HelloWorld is
begin
  Ada.Text_IO.Put_Line("Hello, World!");
end HelloWorld;

Пример для версий UCBLogo 6.0

print [Hello, World!]

Пример для версий gawk 3.1.6, Jawk 1.02, mawk 1.3.3

Печать выполняется шаблоном BEGIN, т.е. перед обработкой входных данных. Сами данные не обрабатываются.

BEGIN { print "Hello, World!" }

Пример для версий S-lang 2.2.2

message ("Hello, World!");

Пример для версий Hanoi Love

Этот пример является фактически переводом примера на Brainfuck. Все стеки пусты, и все вычисления проводятся в регистре. Стек A используется как источник константы 1: поскольку он пуст, примененная к нему операция pop возвращает значение 1. Таким образом, команды ; и backtick становятся командами “увеличить значение в регистре на 1” и “уменьшить значение в регистре на 1”, соответственно, и эквивалентны командам + и - на Brainfuck. Пара команд "' записывает содержимое регистра в стандартный поток вывода, и эквивалентна команде . на Brainfuck.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; "'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; "'
;;;;;;; "'
"'
;;; "'
``````````````````````````````````````````````````````````````````` "'
```````````` "'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; "'
;;;;;;;;;;;;;;;;;;;;;;;; "'
;;; "'
`````` "'
```````` "'
``````````````````````````````````````````````````````````````````` "'

Пример для версий J602, J701

'Hello, World!'

Пример для версий Müller's Brainfuck 2.0

Этот пример является переводом на Brainloller этого примера. Поскольку Brainloller — язык чисто графический, в роли исходного кода выступают изображения.

"Hello, World!" на Brainloller
"Hello, World!" на Brainloller

"Hello, World!" на Brainloller (увеличение 10x)
"Hello, World!" на Brainloller (увеличение 10x)

Пример для версий Mathics 0.4, Wolfram Mathematica 7.0.1.0, Wolfram Mathematica 8.0.4

В этом случае создается временная строковая переменная. В конце строки нет символа “;”, и значение этой переменной выводится отдельным Out, что не всегда удобно.

"Hello, World!"

Пример для версий Mathics 0.4, Wolfram Mathematica 7.0.1.0, Wolfram Mathematica 8.0.4

Функция Print выводит свои аргументы в основной выходной поток. Потоки могут быть вложенными, и для удобства копирования результатов лучше пользоваться для вывода одним потоком.

Print["Hello, World!"];

Пример для версий Mercury 10.04

 :- module hello.
 :- interface.
 :- import_module io.
 :- pred main(io::di, io::uo) is det.

 :- implementation.
 main(!IO) :-
 	io.write_string("Hello, World!\n", !IO).

Пример для версий Bash 4.0.35, Bash 4.1.5

В этом примере используется инструмент Bash — dc (Desktop Calculator), нестандартный, но часто встречающийся инструмент, позволяющий работать с числами произвольной точности. Команда P (последний символ строки перед | dc) выводит на печать верхний элемент стека. Число до команды в шестнадцатиричном виде выглядит как 0x48656C6C6F2C20576F726C64210A, и пары соседних цифр образуют ASCII-коды символлв строки “Hello, World!”: 0x48 = H, 0x65 = e, 0x6c = l и.т.д. Таким образом, при выводе на печать это число воспринимается как строка.

echo 1468369091346906859060166438166794P | dc

Пример для версий Интерпретатор ПРОФТ-5.52

Пример с английскими, а не русскими ключевыми словами (использование английского в Профт не рекомендуется).

Action Begin().
    Message("Hello, world!"; 64; "Simplest program").
    End.
EndAction.

Пример для версий guile 1.8.5, JScheme 7.2, MIT/GNU Scheme 7.7.9

Вывод строки на печать — побочный эффект выполнения этой команды. В зависимости от выбранной реализации, команда вернет либо выведенный текст, либо Unspecified return value.

(write "Hello, World!")

Пример для версий Whitespacers (Ruby)

Для простоты понимания код откомментирован: буква означает, что следующий фрагмент кода добавляет в стек ASCII-код этой буквы, а после print следует команда вывода верхнего элемента стека на печать как символа. Последовательности символов, задающие ASCII-коды, заключены в фигурные скобки (за исключением перевода строки).

H  { 	  	   }
print	
  e  { 		  	 	}
print	
  l  { 		 		  }
print	
  l  { 		 		  }
print	
  o  { 		 				}
print	
  ,  { 	 		  }
print	
  space  { 	     }
print	
  W  { 	 	 			}
print	
  o  { 		 				}
print	
  r  { 			  	 }
print	
  l  { 		 		  }
print	
  d  { 		  	  }
print	
  !  { 	    	}
print	
  \n  { 	 	 }
print	
  


end

Пример для версий erl 5.7.3

Первая строка задает имя модуля и указывает на то, что он должен находиться в файле prog.erl. Вторая строка экспортирует 0-арную (не имеющую параметров) функцию main. Третья описывает саму функцию, которая выводит “Hello, World!”.

-module(prog).
 
-export([main/0]).
 
main() -> io:format("Hello, World!~n").

Пример для версий GDC 0.24

Функция writef примерно эквивалентна printf в C++ и выводит на печать строку определенного формата.

module hello;

import std.stdio;

int main()
{
	writefln( "Hello, World!" );
	return 0;
}

Пример для версий Perl 5.12.1, rakudo-2010.08

print "Hello, World!\n";

Пример для версий rakudo-2010.08

Команда say доступна только в Perl 6.

say 'Hello, World!';

Пример для версий Ruby 1.8.5, Ruby 1.9.0, Ruby 1.9.2

puts "Hello, World!"

Пример для версий Borland C++ Builder 6, g++ 3.4.5, gcc 3.4.5, gcc 3.4.5 (Objective-C), TCC 0.9.25

#include <stdio.h>

int main()
{
    printf("Hello, World!\n");
    return 0;
}

Пример для версий Scratch 1.4

Летучая мышь — спрайт, ассоциированный скрипт которого состоит из единственного блока — вывода “Hello, World!”. Приведены две версии примера — для англоязычного интерфейса и локализованная.

say Hello, World!

Hello, World! на Scratch
Hello, World! на Scratch

Hello, World! на Scratch (рус.)
Hello, World! на Scratch (рус.)

Пример для версий Sanscript 2.2

Диаграмма функций для этого примера состоит из двух функций — константы “Hello, World!” и “Display Message”, которая выводит эту константу на экран.

Hello, World! на Sanscript
Hello, World! на Sanscript

Пример для версий gc-2010-07-14

package main
import "fmt"

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

Пример для версий LabVIEW 10.0

Диаграмма блоков (эквивалент программы на G) для этого примера состоит из единственного узла — “Display Message to User”, с заданным заранее сообщением.

Чтобы выполнить этот пример, создайте новый проект и новый VI в нем. Переключитесь на диаграмму блоков нового VI. Перейдите в Functions -> Programming -> “Dialog and User Interface” — это список узлов, из которых можно строить программу. Выберите узел “Display Message To User” и перетащите его на диаграмме. После этого появится диалог конфигурации узла; введите “Hello, World!” в качестве сообщения, которое следует выводить. Сохраните проект и нажмите Run — сообщение появится во всплывающем окне. Скриншот показывает и диаграмму блоков, и результат выполнения программы.

Hello, World! на G/LabVIEW
Hello, World! на G/LabVIEW

Пример для версий GNU bc 1.06

print "Hello, World!\n";

Пример для версий gnuplot 4.2.2

print 'Hello, World!'

Пример для версий gforth 0.7.0

Команда ." считывает строку, заключенную в двойные кавычки, и присоединяет ее к текущему определению, поэтому эта строка будет выведена при выполнении. Один пробел, отделяющий ." от Hello, не является частью строки, а требуется для того, чтобы распознать ." как команду.

Команда cr в конце программы выводит следующий за ней текст с новой строки, являясь эквивалентом nl в Prolog и endl в C++.

." Hello, World!" cr

Пример для версий C-INTERCAL 28.0, J-INTERCAL 0.11, J-INTERCAL 0.12

INTERCAL — один из тех языков, в которых даже вывод “Hello, World!” — пытка. C-INTERCAL использует метод вывода строк под названием лента Тьюринга. На вход команды READ OUT подается массив чисел (в данном случае ,1), который обрабатывается слева направо, по одному элементу за раз, следующим образом:

  1. 8 бит ASCII-кода предыдущего выведенного символа отображаются зеркально — rev(i). Если выводится первый символ, rev(i) принимается равным 0.
  2. array(i) — i-ый элемент массива.
  3. rev(i) = rev(i-1) -- array(i)
  4. Биты rev(i) снова отображаются зеркально, и получаем ASCII-код следующего символа для вывода.

Также следует отметить использование модификатора PLEASE: в этой программе он должен встретиться 4 или 5 раз, в произвольных местах. 3 и меньше вызовут ошибку “ICL079I PROGRAMMER IS INSUFFICIENTLY POLITE”, 6 и больше — “ICL099I PROGRAMMER IS OVERLY POLITE”.

Остальные команды и выражения сравнительно обычны: # — префикс константы, <- — присвоение, SUB — индекс массива. Первая строка примера создает массив 16-битных целых из 13 элементов.

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
PLEASE DO ,1 SUB #7 <- #48
DO ,1 SUB #8 <- #26
DO ,1 SUB #9 <- #244
PLEASE DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

Пример для версий CLC-INTERCAL 1.-94.-2

CLC-INTERCAL использует механизм текстового ввода-вывода, основанный на кодах Бадо. Это 5-битная кодировка, в которой код каждого символа состоит из двух частей — сдвиг и собственно код. Сдвиг может принимать значения от 1 до 4, переключения между сдвигами делается специальными кодами 31 (из 1|2 в 2 или 3|4 в 1) и 27 (из 1|2 в 3 или из 3|4 в 4). Таким образом, выводящийся массив интерпретируется как последовательность кодов символов и переключателей сдвига. Массив обычно длиннее, чем сообщение, из-за переключателей сдвига.

В этом примере, сообщение начинается с H, код Бадо “1 0x14”. Изначально сдвиг равен 1, его менять не нужно, поэтому первый элемент массива — код символа 20. Следующий символ — e, код Бадо “2 0x01”, приходится переключаться на сдвиг 2 (код 31) и только потом печатать символ (код 1), и т.д.

Следует отметить, что CLC-INTERCAL не слишком беспокоится о вежливости программиста: этот пример работает с гораздо меньшим количеством PLEASE, чем потребовал бы C-INTERCAL.

DO ,1 <- #18

DO ,1 SUB #1 <- #20
DO ,1 SUB #2 <- #31
DO ,1 SUB #3 <- #1
DO ,1 SUB #4 <- #19
DO ,1 SUB #5 <- #19
DO ,1 SUB #6 <- #24
DO ,1 SUB #7 <- #27
DO ,1 SUB #8 <- #12
DO ,1 SUB #9 <- #4
DO ,1 SUB #10 <- #31
DO ,1 SUB #11 <- #18
DO ,1 SUB #12 <- #31
DO ,1 SUB #13 <- #24
DO ,1 SUB #14 <- #10
DO ,1 SUB #15 <- #19
DO ,1 SUB #16 <- #9
DO ,1 SUB #17 <- #27
DO ,1 SUB #18 <- #13

PLEASE READ OUT ,1
PLEASE GIVE UP

Пример для версий Mozart 1.4.0

functor
import
   Application
   System
 
define
   {System.showInfo 'Hello, World!'}
   {Application.exit 0}
 
end

Пример для версий gst 3.1

'Hello, World!' printNl.

Пример для версий Müller's Brainfuck 2.0

Этот пример является переводом на Unary этого примера. Сам код слишком обширен, чтобы приводить его полностью, поэтому указана только его длина.

A string of 
708184005756841022918598670049178934705323143517361395031673227349803938380
119378597780037353721967636097362645175347036417214959141923667629285233360
306016978751166690464736541968556 zeroes (approximately 7*10^182).

Пример для версий Ellsässer's HQ9+ 0.8

Любая программа на HQ9+, содержащая один символ H и не содержащая Q и 9, выводит это сообщение.

H

Пример для версий ActiveTcl 8.5, JTcl 2.1.0, Tcl 8.4, Tcl 8.5.7

puts "Hello, World!"

Пример для версий Bash 3.0, Bash 4.0.35, Bash 4.1.5

MESSAGE='Hello'
TARGET='World'

echo "$MESSAGE, $TARGET!"

Пример для версий Miller's Hack VM (JavaScript), Miller's Hack VM (Python)

Программа работает довольно очевидным образом — ASCII-коды символов сообщения вычисляются и выводятся один за другим. Вычислять их приходится из-за того, что сразу помещать в стек можно только числа от 0 до 9, большие числа приходится комбинировать из меньших. Единственным нетривиальным приемом является обработка символа l — когда его ASCII-код вычисляется, он утраивается в стеке командой 0^ и выводится на печать два раза сразу же и один раз позднее.

89*P 45*99*+P 39*99*+0^0^PP 56*99*+P 29+4*P 48*P 92+8*1-P 56*99*+0^P 3+P P 25*0^*P 56*3+P

Пример для версий agda 2.2.6

Простой вывод строк на печать — неестественное для Agda занятие, поэтому требует установки дополнительных пакетов. Этот пример следует сохранить в файл “helloworld.agda”. Понадобится установить стандартную библиотеку agda-stdlib; этот пример был проверен для agda 2.2.6 и agda-stdlib 0.3. Чтобы скомпилировать пример, используйте команду agda -i [library path] -i . -c helloworld.agda, где [library path] — путь к директории, в которой установлена библиотека. Эта команда компилирует исходный код Agda в код Haskell, и затем — в исполняемый файл.

module helloworld where

open import IO.Primitive using (IO; putStrLn)
open import Data.String using (toCostring; String)
open import Data.Char using (Char)
open import Foreign.Haskell using (fromColist; Colist; Unit)
open import Data.Function

fromString = fromColist . toCostring

main : IO Unit
main = putStrLn (fromString "Hello, World!")

Пример для версий Onyx 5.1.2

#!/usr/bin/onyx

`Hello world!\n' print

Пример для версий Roco 20071014

В программе используется одна сопрограмма — главная. Она выводит сообщение посимвольно, используя ASCII-коды символов, и останавливается.

cout 72
cout 101
cout 108
cout 108
cout 111
cout 44
cout 32
cout 87
cout 111
cout 114
cout 108
cout 100
cout 33
ac

Пример для версий fsharp 2.0.0

printfn "Hello, World!"

Пример для версий MLton 20070826, Moscow ML 2.01, SML/NJ 110.69

Отметим, что в Objective Caml этот код работать не будет, так как в нем не определена функция print.

print "Hello, World!\n";

Пример для версий Groovy 1.7

println "Hello, World!"

Пример для версий Müller's Brainfuck 2.0

Этот пример является переводом на Pi этого примера.

3.141592653589793238462623382272502824197169299275107820904924592337816406386238
99262833482534311206728234808621328230264709314460935058223872535941812844111745
00841022019385311055296426229289549302819244388109726652334471204756422337867231
65221231909345628566933460342610454226248213391607264249148273720587036656315582
17288153092396282225439171532436789559536003133023024882044652108412695192151163
94330573703656595909530921261173839326137921051125420742623799227495273538857227
24892227938133011749109833675362442656243086321294946795024737130702479860343702
77453921711629317375838467480846766440513202056822724526351082178577132275778260
91736271767204684409312229532301462492853110307922896892089235450199501120290219
65862034218129813624774731309964518707241349993993372978039951049734732816036348
59504445345544690330263252250825304468003522193158817101

Пример для версий Factor 0.94

Первая строка импортирует библиотеку io, содержащую слово print. Вторая строка добавляет на стек строку-сообщение и затем вызывает слово print, которое выводит верхний элемент стека на печать.

USE: io 

"Hello, World!" print

Пример для версий ncc 0.9.3

Пример в стиле C#. Более простая запись не требует оформления в класс:

System.Console.WriteLine("Hello, World!");
class Hello {
  static Main () : void {
    System.Console.WriteLine ("Hello, World!");
  }
}

Пример для версий Web2c 2009

Hello, World!
\bye

Пример для версий Harder's Omgrofl

Сообщение выводится посимвольно, с использованием ASCII-кодов символов. Затем программа останавливается.

rofl 72
rofl 101
rofl 108
rofl 108
rofl 111
rofl 44
rofl 32
rofl 87
rofl 111
rofl 114
rofl 108
rofl 100
rofl 33
stfu

Пример для версий EsCo 0.511 (Brainfuck)

Пример для Boolfuck.

H ;;;+;+;;+;+;
e +;+;+;+;;+;;+;
l ;;+;;+;+;;+;
l ;;+;;+;+;;+;
o +;;;;+;+;;+;
comma ;;+;;+;+;+;;
space ;;;;;+;+;;
W +;;;+;+;+;+;+;
o +;;;;+;+;;+;
r ;+;+;;+;;;+;
l ;;+;;+;+;;+;
d ;;+;+;;+;;+;
! +;+;;;;+;+;;
\n ;+;+;+; 

Пример для версий weave.rb

Пример использования диалекта pbrain. Первая строка определяет процедуру номер 0, которая, будучи вызвана в некоторой ячейке, копирует в нее содержимое соседней слева ячейки и прибавляет к нему 10. Вторая строка заполняет первые 14 ячеек значениями от 0 до 130 с шагом 10. Затем значения в нужных ячейках изменяются на ASCII-коды нужных символов.

(++++++++++<[>+>+<<-]>>[<<+>>-])
>::::::::::::::
<<<<<<<--------.>>>---------.+++++++..>---------.<<<<<<
<------.<--------.>>>>>---.>>>.+++.<.--------.<<<<<<<+.

Пример для версий EsCo 0.511 (Brainfuck)

Пример на COW.

MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO moO MoO MoO moO MoO MoO MoO 
moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO moO MoO 
MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO 
MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO 
MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO 
MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO mOo mOo mOo mOo mOo
mOo mOo mOo mOo mOo mOo mOo mOo MOo moo moO moO moO moO moO moO moO moO MOo MOo 
MOo MOo MOo MOo MOo MOo Moo moO moO moO MOo MOo MOo MOo MOo MOo MOo MOo MOo Moo 
MoO MoO MoO MoO MoO MoO MoO Moo Moo moO MOo MOo MOo MOo MOo MOo MOo MOo MOo Moo 
mOo mOo mOo mOo mOo mOo mOo MOo MOo MOo MOo MOo MOo Moo mOo MOo MOo MOo MOo MOo 
MOo MOo MOo Moo moO moO moO moO moO MOo MOo MOo Moo moO moO moO Moo MoO MoO MoO 
Moo mOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo mOo mOo mOo mOo mOo mOo MoO 
Moo 

Пример для версий Baltie 3

Программа состоит из двух иконок: первая — literal — содержит сообщение, которое следует вывести, вторая — read key or mouse button (wait for pressing) — приостанавливает выполнение программы до того, как пользователь нажмет любую клавишу (иначе окно результатов закроется до того, как можно будет прочитать сообщение).

"Hello, World!" на Baltie 3
"Hello, World!" на Baltie 3

Пример для версий npiet 1.2

В этом примере используются только две команды — push и out(char). Для того, чтобы вывести на печать один символ, нужно сначала создать блок произвольного цвета из количества пикселей, равного ASCII-коду символа, затем справа от него создать блок цвета, на один темнее, из произвольного количества пикселей (команда push), и наконец, справа от него создать блок цвета, на один левее исходного, из произвольного количества символов (команда out(char)). После этого цикл повторяется.

Для того, чтобы закончить работу программы, используется петля — блок одного цвета, окруженный черными пикселями. Когда указатель инструкций попадает в этот блок, он не может его покинуть ни в каком направлении.

Декоративная версия примера демонстрирует, что форма блоков может быть любой, даже с пикселями других цветов внутри.

Hello, World! на Piet (базовый вариант)
Hello, World! на Piet (базовый вариант)

Hello, World! на Piet (базовый вариант, увеличение 5x)
Hello, World! на Piet (базовый вариант, увеличение 5x)

Hello, World! на Piet (декоративный вариант)
Hello, World! на Piet (декоративный вариант)

Hello, World! на Piet (декоративный вариант, увеличение 5x)
Hello, World! на Piet (декоративный вариант, увеличение 5x)

Пример для версий Io-2008-01-07

Эта команда создает символ “Hello, World!” (символ — неизменная последовательность, наподобие строки в Java) и отправляет ему сообщение println (эквивалент вызову метода println в других языках).

"Hello, World!" println

Пример для версий Objective Caml 3.10.2

print_endline "Hello, World!"

Пример для версий APS APLAN

Эта программа не требует использования правил переписывания и выполнена в процедурном стиле. Модуль std.ap позволяет использовать арифметические операции, предикаты сравнения, логические операции, императивные элементы и ряд специальных функций; его включение необходимо во всех программах. При запуске в онлайн-интерпретаторе все модули подключены автоматически, поэтому в явном виде их можно не подключать.

Вместо функции put можно использовать эквивалентную ей prn.

INCLUDE <include/std.ap>

task := put("Hello, World!");

Пример для версий Miranda 2.042

"Hello, World!"

Пример для версий Online Cat 1.3

Первая строка программы добавляет строку “Hello, World!” в стек, вторая — выводит верхний элемент стека на печать. Команды языка не обязательно писать в отдельных строках; эту же программу можно было бы написать как "Hello, World!" writeln.

"Hello, World!"
writeln

Пример для версий Regina 3.3

say 'Hello, World!'

Пример для версий Интерпретатор ПРОФТ-5.52

Действие Начало().
    Сообщить("Hello, World!"; 64; "Простейшая программа: Здравствуйте, Мир!").
    Конец.
КонецДействия.

Пример для версий FOCAL15 V6B

PDP-15 поддерживает только прописные буквы. Вместо команды TYPE можно написать просто T. Второй восклицательный знак используется для печати символа перевода строки.

1.10 TYPE "HELLO, WORLD!"!

Пример для версий OpenCOBOL 1.0, TinyCOBOL 0.65.9

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

Пример для версий David Pitts' FOCAL 1.0.0

Вместо команды type можно написать просто t. Второй восклицательный знак используется для печати символа перевода строки.

1.10 type "Hello, World!"!

Пример для версий befungee 0.2.0

Первая часть примера (до пробела) размещает в стеке нужные значения. 25* помещает в стек значение 10 (ASCII-код перевода строки), затем " переводит программу в строковый режим: каждый следующий символ (до вторых кавычек) добавляет в стек свой ASCII-код.

Вторая часть примера — цикл, выводящий на печать все значения в стеке, начиная с самых верхних. > возвращает указатель инструкций к движению вправо (после конца одной итерации). : копирует верхний элемент стека (т.е. текущий символ), из-за моста # выполняется только при движении вправо. , выводит верхний элемент стека (выполняется только при движении влево). _ пропускает указатель инструкций к @ (концу программы), если верхний элемент стека — 0, и отражает его влево в противном случае. Последовательность действий в одной итерации следующая:

  • скопировать верхний элемент стека,
  • проверить, равен ли он 0; если равен, выйти из цикла (при этом в любом случае копия элемента удаляется из стека),
  • напечатать верхний элемент стека.
25*"!dlroW ,olleH" >:#,_@

Пример для версий 64-bit BCPL Cintcode System (1 Nov 2006)

*n служит для печати символа перевода строки

GET "libhdr"

LET start() = VALOF
$( writes("Hello, World!*n")
   RESULTIS 0
$)

Пример для версий Acme-Chef-1.01

Каждый ингредиент соответствует ASCII-коду одного из использующихся символов; для удобства названия ингредиентов начинаются с соответствующих букв. Коды размещаются в миску в порядке, обратном порядку символов в сообщении. Затем команда Liquify (старое написание команды) уточняет, что все значения в миске следует выводить как символы, а не как числа. Наконец, содержимое миски переносится в форму для запекания и командой Serves 1 выводится на печать.

Lobsters with Fruit and Nuts.

This recipe prints "Hello, World!" in a most delicious way.

Ingredients.
72 g hazelnuts
101 eggs
108 g lobsters
111 ml orange juice
44 g cashews
32 g sugar
87 ml water
114 g rice
100 g durian
33 passion fruit
10 ml lemon juice

Method.
Put lemon juice into the mixing bowl.
Put passion fruit into the mixing bowl.
Put durian into the mixing bowl.
Put lobsters into the mixing bowl.
Put rice into the mixing bowl.
Put orange juice  into the mixing bowl.
Put water into the mixing bowl.
Put sugar into the mixing bowl.
Put cashews into the mixing bowl.
Put orange juice into the mixing bowl.
Put lobsters into the mixing bowl.
Put lobsters into the mixing bowl.
Put eggs into the mixing bowl.
Put hazelnuts into the mixing bowl.
Liquify contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.

Serves 1.

Пример для версий Gwydion Dylan 2.4.0

Первая строка — заголовок, задающий модуль, к которому принадлежит файл.

module: hello-world

format-out("Hello, World!\n");

Пример для версий EsCo 0.511 (Brainfuck)

Этот пример является переводом на Blub этого примера на Brainfuck.

Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub! Blub? Blub. Blub? 
Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. 
Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub? Blub. Blub! Blub! Blub? Blub! Blub. Blub? 
Blub! Blub. Blub. Blub? Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. 
Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub! Blub? Blub. Blub? Blub. Blub. Blub. Blub. 
Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. 
Blub? Blub. Blub! Blub! Blub? Blub! Blub. Blub? Blub. Blub. Blub! Blub. Blub. Blub. Blub. Blub. 
Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub! Blub. Blub! Blub. Blub. Blub. 
Blub. Blub. Blub. Blub. Blub! Blub. Blub. Blub? Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. 
Blub! Blub? Blub. Blub? Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. 
Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub? Blub. Blub! Blub! Blub? Blub! 
Blub. Blub? Blub! Blub. Blub? Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub! Blub? Blub. Blub? 
Blub! Blub! Blub! Blub! Blub! Blub! Blub! Blub! Blub? Blub. Blub! Blub! Blub? Blub! Blub. Blub? 
Blub! Blub. Blub? Blub. Blub? Blub. Blub? Blub. Blub? Blub. Blub? Blub. Blub. Blub. Blub. Blub. 
Blub. Blub. Blub! Blub? Blub. Blub? Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. Blub. 
Blub? Blub. Blub! Blub! Blub? Blub! Blub. Blub? Blub! Blub. Blub. Blub? Blub. Blub? Blub! Blub. 
Blub. Blub. Blub. Blub. Blub. Blub. Blub! Blub. Blub! Blub! Blub! Blub! Blub! Blub! Blub! Blub! 
Blub! Blub! Blub! Blub! Blub! Blub. Blub! Blub! Blub! Blub! Blub! Blub! Blub! Blub! Blub! Blub! 
Blub! Blub! Blub! Blub! Blub! Blub! Blub! Blub. Blub. Blub? Blub. Blub? Blub. Blub. Blub! Blub. 

Пример для версий Clojure 1.0.0, Clojure 1.1.0

(printf "Hello, World!")

Пример для версий Bash 3.0, Bash 3.2.39, Bash 4.0.35, Bash 4.1.5, Foma 0.9.17, mksh R40

echo Hello, World!

Пример для версий Falcon 0.9.6.6

printl('Hello, World!')

Пример для версий befungee 0.2.0

Этот пример более прямолинеен — ASCII-коды символов заносятся в стек в численном виде, и символы выводятся на печать сразу после попадания кодов в стек, так что цикл не нужен.

89*,45*99*+,39*99*+::,,56*99*+,29+4*,48*,92+8*1-,56*99*+:,3+,,25*:*,56*3+,25*,@

Пример для версий Progopedia Grocery List

Используются команды v (добавить ASCII следующего символа), n (добавить длину текущей команды), c (скопировать верхний элемент — дли символов o и l), p (вывести символ на печать) и w (добавить 100); остальные пункты списка пропускаются, т.к. их первые символы используются командой v.

Hello, World! supermarket

Vanilla Ice Cream
Honey & Mint Ice Cream
pizza, mushroom and salami
vinegar
eggs, 10
pie with any berries, see what kinds there are
vegetable frozen mix
lamb leg
chicken if no lamb
cod
plaice if no cod
pork steak if you want it
veggie soup
onions
carrots
peas
no more mustard, please! got plenty of it!!!
pair of socks
noodles, I think, with meat, ok?
pasta
Venetian cake
Wax Polish
potato
pumpkin juice
violet onion
rice
popcorn
pudding
watermelon
poultry
Nescafe to take to the office x10
pumpkin

Пример для версий Inferno Limbo 20100115

implement Hello;
include "sys.m";
	sys: Sys;
include "draw.m";

Hello: module {
	init: fn(nil: ref Draw->Context, argv: list of string);
};

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

Пример для версий Pike 7.6, Pike 7.8

int main() {
    write("Hello, World!\n");
    return 0;
}

Пример для версий Morphett's FALSE, Wouter's FALSE 1.2.CF

Строка эквивалентна команде вывода ее содержимого на печать.

"Hello, World!"

Пример для версий Objeck 2.0.3

bundle Default {
	class Hello {
		function : Main(args : String[]) ~ Nil {
			"Hello, World!"->PrintLine();
		}
	}
}

Пример для версий Lingua::Shakespeare 1.00

Для вывода сообщения используется самый простой метод: ASCII-код каждого символа вычисляется заново как сумма степеней двойки, присутствующих в его двоичной записи.

use Lingua::Shakespeare;

Shakespeare-style Encoded Message.

Desdemona, the talker.
Pericles, a shut-pan with notable patience.

Act I: Message output.

Scene I: Letter by letter.

[Enter Desdemona and Pericles]

Desdemona:
  You honest reddest gentle loving sweet brave rose!
  You are as bottomless as the sum of yourself and a rural red purple hamster!
  Speak your mind!

  You bold cunning peaceful proud good sweetest hero!
  You are as pretty as the sum of thyself and a warm cunning cute fine delicious kingdom!
  You are as bottomless as the sum of yourself and a rural white morning!
  You are as small as the sum of yourself and a grandfather!
  Speak your mind!

  You sweetest proud happy prompt cunning loving joy!
  You are as embroidered as the sum of yourself and a reddest loving beautiful cunning handsome happiness!
  You are as reddest as the sum of yourself and a peaceful cunning beautiful pony!
  You are as rural as the sum of yourself and a white tiny sky!
  Speak your mind!
  Speak your mind!

  You healthy amazing loving clearest trustworthy good happiness!
  You are as brave as the sum of yourself and a cunning golden loving peaceful mighty pony!
  You are as delicious as the sum of thyself and a mighty rich gentle plum!
  You are as embroidered as the sum of yourself and a fine bold hero!
  You are as old as the sum of yourself and a tiny cat!
  You are as green as the sum of thyself and a stone wall!
  Speak your mind!

  You bottomless big blue purple huge horse!
  You are as lovely as the sum of thyself and a gentle prompt delicious Heaven!
  You are as red as the sum of yourself and a bottomless big moon!
  Speak your mind!

  You tiny red furry rural bottomless sky!
  Speak your mind!

  You rural bluest large bottomless little purple cow!
  You are as sweet as the sum of yourself and a embroidered cute trustworthy rich rose!
  You are as bottomless as the sum of yourself and a green normal cow!
  You are as proud as the sum of thyself and a handsome summer's day!
  You are as happy as the sum of thyself and a flower!
  Speak your mind!

  You tiny bluest large huge hard normal uncle!
  You are as warm as the sum of yourself and a pretty rich charming reddest mighty Heaven!
  You are as small as the sum of yourself and a huge green little morning!
  You are as sweetest as the sum of yourself and a beautiful sweet kingdom!
  You are as warm as the sum of yourself and a proud happiness!
  You are as hard as the sum of yourself and a roman!
  Speak your mind!

  You warm cute happy pretty golden loving Lord!
  You are as huge as the sum of thyself and a little furry small green yellow brother!
  You are as peaceful as the sum of thyself and a honest brave happy fine flower!
  You are as small as the sum of yourself and a yellow purse!
  Speak your mind!

  You normal purple rural old white big morning!
  You are as blossoming as the sum of yourself and a charming cunning gentle lovely amazing happiness!
  You are as normal as the sum of thyself and a large red big animal!
  You are as charming as the sum of yourself and a healthy delicious hero!
  Speak your mind!

  You large old bluest green red rural lantern!
  You are as sweet as the sum of yourself and a beautiful loving sunny mighty reddest summer's day!
  You are as lovely as the sum of yourself and a bold clearest happiness!
  Speak your mind!

  You golden loving fair charming lovely King!
  You are as rural as the sum of thyself and a squirrel!
  Speak your mind!

[Exeunt]

Пример для версий npiet 1.2

Этот пример сгенерирован автоматически, при помощи транслятора, написанного Сергеем Льюисом (Sergei Lewis). В комплект входят транслятор с C-подобного языка на ассемблер и с ассемблера — в изображение Piet. Так, в данном случае исходная программа выглядела следующим образом:

main()
{
asm{ @"Hello, World!\r\n" }
}

Hello, World! на Piet, сгенерированный автоматически
Hello, World! на Piet, сгенерированный автоматически

Hello, World! на Piet, сгенерированный автоматически (увеличение 5x)
Hello, World! на Piet, сгенерированный автоматически (увеличение 5x)

Пример для версий GNU Octave 3.2.3

Первая функция аналогична printf в C. Вторая — специфична для MATLAB.

printf("Hello, World!\n");

disp("Hello, World!");

Пример для версий ci01_

Программа состоит из одного определения. hw — функция, которая запускается в начале выполнения программы (имя символа функции должно совпадать с именем файла, в котором находится программа). Функция запускается без параметров-паттернов. Справа от = находится выражение, которое оценивается при запуске функции. Оно состоит из единственной константы (в общем случае константа должна завершаться символом _, но если в константе есть биты и за ней не следует другая константа, этот символ можно не писать). На печать выводится эта константа — ее биты разбиваются на группы по 8 и переводятся в ASCII-коды символов.

hw=0100100001100101011011000110110001101111001011000010000001010111011011110111001001101100011001000010000100001010.

Пример для версий Whirl

Программа написана Kang Seonghoon.

110011100111000001111100000001000011111000011111100000000010
000011001111100001100010000010011111000100000000000001001111
100000111110001000000000000000001000111110010000001100001111
100011000000000100111110011100111000111000001000111000001111
100000111110010000011111000110011111100001111000001111000001
110011111100001111000110011100000111000100011111000001111100
100000110000000111000001110001111100011111000111000001000001
000011000111110001000001000000011100000111001000111110001111
000001111000011111100001111110000011110000000000000000011110
000011100111000011110011111000111110001111100000100000000000
000000000000111110001110000001110000011100011100111110001000
100000000011100001111100110000000010011111000111100000111100
111100010011100000111110000011111001100111100010001111000000
000001000111110010000010011110011001110001000111110001100000
100011111000011110011100111111000111100000111100011111000000
011110000011100100001111000100011111001100011111000111100000
111001110001100111100100000000000000011111000001111100010010
000011100001111100100000100011100000111000110011110001001111
110001100000111100011111000111100000111001000011110001001111
100000111110000000011110000011110000000000000000111000001110
000011000001100000111000111000001100111110000111111001001110
000011111000001100011000001001111110000011100110011111000000
000111000001110000111100001100
 

Пример для версий PureBasic 4.60

“Hello, World!” с выводом в консоль.

OpenConsole()          ; Создание консольного окна.
Print("Hello, World!") ; Вывод текста в консоль.
Input()                ; Ожидание нажатия Enter.

Пример для версий PureBasic 4.60

“Hello, World” в окне программы.

OpenWindow(0, 0, 0, 200, 100, "Hello, World", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
TextGadget(0, 10, 40, 180,16, "Hello, World", #PB_Text_Center)
Repeat
  Event = WaitWindowEvent() ; ID события программы.
Until Event = #PB_Event_CloseWindow ; Если получено событие закрытия окна, то прерываем цикл.

Пример для версий Alef (Plan 9, edition 2)

Этот пример иллюстрирует использование процессов и каналов. Основной процесс создает канал, который передает адреса строк. Затем он запускает дочерний процесс с аргументом-каналом, передает в канал адрес строки и прекращает работу. Второй процесс ожидает получения сообщения, выводит его на печать и также прекращает работу.

#include	<alef.h>

void
receive(chan(byte*) c)
{
	byte *s;
	s = <-c;
	print("%s\n", s);
	terminate(nil);
}

void
main(void)
{
	chan(byte*) c;
	alloc c;
	proc receive(c);
	c <-= "Hello, World!";
	terminate(nil);
}

Пример для версий Rust 0.1

use std;
import std::io;

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

Пример для версий Ceylon M1

Допустим, эта программа принадлежит модулю helloworld.progopedia.com. Тогда сам код программы должен находиться в файле /source/com/progopedia/helloworld.ceylon (относительно главной директории программы, из которой она будет запускаться). Кроме того, в файле /source/com/progopedia/module.ceylon должно находиться описание модуля, например, такое:

Module module {
 name = 'com.progopedia.helloworld';
 version = '1.0.0';
 by = {"Mariia Mykhailova"};
 dependencies = {};
 doc = "Hello, World!";
 license = 'Public domain';
}

После этого программу можно скомпилировать командой ceylonc com.progopedia.helloworld и запустить командой ceylon com.progopedia.helloworld/1.0.0 (указание версии при запуске обязательно).

void run() {
    print("Hello, World!");
}

Пример для версий loljs 1.1

HAI
  CAN HAS STDIO?
  VISIBLE "Hello, World!"
KTHXBYE

Пример для версий Cool 2008

-- Hello World in Cool

class Main inherits IO{
    main():Object{
    out_string("Hello, world!\n")
    };
};

Пример для версий G-code

CNC machines.

%
O1000
(PROGRAM NAME - HELLOWORLD)
(DATE=DD-MM-YY - 30-06-05 TIME=HH:MM - 19:37)
N10G20
N20G0G17G40G49G80G90
/N30G91G28Z0.
/N40G28X0.Y0.
/N50G92X0.Y0.Z0.
( 1/16 FLAT ENDMILL TOOL - 1 DIA. OFF. - 1 LEN. - 1 DIA. - .0625)
(CONTOUR)
N60T1M6
N70G0G90X0.Y1.A0.S5000M3
N80G43H1Z.5
N90Z.25
N100G1Z-.005F2.
N110Y0.F20.
N120G0Z.5
N130X.5
N140Z.25
N150G1Z-.005F2.
N160Y1.F20.
N170G0Z.5
N180Y.6106
N190Z.25
N200G1Z-.005F2.
N210X0.F20.
N220G0Z.5
N230X.6157Y.4712
N240Z.25
N250G1Z-.005F2.
N260X.6039Y.4135F20.
N270X.6Y.351
N280X1.1
N290G3X1.0098Y.6202R.4333
N300X.8941Y.6971R.2625
N310X.7255Y.6538R.1837
N320X.6157Y.4712R.332
N330G0Z.5
N340X.6Y.351
N350Z.25
N360G1Z-.005F2.
N370X.6039Y.2885F20.
N380G3X.7255Y.0481R.385
N390X.9745R.1853
N400X1.0843Y.2308R.332
N410G0Z.5
N420X1.2039Y0.
N430Z.25
N440G1Z-.005F2.
N450Y1.F20.
N460G0Z.5
N470X1.3098
N480Z.25
N490G1Z-.005F2.
N500Y0.F20.
N510G0Z.5
N520X1.4706Y.125
N530Z.25
N540G1Z-.005F2.
N550X1.502Y.0817F20.
N560G3X1.6176Y.0048R.2625
N570X1.7863Y.0481R.1837
N580X1.9118Y.351R.3957
N590X1.8216Y.6202R.4333
N600X1.7059Y.6971R.2625
N610X1.5373Y.6538R.1837
N620X1.4157Y.4135R.358
N630X1.4706Y.125R.4611
N640G0Z.5
N650X1.9853Y0.
N660Z.25
N670G1Z-.005F2.
N680X2.0422Y.1442F20.
N690G0Z.5
N700X2.5706Y1.
N710Z.25
N720G1Z-.005F2.
N730X2.6961Y0.F20.
N740X2.8216Y1.
N750X2.9451Y0.
N760X3.0706Y1.
N770G0Z.5
N780X3.2961Y.6538
N790Z.25
N800G1Z-.005F2.
N810X3.2608Y.6202F20.
N820G3X3.1745Y.2885R.4408
N830X3.2961Y.0481R.385
N840X3.5451R.1853
N850X3.6706Y.351R.3957
N860X3.5804Y.6202R.4333
N870X3.4647Y.6971R.2625
N880X3.2961Y.6538R.1837
N890G0Z.5
N900X3.7461Y.7019
N910Z.25
N920G1Z-.005F2.
N930Y0.F20.
N940G0Z.5
N950Y.3654
N960Z.25
N970G1Z-.005F2.
N980X3.7637Y.4663F20.
N990G2X3.8422Y.6587R.4948
N1000X3.9167Y.7019R.0929
N1010G1X4.0755
N1020G2X4.15Y.6587R.0929
N1030X4.1951Y.5769R.246
N1040G0Z.5
N1050X4.3255Y1.
N1060Z.25
N1070G1Z-.005F2.
N1080Y0.F20.
N1090G0Z.5
N1100X4.9275
N1110Z.25
N1120G1Z-.005F2.
N1130Y1.F20.
N1140G0Z.5
N1150X5.0314
N1160Z.25
N1170G1Z-.005F2.
N1180Y.2981F20.
N1190G0Z.5
N1200X4.9275Y.274
N1210Z.25
N1220G1Z-.005F2.
N1230X4.8941Y.1731F20.
N1240G2X4.7627Y.0192R.3255
N1250X4.5529Y.0481R.1862
N1260X4.4314Y.2885R.358
N1270X4.5176Y.6202R.4408
N1280X4.6333Y.6971R.2625
N1290X4.802Y.6538R.1837
N1300X4.8941Y.5288R.3457
N1310G1X4.9275Y.4279
N1320G0Z.5
N1330X5.0314Y.149
N1340Z.25
N1350G1Z-.005F2.
N1360Y0.F20.
N1370G0Z.5
N1380M5
N1390G91G28Z0.
N1400G28X0.Y0.A0.
N1410M30
%

Hello World! G-CODE
Hello World! G-CODE

Пример для версий Intel x86 (IA32)

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,"$"

Пример для версий AmigaE v3.3a

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

Пример для версий 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

Пример для версий Olmstead's Malbolge

Эта программа отображает «Hello world!»

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

Пример для версий Processing 1.5.1

Один из способов “красиво” вывести Hello World! на экран.

Можно сделать и короче.

text(“Hello World!”,10,100); //Вывод текста

PFont font; //Объявление объекта типа PFont

void setup() {
  size(200,200); //Размер окошка
  font = loadFont("CharterBT-Roman-48.vlw"); //Загрузка шрифта
}

void draw() {
  background(255); //Белый фон
  textFont(font,20); //Шрифт и размер
  fill(0); //Цвет текста
  text("Hello World!",10,100); //Вывод текста
}

Пример для версий H6070 B

Пример из “A tutorial introduction to the language B”, написанного Керниганом. Демонстрирует использование и инциализацию глобальных переменных.

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

a 'Hell';
b 'o, W';
c 'orld';

Пример для версий Dyalog APL 13.1

'Hello, World!'

Пример для версий AtariST

     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

Пример для версий Intel x86 (IA32)

NASM Linux , используется Intel синтаксис. Компиляция и линковка:

  • nasm –f elf –o hello.o hello.asm
  • ld -o hello hello.o
SECTION .data
msg     db "Hello, world!",0xa  
len     equ $ - msg
SECTION .text
global _start           
_start:                      ; Точка входа в программу
        mov eax, 4      ; 'write' системный вызов
        mov ebx, 1     
        mov ecx, msg    ; Указатель на данные
        mov edx, len    ; Количество данных
        int 0x80        ;Вызов ядра
        mov eax, 1      ; '_exit' системный вызов 
        mov ebx, 0      ; Возвращаем 0 (все хорошо)
        int 0x80        ; Вызов ядра

Пример для версий GCC 4, gcc 4.4.3

X11,чистый Xlib. Компилируется : gcc test.c -o test -lX11

Программа создает с помощью функции XOpenDisplay соединение с X-Server. Функция DefaultScreen выбирает текущий экран, XCreateSimpleWindow создает окно, а XSelectInput определяет события, на которые окно должно реагировать. XMapWindow выводит окно на экран, а XNextEvent выбирает из очереди событие, которое выше было определено. При событии Expose в окне выводится “Hello World!”. При нажатии клавиши на клавиатуре программа завершает работу.

 #include <X11/Xlib.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
 
 extern int errno;
 
 int main(void) {
   Display *display;
   Window window;
   XEvent e;
   char *msg = "Hello, World!";
   int s;
 
   /* Соединиться с X сервером */
    if ((display = XOpenDisplay(getenv("DISPLAY"))) == NULL) 
    {
        printf("Can't connect X server: %s\n", strerror(errno));
        exit(1);
    }
   s = DefaultScreen(display);
 
   /* Создать окно */
   window = XCreateSimpleWindow(display, RootWindow(display, s), 10, 10, 200, 100, 1,  BlackPixel(display, s), WhitePixel(display, s));
 
   /* На какие события будем реагировать */
   XSelectInput(display, window ,ExposureMask | KeyPressMask);
   XMapWindow(display, window); /* Вывести окно на экран */
 
   /* Бесконечный цикл обработки событий */
   while (1) 
   {
     XNextEvent(display, &e);
 
    /* Перерисовать окно */
     if (e.type == Expose) 
     {
       XDrawString(display, window, DefaultGC(display, s), 50, 50, msg, strlen(msg)); /*Вывод текста*/
     }
     if (e.type == KeyPress)
	break;
   }
  
   XCloseDisplay(display); /* Закрыть соединение с X сервером */
   return 0;
 }

Пример для версий CPL

В общем случае команда Write принимает на вход список значений, но можно выводить и строковую константу, как здесь.

Write(Hello, World!’)

Пример для версий SAP R/3

REPORT HELLOWORLD.      "HELLOWORLD - имя программы-отч
WRITE: 'Hello world'.               "Вывод строки Hello World

Пример для версий Microsoft Cω compiler 1.0.2

using System;

class Programm
{
 static void Main()
 {
  Console.WriteLine("Hello World!");
 }
}

Пример для версий A+ 4.18

Строковые литералы можно заключать как в одинарные, так и в двойные кавычки.

"Hello, World!"
'Hello, World!'

Пример для версий PDP-8

/ — комментарии.

/ Hello World на ассемблере для DEC PDP-8
*200
hello,    cla cll
        tls            / tls устанавливает флаг печати.
        tad charac    / создает индексный регистр
        dca ir1        / для получения символов
        tad m6        / настроить счетчик для
        dca count    / ввода символов.
next,    tad i ir1    / получить символ.
        jms type    / его тип.
        isz count    / сделать что нибудь еще?
        jmp next    / нет, ввести другой символ 
        hlt

type,    0            / подпрограмма type
        tsf
        jmp .-1
        tls
        cla
        jmp i type
charac,    .            / используется в качестве начального значения ir1.
        310 / H
        305 / E
        314 / L
        314 / L
        317 / O
        254 / ,
        240 /
        327 / W
        317 / O
        322 / R
        314 / L
        304 / D
        241 / !
m6,        -15
count,    0
ir1 = 10
$

Пример для версий PDP-11

Программа написана на макроассемблере MACRO-11 Для компиляции и запуска этой программы в ОС RT-11 командуем:

. MACRO HELLO

ERRORS DETECTED: 0

. LINK HELLO -- Линкуем 

. RUN HELLO -- Запускаем

Hello, world!

         .TITLE  HELLO WORLD ; Название
         .MCALL  .TTYOUT,.EXIT
 HELLO:: MOV     #MSG,R1   ; Начальный адрес строки
 1$:     MOVB    (R1)+,R0     ; Получаем следующий символ
         BEQ     DONE             ; Если ноль, выходим из цикла
         .TTYOUT                    ; Иначе печатаем символ
         BR      1$                   ; Повтор цикла
 DONE:   .EXIT
 
 MSG:    .ASCIZ /Hello, world!/ ; Строка Hello, world!
         .END    HELLO               ; Конец программы HELLO

Пример для версий System/360, System/370

IBM System/360/370/390 Basic Assembler Language .

// EXEC ASSEMBLY
	  START
 MAIN	BALR  2,0
	  USING *,2
	  OPEN  PRINT
	  MVC	BUF,HW
	  PUT	PRINT
	  CLOSE PRINT
	  EOJ
 HW	DC	CL132'HELLO WORLD'
 BUF	DS	CL132
 PRINT	DTFPR IOAREA1=BUF,DEVADDR=SYSLST,BLKSIZE=132,		*
		DEVICE=3203,CONTROL=YES,PRINTOV=YES 
	  END	MAIN
 /*
 // EXEC LNKEDT
 // EXEC
 /*
 /&

Пример для версий Apple II

********************************
* HELLO WORLD FOR 6502 APPLE ][ *
********************************

STROUT 	EQU	$DB3A    
	LDY	#>HELLO
	LDA	#<HELLO
	JMP	STROUT

HELLO	ASC	"HELLO WORLD!",00

Пример для версий PDP-10

CHTTYO — весь ввод/вывод осуществляется с помощью каналов ввода/вывода. Лучше всего сделать символические имена для тех каналов, которые вы используете, и начинать их с CH. Определите эти имена с помощью MIDAS оператора == .

.CALL — это символическое обозначение для вызова системного вызова. Его формат: .CALL [SETZ ? SIXBIT/callname/ ? arguments ((SETZ))] .

OPEN открывает канал ввода/вывода для использования. Требует два параметра — номер канала и имя устройства в SIXBIT.

.LOSE %LSFIL — системный вызов, который печатает сообщение об ошибке ввода/вывода, если вдруг она произошла.

.IOT — системный вызов, который фактически занимается вводом/выводом. В качестве параметра нужно указать канал и адрес, содержащий код символа для вывода. Например, “H представляет H .

         TITLE   PRINTHELLO
A=1                            
CHTTYO==1                       ;Канал для вывода.

START:                               ;Открытие TTY канала.
        .CALL [SETZ ? SIXBIT/OPEN/
                [.UAO,,CHTTYO] ? [SIXBIT/TTY/] ((SETZ))]
         .LOSE %LSFIL
        .IOT CHTTYO,["H]        ;Печать HELLO WORLD посимвольно.
        .IOT CHTTYO,["E]        
        .IOT CHTTYO,["L]        
        .IOT CHTTYO,["L]
        .IOT CHTTYO,["O]
        .IOT CHTTYO,[^M]       ;Символ новой строки
        .IOT CHTTYO,["W]
        .IOT CHTTYO,["O]
        .IOT CHTTYO,["R]
        .IOT CHTTYO,["L]
        .IOT CHTTYO,["D]
        .VALUE                  ;Программка, остановись :)

END START

Пример для версий AMOS Professional, Easy AMOS

Print "Hello World"

Пример для версий Nimrod 0.8.8

echo "Hello, World!"

Пример для версий Entropy 1.1.1

Программа может выдать правильное сообщение или текст, несколько отличающийся от него за счет ветшания строки “Hello, World!”.

Program Hello HelloWorld
[
	print "Hello, World!";
]

Пример для версий VBA 6.3, VBA 6.5

Этот код создает макрос под названием “Hello”, выполнение которого выводит окно с сообщением “Hello, World!” и единственной кнопкой “OK”.

Sub Hello()
    MsgBox ("Hello, World!")
End Sub

Пример для версий VBScript 5.7, VBScript 5.8

Программа выводит сообщение в консоль и запускается командой cscript.exe.

WScript.Echo("Hello, World!")

Пример для версий bwBASIC 2.50

В программах номера строк проставляются, при вводе команд в интерактивном режиме интерпретатора — нет.

10 PRINT "Hello, World!"

Пример для версий X10 Release 2.2.2.2

import x10.io.Console; 
public class HelloWorld 
{
  public static def main(argv:Array[String])
 {
    Console.OUT.println("Hello, World");
  }
}

Пример для версий A++ Interpreter

Вывод программы имеет следующий вид:

-->Hello, World!  
void
(print "Hello, World!")

Пример для версий f2c 20090411, g95 0.93, gfortran 4.5.0

Этот пример написан в фиксированном формате (стиль FORTRAN 77); первые шесть символов каждой строки зарезервированы под служебную информацию — отметки о том, что строка является комментарием или продолжением предыдущей, метки и номера строк. Стандартный набор символов Fortran не содержит символов нижнего регистра, поэтому все программы пишутся в верхнем регистре. Исключением из этого правила являются символьные константы — они могут содержать любые символы, которые поддерживаются системой.

Первая строка дает этому фрагменту кода имя HELLO и указывает на то, что он является основной программой. Имя программы подчиняется тем же правилам, что и любые имена идентификаторов, т.е. должно начинаться с буквы и содержать не более 6 символов.

Команда WRITE реализует вывод на печать. В скобках передается список управляющих параметров, настраивающих вывод: UNIT выбирает файл вывода (по умолчанию — консоль), FMT — формат вывода. Звездочки означают параметры по умолчанию. Имена параметров передавать не обязательно, сокращенно эта же команда выглядела бы как WRITE (*, *) ....

В большинстве реализаций строковая константа может заключаться как в одинарные кавычки, так и в двойные.

! A simple Hello, World! program
      PROGRAM HELLO
        WRITE (UNIT=*, FMT=*) 'Hello, World!'
      END

Пример для версий R 2.10.1

R позволяет заключать строки как в одинарные кавычки, так и в двойные, хотя при выводе использует только двойные.

print("Hello, World!")

Пример для версий E-on-Java 0.9.3

println("Hello, World!")

Пример для версий Picat 0.1 (beta-1), Picat 0.7

main =>
     print("Hello, World!\n").

Пример для версий Picat 0.1 (beta-1), Picat 0.7

main =>
     println("Hello, World!").

Пример для версий GAP 4.4.12

Команда для запуска в режиме скрипта: gap -q < filename.gap

Print("Hello, Wolrd!\n");

Пример для версий Dart 1.1.1

=> expr — сокращение для { return expr; }

main() => print("Hello, World!");

Пример для версий Snap! 4.0

В отличие от Scratch, скрипты в Snap! должны начинаться с блока-“шляпы”, определяющего условие их запуска. В данном случае скрипт выполняется при запуске презентации.

Hello, World! на Snap!
Hello, World! на Snap!

Пример для версий Rust 1.0.0-alpha.2

fn main() {
    println!("Hello, World!");
}

Пример для версий LabVIEW 13.0

Hello World - LabVIEW
Hello World - LabVIEW

Пример для версий Vala 0.30

  1. Класс необязательно держать в файле с таким же названием. В файле может находиться сразу несколько классов.

  2. Во всей программе не может находиться больше одного метода с тем или иным названием.

  3. Для запуска метода main() через ООП, необходимо унаследовать главный класс от класса GLib.Object

  4. Класс не может называться “main”

//Как в С

void main(){
    stdout.printf("Hello, world!\n");
}

//То же через ООП и с возможностями Vala

class ClassMain : GLib.Object {
    void main(){
        print("Hello, world!\n")
    }
}

Пример для версий Windows PowerShell 5.0

Echo "Hello, World!"

Пример для версий Clarion C7

   PROGRAM
     MAP
     END
   CODE
     MESSAGE('Hello World!','Clarion')
     RETURN

Работа программистам