2008年12月30日星期二

一天有多少秒鐘?

【原載自 2008 年 12 月 29 日《李銳華。啓文。雜思》】 (Creative Commons Attribution 3.0 US License )

考一考大家, 請問一天有多少秒鐘?

如果您的答案是 86,400 秒, 對不起, 您並不全對啊。

無疑,-般來說, 每天有廿四小時, 而一小時一般來說有 3,600 秒, 所以一般來說, 一天是有 24 x 3,600 = 86,400 秒的。 如果各位參加小學校際常識問答比賽, 這個答案應該是標準答案, 可得滿分!

但是人生就是沒有小學課程裡所描繪的那麽簡單。 如果各位是專業電腦程式開發人員, 又或者是工程師, 又或者是科學家, 您就要嚴肅的問自己, 真的每一天都有 86,400 秒嗎? 在此首先要定義「一天」是指從一個午夜到下一個午夜之間的那段時間。

如果各位在外國生活過, 或曾與外國人打過交道的, 大概有聽說過夏令時間 Daylight Saving Time 這玩意吧? 調撥夏令時間的時鐘, 有一句口訣, 很容易記憶的, "Spring forward, Fall back" 春天往前躍 (時針撥前一小時) 秋天退回來 (時針撥回一小時) (注意美國人叫秋天做 Fall 的,與英國人的 Autumn 有點不同)。 至於撥鐘的日子, 各國不同。 美國人是在三月的第二個週日和十一月的第一個週日, 而歐盟是三月的最後一個週日和十月的最後一個週日, 也有國家如中國 (包括香港) 是不行夏令時的。

至於撥鐘的時間一般在夜闌人靜的時候(凌辰二時)。撥快時鐘的那一天, 只有廿三小時; 而撥慢時鐘的那一天, 郤有廿五小時。 此時您應該明白, 我為甚麼在文首說一天不一定有 86,400 秒鐘了吧。

您也許仍然會爭辯, 「我生在中國香港, 這邊不行夏令時。 我負責的軟件, 也不出口到外國。 你所說的, 於我無關。」

可是, 除了夏令時, 還至少有另一個原因, 會令到一天不等於 86,400 秒鐘的, 這就是 「潤秒」 的問題。

原來, 地球自轉一週, 大約需時 86,400 秒鐘, 但又不是整整齊齊的 86,400 秒, 而是差了大約兩毫秒(千分之二秒), 為了修正這差異, 各國協定, 大約每五百天就要「潤」(增加) 一秒 (理論上也有減一秒的可能, 但事實上較少出現這一個需要。)

執筆之時, 兩天後的 2009 年除夕 (以格林威治時間為準), 正是另一潤秒的日子。 當天(指 2008 年 12 月 31 日) 深夜 11:59:59 PM 那一刻的下一秒, 會先跳到 11:59:60 PM, 然後再跳到下一天的 12:00:00 AM。 那一天 (香港時間是 2009 年 1 月 1 日) 共有 86,401 秒鐘。 小學校際常識問答比賽的標準答案, 仍然不適用!

對一般人來說, 這一秒的差別, 並不影響他們日常的生活; 但對程式開發人員來說, 視乎情況, 這一秒鐘, 郤隨時有差之毫氂, 繆以千里的破壞力, 搞不好就會令程式出現蟲蟲(program bug), 小則帶來尷尬, 大則引致死機, 服務故障等等。 故此好的程式開發人員, 心思一定要非常慎密。 寫程式時的每一個假設, 即使像「一天有多少秒鐘」這樣看來像小學生常識問題的, 都要再三思量, 保證他們都真的能夠經得起各種考驗, 於大風大浪中仍然屹立不倒, 方能寫出可靠的軟件。

最後, 祝各位後天能盡情享用那多出來的一秒鐘, 那可是 2008 年給大家的最後一份禮物啊!

沒有留言: