meteorobs 发表于 2004-6-10 22:16

[分享] 一个程序员的成长(比较专业)

一个程序员的成长

中学:

10 PRINT "HELLO WORLD"

20 END

大学一年级:

program Hello(input, 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);

  printf("\n");

  }

经验丰富的专家:

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

    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:perator=(const char *chrs)

 {

  if (this != &chrs)

   {

    delete [] ptr;

    size = strlen(chrs);

    ptr = new char;

    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:rintSz(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 <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;

WCHAR wcsPath;

// get object path

wcsPath = '\0';

wcsT = '\0';

if( argc > 1) {

 mbstowcs(wcsPath, argv, strlen(argv) + 1);

 wcsupr(wcsPath);

}

else {

 fprintf(stderr, "Object path must be specified\n");

 return(1);

 }

// get print string

if(argc > 2)

 mbstowcs(wcsT, argv, strlen(argv) + 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

黑客导师:

% cat

Hello, world.

^D

初级管理者:

10 PRINT "HELLO WORLD"

20 END

中级管理者:

mail -s "Hello, world." bob@b12

Bob, could you please write me a program that prints "Hello, world."?

I need it by tomorrow.

^D

高级管理者:

% zmail jim

I need a "Hello, world." program by this afternoon.

首席执行官:

% letter



letter: Command not found.

% mail

To: ^X ^F ^C

% help mail

help: Command not found.

% ****!

!: Event unrecognized

% logout

Melipal 发表于 2004-6-10 22:23

我倒,前面N种语言大集合,后面好多命令行.........

暗暗 发表于 2004-6-10 22:36

我都看不懂野

:(

nngs 发表于 2004-6-10 22:51

黑客导师:

% cat

Hello, world.

^D



这个有意思.
我也要当导师: %echo 'Hello, world!'

macross11 发表于 2004-6-11 08:26

好象都是要实现同一个功能,就是打印出“Hello,world”,只是随着资格的上升,代码也越来越形式化,当上管理者后,连程序都不会写了。

河汉 发表于 2004-6-11 14:13

哈哈哈哈!精辟,有趣!!
哈哈哈哈哈!!!!!!!

meteorobs 发表于 2004-6-11 19:18

呵呵。。

从你的反映来看。。
你在这方面应该很在行。。。

光谱 发表于 2004-6-11 23:09

嘿嘿~反而basic最简洁。

macross11 发表于 2004-6-11 23:30

不是,只是我觉得这篇文章就是在反映这个问题.

LAMOST 发表于 2004-6-12 00:00

只看的懂这些~呵呵~

中学:

10 PRINT "HELLO WORLD"

20 END

大学一年级:

program Hello(input, output)

begin

 writeln('Hello World')

end.

Melipal 发表于 2004-6-12 12:01

能看懂中学、公司的程序员、经验丰富的专家、经验丰富的黑客和老练的黑客……
初级黑客能懂一半
最后面几个似懂非懂

qxf 发表于 2004-6-12 12:12

职位级别越高,程序越繁琐,已经是忘了程序的简洁美了,纯粹是在玩弄技巧啦,我想这个帖子要表达的意思就是如此啊

LAMOST 发表于 2004-6-12 14:23

????

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

% a.out

Melipal 发表于 2004-6-12 14:32

gcc编译的命令,好象是

macross11 发表于 2004-6-12 23:18

LINUX下的吧。

Melipal 发表于 2004-6-12 23:22

是啊,但我没用过几次
后面那些好象都是linux命令吧

lcsky 发表于 2004-6-13 00:00

@#%^@%&#%^*#$%^*$&^#!经典!倒!

qianyiping 发表于 2004-6-13 13:08

就看懂中学的了:(
页: [1]
查看完整版本: [分享] 一个程序员的成长(比较专业)