Firmemente ancorado no passado…


Quando vemos alguém a querer impor que os seus erros (bugs) se transformem em normas (feature), que opinião nos fica?…
Partindo de uma posição muito conservadora ou até moderada penso que não é descabido ficar com a impressão de que quem assim actua está firmemente ancorado no seu passado (legacy).

Objectivamente e tomando como ponto de partida o “insolúvel” problema do tratamento dos dias da semana pelo Excel. Um erro que já é velho conhecido da própria Microsoft como pode ser visto no próprio sítio de suporte da empresa.

O calendário gregoriano resolveu um problema do padrão anterior, o calendário juliano, ao criar uma regra para os anos bissextos que fossem divisíveis por 100: só são bissextos os anos que além de divisíveis por 100 também o são por 400. Esta simples correcção permitiu que pudéssemos finalmente mapear as estações do ano no calendário. Afinal, ninguém quer passas as férias de verão fora de época ;-) .

O erro a que me refiro acontece porque a Microsoft, no desenvolvimento do Excel, resolveu usar uma forma diferente para lidar com datas, adoptando um valor serial para as datas tendo como início o dia 1 de Janeiro de 1900. O problema com esta forma de cálculo de datas é que, para funcionar, o ano de 1900 teria que ser bissexto. E 1900 é considerado pelo Excel, e pelas demais fórmulas de data, como sendo um ano bissexto, apesar de não atender à regra de divisão por 100 e 400.

Mas isso o que tem a ver com o Open XML?

A secção 3.17.4.1, página 2522 do volume 4 das especificações publicadas pela ECMA diz:

For legacy reasons, an implementation using the 1900 date base system shall treat 1900 as though it was a leap year. [Note: That is, serial value 59 corresponds to February 28, and serial value 61 corresponds to March 1, the next day, allowing the (nonexistent) date February 29 to have the serial value 60. end note] A consequence of this is that for dates between January 1 and February 28, WEEKDAY shall return a value for the day immediately prior to the correct day, so that the (nonexistent) date February 29 has a day-of-the-week that immediately follows that of February 28, and immediately precedes that of March 1.

Ou seja, apesar de haver um padrão de datas reconhecido e utilizado internacionalmente, a Microsoft optou por transformar o erro numa norma.

A intenção de transformar erros em normas não para aí. A Apple também adoptou um formato de data serial, só que, para fugir do problema do ano de 1900, iniciou a contagem em 1 de Janeiro de 1904. O resultado é que o Excel no Mac, teve que ser adaptado para contornar este pequeno problema. O resultado também está na especificação do Open XML, na secção 3.2.28:

date1904 (Date 1904)
Specifies a boolean value that indicates whether the date systems used in the workbook starts in 1904.
A value of on, 1, or true indicates the date system starts in 1904.
A value of off, 0, or false indicates the workbook uses the 1900 date system, where 1/1/1900 is the first day in the system.
The default value for this attribute is false.

Uma dos motivos que justifica a utilização de normas abertas é justamente elas permitirem uma clara separação entre a norma e a sua implementação. Estes são apenas dois exemplos de transformação de erros em normas que a Microsoft implementa no Open XML.

Com o advento do Open XML e do ODF cada um de nós tem de decidir se quer enfrentar o futuro (leia-se usar o formato ODF) ou continuar firmemente ancorado nos erros do passado (leia-se usar o formato Open XML).

Eu já decidi :-)

Microsoft™, Apple™, Excel™, Mac™, são marcas registadas.

Deixe Uma Resposta