Pastebin / The Evolution of a Programmer

Ethicist 26 марта 2018

The Evolution of a Programmer

Старшеклассники

   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[] = {"Здравствуй, ", "мир!"};
  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;
  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 = "Здравствуй, мир!";
   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="Здравствуй, мир.\n";
 if ($#ARGV >= 0) {
     while(defined($arg=shift(@ARGV))) {
	 $outfilename = $arg;
	 open(FILE, ">" . $outfilename) || die "Не могу записать в $arg: $!\n";
	 print (FILE $msg);
	 close(FILE) || die "Не могу закрыть $arg: $!\n";
     }
 } else {
     print ($msg);
 }
 1;

Опытный хакер

 #include <stdio.h>
 #include <string.h>
 #define S "Здравствуй, мир\n"
 main(){exit(printf(S) == strlen(S) ? 0 : 1);}

Хакер со стажем

 $ jcc -o a.out ~/src/misc/hw/hw.c
 $ ./a.out
 Здравствуй, мир.

Хакер-гуру

 $ cat
 Здравствуй, мир.

AXE System programmer

   LL0:
           .seg    "data"
           .seg    "text"
           .proc 04
           .global _main
   _main:
           !#PROLOGUE# 0
           sethi   %hi(LF26),%g1
           add     %g1,%lo(LF26),%g1
           save    %sp,%g1,%sp
           !#PROLOGUE# 1
           .seg    "data1"
   L30:
           .ascii  "Hello, World\012\0"
           .seg    "text"
           .seg    "data1"
   L32:
           .ascii  "Hello, World\012\0"
           .seg    "text"
           set     L32,%o0
           call    _strlen,1
           nop
           mov     %o0,%i5
           set     L30,%o0
           call    _printf,1
           nop
           cmp     %o0,%i5
           bne     L2000000
           nop
           mov     0,%o0
           b       L2000001
           nop
   L2000000:
           mov     0x1,%o0
   L2000001:
           call    _exit,1
           nop
   LE26:
           ret
           restore
          LF26 = -96
           LP26 = 96
           LST26 = 96
           LT26 = 96
           .seg    "data"

   0000000 0103 0107 0000 0060 0000 0020 0000 0000
   0000020 0000 0030 0000 0000 0000 0054 0000 0000
   0000040 033f ffff 8200 63a0 9de3 8001 1100 0000
   0000060 9012 2000 4000 0000 0100 0000 ba10 0008
   0000100 1100 0000 9012 2000 4000 0000 0100 00 ba10 0008
   0000100 1100 0000 9012 2000 4000 0000 0100 0000
   0000120 80a2 001d 1280 0005 0100 0000 9010 2000
   0000140 1080 0003 0100 0000 9010 2001 4000 0000
   0000160 0100 0000 81c7 e008 81e8 0000 0000 0000
   0000200 4865 6c6c 6f2c 2057 6f72 6c64 0a00 4865
   0000220 6c6c 6f2c 2057 6f72 6c64 0a00 0000 0000
   0000240 0000 000c 0000 0608 0000 006e 0000 0010
   0000260 0000 060b 0000 006e 0000 0014 0000 0286
   0000300 ffff ffec 0000 0020 0000 0608 0000 0060
   0000320 0000 0024 0000 060b 0000 0060 0000 0028
   0000340 0000 0186 ffff ffd8 0000 004c 0000 0386
   0000360 ffff ffb4 0000 0004 0500 0000 0000 0000
   0000400 0000 000a 0100 0000 0000 0000 0000 0012
   0000420 0100 0000 0000 0000 0000 001a 0100 0000
   0000440 0000 0000 0000 0020 5f6d 6169 6e00 5f70
   0000460 7269 6e74 6600 5f73 7472 6c65 6e00 5f65
   0000500 7869 7400
   0000504

   % axe_generate -f system.uhdl
   Application 'Exchange' generated
   2324042350000000 source code lines
   No Errors detected.
   Hardware retrieval...done OK
   Certification Test...done OK
   Packing..............done OK
   Delivery.............done OK
   Application 'Exchange' delivered to customer
   23456000 bytes/sec.
   End processing, 2345 seconds.

Ультра высокоуровневый программист

   system.uhdl :

   SYSTEM
     CREATE ScreenWin
       SIZE 20000000/Unit=One
       DESTINATION Order.dest[One]
       OUTPUT CHARACTER['Hello world']
     END
   END

Новый начальник (помните?)

 10 PRINT "ЗДРАВСТВУЙ МИР"
 20 END

##Руководитель среднего подразделения

 mail -s "Здравствуй, мир." vap@b12
 Вась, ты не напишешь мне программу, которая выводит "Здравствуй, мир."?
 Мне ее нужно сделать до завтра.
 ^D

##Руководитель крупного подразделения

 % zmail leha
 Мне к обеду нужна программа "Здравствуй, мир.".

##Директор

 % letter
 letter: команда не найдена.
 % mail
 Кому: ^X ^F ^C
 % help mail
 help: команда не найдена.
 % черт!
 !: событие не опознано
 % logout

Научный работник

 PROGRAM HELLO
 PRINT *, 'Здравствуй, мир'
 END

Старый научный работник

 WRITE (6, 100)
 100 FORMAT (1H ,26HЗДРАВСТВУЙ МИР)
 CALL EXIT
 END

Смотрите также: