tisdag 12 maj 2009

Dr Dobbs Journal

Maj. En intensiv månad. Och snart kommer flytten så det lär ju inte bli mindre intensivt. Jag hade egentligen tänkt blogga om luftfuktaren som visade sig vara mer vattenkokare än luftfuktare. Men den får jag hänga ut en annan dag. Idag hamnade vi i ett okänt fikarum, med tidningar som handlar om datorer och inte om flygplan på borden. En av tidningarna var Dr. Dobb's Journal, och när jag tog den i min hand väcktes nämligen ett gammalt minne till liv som jag vill dela med mig av!

För tio år sedan bodde jag i Costa Rica. Jag var där som utbytesstudent mellan tvåan och trean i gymnasiet. På nåt sätt hade jag kommit över ett ex av Dr. Dobb's Journal, och just det numret handlade om millenniebuggen. De presenterade olika lösningar på problemet, och spred lite skräck för hur jobbigt det skulle bli när alla datorer krashade om några månader. Men! De hade ju inte tänkt på att ...

Jag fick tag på en dator med internet (och det var inte det lättaste i Costa Rica år 1999!) och skrev en insändare om min iaktagelse:

A Better Date?

Dear DDJ,

Suppose I have to construct a system for storing dates. I decide to store the dates in a standard, straightforward MM/DD/YY format using digits. Never mind about binary numbers and the like, let them come later. Dates are allowed to range from 01/01/00 to 12/31/99. These ranges mean I am able to store all the dates of one century. About 37,000 dates.

This is where I thought: Wait a minute, something is wrong here -- six digits. Shouldn't that be 1,000,000 dates. Where does the other 963,000 dates hide?

The answer comes fast. MM/DD. This way of storing dates is very inefficient. Gladly, the solution comes just as fast. Here is mine: To be able to represent 23 more centuries, I allow dates to range from 01/01/00 to 96/93/99 in the following manner:

century(1,1) range from 01/01/00 to 12/31/99.
century(2,1) range from 13/01/00 to 24/31/99.
...
century(8,1) range from 85/01/00 to 96/31/99.
century(1,2) range from 01/32/00 to 12/63/99.
century(1,3) range from 01/64/00 to 12/95/99.
For example:

century(5,2) range from 49/32/00 to 60/63/99
This system makes it possible to represent in whole 24 (8×3) centuries, approximately 888,000 dates. It is not all of the possible combinations, but it is much better.

Now, as I see it, this system is far better than any of the systems I saw in the last journal. It is simple to understand. It should be possible to use it in all databases that stores dates in an MM/DD/YY form. It does not require any changes in such existing databases, and it is fully backward compatible. A date in the normal MM/DD/YY form will be the exact same date in the aforementioned system.

Torkel Danielsson


Internet är underbart - nu mer än tio år efteråt går den fortfarande att hitta och läsa! Sen måste jag säga att jag inte skrev så taskig engelska som 19-åring faktiskt :)

4 Comments:

  • Ibland Torkel, men bara ibland, är du min idol!

    Fantastiskt. När jag var nitton år kretsade mitt liv runt hur jag skulle kunna åka snabbare med en Saab 900 Turbo. :)

    By Blogger Jens, at onsdag 13 maj 2009 08:16:00 CEST  

  • :)

    Jag åkte faktiskt skateboard (men inte så bra) och var på äventyrliga resor till Panama utan pass också under det där utbytesåret. Så jag var ganska normal tonåring, insändare till amerikanska datatidningar till trots :)

    Lasse, apropå det du sa om att mitt "förbättrade datumformat" inte var så förbättrat med avseende på läsbarhet: Problemet de beskrev var databaser i typ COBOL där det var hårdkodat att datumet ska lagras som sex siffror och det inte fanns plats för fler.

    By Blogger Torkel, at onsdag 13 maj 2009 12:54:00 CEST  

  • respekt!

    By Anonymous Harald, at fredag 15 maj 2009 23:14:00 CEST  

  • maste kontrollera:)

    By Anonymous Anonym, at fredag 17 juni 2011 11:40:00 CEST  

Skicka en kommentar

<< Home


 
www.flickr.com
Torkel Danielsson's items Go to Torkel Danielsson's photostream