"Ahoj světe!" - program, jehož výsledkem je zobrazení na obrazovce nebo jiném zařízení fráze "Ahoj, světe!" (doslova přeloženo z angličtiny - „Ahoj, světe!“; Je to běžný neformální pozdrav, blízký ruskému „ahoj všichni!“). Používají se také variace s odlišnou interpunkcí nebo velikostí písmen, jako například „Ahoj světe“. Obvykle se jedná o první příklad programu v učebnicích programování a pro mnoho studentů je takový program první zkušeností s učením se nového jazyka.
Takové sdělení problému upozorní studenta na několik klíčových bodů programovacího jazyka najednou, z nichž hlavním je základní struktura programu.
Přestože se od nástupu počítačů používají malé testovací případy, tradice používání fráze "Ahoj, světe!" jako testovací zpráva byla představena v knize The C Programming Language od Briana Kernighana a Dennise Ritchieho , vydané v roce 1978.
V prostředí programování mikrokontroléru je při absenci displeje nejjednodušším programem „Ahoj světe“ program „blikání“, který implementuje blikání LED na jednom z výstupů mikrokontroléru. Účelem takového programu je úspěšné sestavení programu (při učení nového mikrokontroléru nebo nového vývojového prostředí), flashování programu do mikrokontroléru a předvedení výkonu samotného mikrokontroléru.
Rusky mluvící programátoři a techničtí překladatelé tradičně překládají slovo svět v jeho hlavním významu – „svět, světlo, vesmír“, proto se doslovné „ahoj světe“ získává z „ahoj světe“. Tento překlad je vysvětlen tím, že program, který začíná pracovat, se jakoby rodí a vítá svět, do kterého přichází.
Ti, kteří jsou obeznámeni se složitostmi angličtiny, poukazují na to, že svět má jiné významy – „lidé“, „společnost“, „lidstvo“ [1] a „ahoj světe“ je běžný neformální pozdrav adresovaný neurčitému okruhu lidí. (lidé, spíše než jen libovolné předměty nebo příroda obecně). Pozdrav by proto měl být přeložen jako „ahoj všichni“, „ahoj lidé“, „skvělí lidé“ atd., což potvrzují anglicky mluvící programátoři. [2] [3]
V podobném smyslu se slovo svět používá při přidělování přístupových práv (vlastník, skupina, svět) v operačních systémech UNIX , pro které byl vyvinut jazyk C , ze kterého vzešla tradice zobrazování „ahoj světe“ jako pozdrav. vlastník znamená vlastníka objektu, skupina je skupina uživatelů, do které vlastník patří, a svět jsou všichni ostatní uživatelé v systému.
C ve starší variantě K&R : [4]
#include <stdio.h> hlavní () { printf ( "ahoj světe! \n " ); }Moderní příklad odpovídající standardu ANSI C. [5] :
#include <stdio.h> int main ( void ) { printf ( "Ahoj světe! \n " ); návrat 0 ; } #include <iostream> int main () { std :: cout << "Ahoj světe!" << std :: endl ; návrat 0 ; }C# :
pomocí System ; class HelloWorld { static void Main () { Console . Napište ( "Ahoj světe!" ); } }Pascal :
begin writeln ( 'Ahoj světe!' ) ; konec .Visual Basic (6.0):
Private Sub Form1_Load () Tisk "Ahoj, světe!" konec subJava :
public class HelloWorld { public static void main ( String [] args ) { System . ven . println ( "Ahoj světe!" ); } }jít :
hlavní balíček ; importovat "fmt" func main () { fmt . println ( "Ahoj, světe!" ) } říká "Ahoj, světe!" tisk ( "Ahoj světe!" )Python (alternativní):
import __ahoj__ fn main () { println! ( "Ahoj světe!" ); }PHP :
<?php echo "Ahoj světe!" ; ?>JavaScript (verze prohlížeče):
dokument . napište ( "Ahoj světe!" );V JavaScriptu (možnost Node.JS):
konzole . log ( "Ahoj světe!" ); void setup (){ velikost ( 400 , 150 ); pozadí ( 255 ); velikost textu ( 30 ); vyplnit ( 0 ); text ( "Ahoj světe" , 100 , 100 ); } ( formát t "Ahoj světe!~%" )NASM :
globální start section.text _ start: mov rax , 0x2000004 ; napsat mov rdi , 1 ; stdout mov rsi , "Ahoj světe!" mov rdx , 13 syscall mov rax , 0x2000001 ; exit mov rdi , 0 syscall1C :
Upozornit ( "Ahoj světe!" );kurva :
++++++++ [ > ++++ [ > ++ > +++ > +++ > + <<<< - ] > + > + > - >> + [ < ] < - ] > > . > --- . +++++++ .. +++ . >> . < - . < . +++ . ------ . -------- . >> + . > ++ .Šipka :
main () { print ( "Ahoj světe!" ); }V esoterickém jazyce HQ9+ :
HV esoterickém jazyce Malbolge :
( ' &%: 9 ] !~ } | z2Vxwv - , POqponl$Hjig % eB @@ > } =< M : 9 wv6WsU2T | nm - , jcL ( I &% $ # "`CB]V?Tx<uVtT` Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj" Fhg$ { z @ >V esoterickém jazyce Whitespace :
Každému znaku mezery , tabulátoru a odřádkování předchází komentář „S“, „T“ a „L“:
S S S T S S T S S S LT L S S S S T T S S T S T L T L S S S S S T T S T S S S L T S S S S S T S T S S S L S S S S S _ _ _ T T L T L S S S S S T S T T S S L T L S S S S S S S S S S S L S S S S S S T T S T T T T L T L S S S S 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 S T T S T T S S L T L S S S S S T S S T S S L T L S S S S S S S T L T L S S L L Styl=
Tato skupina příkladů má ukázat objemnost některých technologií.
Ukázkový program C++ využívající Component Object Model [ uuid(2573F8F4 - CFEE - 101A - 9A9F - 00AA00342820) ] knihovna LDobrý den { // přinést hlavní knihovnu importlib ( "actimp.tlb" ); importlib ( "actexp.tlb" ); // přinést moje rozhraní # include "pshlo.idl" [ uuid(2573F8F5 - CFEE - 101A - 9A9F - 00AA00342820) ] cotype THello { rozhraní IHello; interfaceIPersistFile; }; }; [ exe, uuid(2573F890 - CFEE - 101A - 9A9F - 00AA00342820) ] modulCHelloLib { // některé hlavičkové soubory související s kódem importheader(); importheader(); importheader(); importheader( "pshlo.h" ); importheader( "shlo.hxx" ); importheader( "mycls.hxx" ); // potřebné typelibs importlib ( "actimp.tlb" ); importlib ( "actexp.tlb" ); importlib ( "thlo.tlb" ); [ uuid(2573F891 - CFEE - 101A - 9A9F - 00AA00342820), agregovatelné ] coclass CHello { cotyp THello; }; }; #include "ipfix.hxx" extern HANDLE hEvent ; třída CHello : veřejná CHelloBase { veřejnost : IPFIX ( CLSID_CHello ); CHello ( IUnknown * pUnk ); ~ CHello (); HRESULT __stdcall PrintSz ( LPWSTR pwszString ); soukromé : 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 ++ ; vrátit se ; } HRESULT __stdcallCHello :: PrintSz ( LPWSTR pwszString ) _ { printf ( "%ws \n " , pwszString ); return ( ResultFromScode ( S_OK )); } CHello ::~ CHello ( neplatné ) { // když počet objektů klesne na nulu, zastaví server cObjRef -- ; if ( cObjRef == 0 ) PulseEvent ( hEvent ); vrátit se ; } #include "pshlo.h" #include "shlo.hxx" #include "mycls.hxx" HANDLE hEvent ; int _cdecl main ( int argc , char * argv []) { ULONG ulRef ; DWORD dwRegistrace ; CHelloCF * pCF = nový CHelloCF (); hEvent = CreateEvent ( NULL , FALSE , FALSE , NULL ); // Inicializace OLE knihoven CoInitializeEx ( NULL , COINIT_MULTITHREADED ); CoRegisterClassObject ( CLSID_CHello , pCF , CLSCTX_LOCAL_SERVER , REGCLS_MULTIPLEUSE , & dwRegistration ); // čekání na událost pro zastavení WaitForSingleObject ( hEvent , INFINITE ); // odvolá a uvolní objekt třídy CoRevokeClassObject ( dwRegistration ); ulRef = pCF -> Release (); // Řekněte OLE, že odcházíme. CoUninicialize (); návrat ( 0 ); } extern CLSID CLSID_CHello ; extern 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 * raz . ; WCHAR wcsT [ _MAX_PATH ]; WCHAR wcsPath [ 2 * _MAX_PATH ]; // získání cesty k objektu wcsPath [ 0 ] = '\0' ; wcsT [ 0 ] = '\0' ; if ( argc >= 1 ) { mbstowcs ( wcsPath , argv [ 1 ], strlen ( argv [ 1 ]) + 1 ); wcsupr ( wcsPath ); } jinak { fprintf ( stderr , "Musí být zadána cesta k objektu \n " ); návrat ( 1 ); } // získat tiskový řetězec if ( argc >= 2 ) mbstowcs ( wcsT , argv [ 2 ], strlen ( argv [ 2 ]) + 1 ); jiný wcscpy ( wcsT , L "Ahoj světe" ); printf ( "Propojení s objektem %ws \n " , wcsPath ); printf ( "Textový řetězec %ws \n " , wcsT ); // Inicializace OLE knihoven hRslt = CoInitializeEx ( NULL , COINIT_MULTITHREADED ); if ( USCEEDED ( hRslt )) { hRslt = CreateFileMoniker ( wcsPath , & pmk ); if ( USSPCEEDED ( hRslt )) hRslt = BindMoniker ( pmk , 0 , IID_IHello , ( void ** ) & pHello ); if ( USCEEDED ( hRslt )) { // vytiskne řetězec pHello -> PrintSz ( wcsT ); Spánek ( 2000 ); ulCnt = pHello -> Release (); } jiný printf ( "Selhání připojení, stav: %lx" , hRslt ); // Řekněte OLE, že odcházíme. CoUninicialize (); } návrat 0 ; }Další programy používané ve výukových programech jsou:
Standardní testovací objekty | |
---|---|
2D grafika | |
3D grafika |
|
MP3 audio | |
Programování | |
Komprese dat |
|
Textové prvky | |
Bojujte proti virům | |
Doména | |
Optimalizace |
|