财神爷站:绿色安全的手机App下载平台
所在位置:首页 > 新闻资讯 > 一位程序员进化史 看看有你的影子吗?

一位程序员进化史 看看有你的影子吗?

发布时间:2022-08-04 21:40来源:财神爷站

  论一位程序员从初级到高级再到高管晋升过程中的代码演进之路,其中,有你的影子吗?

  一位?Go?程序员的进化史

  初级?Go?程序员

  packagefac

  funcFactorial(n?int)?int{

  res?:=?1

  fori?:=?1;?i?<=?n;?i++?{

  res?*=?i

  }

  returnres

  }

  学会使用函数的?Go?程序员

  packagefac

  funcFactorial(n?int)?int{

  ifn?==?0{

  return1

  }?else{

  returnFactorial(n?-?1)?*?n

  }

  }

  泛型?Go?程序员

  packagefac

  funcFactorial(n?interface{})?interface{}?{

  v,?valid?:=?n.(?int)

  if!valid?{

  return0

  }

  res?:=?1

  fori?:=?1;?i?<=?v;?i++?{

  res?*=?i

  }

  returnres

  }

  学会了多线程优化的?Go?程序员

  packagefac

  import"sync"

  funcFactorial(n?int)?int{

  var(

  left,?right?=?1,?1

  wg?sync.WaitGroup

  )

  wg.Add(?2)

  pivot?:=?n?/?2

  gofunc{

  fori?:=?1;?i?<?pivot;?i++?{

  left?*=?i

  }

  wg.Done

  }

  gofunc{

  fori?:=?pivot;?i?<=?n;?i++?{

  right?*=?i

  }

  wg.Done

  }

  wg.Wait

  returnleft?*?right

  }

  掌握了?Go?设计模式的程序员

  packagefac

  funcFactorial(n?int)?<-?chanint{

  ch?:=?make(?chanint)

  gofunc{

  prev?:=?1

  fori?:=?1;?i?<=?n;?i++?{

  v?:=?prev?*?i

  ch?<-?v

  prev?=?v

  }

  close(ch)

  }

  returnch

  }

  学会使用成熟的解决方案修复?Go?语言缺点的程序员

  packagefac

  /**

  *?@seehttps://en.wikipedia.org/wiki/Factorial

  */

  type?IFactorial?interface{

  CalculateFactorial?int

  }

  //?FactorialImpl?implements?IFactorial.

  var_?IFactorial?=?(*FactorialImpl)(nil)

  /**

  *?Used?to?find?factorial?of?the?n.

  */

  type?FactorialImpl?struct?{

  /**

  *?The?n.

  */

  n?int

  }

  /**

  *?Constructor?of?the?FactorialImpl.

  *

  *?@paramn?the?n.

  */

  func?NewFactorial(n?int)?*FactorialImpl?{

  return&FactorialImpl{

  n:?n,

  }

  }

  /**

  *?Gets?the?n?to?use?in?factorial?function.

  *

  *?@returnint.

  */

  func?(?this*FactorialImpl)?GetN?int?{

  returnthis.n

  }

  /**

  *?Sets?the?n?to?use?in?factorial?function.

  *

  *?@paramn?the?n.

  *?@returnvoid.

  */

  func?(?this*FactorialImpl)?SetN(n?int)?{

  this.n?=?n

  }

  /**

  *?Returns?factorial?of?the?n.

  *

  *?@todoremove?"if"?statement.?Maybe?we?should?use?a?factory?or?somthing?

  *

  *?@returnint.

  */

  func?(?this*FactorialImpl)?CalculateFactorial?int?{

  ifthis.n?==?0{

  return1

  }

  n?:=?this.n

  this.n?=?this.n?-?1

  returnthis.CalculateFactorial?*?n

  }

  高级?Go?程序员

  packagefac

  //?Factorial?returns?n!.

  funcFactorial(n?int)?int{

  res?:=?1

  fori?:=?1;?i?<=?n;?i++?{

  res?*=?i

  }

  returnres

  }

  Go?语言之父?Rob?Pike

  packagefac

  //?Factorial?returns?n!.

  funcFactorial(n?int)?int{

  res?:=?1

  fori?:=?1;?i?<=?n;?i++?{

  res?*=?i

  }

  returnres

  }

  一个程序员的进化史

  初中/高中时初入门

  10PRINT"HELLO?WORLD"

  20END

  大一

  program?Hello(?input,?output)

  begin

  writeln(?'Hello?World')

  end.

  大四

  (defun?hello

  (?print

  (cons?'Hello?(list?'World))))

  初入职场

  #?include

  voidmain(?void)

  {

  char*message[]?=?{?"Hello?",?"World"};

  inti;

  for(i?=?0;?i?<?2;?++i)

  printf(?"%s",?message[i]);

  printf(?"\n");

  }

  中级专家

  #?include

  #?include

  classstring

  {

  private:

  intsize;

  char*ptr;

  string:?size(?0),?ptr(?newchar[?1])?{?ptr[?0]?=?0;?}

  string(?conststring&s)?:?size(s.size)

  {

  ptr?=?newchar[size?+?1];

  strcpy(ptr,?s.ptr);

  }

  ~?string

  {

  delete[]?ptr;

  }

  friendostream?&?operator<<(ostream?&,?conststring&);

  string&?operator=(?constchar*);

  };

  ostream?&?operator<<(ostream?&stream,?conststring&s)

  {

  return(stream?<<?s.ptr);

  }

  string&?string::?operator=(?constchar*chrs)

  {

  if(?this!=?&chrs)

  {

  delete[]?ptr;

  size?=?strlen(chrs);

  ptr?=?newchar[size?+?1];

  strcpy(ptr,?chrs);

  }

  return(*?this);

  }

  intmain

  {

  stringstr;

  str?=?"Hello?World";

  cout<<?str?<<?endl;

  return(?0);

  }

  主程序员

  [

  uuid(?2573F8F4-CFEE-?101A-?9A9F-?00AA0034282?0)

  ]

  library?LHello

  {

  //bring?in?the?master?library

  importlib(?"actimp.tlb");

  importlib(?"actexp.tlb");

  //bring?in?myinterfaces

  #include?"pshlo.idl"

  [

  uuid(?2573F8F5-CFEE-?101A-?9A9F-?00AA0034282?0)

  ]

  cotype?THello

  {

  interface?IHello;

  interface?IPersistFile;

  };

  };

  [

  exe,

  uuid(?2573F89?0-CFEE-?101A-?9A9F-?00AA0034282?0)

  ]

  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-?00AA0034282?0),

  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?intcObjRef;

  };

  #include

  #include

  #include

  #include

  #include?"thlo.h"

  #include?"pshlo.h"

  #include?"shlo.hxx"

  #include?"mycls.hxx"

  intCHello::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)

  {

  //whenthe?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(

  intargc,

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

  //waiton?an?event?to?stop

  WaitForSingleObject(hEvent,?INFINITE);

  //revoke?andrelease?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(

  intargc,

  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?printstring

  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))?{

  //printa?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

  #?defineS?"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."

  初级经理

  10PRINT"HELLO?WORLD"

  20END

  中级经理

  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?bythisafternoon.

  高管

  %letter

  letter:?Command?not?found.

  %mail

  To:?^X?^F?^C

  %helpmail

  help:?Command?not?found.

  %damn!

  !:?Event?unrecognized

  %logout

  • 热门资讯
  • 最新资讯
  • 下载排行榜
  • 热门排行榜