首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读1176次
The Evolution of a Programmer

The Evolution of a Programmer
 
High School/Jr.High
===================
10 PRINT "HELLO WORLD"
20 END
 
First year in College
=====================
program Hello(input, output)
begin
    writeln('Hello World')
end.
 
Senior year in College
======================
(defun hello
(print
(cons 'Hello (list 'World))))
 
New professional
================
#include
void main(void)
{
    char *message[] = { "Hello ", "World" };
    int i;
 
    for(i = 0; i < 2; ++i)
        printf("%s", message[i]);
    printf("\n");
}
 
Seasoned professional
=====================
#include
#include
 
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);
}
 

Master Programmer
=================
[
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;
    };
};
 

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

Apprentice Hacker
===================
#!/usr/local/bin/perl
$msg="Hello, world.\n"
if ($#ARGV >= 0) {
    while(defined($arg=shift( at ARGV))) {
    $outfilename = $arg;
    open(FILE, ">" dot $outfilename) || die "Can't write $arg: $!\n"
    print (FILE $msg);
    close(FILE) || die "Can't close $arg: $!\n"
    }
} else {
    print ($msg);
}
1;
 

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

Seasoned Hacker
===================
% cc -o a.out ~/src/misc/hw/hw.c
% a.out
 

Guru Hacker
===================
% cat
Hello, world.
^D
 

New Manager
===================
10 PRINT "HELLO WORLD"
20 END
 

Middle Manager
===================
mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello, world dot "?
I need it by tomorrow.
^D
 

Senior Manager
===================
% zmail jim
I need a "Hello, world." program by this afternoon.
 

Chief Executive
===================
% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/EvolutionofProgrammer.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1127203966

2005年9月20日16:12星期二  [Info资料] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 8||用户: 2563 [列表]
今日:483||到访:2682122
Rss:841900||评论:1585

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8