趣文:程式設計師的進化史
去年發過一篇《Python程式設計師的進化史》,那篇文章是以階乘為例,列舉了各種程式設計師所寫程式碼,甚至包括網頁設計師的。今天這篇趣文是以 Hello World 為例,列舉處於各階段程式設計師的程式碼。另外,這篇有一定歷史了,應該至少有 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"); }
入職幹了幾年
#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); }
大師程式設計師
[ 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); }
新手黑客
#!/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);}
入行幹過好些年的黑客
% 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
相關文章
- 趣文:Python程式設計師的進化史Python程式設計師
- 趣文:程式設計師歪傳程式設計師
- 趣文:程式設計師相親指南程式設計師
- 趣文:程式設計師是詩人程式設計師
- 趣文:程式設計師和HR的交鋒程式設計師
- 程式設計師的進化程式設計師
- 趣文:一個程式設計師的愛情表白書程式設計師
- 程式設計師必知的前端演進史程式設計師前端
- 趣文:如果像招聘程式設計師那樣租車程式設計師
- 趣文:自從我做了程式設計師之後程式設計師
- 趣文:你最喜歡的程式設計師漫畫是?程式設計師
- 趣文:程式設計師的日常生活(塗鴉組圖)程式設計師
- 趣文:C++ 程式設計師離職之前要做的事C++程式設計師
- 趣文:程式設計師/開發人員的真實生活程式設計師
- 趣文:程式語言偽簡史
- 趣文:如果像招聘程式設計師那樣招聘木匠程式設計師
- 程式設計師的奮鬥史(四)——興趣是第一驅動力程式設計師
- 網友趣文:《東邪西毒》之程式設計師版 (轉)程式設計師
- FE.ES-非同步程式設計進化史非同步程式設計
- 程式設計師的迴歸式進化程式設計師
- 趣文:程式設計其實是文科程式設計
- 趣文:為什麼有些程式設計師特別喜歡貓?程式設計師
- 遊戲中“血條”設計的進化史遊戲
- 趣文:8種極品程式設計師,你屬於哪一種?程式設計師
- 趣科技:程式設計師那些事兒程式設計師
- 程式猿的進化史
- 趣圖:正在除錯中的程式設計師除錯程式設計師
- 趣圖:感動到哭的程式設計師程式設計師
- 趣圖:正在除錯ing 的程式設計師除錯程式設計師
- 《程式設計師的奮鬥史》——目錄程式設計師
- 一個程式設計師的編年史程式設計師
- 趣圖:程式設計師就是這樣被打斷的程式設計師
- 傳奇程式設計師Larry Wall:Perl的樂趣程式設計師
- 文藝程式設計師合集程式設計師
- 《程式設計時間簡史系列》JavaScript 模組化的歷史程式程式設計JavaScript
- 程式設計師的進階之路程式設計師
- 程式設計師必知的程式語言編年史程式設計師
- 加拿大程式設計師趣聞系列 1/N程式設計師