"Hej Verden!" - et program, hvis resultat er visningen på skærmen eller en anden enhed af sætningen "Hej, verden!" (bogstaveligt oversat fra engelsk - "Hej, verden!"; Det er en almindelig uformel hilsen, tæt på det russiske "hej alle sammen!"). Variationer med forskellig tegnsætning eller store og små bogstaver bruges også, såsom "Hello World". Dette er normalt det første eksempel på et program i programmeringslærebøger, og for mange studerende er et sådant program den første oplevelse af at lære et nyt sprog.
En sådan erklæring om problemet henleder elevens opmærksomhed på flere nøglepunkter i programmeringssproget på én gang, hvoraf det vigtigste er programmets grundlæggende struktur.
Selvom der er blevet brugt små testcases siden fremkomsten af computere, er traditionen med at bruge sætningen "Hej, verden!" som en testmeddelelse blev introduceret i bogen The C Programming Language af Brian Kernighan og Dennis Ritchie , udgivet i 1978.
I mikrocontrollerens programmeringsmiljø, i mangel af et display, er det enkleste "Hallo, verden"-program "blink"-programmet, som implementerer blinken af LED'en på en af mikrocontrollerens udgange. Formålet med et sådant program er den vellykkede kompilering af programmet (når man lærer en ny mikrocontroller eller et nyt udviklingsmiljø), flashing af programmet ind i mikrocontrolleren og demonstration af selve mikrocontrollerens ydeevne.
Russisktalende programmører og tekniske oversættere oversætter traditionelt ordet verden i dets hovedbetydning - "verden, lys, univers", hvorfor det bogstavelige "hej verden" er hentet fra "hej verden". Denne oversættelse forklares med, at programmet, der starter arbejdet, så at sige er født og byder den verden, det kommer ind i, velkommen.
De, der er mere fortrolige med det engelske sprogs forviklinger påpeger, at verden har andre betydninger - "mennesker", "samfund", "menneskelighed" [1] og "hej verden" er en almindelig uformel hilsen rettet til en ubestemt kreds af mennesker (mennesker, snarere end blot vilkårlige genstande eller naturen generelt). Derfor skal hilsenen oversættes til "hej alle sammen", "hej folk", "gode mennesker" osv., hvilket bekræftes af engelsktalende programmører. [2] [3]
På samme måde bruges ordet verden, når der tildeles adgangsrettigheder (ejer, gruppe, verden) i UNIX -operativsystemer , som C -sproget blev udviklet til, hvorfra traditionen med at vise "hej verden" som en hilsen kom. ejer betyder ejeren af objektet, gruppe er brugergruppen som ejeren tilhører, og verden er alle andre brugere på systemet.
Et moderne eksempel i overensstemmelse med ANSI C-standarden . [5] :
#include <stdio.h> int main ( ugyldig ) { printf ( "Hej verden! \n " ); returnere 0 ; } #include <iostream> int main () { std :: cout << "Hej verden!" << std :: endl ; returnere 0 ; }C# :
bruger System ; klasse HelloWorld { static void Main () { Console . Skriv ( "Hej, verden!" ); } }Pascal :
start writeln ( 'Hej, verden!' ) ; ende .Visual Basic (6.0):
Privat underformular1_Load ( ) Udskriv "Hej, verden!" ende underJava :
public class HelloWorld { public static void main ( String [ ] args ) { System . ud . println ( "Hej verden!" ); } }gå :
hovedpakke ; _ importer "fmt" func main () { fmt . println ( "Hej verden!" ) } sætter "Hej, verden!"Python , Lua , Perl og Swift :
print ( "Hej, verden!" )Python (alternativ):
import __hej__ fn main () { println! ( "Hej verden!" ); }PHP :
<?php echo "Hej, verden!" ; ?>JavaScript (browserversion):
dokument . skriv ( "Hej, verden!" );I JavaScript (Node.JS mulighed):
konsol . log ( "Hej verden!" ); ugyldig opsætning (){ størrelse ( 400 , 150 ); baggrund ( 255 ); tekststørrelse ( 30 ); udfyld ( 0 ); tekst ( "Hej verden" , 100 , 100 ); } ( format t "Hej verden!~%" )NASM :
global start section.text _ start: mov rax , 0x2000004 ; skriv mov rdi , 1 ; stdout mov rsi , "Hej verden!" mov rdx , 13 syscall mov rax , 0x2000001 ; exit mov rdi , 0 syscall1C :
Giv besked ( "Hej, verden!" ); ++++++++ [ > ++++ [ > ++ > +++ > +++ > + <<<< - ] > + > + > - >> + [ < ] < - ] > > . > --- . +++++++ .. +++ . >> . < - . < . +++ . ------ . -------- . >> + . > ++ .Dart :
main () { print ( "Hej, verden!" ); } HI det esoteriske sprog Malbolge :
( ' &%: 9 ] !~ } | z2Vxwv - , POqponl$Hjig % eB @@ > } =< M : 9 wv6WsU2T | nm - , jcL ( I &% $ # "`CB]V?Tx<uVtT` Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj" Fhg$ { z @ >I Whitespaces esoteriske sprog :
Hvert mellemrums- , tabulator- og linjeskifttegn efterfølges af henholdsvis en "S", "T" og "L" kommentar:
S S S T S S T S S S LT L S S S S S T T S S T S T L T L S S S S T T S T S S L T L S S S S T T S T S L T L S S S S T T S T T T T L T L S S S S S T S T T S S L T L S S S S T S S S S L T L S S S S T T T T T T L T L S S S S T T T T T T T L T L S S S S S T T T S S T S L T L S S S S T T S T S S L T L S S S S S T S T S S L T L S S S S S S S T L T L S S L L Stil=
Denne gruppe af eksempler er beregnet til at vise omfanget af nogle teknologier.
Eksempel C++ program, der bruger Component Object Model [ uuid(2573F8F4 - CFEE - 101A - 9A9F - 00AA00342820) ] bibliotek LHej { // indbring masterbiblioteket importlib( "actimp.tlb" ); importlib( "actexp.tlb" ); // bring i mine grænseflader # include "pshlo.idl" [ uuid(2573F8F5 - CFEE - 101A - 9A9F - 00AA00342820) ] cotype THello { interface IHello; interfaceIPersistFile; }; }; [ exe, uuid(2573F890 - CFEE - 101A - 9A9F - 00AA00342820) ] modul CHelloLib { // nogle kode-relaterede header-filer importheader(); importheader(); importheader(); importheader( "pshlo.h" ); importheader( "shlo.hxx" ); importheader( "mycls.hxx" ); // nødvendige typelibs importlib( "actimp.tlb" ); importlib( "actexp.tlb" ); importlib( "thlo.tlb" ); [ uuid(2573F891 - CFEE - 101A - 9A9F - 00AA00342820), aggregeret ] coclass CHello { cotype THello; }; }; #include "ipfix.hxx" ekstern HANDLE hEvent ; klasse CHello : offentlig CHelloBase { offentligt : IPFIX ( CLSID_CHello ); CHello ( IUkendt * pUnk ); ~ CHello (); HRESULT __stdcall PrintSz ( LPWSTR pwszString ); privat : statisk 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 ++ ; returnere ; } HRESULT __stdcallCHello :: PrintSz ( LPWSTR pwszString ) _ { printf ( "%ws \n " , pwszString ); return ( ResultatFromSkode ( S_OK )); } CHello ::~ CHello ( ugyldig ) { // når objektantallet går til nul, stop serveren cObjRef -- ; if ( cobjRef == 0 ) PulseEvent ( hEvent ); returnere ; } #include "pshlo.h" #include "shlo.hxx" #include "mycls.hxx" HANDLE hEvent ; int _cdecl main ( int argc , char * argv []) { ULONG ulRef ; DWORD dwRegistration ; CHelloCF * pCF = ny CHelloCF (); hEvent = CreateEvent ( NULL , FALSE , FALSE , NULL ); // Initialiser OLE-bibliotekerne CoInitializeEx ( NULL , COINIT_MULTITHREADED ); CoRegisterClassObject ( CLSID_CHello , pCF , CLSCTX_LOCAL_SERVER , REGCLS_MULTIPLEUSE , & dwRegistration ); // vente på en begivenhed for at stoppe WaitForSingleObject ( hEvent , INFINITE ); // tilbagekald og frigiv klasseobjektet CoRevokeClassObject ( dwRegistration ); ulRef = pCF -> Frigivelse (); // Fortæl OLE, at vi skal væk. Couninitialize (); returnere ( 0 ); } ekstern CLSID CLSID_CHello ; ekstern UUID LIBID_CHelloLib ; CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */ 0x2573F891 , 0xCFEE , 0x101A , { 0x9A , 0x9F , 0x00 , 0xAA , 0x00 , 0x34 , 0x28 , 0x20 } }; UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */ 0x2573F891 , 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 ]; // få objektsti wcsPath [ 0 ] = '\0' ; wcsT [ 0 ] = '\0' ; if ( argc >= 1 ) { mbstowcs ( wcsPath , argv [ 1 ], strlen ( argv [ 1 ]) + 1 ); wcsupr ( wcsPath ); } andet { fprintf ( stderr , "Objektsti skal angives \n " ); returnere ( 1 ); } // få udskriftsstreng if ( argc >= 2 ) mbstowcs ( wcsT , argv [ 2 ], strlen ( argv [ 2 ]) + 1 ); andet wcscpy ( wcsT , L "Hello World" ); printf ( "Linker til objekt %ws \n " , wcsPath ); printf ( "Tekststreng %ws \n " , wcsT ); // Initialiser OLE-bibliotekerne hRslt = CoInitializeEx ( NULL , COINIT_MULTITHREADED ); if ( SUCCEEDED ( hRslt )) { hRslt = CreateFileMoniker ( wcsPath , & pmk ); if ( LYKKET ( hRslt )) hRslt = BindMoniker ( pmk , 0 , IID_IHello , ( void ** ) & pHello ); if ( SUCCEEDED ( hRslt )) { // print en streng ud pHello -> PrintSz ( wcsT ); Søvn ( 2000 ); ulCnt = pHello -> Frigivelse (); } andet printf ( "Manglende forbindelse, status: %lx" , hRslt ); // Fortæl OLE, at vi skal væk. Couninitialize (); } returnere 0 ; }Andre programmer, der bruges i programmeringsøvelser, er:
Standard testobjekter | |
---|---|
2D grafik | |
3D-grafik |
|
MP3 lyd | |
Programmering | |
Datakomprimering |
|
Tekstelementer | |
Kæmp mod vira | |
Domæne | |
Optimering |
|