當前位置:
首頁 > 知識 > 日本更換新年號,卻害慘程序員了!

日本更換新年號,卻害慘程序員了!

日本更換新年號,卻害慘程序員了!

打開今日頭條,查看更多圖片

作者 | 唐塞依

責編 | 伍杏玲

本文經授權轉載自程序員在日本(ID:programmerinjapan)


【CSDN 編者按】就在四月一日!日本的新年號公布了,它叫「令和」。等到五月一號,日本就將徹底告別平成時代,迎來令和元年!

然而程序員卻遇到一個頭疼的問題……

「初春令月,氣淑風和。」這個新年號的發表,讓日本舉國上下都進入了一種期待美好未來的歡欣之中。

並且,因為天皇交替,日本還會在四月末五月初迎來幸福到暈過去的十連休。

在島國生活的絕大多數社畜們露出了久違的微笑:

「可以利用十連休好好粗去玩嘍!」

但是對於我們碼農來說,在假期到來之前將要面對的,是枯燥繁瑣的IT系統年號變更問題,以及由此可能導致的加班問題!

不懂程序的素人可能會問了:

「換個年號而已,改不改的有那麼嚴重嗎?」

還真是很嚴重。

在人類已經離不開信息技術的今天,IT系統里的時間問題稍有不慎,就會產生影響我們衣食住行的大動蕩。

出生於九零年以前的人,可能都對1999年記憶猶新,這一年,滿世界都在瘋傳一個謠言:


一九九九年

審判降臨

魔王現世

人類將迎來世界末日

然後什麼都沒有發生,所謂的末日預言被歷史證明只是互聯網的一場狂歡。

不過,從計算機發展史來看,1999年還真算得上人類是保衛了地球文明的一年。

這一年,無數的程序員加班熬夜,終於趕在千禧年鐘聲響起之前解決了計算機系統計時程序里,無法區分1900年和2000年區別的「千年蟲問題」。

要知道如果沒能解決這個問題,銀行的存款可能因為系統時間混亂而全部清空。核導彈發射系統也可能在Bug中隨機發射。

不懂程序的素人可能又要問了:計算機辣么聰明,怎麼會搞不清1900和2000年的區別呢?

原來呀,古早時候的電腦比較弱小,內存只有64-128KB,用它做事必須很節約,能省一點兒是一點兒。

所以那時候的程序猿在輸入日期時,都只用兩位數來表示年份——比如1999年1月1日,就寫成「990101」。這樣一來,1988年變成了「88年」,1900年變成了「00年」。

這時候一拍大腿你會發現:不對呀!照這麼寫,1900年和2000年都變成「00年」,沒有區別了哇!

沒錯!計算機也是這麼想的!

當時間跨過1999年最後一天的零點,如果不提前修改系統,全世界的計算機都會在:倒回1900,跨入2000,選擇原地狗帶,三種模式中陷入沉思。

有識之士很早就注意到了這個問題,號召政府和企業儘快採取措施。比如咱們國家就準備得比較完善,還在北京專門成立了一個「計算機2000年問題」辦公室,應對各地打來的求助電話。

甚至由於宣傳過於到位,連根本不懂計算機的老爺爺老奶奶們,也知道「千年蟲」要來了。他們真的把千年蟲當成了一種帶著病菌的害蟲,於是就發生了下面兩則故事:

日本更換新年號,卻害慘程序員了!

日本更換新年號,卻害慘程序員了!

與此同時,跟咱們隔海相望的日本,也開始了「防蟲」宣傳。

那時候的日本首相,叫做小淵惠三,小淵惠三親自演了個廣告,從1998年開始就天天在電視上輪放,催促本國程序員趕緊「捉蟲」。

在碼農們齊心協力的努力下,日本全國系統中的Bug,都被修復or掩蓋得差不多了(為啥會說「掩蓋」這個咱們最後解釋)

即使這樣在新千年到來之際,謹小慎微的日本人還是暫停了大多數公共設施的運轉JR和私鐵各社統統停運。飛機也不飛了,直到2000年順利到來才讓它們重新出發。

日本更換新年號,卻害慘程序員了!

千禧跨年之劫順利度過,日本上下鬆了一口氣,平成廢宅又可以放心去玩耍啦。以至於大家高興地忘了一個恐怖的事情:

大魔王2000年,不僅僅是新千年。它,還是一個閏年。

從小老師告訴我們——能被4整除的年份,叫做閏年。但是在所有能被4整除的年份里同時又能被100整除的,它就變回平年了

但但是!在這些能被100整除的平年裡同時還能被400整除的,它就又變回閏年了!

所以1900年不是閏年,但2000年!是一個大大滴閏年!

1900年沒有出現過的Bug,2000年會出現!

2000年2月29日,北海道札幌市地鐵線上通勤的日本人突然發現自己的定期券失效了。

「明明自己買的,是2月15到3月14一個月的月票怎麼到2月29就不能用了呢?」

因為霓虹金忘了修改閏年2月底多出來的一天。在計算機的認知里2000年2月29日,變成了不該存在的日子,人們的定期券也就因此失效了。那一天剛好是通勤地獄星期二。

總之說了這麼多,就是為了告訴大家計算機里的日期變動對程序員來說,是不可小覷的大事件。這個Bug如果不被重視,可能會引起很可怕的後果,輕則ATM宕機,重則人造衛星撞地,是一定一定要提前做好準備的。

說回這次「平成」變「令和」的事件。

現在是2019年4月,還屬於平成31年。日本這個國家明明都21世紀了,自己也引入了公曆,官方文件還在固執地延續帝位紀年法。我們在日華人從各個機構領到的證件里,看到的多是「昭和XX年」「平成XX年」這種表記方式。

但是和曆紀年有一個致命的Bug,那就是未來的日期未必真的存在。比如下面這張保險證:

日本更換新年號,卻害慘程序員了!

有效日期那裡赫然寫著:平成32年8月31日。可是4月一過,直接就進入令和元年了

哪兒來的平成32年???

既然沒有平成32年,那這些所有日期標註在平成31年4月30日以後的駕照、保險證,各種各樣的契約合同。豈不是統統要回爐重造?

回爐重造的話要花費大量人力物力,還需要民眾的積極配合。

可是不重新發行的話,那就只能允許新舊兩個年號同時存在。和歷就是這一點很迷,天皇一出事兒,年號就要換。日本國民的時間表就會迎來大錯亂。

歷史上就有過這麼一次,那是大正15年(1926)的事情。眾所周知日本人在新年的時候喜歡相互寄賀年片。年末的時候,郵局已經把大家寫好的賀年卡都收上來、蓋好了大正16年1月1日的郵戳,就等著當天統一送信啦。

結果12月25日,大正天皇掛了。而且在換算和歷xx年等於公曆xx年的時候,日本人的畫風也是這樣嬸兒的:

日本更換新年號,卻害慘程序員了!

首先要把每個年代開始的年份作為常識背下來,然後在此基礎上計算加減。對於我們中途上島的外國人來說,實在是面倒くさい。

這時候就會有人問了:既然和歷換算這麼麻煩為啥不幹脆全改公曆算了?

實際上,大部分日本人也是這麼想的。但是堅持和歷的人認為:公曆是具有基督教背景的曆法,強制採用公曆違反了憲法中宗教信仰的自由。憲法高於一切。所以最終大家還是一起忍受著和歷的折磨。

邁入信息時代後,最受折磨的就是我們悲慘的程序員。跟官方文件一樣,日本很多系統也是以和歷形式儲存日期的。

2019年4月30日在系統里被記錄為H310430,而到了五月,年號變成了「R」開頭的令和,2019年5月1號就變成R010501了。

原本計算機按照H開頭往下加算的日期,從五月開始就要改成R開頭。現代開發的系統

實際上對於這個問題已經應對得更成熟,改修起來按說應該比較容易。但是日本很早就進入了數字化時代有大量的系統是用Cobol、Pascal等上古語言開發的。

這些系統運行時間超過30年像老古董一樣又脆又難修,而且30年前的文檔早就已經停止維護,很多時候只能讓程序員一行一行看代碼來分析,等到項目結束可憐的猿們就該排隊去看眼科了。

唯一讓猿們感到欣慰的是,明仁是一位很不錯的天皇,博學多才,愛好和平,不戀權不好戰,業餘喜歡研究蝦虎魚,一不小心還成了這塊兒最厲害的權威。

日本更換新年號,卻害慘程序員了!

日本更換新年號,卻害慘程序員了!

這位很不錯的天皇連退位也是有條不紊地,讓程序員可以提前做好準備,如果像大正一樣那麼突然,大家可能要直接上天台了。

然鵝,即使天皇早在幾年前就宣布了提前退位,公布新年號也還是前幾天的事情。對於程序員們來說這依然是一項時間緊任務重的大工程,微軟、IBM等公司也必須在最短時間內根據新年號修改各種程序工具。

日本更換新年號,卻害慘程序員了!

尤其對於給銀行稅務證券機構改系統的猿而言就更不能掉以輕心了,不僅要改得快

還要保證沒有錯誤,不然在金額上出了差錯,就真的會背上一個比天還要大的鍋了。

啊!說到背鍋!我終於能講出今天最後一個小故事了!這是一個關於上屆程序員甩鍋的故事。

大家都知道在平成之前的呢,叫做昭和時代,昭和時代橫跨1926~1989,那會兒人們也已經用上計算機啦。所以早在昭和天皇去世的1989年,日本的IT系統就經歷過一次改元,當時的程序員已經預見到這些系統會在2000年的時候撞上千年蟲。

1989,離2000隻差11年了,那會兒自己還沒退休,說不定會被公司綁去祭天。這時不知哪個工程師賊光一閃,提議道:要不咱這樣吧,用公曆1989的話,過11年就會撞上雙零,但是如果沿用昭和64年的話還有36年才會爆發危機!等到那會兒咱就退休啊不,就開發出更先進的技術了!後輩肯定有辦法解決的!

其他碼農聽了紛紛覺得:

日本更換新年號,卻害慘程序員了!

於是大家就這樣管殺不管埋地,接著給昭和續命。所以直到今天一個名叫昭和的幽靈依然在日本列島上空盤旋。

當年的碼農們為了延後2000年問題的爆發,只為一般消費市場的IT系統進行了改元換算,而在更牽扯國民經濟命脈的政企領域則按昭和的年份繼續悄無聲息地加算。現在令和元年都要來了這些政企系統的軟體里,表面上是平成31年的記錄,內部卻是令人毛骨悚然的昭和94年(63+31)!

再過六載,也就是2025年,昭和也要歸零了。這就是在日本IT界比「換位改元問題」

更加令日本人擔憂的「昭和100年問題」。

日本更換新年號,卻害慘程序員了!

日本更換新年號,卻害慘程序員了!

因為舊的仕様書很多已經遺失,當年參與開發的工程師也都退休了。幾乎沒人知道怎麼去修改這些昭和年代留下的老古董。

所謂前人砍樹,後人遭殃。日本職場的甩鍋絕技就這樣跨越兩個時代,直接打擊到走向令和的我們身上。那一天會出現怎樣的光景呢,想想就覺得好刺激啊。

最後給大家講個IT界流傳已久的笑話:

一個COBOL程序員因解決了千年蟲問題掙了大錢,以至於他可以花錢請人將自己冷凍起來。未來的某天這隻猿突然被複活,睜開眼他詢問自己被複活的原因未來人這樣回答他:「現在是9999年,而你懂COBOL語言」。


作者簡介:唐賽依,從島國IT圈冉冉升起的次時代傷痕文學創作之星,熱衷於以興高采烈的口吻記敘日本碼農的悲慘世界。

聲明:本文經授權轉載,如需轉載請聯繫原作者。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

惠普往事:全球最大的 PC 製造商煉成記!| 極客頭條
安防無戰事:一場 10213 億元的誤會

TAG:CSDN |