Computers & humor (?)

Humor en computers kan dat ?

Computers zijn een noodzakelijk (?) kwaad in onze huidige maatschappij. Ze staan garant voor de nodige frustratie en computeragressie. Gelukkig valt er ook veel te lachen met computers, danwel hun gebruikers.

Verklarende computer woordenlijst

Computer
Martelwerktuig, uitgevonden door Roger "Duffy" Billingsly, een Britse wetenschapper, tijdens WO II, in een poging het regime van Adolf Hitler omver te werpen. Vermomd als Duitser bood hij zijn gift aan de dictator aan.
Het plot werkte. Op 8 april 1945 werd Adolf Hitler zo gefrustreerd van de "Incompatible File Format" foutmelding, dat hij zichzelf door het hoofd schoot.
Hardware
Computer gerelateerd object waar tegenaan geschopt of geslagen kan worden
Processor
Motor van de computer. Bestaat uit een door een knaagdier aangedreven tredmolen.
- een muis voor een Pentium I
- een hamster voor een Pentium II
- een fret voor een Pentium III en
- een fret met ADHD voor een Pentium IV
Besturingssyteem
Moeder aller programma's dat de computer stuurloos maakt
Geheugen
Wat de computer had voor hij seniel werd
Alpha
Software ondergaat alpha testen om feedback van de gebruikers te krijgen.
Alpha is Latijn en betekent "werkt niet".
Bèta
Software ondergaat bèta testen kort voordat het op de markt komt.
Bèta is Latijn en betekent "werkt nog steeds niet".
Foutmelding
Poging van de programmeur om de gebruiker de schuld te geven
Help functie
Eigenschap van een progamma dat meer vragen oproept dan het beantwoordt
Recursie
zie Recursie

Als Microsoft auto's zou maken ...

  1. Een model van een bepaald jaar auto zou niet beschikbaar zijn tot na dat jaar in plaats van ervoor.
  2. Iedere keer dat de belijning op de weg vernieuwd wordt zou je een nieuwe auto moeten kopen.
  3. Af en toe geeft je auto, zonder duidelijke oorzaak, de geest en je moet eerst alle vensters sluiten en daarna opnieuw de auto starten. Om de een of andere vreemde reden accepteer je dat gewoon.
  4. Je kan maar met 1 persoon in je auto, tenzij je een XP model koopt, maar dan moet je ook meer stoelen kopen.
  5. Je wordt constant onder druk gezet om je auto te upraden. Wacht 's even, dat gebeurt nu ook !
  6. Sun Motorsystems zou een zonlicht aangedreven auto maken, twee keer zo betrouwbaar, 5 keer zo snel, maar die zou maar op 5% van de wegen kunnen rijden.
  7. De metertjes voor oliepeil, benzine en de waarschuwingslampjes zouden vervangen worden door een enkele "Algemene Auto Fout" waarschuwing.
  8. Mensen raken opgewonden over de "nieuwe" mogelijkheden van Microsoft Auto's, maar vergeten dat alle andere merken deze mogelijkheden al jaren hadden.
  9. We zouden nog steeds op het "6000 sux 58'" model moeten wachten.
  10. We zouden allemaal moeten overstappen op Microsoft Benzine ™.
  11. Lee Iacocca zou ingehuurd worden als Bill G.'s chauffeur.
  12. De regering van de VS zou subsidie krijgen van een autofabrikant i.p.v. ze te geven.
  13. Nieuwe stoelen dwingen iedereen om de zelfde maat achterwerk te hebben.
  14. Ford, General Motors en Chrysler zouden allemaal klagen omdat Microsoft radio's in alle automodellen aanbracht.

Ongedocumenteerde Windows fouten.

Unix shell humor.

Er wordt nogal wat afgespeeld met de Unix shells en hier zijn een paar voorbeelden.
NB. De '%' prompt is de C shell, de '$' prompt is de Bourne shell.

% scan for <<"Arnold Schwarzenegger"^J^D
   "Arnold Schwarzenegger": << terminator not found

% ar m God
   ar: God does not exist

% "How would you rate Quayle's incompetence?
   Unmatched".

% ^How did the sex change^operation go?
   Modifier failed.

% If I had a ( for every $ the Congress spent, what would I have?
   Too many ('s.

% make love
   Make: Don't know how to make love. Stop.

% sleep with me
   bad character

% got a light?
   No match.

% man: why did you get a divorce?
   man:: Too many arguments.

% ^What is saccharine?
   Bad substitute.

% %blow
   %blow: No such job.

% cat 'the can of tuna'
   cat: cannot open the can of tuna

$ mkdir matter; cat>matter
   matter: cannot create

$ drink <bottle; opener
   bottle: cannot open
   opener: not found<

The Laws of Computer Programming

  1. Any given program, when running, is obsolete.
  2. Any given program costs more and takes longer each time it is run.
  3. If a program is useful, it will have to be changed.
  4. If a program is useless, it will have to be documented.
  5. Any given program will expand to fill all the available memory.
  6. The value of a program is inversely proportional to the weight of its output.
  7. Program complexity grows until it exceeds the capability of the programmer who must maintain it.

"Obfuscated C"

C is een mooie programmeertaal vor NARGs (Not A Real Gentleman).
Je kunt er prachtige, volkomen onleesbare, code mee schrijven.
Hier een mooi voorbeeld.



/*
 * Program to compute an approximation of pi
 *  by Brian Westley, 1988
 */

#define _ -F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()

{
            _-_-_-_
       _-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
        _-_-_-_-_-_-_-_
            _-_-_-_
}

Nog een fraai voorbeeld.
NB: Dit programma sorteert alle letters van elke opdrachtregelparameter op een aparte regel. WOW!


main(argc, argv)
int     argc;
char    **argv;
{
  while 
    (*argv != argv[1] && (*argv = argv[1]) && (argc = 0)
     || (*++argv  && (**argv && ((++argc)[*argv] 
     && (**argv <= argc[*argv] ||
     (**argv += argc[*argv] -= **argv = argc[*argv] - **argv)) &&
     --argv || putchar(**argv) && ++*argv--) || putchar(10))));
}

Deze is ook echt heel erg.


#include <stdio.h>
main(t,_,a) char *a; { return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')#\
}'+}##(!!/"):t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):
main((*a=='/')+t,_,a+1):0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1); }

Enig idee wat de ouput van dit programma is (oplossing) ?

Meer Obfuscated C vind je op de website van The International Obfuscated C Code Contest (winning entries).

Compiler errors

Dit zijn daadwerkelijke foutmeldingen van een oude Apple MPW C compiler.

Met dank aan Tony Cunningham

Rare foutmelding van andere compilers of linkers.

Beroemde citaten uit de computerindustrie

"Computers in the future may weigh no more than 1.5 tons."
    --Popular Mechanics, forecasting the relentless march of science, 1949

"I think there is a world market for maybe five computers."
    --Thomas Watson, chairman of IBM, 1943

"I have traveled the length and breadth of this country and talked with the best people, and I can assure you that data processing is a fad that won't last out the year."
    --The editor in charge of business books for Prentice Hall, 1957

"But what ... is it good for?"
    --Engineer at the Advanced Computing Systems Division of IBM,1968, commenting on the microchip.

"There is no reason anyone would want a computer in their home."
    --Ken Olson, president, chairman and founder of Digital Equipment Corp., 1977

"So we went to Atari and said, 'Hey, we've got this amazing thing, even built with some of your parts, and what do you think about funding us? Or we' ll give it to you. We just want to do it. Pay our salary, we'll come work for you.' And they said, 'No.' So then we went to Hewlett-Packard, and they said, 'Hey, we don't need you. You haven't got through college yet."'
    --Apple Computer Inc. founder Steve Jobs on attempts to get Atari and H-P interested in his and Steve Wozniak's personal computer.

"640K ought to be enough for anybody."
    -- Bill Gates, 1981

C versus Pascal

Alle programmeurs beginnen met het bekende "Hello World" programma. Dit programma doet niets anders dan de tekst "Hello World" op het beeldscherm schrijven.

Zo doe je dat in Pascal:


program Hello(input, output)
begin
  writeln('Hello World')
end.


Zo in C:


#include <stdio.h>

void main(void)
{
    char *message[] = {"Hello ", "World"};
    int i;
    for(i = 0; i < 2; ++i)
        printf("%s", message[i]);
    printf("\n");
}



Zo doet een zeer ervaren C-programmeer dat:


  [
  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 = { /*  > 573F891-CFEE-101A-9A9F-00AA00342820 */
      0x2573F891,
      0xCFEE,
      0x101A,

      { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
  };
  UUID LIBID_CHelloLib = { /*  > 573F890-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);
}

OK. Pascal rules !!

Polyglot

Polyglot is een programma geschreven in 7 talen simultaan!!
Dit is mogelijk door slim gebruik te maken van de verschillende manieren waarop commentaar in de verschillende programmeertalen wordt vormgegeven in de broncode.
Een waar huzarenstukje.


(*O/*_/
Cu  #%* )pop mark/CuG 4 def/# 2 def%%%%@@P[TX---P\P_SXPY!Ex(mx2ex("SX!Ex4P)Ex=
CuG #%*                                                                  *+Ex=
CuG #%*------------------------------------------------------------------*+Ex=
CuG #%*   POLYGLOT - a program in seven languages      15 February 1991  *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*   Written by Kevin Bungard, Peter Lisle, and Chris Tham          *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*   We have successfully run this program using the following:     *+Ex=
CuG #%*     ANSI COBOL:            MicroFocus COBOL85 (not COBOL74)      *+Ex=
CuG #%*     ISO  Pascal:           Turbo Pascal (DOS & Mac), Unix PC,    *+Ex=
CuG #%*                            AIX VS Pascal                         *+Ex=
CuG #%*     ANSI Fortran:          Unix f77, AIX VS Fortran              *+Ex=
CuG #%*     ANSI C (lint free):    Microsoft C, Unix CC, GCC, Turbo C++, *+Ex=
CuG #%*                            Think C (Mac)                         *+Ex=
CuG #%*     PostScript:            GoScript, HP/Adobe cartridge,         *+Ex=
CuG #%*                            Apple LaserWriter                     *+Ex=
CuG #%*     Shell script:          gnu bash, sh (SysV, BSD, MKS), ksh    *+Ex=
CuG #%*     8086 machine language: MS-DOS 2.00, 3.03, 4.01, 5.00 beta    *+Ex=
CuG #%*                            VPix & DOS Merge (under unix)         *+Ex=
CuG #%*                            SoftPC (on a Mac), MKS shell          *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*   Usage:                                                         *+Ex=
CuG #%*     1. Rename this file to polyglot.[cob|pas|f77|c|ps|sh|com]    *+Ex=
CuG #%*     2. Compile and/or run with appropriate compiler and          *+Ex=
CuG #%*        operating system                                          *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*   Notes:                                                         *+Ex=
CuG #%*     1. We have attempted to use only standard language features. *+Ex=
CuG #%*        Without the -traditional flag gcc will issue a warning.   *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*     2. This text is a comment block in all seven languages.      *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*     3. When run as a .COM file with MS-DOS it makes certain      *+Ex=
CuG #%*        (not unreasonable) assumptions about the contents of      *+Ex=
CuG #%*        the registers.                                            *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*     4. When transfering from Unix to DOS make sure that a LF     *+Ex=
CuG #%*        is correctly translated into a CR/LF.                     *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*   Please mail any comments, corrections or additions to          *+Ex=
CuG #%*   peril@extro.ucc.su.oz.au                                       *+Ex=
CuG #%*                                                                  *+Ex=
CuG #%*------------------------------------------------------------------*QuZ=
CuG #%*                                                                  *+Ex=
CuG #%*!Mx)ExQX4ZPZ4SP5n#5X!)Ex+ExPQXH,B+ExP[-9Z-9Z)GA(W@'UTTER_XYZZY'CPK*+
CuG #(*                                                                  *(
C   # */);                                                              /*(
C   # *)  program        polyglot (output);                             (*+
C   #     identification division.
C   #     program-id.    polyglot.
C   #
C   #     data           division.
C   #     procedure      division.
C   #
C   # * ))cleartomark   /Bookman-Demi findfont 36 scalefont setfont     (
C   # *                                                                 (
C   #
C   # *                  hello polyglots$
C   #     main.
C   #         perform
C     * ) 2>_$$; echo   "hello polyglots"; rm _$$; exit
              print
C             stop run.
     -*,                'hello polyglots'
C
C         print.
C             display   "hello polyglots".                              (
C     */  int i;                                                        /*
C     */  main () {                                                     /*
C     */      i=printf ("hello polyglots\n"); O= &i; return *O;         /*
C     *)                                                                (*
C     *)  begin                                                         (*
C     *)      writeln  ('hello polyglots');                             (*
C     *)                                                                (* )
C     * ) pop 60 360                                                    (
C     * ) pop moveto    (hello polyglots) show                          (
C     * ) pop showpage                                                  ((
C     *)
           end                                                          .(* )
C)pop%     program       polyglot.                                      *){*/}




Met dank aan Lloyd Linklater (Borland Inc.) en Clifford Wolf.