fisher

目前关注:ESB框架、中间件技术、代码运行期管理
随笔 - 59, 文章 - 4, 评论 - 184, 引用 - 7
数据加载中……

程序员的进化——从学生到首席执行官(转)


/*-------------------------------------------

  程序员的进化——从学生到首席执行官

翻译 2002 王咏刚
http://www.contextfree.net/
转译自 Omri's Computer Humor Page
http://www.cs.bgu.ac.il/~omri/Humor/
-------------------------------------------*/


--------------------------------------------------------------------------------
中学阶段

      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[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 << end

        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\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[_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
--------------------------------------------------------------------------------
黑客大虾

      % 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.
      % damn!
      !: Event unrecognized
      % logout
--------------------------------------------------------------------------------

posted @ 2006-05-18 17:14 fisher 阅读(924) | 评论 (0)编辑 收藏

Hello World的196种写法

还记得孔乙己说:茴香豆的‘茴’字有四种写法吗?现在我们的知识份子已经进步了,看看Hello World的196种写法:)

http://man.lupaworld.com/content/develop/hello/HelloWorld.shtml

posted @ 2006-05-18 16:58 fisher 阅读(764) | 评论 (0)编辑 收藏

趴在窗户上看长江

下午写完设计,趴在武汉办公室的窗户上看风景,天气好的时候,左面长江右边东湖都可以看到,其实想想在武汉出差也挺不错的,呵呵

posted @ 2006-05-17 18:03 fisher 阅读(525) | 评论 (0)编辑 收藏

关于人.....

彼得·德鲁克在他的《卓有成效的管理者 》当中,阐述了知识工作者管理的秘诀,那就是知识工作者的工作效率来自于对其工作的有效性以及他的工作是否有所成就。这本1966年出版的管理学书籍经过近50年的时间,反而越发显得适应潮流。
而卓有成效的知识工作管理者现在显得比过去任何时候都要短缺,也比现时任何人才都要短缺。在现时这个信息爆炸,案例丰富的年代,战略眼光与部署格局对于一个企业人才不再如此重要,对于企业战略,任何有管理常识、了解企业实情的人大都可以分析得很到位,关键是要找到合适的人去实施。知道什么样的人合适,以及找到这个合适的人,成为企业家最需要做的事情。而成为那个合适的人,则成为草根阶层走入舞台中央的必备能力。

附一篇来自经济观察报刘军的《笨蛋,最重要的是人!
---------------------------------

      2005年10月8日管理大师彼得·德鲁克曾经讲过一个他和《时代》《财富》等杂志的出版人亨利·鲁斯交往的故事。鲁斯有个很好的新杂志方案——试图创办“从美国人思考角度出发”的高格调文化杂志,他去向德鲁克求教。德鲁克分析了一番说,“这份企划案很棒,不过晚了50年。”接着,他对鲁斯说出了最重要的话:“此外,《时代》的人也无法胜任。我猜,你想鼓励一些外面的作家来为这本杂志执笔,并以一般大众为读者群。但是你的专长却是叫自己手下人搞定,因此大有不同。” 
      鲁斯回答说,“我来向你请教,正因为我猜想你会这么说。”他因而放弃了这个计划,因为他深知人的重要性。经过十多年的西方管理教育和知识传播,中国企业管理者已经熟知战略的理性分析,与重视人比起来更重视事,另外先建立制度、而不是依靠人的观念也被广泛接受。不过,我却逐渐感觉到,在这些问题上我们可能有点矫枉过正,对于知识型工作、对于管理,或许人更重要,是应该优先考虑的。 
      9月底,索尼新任CEO、美国人霍华德·斯特林格(Howard Stringer)宣布索尼的战略调整计划:全球裁员一万人,缩减工厂数目,出售1200亿日元的不动产与股票等非核心资产,对消费电子业务进行架构调整、将权力集中到这一业务的最高主管手中。在过去五年中,索尼逐渐失去消费电子霸主地位,业绩很不理想,这背后的根本原因正是这些战略调整所触及的问题。对于这一点,大概稍微有点管理常识的人都知道,我想索尼前CEO出井伸之自然了然于心,他之下的索尼高管也清楚。不过,大概只有霍华德·斯特林格、索尼历史上第一个外国人CEO、这个日本文化的局外人才能推行上述改革。 
     战略,有管理常识、了解企业实情的人大都可以分析得很到位,但真正去做,就需要“合适的人”。我一直相信,选择霍华德·斯特林格作为继任者,是出井伸之的最重要的决策,体现这个亚洲最优秀的商业领袖的领导才能。卡洛斯·戈恩已经因成功在日产汽车(Nissan)实现大逆转而成为全球最知名的管理者之一,他当初所做的关闭工厂与裁员、破除日本式企业联盟等措施,都是众所周知的弊端,但惟有他这个合适的人才能推动变革。斯特林格和戈恩都是在这种情境下最合适的人,只是恰巧他们都是外国人。 
      Google、微软和李开复之间的纷争一直没有停息的迹象。在这个过程中李开复把自己再次塑造成了最优秀的技术专家形象,但如果相信这一点,我们就错误理解了Google的智慧。如果要一流的中文搜索研发人才,Google的最佳人选绝对不是李开复,而可能是李彦宏。如果它的战略诉求点是这个,它可以百度买下,从而得到李彦宏。但是,Google在中国,需要的哪里是什么技术专家、研发中心?现在Google中国战略要的合适的人是据称是“技术专家”的李开复,但他在公众心目中的号召力和政府公关能力才是Google所看重的。 
      我们也可以循同样的视角来看待雅虎和阿里巴巴之间的联姻。这一次是把雅虎中国的业务交道马云手中去让他照料,因为对于谁了解中国市场和能够帮助雅虎发现中国市场潜力这个问题,马云是最佳答案。雅虎在中国的最近两次战略行动目标都首先是为了“人”。上一次是雅虎在中国收购3721,反而让其老板周鸿一担任中国区总裁,从而让雅虎中国从跨国公司在华分支机构这样的角色变成勇猛的中国本土企业。但在经历一段发展时期之后,雅虎中国就需要更合适的人。我们可以认为,这是雅虎、阿里巴巴联姻的主要原因之一。 
      先建立制度、体系,而不是“因人设事”这样的观点被广泛接受,可是,我们忘记了这个观念背后的工业化背景:所有人的都被当成了可替换的零件,所以制度体系最重要。但是,对于知识型工作来说,特别是非重复的创造性工作,每个人的工作方式、结果都截然不同。 
      我们所设计的制度体系,在当前的人员安排下也似乎运转正常。但是,由于这些人是无法替换的,人走了,看似精妙的体系也就出现出现问题了。这个时候,是去做不可能完成的任务:寻找适合制度体系的一摸一样的人?还是更改体系?或者看得更远点,在现在的情境下,我们根本就不该把制度体系的重要性神话到这种程度?针对知识型工作的讨论,和上文对最高管理者的讨论并非没有联系,因为在我看来,管理工作是最重要的、最具创造性的知识工作。 
      吉姆·柯林斯在《从优秀到卓越》说卓越公司是“先人后事”:这些公司的主管不是先确定目的地(先有方向、愿景、战略),然后才把人们引向那里;他们首先让合适的人上车(不合适的人自然请下车),然后才决定去向何处。他所说的虽是方向、远景,但大体上和制度是同一类型的事物。我们都应该了解,合适的人更重要,那些看似严密的战略分析和完善的制度体系有时候会变成令人难以忍受的障碍,因为它们和“合适的人”可能是完全矛盾的,这些人通常都难以放到一个既定的模子中去。 

posted @ 2006-04-25 23:19 fisher 阅读(962) | 评论 (0)编辑 收藏

webwork2.2.2的dtd解析问题(感谢飞云小侠)

今天将webwork2.2.1更换成webwork2.2.2,出现了一个奇怪的异常,每次启动后,都会报出:
org.xml.sax.SAXParseException: Element type "global-exception-mappings" must be declared.
com.opensymphony.xwork.config.ConfigurationException: Caught exception 
while loading file xwork.xml
    with nested exception 
org.xml.sax.SAXParseException: Element type 
"global-exception-mappings" must be declared.
如果将xwork.xml中的global-exception-mappings注释掉便好

头疼了几个小时解决不了,不得不求助飞云小侠
飞云小侠一出手果然不同,马上定位了问题所在
就是这句:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">

原来虽然几次升级webwork.jar,但是xwork.xml的DTD解析还是用的原来的DTD,顶多就是改了DTD的地址,也就是将这句
 "http://www.opensymphony.com/xwork/xwork-1.1.dtd">
改为这样
 "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">

而实际上解析DTD是靠的前面那句
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" >
原来一直是
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" >
于是就出现了上面的问题
多谢飞云小侠的帮助^_^

posted @ 2006-04-21 15:07 fisher 阅读(1160) | 评论 (0)编辑 收藏

仅列出标题
共12页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last