趣文:程序員的進化史
這篇趣文有一定歷史了,應該至少有 10 年了。
PS:亮點總是在最后。:)
初中/高中(注:Basic)
10 PRINT "HELLO WORLD" 20 END
大一(注:Pascal)
program Hallo(output); begin writeln('Hello, world!') end.
大三/大四
(defun hello (print (cons 'Hello (list 'World))))
入職第一年
#include <stdio.h> void main(void) { char *message[] = {"Hello ", "World"}; int i;for(i = 0; i < 2; ++i) printf("%s", message[i]); printf("\n");
}</pre>
入職干了幾年
#include <iostream.h>include <string.h>
class string { private: int size; char *ptr;
string() : size(0), ptr(new char[1]) { ptr[0] = 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);
}</pre>
大師程序員
[ 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(<windows.h>); importheader(<ole2.h>); importheader(<except.hxx>); 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(); 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 ", 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; }
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 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 } };
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[] ) { 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); }</pre>
新手黑客
#!/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;有經驗的黑客
#include <stdio.h>define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}</pre>
入行干過好些年的黑客
% cc -o a.out ~/src/misc/hw/hw.c % a.out黑客大師
% echo "Hello, world."新手經理
10 PRINT "HELLO WORLD" 20 END中級經理
mail -s "Hello, world." bob@b12 鮑勃,你能幫我寫個輸出“Hello, world.”的程序么? 我明天就要。 謝謝~高級經理
% zmail jim Jim,我今天下午就要輸出 “Hello, world.” 的程序!CEO/首席執行官
% letter letter: Command not found. % mail To: ^X ^F ^C % help mail help: Command not found. % damn! !: Event unrecognized % logout載自: 伯樂在線本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!