Hello, world
от Уикипедия, свободната енциклопедия
Hello, world (от англ. "Здравей, свят") е стандартен пример за програмиране в много учебници и ръководства. Широката му употреба се дължи на краткостта, съчетана с показването на основните елементи на всяка програма:
- формат на командите в езика
- команди за извеждане на съобщения към потребителя
- заглавна и завършваща част (при някои езици, напр. блоковите процедурни езици)
- извикване на външни модули (при езиците без входно-изходни операции в основната библиотека)
- създаване на класове (при обектно-ориентирани езици)
По тeзи причина това обикновено е първата програма, използвана от начинаещ програмист на даден език за програмиране. По-долу са дадени примери на някои от езиците.
[редактиране] Ada
with Ada.Text_IO;
procedure Hello is
begin
Ada.Text_IO.Put_Line ("Hello, world!");
end Hello;
[редактиране] ALGOL
BEGIN FILE F (KIND=REMOTE); EBCDIC ARRAY E [0:11]; REPLACE E BY "HELLO WORLD!"; WHILE TRUE DO BEGIN WRITE (F, *, E); END; END.
[редактиране] Assembly
[редактиране] "Само-акумулатор" архитектура: DEC PDP-8, PAL-III асемблер
*10 / Избиране на origin на адрес 10,
STPTR, 0 / в авто-инткрементиран регистър (един от осем - 10-17)
*200 / Избиране на origin за текстовата област
HELLO, CLA CLL / Изчистване на AC и Link
TAD (STRNG-1) / Сетване на низовия указател в PRE-auto-increment регистъра
DCA STPTR / :
NEXT, CLA CLL / Изчистване на AC и Link още веднъж
TAD I STPTR / Взимане на текстов символ недиректно през PRE-auto-increment адрес
SNA / Скок ако не е нула (Не е достигнат края на низа)
HLT / В противен случай прекъсване при нула (края на стринга)
TLS / Отпечатване на символа в АС принтиращата машина
TSF / Скок ако принтиращата машина е готова
JMP .-1 / В противен случай - опитай отначало
JMP NEXT / Скок за следващия символ
STRNG, 310 / H
345 / e
354 / l
354 / l
357 / o
254 / ,
240 / (интервал)
367 / w
357 / o
362 / r
354 / l
344 / d
241 / !
0 / Край на низа
[редактиране] Първа сполучлива uP/OS комбинация: Intel 8080/Zilog Z80, CP/M Операционна система, RMAC асемблер
bdos equ 0005H ; BDOS стартова точка
start: mvi c,9 ; BDOS функция: отпечатване на низ
lxi d,msg$ ; адрес на съобщението
call bdos
ret ; връщане в CCP
msg$: db 'Hello, world!$'
end start
[редактиране] Акумулатор + Индексен регистър: MOS Technology 6502, CBM KERNAL, ca65 асемблер
MSG: .ASCIIZ "Hello, world!"
LDX #$F3
@LP: LDA MSG-$F3,X ; Зареждане на символа
JSR $FFD2 ; CHROUT (KERNAL), отпечатване на текущото у-во (екрана)
INX
BNE @LP ;
RTS
[редактиране] Раширена акумулаторна машина: Intel x86, Linux, GAS
.data
msg:
.ascii "Hello, world!\n"
len = . - msg
.text
.global _start
_start:
movl $len,%edx
movl $msg,%ecx
movl $1,%ebx
movl $4,%eax
int $0x80
movl $0,%ebx
movl $1,%eax
int $0x80
[редактиране] RISC процесор: ARM, RISC OS, BBC BASIC's инлайн асемблер
.program
ADR R0,message
SWI "OS_Write0"
SWI "OS_Exit"
.message
DCS "Hello, world!"
DCB 0
ALIGN
[редактиране] RISC Процесор: MIPS
.data
msg: .asciiz "Hello, world!"
.align 2
.text
.globl main
main:
la $a0,msg
li $v0,4
syscall
jr $ra
[редактиране] BASIC
[редактиране] Класически BASIC
10 PRINT "Hello, world!" 20 END
[редактиране] Модерен BASIC
PRINT "Hello, Wolrd!" END
[редактиране] BCPL
GET "LIBHDR"
LET START () BE $( WRITES ("Hello, world!*N") $)
[редактиране] C
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
[редактиране] C++
#include <iostream>
int main(int argc, char *argv[])
{
std::cout << "Hello, world" << std::endl;
return 0;
}
По принцип числата в началото на всеки ред не трябва се въвеждат, но в случая така е по-лесно за обяснение.
В ред 1 думата #include означава, че във вашия файл трябва да се вкара съдържанието на друг файл, в случая iostream.h. Ако името на файла е оградено със знаци за по-малко и по-голямо (< и >), то C++ ще потърси този файл в системната му директория за заглавни файлове. Ако името на файла е оградено с двойни кавички, то C++ ще търси за файла в същата директория, в която се намира сорс-файлът. Освен това може да зададете и пътя до търсения файл също в кавички (примерно #include "mydefs.h").
Редовете 2, 4 и 8 са празни и са сложени само за прегледност, бихте могли и да ги изтриете.
Ред 3 позволява по-удобно обръщане към стандартните библиотеки, които са в пространството от имена std.
Ред 5 дефинира функцията, която всяка C++ програма трябва да има — main. Когато стартирате програмата, системата ще извика тази функция. Редове 6 и 10 указват начало и край на тялото на функцията main. Между тези две фигурни скоби се пише самия код.
Ред 7 започва с cout, или стандартния изходен поток (на български — екран
). След това следва оператора <<, който в случая се използва за изкарване на текст, който се въвежда в кавички. Накрая изкарвате и модификатора endl, който изкарва нов ред. Бихте могли да използвате и форматиращия символ \n, но ще трябва да го сложите вътре в кавичките, ето така:
cout << "Hello, World\n";
Най-накрая, имате точка и запетая (;). Всеки ред в C++ завършва с този знак, освен фигурните скоби и редовете, започващи с # (като #include <iostream>).
На ред 9 указвате стойността, която програмата ви ще върне на системата. Обикновено се използва 0, ако изпълнението на програмата е минало успешно, и някаква друга стойност, ако при изпълнението е имало грешка.
Всъщност тази програма изкарва на екрана низа „Hello, World“ и премества курсора на нов ред.
[редактиране] C#
using System;
class HelloWorldApp {
public static void Main() {
Console.WriteLine("Hello, world!");
}
}
[редактиране] Forth
." Hello, world!" CR
[редактиране] FORTRAN
program hello
write (*,*) 'Hello, world!'
end program hello
[редактиране] Java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Принципно погледнато не е необходимо класът да е публичен. Ако класът е публичен както в примера е необходимо файлът съдържащ кодът на програмта да е със същото име като класът (включително главните и малките букви) и разширение java, т.е. Този пример трябва да се намира във файл Hello.java.
[редактиране] JavaScript
document.writeln('Hello, world!');
[редактиране] LISP
(PRINT "Hello, world!")
[редактиране] MS-DOS batch
@echo Hello, world!
За MS-DOS 3.0 или по стар:
echo off cls echo Hello, world!
[редактиране] Pascal
Program Hello;
begin
WriteLn('Hello, world!');
end.
[редактиране] PHP
<?php echo "Hello, world!\n"; ?>
или
<?="Hello World!\n"?>
(Забележка: Трябва да са разрешени short_open_tags (short_open_tag = On) в php.ini short open tags) (Не е препоръчително, възможни конфликти с XML!)
[редактиране] PL/I
Test: proc options(main) reorder;
put skip edit('Hello, world!') (a);
end Test;
[редактиране] Prolog
write('Hello world'),nl.
[редактиране] Python
write('Hello world'),nl.
[редактиране] Perl5
print "Hello world\n";
[редактиране] Perl6
say "Hello world";
[редактиране] Seed7
$ include "seed7_05.s7i";
const proc: main is func
begin
writeln("Hello, world!");
end func;
[редактиране] Tex
Hello world \bye
[редактиране] Visual Basic
Sub Main MsgBox "Hello, world!" End Sub
[редактиране] Visual Basic .NET
Module HelloWorldApp
Sub Main()
System.Console.WriteLine("Hello, world!")
End Sub
End Module
[редактиране] XUL
XUL e xml базиран език, разработен от Mozilla.
<?xml-stylesheet href="chrome://global/skin" type="text/css" ?> <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" align="center" pack="center" flex="1"> <description>Hello, world!</description> </window>

