BASIC:
10
PRINT "Hello, World!"
Или даже вот так в Quick/Turbo BASIC:
? "Hello, World!"
Почти не отличается в Ruby:
puts 'Hello, World!'
Похожим образом в
Python:
print "Hello, World!"
А вот в
Python 3.0 (aka Py3k, Пузик) - немного по-другому:
print("Hello, World!")
Так - в
Pascal:
program HelloWorld;
begin
WriteLn('Hello, World!');
end.
Так - в Lotus Script:
Messagebox "Hello, World!", MB_OK
Или так (не самый заметный вариант):
PRINT "Hello, World!"
Так - в
C:
#include
int main()
{
printf("Hello, World!\n");
return 0;
}
Так - в C++:
#include
int main(void)
{
std::cout<<"Hello, World!"
return 0;
}
С ООП:
#include
class Hello
{
public:
void World()
{
std::cout << "Hello, world!" << std::endl;
}
};
int main(void)
{
Hello().World();
return 0;
}
С шаблонами:
class World{};
template
void Hello(T hello)
{
std::cout << "Hello, " << hello << std::endl;
}
template
void Hello()
{
std::cout << "Hello, world!" << std::endl;
}
int main(void)
{
Hello();
return 0;
}
Чудеса КЗ грамматики:
template
class Hello
{
public:
Hello(T hello)
{
std::cout << "Hello, " << hello << std::endl;
}
};
template <>
class Hello
{
public:
Hello()
{
std::cout << "Hello, world!" << std::endl;
}
};
int main(void)
{
Hello();
return 0;
}
C#
class Program
{
static void Main()
{
System.Console.WriteLine("Hello, World!");
}
}
А так будет в
Perl:
#!/usr/bin/perl
print "Hello, World!\n";
Так - в весьма простом и довольно красивом, но малопопулярном языке
Haskell (обратите внимание на прекрасную читаемость и простоту кода):
import qualified Data.ByteString as BS
import System.
IOmessage :: [[
Char]]
message = [ 'H':'e':'l':'l':'o':',':[]
, 'w':'o':'r':'l':'d':'!':[] ]
putHelloWorld :: [
Char] ->
IO()
putHelloWorld (x:xs) =
Prelude.
putChar(x) >> putHelloWorld xs
putHelloWorld [] =
Prelude.
putChar('\n')
main ::
IO ()
main =
hSetBuffering stdout NoBuffering >> hSetBuffering stdin LineBuffering >> putHelloWorld(message')
where
message' = let f = (++) . (++ " ")
f' =
foldl1 f
in f' message
Чуть менее полный
матана вариант кода на
Haskell:
main =
print "Hello, world!"
На
Лиспе вообще-то будет так:
(eval (cons (quote mapcar)
(cons (cons (quote function)
(cons (quote princ) ()))
(cons (cons (quote quote)
(cons (cons #\H (cons #\e (cons #\l (cons #\l (cons #\o
(cons #\, (cons #\Space
(cons #\w (cons #\o (cons #\r (cons #\l (cons #\d (cons #\!
()))))))))))))) ())) ()))))
Но можно и так:
(mapcar #'princ '(#\H #\e #\l #\l #\o #\, #\Space #\w #\o #\r #\l #\d #\!))
Или так:
(princ "Hello, world!")
Или даже так (в
REPL):
"Hello, world!"
Нечитаемый вариант на языке
BrainFuck:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
На самодостаточном
FORTH:
: HELLO 72 EMIT 101 EMIT 2 0 DO 108 EMIT LOOP 111 EMIT ;
: WORLD 119 EMIT 111 EMIT 114 EMIT 108 EMIT 100 EMIT ;
: HELLO_WORLD HELLO 44 EMIT SPACE WORLD 33 EMIT ;
HELLO_WORLD
Тот же
FORTH без
выебоновЪ:
: HelloWorld ." Hello, world!" ;
Встроенный язык
1С:Предприятие:
Сообщить("Привет, Мир!");
Кофеиновый код на языке
Java:
public class HelloWorld {
public static void main(
String[] args) {
System.out.println("Hello, world!");
}
}
А вот так на Eiffel:
class HELLO_WORLD
feature
print_hello is
-- Print "Hello, World!"
do
print ("Hello, World!")
end
end
На MIDlet Pascal:
Program Hello;
Begin
DrawText('Hello, world!', 5, 5);
Repaint; Delay(5000);
End.
ПэХэПэ:
echo "Hello, world!"; ?>
Или так:
="Hello, world!"?>
а на ЖабаСкрипт будет вот так:
document.write("Hello, world!");
Или вот так на Action script 3.0 (флэшовая реализация стандарта ECMAScript):
trace('Hello World!')
//Или, если непременно надо вывести прямо на экран, а не в консоль, так:
var tf:TextField = new TextField
tf.text = "Hello World!"
addChild(tf)
Delphi:
{$APPTYPE CONSOLE}
begin
ShowMessage('Hello, world!');
end.
На баше:
echo 'Hello, world!'
На Прологе:
goal :-
write ("Hello, World!").
SQL-92:
SELECT 'Hello, World!'
Oracle SQL:
SELECT 'Hello, World!' FROM dual;
Microsoft SQL Server:
PRINT 'Hello, world';
MySQL:
SELECT 'Hello, World!';
Обычно хеллоуворлдщика можно ввести в транс, добавив в какой-нибудь частоиспользуемый header-файл следующие строчки (ахтунг, C-specific!):
#ifndef DEFINE_ME
#error Fatal error! There must be some brain in your head!
#endif
Очевидно, что никакой сложности в решении такая задача из себя не представляет. Тем не менее, решив подобную задачу на каком-либо языке программирования, субъект чаще всего начинает oшибочно самоидентифицироваться с программистом.
Однако на языках ассемблера данная задача представляется более сложной:
Assembler i8086, MS-DOS, tasm:
.model tiny
.code
org 100h
Start:
mov ah, 9
mov dx, offset msg
int 21h
mov ax, 4C00H
int 21h
msg db 'Hello, world$'
end Start
Assembler i386, Linux, nasm
SECTION .data
msg: db "Hello, world",10
len: equ $-msg
SECTION .text
global main
main:
mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80
mov ebx, 0
mov eax, 1
int 0x80
То же, только GAS:
.data
msg: .ascii "Hello,world!\n"
len = . - msg
.text
.globl _start
_start:
movl $4,%eax
movl $1,%ebx
movl $msg,%ecx
movl $len,%edx
int $0x80
xorl %ebx,%ebx
movl $1,%eax
int $0x80
Assembler i386, Windows, masm:
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
msg db "Hello, world!", 13, 10
len equ $-msg
.data?
written dd ?
.code
start:
push -11
call GetStdHandle
push 0
push offset written
push len
push offset msg
push eax
call WriteFile
push 0
call ExitProcess
end start
Или так:
.386
.model flat, STDCALL
includelib kernel32.lib
GetStdHandle PROTO:DWORD
WriteConsoleA PROTO:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
ExitProcess PROTO:DWORD
.const
message db "Hello, world!"
.code
Main PROC
LOCAL hStdOut :DWORD
push -11
call GetStdHandle
mov hStdOut,EAX
push 0
push 0
push 16d
push offset message
push hStdOut
call WriteConsoleA
push 0
call ExitProcess
Main ENDP
End Main
Assembler микроконтроллер ATMega16, AVR Studio:
.include "m16def.inc"
.cseg
.org $0000
rjmp start ;Reset handler
.org $0030
start:
ldi r24, 25 ; ~= 9600 @ 4Mhz clock
out UBRRL, r24
out UBRRH, r2
ldi r24, 1 << TXEN
out UCSRB, r24
ldi r24, 1 << URSEL | 1 << UCSZ0 | 1 << UCSZ1 ; 8-n-1
out UCSRC, r24
; send msg
ldi ZL, msg << 1
loop:
lpm r0, Z+ ; next char
tst r0 ; terminated?
stop: breq stop
while_busy:
sbis UCSRA, UDRE
rjmp while_busy
out UDR, r0
rjmp loop
msg: .db "Hello, world!", 13, 10, 0
На двух семи-сегментных индикаторах и FPGA VHDL, САПР Quartus:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CTL IS
PORT(
CLK: IN STD_LOGIC;
DOUT1: OUT STD_LOGIC_VECTOR(0 TO 6);
DOUT2: OUT STD_LOGIC_VECTOR(0 TO 6)
);
END ENTITY;
ARCHITECTURE CTL_ARCH OF CTL IS
SIGNAL CNT: STD_LOGIC_VECTOR(0 TO 3):="0000";
BEGIN
PROCESS(CLK)
BEGIN
IF (CLK'EVENT AND CLK='1') THEN
IF CNT = "1011" THEN CNT <= "0000";
END IF;
CASE CNT IS
WHEN "0000" => DOUT1 <= "1001000"; DOUT2 <="1111111";--H
WHEN "0001" => DOUT1 <= "0110001"; DOUT2 <="1111111";--E
WHEN "0010" => DOUT1 <= "1110001"; DOUT2 <="1111111";--L
WHEN "0011" => DOUT1 <= "1110001"; DOUT2 <="1111111";--L
WHEN "0100" => DOUT1 <= "0000001"; DOUT2 <="1111111";--O
WHEN "0101" => DOUT1 <= "1111111"; DOUT2 <="1111111";--
WHEN "0110" => DOUT1 <= "1100001"; DOUT2 <="1000001"; --W(1) W(2)
WHEN "0111" => DOUT1 <= "0000001"; DOUT2 <="1111111";--O
WHEN "1000" => DOUT1 <= "0011000"; DOUT2 <="1111111";--R
WHEN "1001" => DOUT1 <= "1110001"; DOUT2 <="1111111";--L
WHEN "1010" => DOUT1 <= "0000001"; DOUT2 <="1111111";--D
WHEN OTHERS => DOUT1 <= "1111111"; DOUT2 <="1111111";
END CASE;
CNT<= CNT+1;
END IF;
END PROCESS;
END CTL_ARCH;
На HQ9+
H
[2] На
мелкомягком быдлоподелии (C++ с использованием Component Object Model):
[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
importlib("actimp.tlb");
importlib("actexp.tlb");
#include "pshlo.idl"
[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};
[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{
importheader();
importheader();
importheader();
importheader("pshlo.h");
importheader("shlo.hxx");
importheader("mycls.hxx");
importlib("actimp.tlb");
importlib("actexp.tlb");
importlib("thlo.tlb");
[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};
#include "ipfix.hxx"
extern HANDLE hEvent;
class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);
CHello(IUnknown *pUnk);
~CHello();
HRESULT __stdcall PrintSz(LPWSTR pwszString);
private:
static int cObjRef;
};
#include "thlo.h"
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
int CHello:cObjRef = 0;
CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}
HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws\n", pwszString);
return(ResultFromScode(S_OK));
}
CHello::~CHello(void)
{
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);
return;
}
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
HANDLE hEvent;
int _cdecl main(int argc, char * argv[]) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
CoInitiali, NULL);
CoInitializeEx(NULL, COINIT_MULTITHREADED);
CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);
WaitForSingleObject(hEvent, INFINITE);
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();
CoUninitialize();
return(0);
}
extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;
CLSID CLSID_CHello = { 0x2573F891, 0xCFEE, 0x101A, { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 } };
UUID LIBID_CHelloLib = { 0x2573F890, 0xCFEE, 0x101A, { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 } };
#include "pshlo.h"
#include "shlo.hxx"
#include "clsid.h"
int _cdecl main( int argc, char * argv[]) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];
wcsPath[0] = '\0';
wcsT[0] = '\0';
if( argc 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, "Object path must be specified\n");
return(1);
}
if(argc 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L"Hello World");
printf("Linking to object %ws\n", wcsPath);
printf("Text String %ws\n", wcsT);
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(SUCCEEDED(hRslt)) {
hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
if(SUCCEEDED(hRslt)) {
pHello->PrintSz(wcsT);
Sleep(2000);
ulCnt = pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);
CoUninitialize();
}
return(0);
}