Le langage de programmation C pour les experts
Les différentes versions du programme qui affiche "HELLO WORLD" suivant les compétences

Le , par valentine74, Candidat au Club
Le but de la manipulation est d'écrire un programme qui affichera "HELLO WORLD" à l'écran :

Terminale:
Code BASIC : Sélectionner tout
1
2
10 PRINT "HELLO WORLD" 
20 END


DUT 1ère année:
Code Pascal : Sélectionner tout
1
2
3
4
program HELLO(input, output) 
begin 
    writeln('HELLO WORLD') 
end.

DUT 2ème année:
Code (?) : Sélectionner tout
1
2
3
4
5
(defun HELLO 
 (print 
  (cons 'HELLO (list 'WORLD)) 
 ) 
)

Fraîchement sorti de l'école:
Code C : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
#include <stdio.h> 
void main(void) 
{ 
    char *message[] = {"HELLO ", "WORLD"}; 
     int i; 
  
    for(i = 0; i < 2; ++i) 
        printf("%s", message[i]); 
    printf("\n"); 
}

Professionnel très expérimenté:
Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream> 
#include <cstring> 
using namespace std; 
class string 
{ 
private: 
    int size; 
    char *ptr; 
public: 
    string() : size(0), ptr(new char('\0')) {} 
    string(const string &s) : size(s.size) 
    { 
        ptr = new char[size + 1]; 
        strcpy(ptr, s.ptr); 
    } 
    ~string() 
    { 
        delete [] ptr; 
    } 
    friend ostream &operator <<(ostream &, const string &); 
    string &operator=(const char *); 
}; 
  
ostream &operator<<(ostream &stream, const string &s) 
{ 
    return(stream << s.ptr); 
} 
string &string::operator=(const char *chrs) 
{ 
    if (this != &chrs) 
    { 
        delete [] ptr; 
        size = strlen(chrs); 
        ptr = new char[size + 1]; 
        strcpy(ptr, chrs); 
    } 
    return(*this); 
} 
int main() 
{ 
    string str; 
    str = "HELLO WORLD"; 
    cout << str << endl; 
    return(0); 
}

Professionnel vraiment très très expérimenté:
Code MIDL ? : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 [ 
 uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820) 
 ] 
 library LHello 
 { 
     // bring in the master library 
     importlib("actimp.tlb"); 
     importlib("actexp.tlb"); 
 
     // bring in my interfaces 
     #include "pshlo.idl" 
 
     [ 
     uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820) 
     ] 
     cotype THello 
  { 
  interface IHello; 
  interface IPersistFile; 
  }; 
 }; 
 
 [ 
 exe, 
 uuid(2573F890-CFEE-101A-9A9F-00AA00342820) 
 ] 
 module CHelloLib 
 { 
 
     // some code related header files 
     importheader(); 
     importheader(); 
     importheader(); 
     importheader("pshlo.h"); 
     importheader("shlo.hxx"); 
     importheader("mycls.hxx"); 
 
     // needed typelibs 
     importlib("actimp.tlb"); 
     importlib("actexp.tlb"); 
     importlib("thlo.tlb"); 
 
     [ 
     uuid(2573F891-CFEE-101A-9A9F-00AA00342820), 
     aggregatable 
     ] 
     coclass CHello 
  { 
  cotype THello; 
  }; 
 };
Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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; 
 };
Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 // ? #include  
 // ? #include  
 // ? #include  
 // ? #include  
 #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) 
 { 
  
 // when the object count goes to zero, stop the server 
 cObjRef--; 
 if( cObjRef == 0 ) 
     PulseEvent(hEvent); 
  
 return; 
 }
Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 // ? #include  
 // ? #include  
 #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); 
  
 // Initialize the OLE libraries 
 CoInitializeEx(NULL, COINIT_MULTITHREADED); 
  
 CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER, 
     REGCLS_MULTIPLEUSE, &dwRegistration); 
  
 // wait on an event to stop 
 WaitForSingleObject(hEvent, INFINITE); 
  
 // revoke and release the class object 
 CoRevokeClassObject(dwRegistration); 
 ulRef = pCF->Release(); 
  
 // Tell OLE we are going away. 
 CoUninitialize(); 
  
 return(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 */ 
     0x2573F890, 
     0xCFEE, 
     0x101A, 
     { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 } 
 };
Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 // ? #include  
 // ? #include  
 // ? #include  
 // ? #include  
 // ? #include  
 #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]; 
  
 // get object 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); 
     } 
  
 // get print string 
 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); 
  
 // Initialize the OLE libraries 
 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)) { 
  
  // print a string out 
  pHello->PrintSz(wcsT); 
  
  Sleep(2000); 
  ulCnt = pHello->Release(); 
  } 
     else 
  printf("Failure to connect, status: %lx", hRslt); 
  
     // Tell OLE we are going away. 
     CoUninitialize(); 
     } 
  
 return(0); 
 }

Administrateur Système:
Code C : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h> 
main() 
{ 
    char *tmp; 
    int i=0; 
    /* on y va bourin (sic)(en Français dans le texte) */ 
    tmp=malloc(1024*sizeof(char)); /* cast supprimé */ 
    while (tmp[i]="HELLO WORLD"[i++]); 
    /* Ooopps y'a une infusion ! */ 
    i=(int)tmp[8]; 
    tmp[8]=tmp[9]; 
    tmp[9]=(char)i; 
    printf("%s\n",tmp); 
}

Apprenti Hacker:
Code PERL : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/local/bin/perl 
$msg="HELLO, WORLD.\n"; 
if ($#ARGV >= 0) { 
    while(defined($arg=shift(@ARGV))) { 
        $outfilename = $arg; 
        open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n"; 
        print (FILE $msg); 
        close(FILE) || die "Can't close $arg: $!\n"; 
  
    } 
} else { 
    print ($msg); 
} 
1;

Hacker expérimenté:
Code C : Sélectionner tout
1
2
3
#include <stdio.h> 
#define S "HELLO, WORLD\n" 
main(){exit(printf(S) == strlen(S) ? 0 : 1);}


Hacker très expérimenté:
Code shell (affichage) : Sélectionner tout
1
2
% cc -o a.out ~/src/misc/bv/bv.c 
% a.out

Gourou des Hackers:
Code shell (affichage) : Sélectionner tout
1
2
3
% cat 
HELLO, WORLD. 
^D

Directeur junior:
Code BASIC : Sélectionner tout
1
2
10 PRINT "HELLO WORLD" 
20 END

Directeur:
Code shell (affichage) : Sélectionner tout
1
2
3
4
5
mail -s "HELLO, WORLD." bob@b12 
Henri, pourrais-tu m'écrire un programme qui écrit "HELLO, 
WORLD." À l'écran? 
J'en ai besoin pour demain. 
^D

Directeur sénior:
Code shell (affichage) : Sélectionner tout
1
2
% zmail Jean 
J'ai besoin d'un programme "HELLO, WORLD." Pour cette après-midi.

Président Directeur Général:
Code shell (affichage) : Sélectionner tout
1
2
3
4
5
6
7
8
9
% letter 
letter: Command not found. 
% mail 
To: ^X ^F ^C 
% help mail 
help: Command not found. 
% damn! 
!: Event unrecognized 
% logout


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de bilb0t bilb0t - Inscrit http://www.developpez.com
le 05/07/2006 à 9:34
Citation Envoyé par yann2
Pffffffffff !!!!

Sinon ça doit être sympa marrant et joli des géraniums cultivés en hydroponique

ça a un rapport avec les ponneys ?
Avatar de yann2 yann2 - Membre expérimenté http://www.developpez.com
le 05/07/2006 à 9:37
Citation Envoyé par bilb0t
ça a un rapport avec les ponneys ?

?

http://www.lesjardinssuspendus.com/
Avatar de bilb0t bilb0t - Inscrit http://www.developpez.com
le 05/07/2006 à 10:15
ponique / ponney

c'était la blague nulle du matin
Avatar de xavlours xavlours - Membre émérite http://www.developpez.com
le 05/07/2006 à 14:04
Citation Envoyé par r0d
essayait de faire pousser des géraniums en hydroponique

Ouais, et le père noël il a vomi sur les "herbes de provence" de Renaud, c'est ça !
Avatar de loka loka - Rédacteur http://www.developpez.com
le 10/07/2006 à 16:29
mail -s "HELLO, WORLD." bob@b12
Henri, pourrais-tu m'écrire un programme qui écrit "HELLO,
WORLD." À l'écran?
J'en ai besoin pour demain.
^D

c'est normal qu'il ecrive à bob et qu'il l'appelle henri ?

ok je sors ===>[]
Avatar de fveysseire fveysseire - Membre régulier http://www.developpez.com
le 13/07/2006 à 11:44
Citation Envoyé par r0d
Ca me rapelle l'histoire d'un pote, qui essayait de faire pousser des géraniums en hydroponique (culture hors sol, ou quelque chose dans le genre). Et moi, je lui disais toujours: ça ne poussera jamais comme en terre!!
...
Voilà, tu l'as eu ton "comme en terre".

Aaaaallez, ça c'est bon c'est fait. Bougez pas, je connais la sortie...


Excellent
Avatar de l@rry l@rry - Membre habitué http://www.developpez.com
le 18/09/2009 à 18:16
Citation Envoyé par r0d  Voir le message
Ca me rapelle l'histoire d'un pote, qui essayait de faire pousser des géraniums en hydroponique (culture hors sol, ou quelque chose dans le genre). Et moi, je lui disais toujours: ça ne poussera jamais comme en terre!!
...
Voilà, tu l'as eu ton "comme en terre".

Aaaaallez, ça c'est bon c'est fait. Bougez pas, je connais la sortie...

des géraniums... "c'est cela oui"...
Avatar de gege2061 gege2061 - Rédacteur http://www.developpez.com
le 19/09/2009 à 21:17
Citation Envoyé par valentine74  Voir le message
Hacker expérimenté:

Un hacker maîtrise et utilise plusieurs langages... en même temps

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat =13 /*/ >/dev/null 2>&1; echo "Hello, world!"; exit 
* 
*  This program works under cc, f77, and /bin/sh. 
* 
*/; main() { 
      write( 
cat-~-cat 
     /*,'( 
*/ 
     ,"Hello, world!" 
     , 
cat); putchar(~-~-~-cat); } /* 
     ,)') 
      end 
*/
The International Obfuscated C Code Contest
Avatar de ogaby ogaby - Membre actif http://www.developpez.com
le 21/09/2009 à 13:37
Administrateur Système:
Code C :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h> 
main() 
{ 
    char *tmp; 
    int i=0; 
    /* on y va bourin (sic)(en Français dans le texte) */ 
    tmp=malloc(1024*sizeof(char)); /* cast supprimé */ 
    while (tmp[i]="HELLO WORLD"[i++]); 
    /* Ooopps y'a une infusion ! */ 
    i=(int)tmp[8]; 
    tmp[8]=tmp[9]; 
    tmp[9]=(char)i; 
    printf("%s\n",tmp); 
}
Hum... les vannes entre dev et administrateur...

Faire une allocation mémoire avec "malloc" sans "free" provoque des fuites de mémoire.
Après il plus qu'à dire que c'est l'OS, le responsable.
Avatar de Qwert Qwert - Membre habitué http://www.developpez.com
le 22/09/2009 à 10:25
Grosse erreur pour l'admin système
L'admin système envoie un mail au developpeur Il ne programme pas lui même !
Avatar de nicolofontana12 nicolofontana12 - Inscrit http://www.developpez.com
le 04/10/2009 à 2:50
Mais il fallait aussi ajouter pour la retraite et apres la mort.
Car un vrai codeur code en retraite et si ses codes ne sont pas opensource il s'en va avec eu dans le tombeau!

C'est vrai j'ai vu un mort ramassé ces codes car tout simplement c'etait pas open source donc il a mis avec lui pour coder labas ; Dans son cercueil il avait aussi un pc !
Offres d'emploi IT
Lead développeur UNITY 3D
Geek me five digital entertainement - Ile de France - Montreuil (93100)/Arcueil (94110)
Concepteur/développeur .net (h/f)
Atos Technology Services - Provence Alpes Côte d'Azur - Aix-en-Provence (13100)
Ingénieur testing h/f
Atos - Auvergne - Clermont-Ferrand (63000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Humour Informatique