Ruby之父 解讀程式設計師的傳奇人生

2021-06-04 20:10:32 字數 3897 閱讀 7819

1條

松本行弘(yukihiro matsumoto),2023年4月14日出生於日本鳥取縣。2023年,就讀於筑波大學第三學科資訊學系。2年後休學,成為末日聖徒耶穌**教會的宣講師。大學復學後,加入中田育男教授的研究室。2023年大學畢業。後在島根大學攻讀博士課程,修滿學分後退學,未獲學位。

現任株式會社network應用通訊研究所研究員、樂天株式會社樂天技術研究所研究員、ruby association 理事長、heroku首席構架師。

經歷篇

高中時代:用自己設計的語言程式設計

第一次接觸電腦,是小學6年級。父親給我買了乙個口袋型電腦l-kit16,當時真是激動壞了。到了初中3年級,父親又給我買了sharp pc-1210,這個時候我第一次知道程式設計這個概念。只要發出指令,計算機就能按照你的指令進行操作,真是有意思極了!

我的父親,是建築公司的乙個普通的上班族。他之所以買電腦,是用來計算建築資料的。沒想到這兩台電腦成了我的玩具(笑)。

回憶起小時候,感覺一天到晚都在看書。我家前面有乙個書店,我天天都泡在那裡。有時候朋友來玩,我讓他到家裡來,他卻指著書店說:那不是你家嗎?那時候什麼都看,科幻**呀,漫畫呀。百科全書全都記在腦子裡。總之就是特別喜歡文字。實在沒東西看,就看藥品的說明書(笑)。

上了高中之後,就迷上計算機了。成天看計算機雜誌。能讓計算機按照自己的指示來執行,這比什麼都有意思。特別是對程式語言非常感興趣。當時對組合語言、basic都不喜歡,不想用它們來程式設計(笑)。於是我就開始自己發明語言,然後用這種語言來程式設計,寫在筆記本上。不過這本筆記已經不知道去哪兒了,真遺憾。當時連語言的名字都想好了。當然了,不是ruby啦。不好意思說,哈哈。

大學時代:不是去圖書館就是去研究室

大學我考上了資訊科學學院。在那裡我接觸了許多在書中看到但從未使用過的軟體和語言。大學裡的老師都是我高中讀過的書的作者,簡直太不可思議了。不過,研究室裡我是最不聽話的,老是貓在那裡設計自己的語言(笑)。

當時是日本泡沫經濟崩潰的年代,但是我一點兒都沒有閒著。整天泡在圖書館裡,看了許許多多書。休息的時候就去電影院或者是書店(笑)。我不擅長運動,也不關心身邊的人都在幹什麼。我從小就喜歡讀書,雖然最近拜網路所賜,讀得少了(笑)。閱讀各領域的書籍,對我的成長影響很大。另外,我還常常關在研究室裡。比如通宵在研究室里弄電腦,到了早上回家洗一下澡,然後再到研究室去(笑)。當時是80年代後期,研究室裡已經連上網路了,我常常看bbs、新聞什麼的。能接觸到很多聰明的人物,覺得非常有意思。

當時是計算機的黎明期。我父親是反對我考資訊科學學院的。什麼計算機,什麼程式設計,當個興趣就得了。不過我真是太喜歡計算機了。未來的出路我從未考慮過。可謂是義無反顧了。

經濟不景氣,開始開發ruby

我的主要工作是公司內部oa軟體的開發。當時的電子郵件只能傳送文字,我就弄乙個可以貼上附件的軟體。有意思。公司一般會給我乙個大致的範圍,然後讓我自由地去發揮。因為喜歡這個工作,所以常常加班到很晚才回家。當時的夢想就是一輩子做乙個程式設計師。即使將來當爺爺了,也要繼續工作。

過了幾年,泡沫經濟崩潰的後續影響開始顯現出來。公司的業務一下子少了許多。時間非常充裕,於是我就想自己幹一點事情,開始開發ruby。這些我都是在公司弄的,也和同事交流過,同事亦給我許多幫助。

1年之後,我去了另一家公司,叫做名古屋cad vendor。因為原來那家公司的經營狀況已經非常不好了。雖然我對工作很滿意,環境呀、人際關係呀都很好,不過當時我結婚有了家庭,考慮的東西就會多一些。萬一公司倒閉了,那就比較慘了。而且我也想趁自己比較有優勢的時候把自己推銷出去。當時能做物件導向的指令碼語言的人還是比較少的。

2023年,松本行弘將ruby公開於眾。反響極其熱烈。

理念篇:

還是當怪才比較好

很多人都比較奇怪,我的數學怎麼會那麼差。高中時我甚至考過全班最低分。擅長計算機的人數學就一定好,這只是人們的臆想而已。

在日本的教育體制下,學生都被培養成面面俱到可又麵麵平庸的綜合型人才。不過,我遇到的成功人士,大多都是一些在某些方面特別強,但在某些方面特別差的人。我的數學從來就是1(滿分為10分),一旦到了程式語言的考試,我則有取得1000分的自信(雖然滿分為100分)(笑)。每個人的能力都有上限,綜合型人才往往是全面發展,而那些怪才往往專注於磨練他的專長。這樣的人走上社會之後,更容易成功。

我開發計算機語言的初衷

所謂軟體,其目的就是讓計算機為人類工作。正因為人類的大腦有一定的能力限度,所以需要讓計算機承擔大部分的工作,讓人腦空出來去解決更難的問題。因此我開發了ruby這樣物件導向的指令碼語言。

我為什麼不自己創業

我是乙個數學很差的人(笑)。讓我算錢,就更差了。很多人都會問我為什麼不自己做公司,這是因為我實在不擅長。我現在的工作,能讓我自由、專注地開發程式。這樣就足夠了。

程式設計人員不需要擅長數學

程式設計人員要做的其實就是傾聽客戶需求,寫下來,然後借助計算機語言讓計算機去執行相應的任務。這**需要數學嘛?大家不要被表象所迷惑。算術反正有計算器,不用愁。而在計算機的世界裡,比數學更重要的,是作為人本身所需要的一些技能。比如傾聽能力、理解力等。其中最重要的是溝通能力。

程式設計是一種體育運動

很多人年輕時都熱衷於體育運動,有些人上了年紀依然熱衷。很不巧,我從小就不擅長體育,不過我能理解那些體育愛好者的感受。體育能夠使人生變得豐富多彩。而程式設計其實與體育有著許多共同之處。可能很多人覺得程式設計和體育根本不沾邊。不過,請你試著想一想,棋類常常被歸類為體育運動之一,這是為什麼呢?因為它其實是一種腦力運動。

說到程式設計和體育的共通點:

第一,兩者都需要通過反覆練習才能獲得技術上的提公升。要想成為一名優秀的程式設計師,知識和經驗都很重要。程式設計人員常常需要以苦為樂。

第二,程式設計對美和速度的追求,與體育相似。優秀的程式言對自己作品中蘊含的程式之美,非常執著。另外,程式設計師在進行效能調優時的測定行為,以及對自我瓶頸的突破,和游泳以及田徑選手有類似之處。

程式設計是一種興趣

在日本,棒球愛好者可謂多如牛毛,可是真正成為專業棒球手的卻是屈指可數。大多數人都是因為興趣才接觸棒球的。同樣,有許多人愛好程式設計,於是世界上誕生了許多開源軟體。同時,解決程式bug的過程,和解謎的過程一樣,都是充滿驚喜的。

不過和專業的體育選手不同的是,很多專業程式設計師並不是因為喜愛程式設計才幹上這一行的。這一點,著實是比較悲哀的事。

程式設計是一種交流

在大家的印象裡,程式設計其實就是坐在計算機前敲打鍵盤。不過這個工作其實非常人性化。至今依然沒有出現能夠自我程式設計的計算機,這也說明了程式設計是一種人類活動,甚至可以說,只有人才能程式設計。此外,程式編寫出來是供給人類使用的。理解人的追求、人的感受,對於程式設計人員來說是非常重要的。另外,當乙個團隊聯合進行程式設計工作時,團隊成員之間的溝通能力也是不可或缺的。

程式設計是一種創造

多年來,我對程式設計的熱愛從未有絲毫減少。其中最重要的原因是:程式設計是一種創造性的工作。只要有一台計算機,就能從無到有,構建出乙個新的世界。程式設計的世界中,沒有重力、因果等等現實世界中的制約因素。如此自由的創造性活動,除程式設計外,別無他選。我能通過程式設計,創造出乙個我想象中的世界。這是程式設計最大的魅力。

程式設計是一生的事業

和許多活動相比,程式設計不需要體力。如果你不去那些徹夜加班的公司,那基本上年齡和體力都不是問題。程式設計更需要的是知識、經驗、判斷力等等,這些都不會因為年齡的增長而退化。換句話說,程式設計是可以幹一輩子的。這一點,和那些專業體育選手略有不同。

日本有乙個說法:35歲是程式設計師的退休年齡。我的身邊的確有許多30歲左右就漸漸遠離程式設計的朋友。與其說是因為他們能力低下,不如說是社會因素使然。在日本的it界,優秀程式設計師的價值沒有得到充分的認可,再加上論資排輩的傳統以及職業價值的不平衡,35歲成為乙個分水嶺。

實際上,國外許多著名的程式設計人員即使到了暮年也依然活躍在第一線。我的大學導師,退休之後依然高產,因為退休使他沒有雜事的干擾,能夠專心致志地**想幹的工作。幹一輩子程式設計,也是我的夢想。程式設計本來就是一件有趣的事。因為覺得有趣,所以進步很快,能編出優秀的語言來。如果你覺得程式設計只是一種謀生手段的話,那還是趁早辭職吧。快樂程式設計能使你的人生碩果累累,我相信。

美工程式設計師 每個創業公司都在尋找的傳奇人物

美工程式設計師 desingineer 創業公司努力尋找的傳奇人物。這些人既能做ui ux,也能做前端 後端程式設計。這是著名投資人chris dixon的一條twitter資訊。很多創業者不厭其煩的問我,我們需要乙個設計師,他要能會html5,css3,j ascript,以及python rub...

C 之父給C程式設計師的建議

1,c 裡幾乎不需要用到巨集,用const火enum定義明顯的常量。用inline避免函式的額外開銷,用template去刻畫一族函式或者型別,用namespace去避免名字衝突。類也可以。2,不要在你需要之前申明它,什麼時候用什麼時候申明 當年從c 轉c的時候吃了老苦了 3,不要用malloc n...

C 之父給 C 程式設計師的建議

在 c 中幾乎不需要用巨集,用 const 或 enum 定義顯式的常量,用 inline 避免函式呼叫的額外開銷,用模板去刻畫一族函式或型別,用 namespace 去避免命名衝突。不要在你需要變數之前去宣告,以保證你能立即對它進行初始化。不要用 malloc,new 運算會做的更好。避免使用 v...