Ahoj světe!

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 12. února 2019; ověření vyžaduje 61 úprav .

"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.

Překlad do ruštiny

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.


Příklady

Příklady programů v různých jazycích

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 ; }

C++ : [6]

#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 sub

Java :

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!" ) }

Ruby a Tcl :

říká "Ahoj, světe!"

Python , Lua , Perl a Swift :

tisk ( "Ahoj světe!" )

Python (alternativní):

import __ahoj__

Rez : [7]

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!" );

Zpracování :

void setup (){ velikost ( 400 , 150 ); pozadí ( 255 ); velikost textu ( 30 ); vyplnit ( 0 ); text ( "Ahoj světe" , 100 , 100 ); }

Common Lisp :

( 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 syscall

1C :

Upozornit ( "Ahoj světe!" );

kurva :

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

Šipka :

main () { print ( "Ahoj světe!" ); }

V esoterickém jazyce HQ9+ :

H

V 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 L

T 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=

Okrajové příklady

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 ; }

Jiné programy

Další programy používané ve výukových programech jsou:

Poznámky

  1. Svět | Define World na Dictionary.com . Získáno 23. března 2012. Archivováno z originálu 16. března 2012.
  2. Přesný význam slova "svět" v "ahoj světe" - Fóra UNIX a Linux
  3. Přesný význam "ahoj světe" - comp.unix.programmer | Skupiny Google
  4. Kernighan & Ritchie (1988). Programovací jazyk C. 2. vydání, str. 6.
  5. Archivovaná kopie . Získáno 1. srpna 2011. Archivováno z originálu 22. srpna 2011.
  6. Bjarne Stroustrup (1274). Programovací jazyk C++. 3. vydání, str. 46.
  7. Ahoj světe! - Programovací jazyk Rust . Získáno 29. dubna 2019. Archivováno z originálu dne 28. března 2019.

Literatura

Odkazy