📜 ⬆️ ⬇️

Evolutionary Programmer's Ladder

Here are all the stages of the programmer’s development, using the example of the well-known “Hello, World” program as an example of how to write.

Schoolboy:
10 PRINT "HELLO WORLD"
20 END

First-year student:
program Hello (input, output)
begin
writeln ('Hello World')
end.

Senior student:
(defun hello
(print
(cons 'Hello (list' World))))

New Specialist:
#include <stdio.h>
void main (void)
{
char * message [] = {"Hello", "World"};
int i;

for (i = 0; i <2; ++ i)
printf ("% s", message [i]);
printf ("\ n");
}

Experienced specialist:
#include <iostream.h>
#include <string.h>
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);
}

Very experienced programmer:
[
uuid (2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib ("actimp.tlb");
importlib ("actexp.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 pre 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;
};
};

#include "ipfix.hxx"

extern HANDLE hEvent;

class CHello: public CHelloBase
{
public:
IPFIX (CLSID_CHello);

CHello (IUnknown * pUnk);
CHello (IUnknown * pUnk);
~ CHello ();

HRESULT __stdcall PrintSz (LPWSTR pwszString);

private:
static int cObjRef;
};

#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <stdlib.h>
#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 (ResultFromSpre (S_OK));
}

CHello :: ~ CHello (void)
{

// when the object count goes to zero, stop the server
cObjRef--;
if (cObjRef == 0)
PulseEvent (hEvent);

return;
}

#include <windows.h>
#include <ole2.h>
#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 for 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}
};

#include <windows.h>
#include <ole2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "clsid.h"

int _cdecl main (
int argc,
char * argv []
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);
return (0);
}

Beginner Hacker:
#! / 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);
}
one;

Experienced hacker:
#include
#define S "Hello, World \ n"
main () {exit (printf (S) == strlen (S)? 0: 1);}

Experienced hacker:
% cc -o a.out ~ / src / misc / hw / hw.c
% a.out

Hacker, all hackers - hacker:
% cat
Hello, world.
^ D

New head:
10 PRINT "HELLO WORLD"
20 END

Average head:
mail -s "Hello, world." bob @ b12
Kolyan, help write a program that displays "Hello, world."?
Need to perform by tomorrow.
^ D

Senior Manager:
% zmail kolyan
I need "Hello, world." For dinner.

Head of the corporation:
% letter
letter: Command not found.
% mail
To: ^ X ^ F ^ C
% help mail
help: Command not found.
% Heck!
!: Event unrecognized
% logout


English version was found here .

Source: https://habr.com/ru/post/7160/


All Articles