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 ...
- Een model van een bepaald jaar auto zou niet beschikbaar zijn tot na dat jaar in plaats van ervoor.
- Iedere keer dat de belijning op de weg vernieuwd wordt zou je een nieuwe auto moeten kopen.
- 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.
- Je kan maar met 1 persoon in je auto, tenzij je een XP model koopt, maar dan moet je ook meer stoelen kopen.
- Je wordt constant onder druk gezet om je auto te upraden. Wacht 's even, dat gebeurt nu ook !
- 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.
- De metertjes voor oliepeil, benzine en de waarschuwingslampjes zouden vervangen worden door een enkele "Algemene Auto Fout" waarschuwing.
- Mensen raken opgewonden over de "nieuwe" mogelijkheden van Microsoft Auto's, maar vergeten dat alle andere merken deze mogelijkheden al jaren hadden.
- We zouden nog steeds op het "6000 sux 58'" model moeten wachten.
- We zouden allemaal moeten overstappen op Microsoft Benzine ™.
- Lee Iacocca zou ingehuurd worden als Bill G.'s chauffeur.
- De regering van de VS zou subsidie krijgen van een autofabrikant i.p.v. ze te geven.
- Nieuwe stoelen dwingen iedereen om de zelfde maat achterwerk te hebben.
- Ford, General Motors en Chrysler zouden allemaal klagen omdat Microsoft radio's in alle automodellen aanbracht.
Ongedocumenteerde Windows fouten.
- 001 Windows loaded - System in danger
- 002 No Error - Yet
- 003 Dynamic linking error - Your mistake is now in every file
- 004 Erronious error - Nothing is wrong
- 005 Multitasking attempted - System confused
- 006 Malicious error - Desqview found on drive
- 007 System price error - Inadeqaute money spent on hardware
- 008 Broken window - Watch out for glass fragments
- 009 Horrible bug encountered - God knows what has happened
- 00A Promotional literature overflow - Mailbox full
- 00B Inadeqaute disk space - Free at least 5,000 MB
- 00C Memory hog error - More RAM needed. More! More! More!
- 00D Window closed - Do not look outside
- 00E Window open - Do not look inside
- 00F Unexplained error - Please tell us how this happened
- 010 Reserved for future mistakes by our developers
- 011 Window open - Do not look outside
- 012 Window closed - Do not look inside
- 013 Unexpected error - Huh ?
- 014 Keyboard locked - Try anything you can think of.
- 018 Unrecoverable error - System has been destroyed. Buy a new one. Old windows licence is not valid anymore.
- 019 User error - Not our fault. Is Not! Is Not!
- 01A Operating system overwritten - Please reinstall all your software. We are terribly sorry.
- 01B Illegal error - You are not allowed to get this error. Next time you will get a penalty for that.
- 01C Uncertainty error - Uncertainty may be inadeqaute.
- 01D System crash - We are unable to figure out our own code.
- 01E Timing error - Please wait. And wait. And wait. And wait.
- 01F Reserved for future mistakes of our developers.
- 020 Error recording error codes - Remaining errors will be lost.
- 042 Virus error - A virus has been activated in a dos-box. The virus, however, requires Windows. All tasks will automaticly be closed and the virus will be activated again.
- 079 Mouse not found - A mouse driver has not been installed. Please click the left mouse button to continue.
- 103 Error buffer overflow - Too many errors encountered. Next errors will not be displayed or recorded.
- 678 This will end your Windows session. Do you want to play another game?
- 683 Time out error - Operator fell asleep while waiting for the system to complete boot procedure.
- 815 Insufficient Memory - Only 2,850,312,583 Bytes available
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
- Any given program, when running, is obsolete.
- Any given program costs more and takes longer each time it is run.
- If a program is useful, it will have to be changed.
- If a program is useless, it will have to be documented.
- Any given program will expand to fill all the available memory.
- The value of a program is inversely proportional to the weight of its output.
- 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.
- "String literal too long (I let you have 512 characters, that's 3 more than ANSI said I should)"
- "...And the lord said, 'lo, there shall only be case or default labels inside a switch statement'"
- "a typedef name was a complete surprise to me at this point in your program"
- "You can't modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler"
- "This struct already has a perfectly good definition"
- "type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you don't care, I'm just trying to annoy you)"
- "Can't cast a void type to type void (because the ANSI spec. says so, that's why)"
- "Huh ?"
- "can't go mucking with a 'void *'"
- "we already did this function"
- "This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn't wide enough to read this whole error message"
- "Call me paranoid but finding '/*' inside this comment makes me suspicious"
- "Too many errors on one line (make fewer)"
- "Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer"
Met dank aan Tony Cunningham
Rare foutmelding van andere compilers of linkers.
- "Error found between beginning and end of file." (PL-6)
- "Error: 42 is not a number." (CMCL)
- "Value is byte, but byte is expected" (FreePascal)
- "<Assorted DEC ID fruitcake> ILLEGAL ERROR" (DEC's RT11 linker)
- "Unexpected ';', expecting ';'" (Modula II)
- "ERROR 1164: HOW IN THE HELL DID YOU GET HERE" (IBFTC Fortran)
- "I the most critical examiner of all have determined that there is an error on line 42" (PL/1)
- "The impossible has happened!" (Algol)
- "Your expression has defeated me" (JEAN)
- "Insane structure member list" (Masscomp C)
- "GAG ME WITH A SPOON" (Valgol)
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.