新聞中心
無(wú)劍勝有劍,是金庸武俠世界的***境界。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、阿榮網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為阿榮等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
現(xiàn)實(shí)的西方程序員世界里,也有與之如出一轍的精神:The Best Code is No Code At All。***的代碼就是根本沒(méi)代碼。
簡(jiǎn)單說(shuō)來(lái),無(wú)碼勝有碼。
△Francois Chollet
山景城坷垃斯劍派祖師 Francois Chollet 最近就連連發(fā) Twitter,傳揚(yáng)這種精神,贊同者云集。
他說(shuō):
程序員寫(xiě)多少代碼不重要,重要的是解決問(wèn)題的效率。
不用你寫(xiě)、不用你維護(hù)的才是好代碼——直接用的現(xiàn)成解決方案嘛。
簡(jiǎn)單幾句話,仿佛說(shuō)到了眾多同行的心坎里。他們高喊“太對(duì)了”,還用“@”呼朋喚友前來(lái)觀摩。
Chollet 有充分的資格發(fā)推布道:他是入門(mén)框架 Keras 的作者、Google 研究員、《Python 深度學(xué)習(xí)》一書(shū)作者,頂會(huì)論文沒(méi)少發(fā),打 Kaggle 競(jìng)賽也很厲害,***排到過(guò)全球第 17 名。
圣誕之后新年之前的垃圾時(shí)間里,他這條不總結(jié)不展望不拜年的 Twitter,已經(jīng)被轉(zhuǎn)發(fā)了 700 多次,收獲了 2100 多贊。
多寫(xiě)代碼就是好?
引來(lái)這么贊同的核心觀點(diǎn)說(shuō)來(lái)也簡(jiǎn)單:
代碼是幾十行還是幾千行不重要,解決問(wèn)題才是正經(jīng)事。
就拿 Chollet 舉的例子來(lái)說(shuō)吧:如果老板讓你搞個(gè)系統(tǒng),監(jiān)控有沒(méi)有人在廚房做飯,該怎么辦?
解決方案一擺,高下立判。
如果買(mǎi)個(gè)攝像頭,花 10000 美元收集數(shù)據(jù),然后親自把控訓(xùn)練流程,奮戰(zhàn)幾周用低級(jí)庫(kù)定制一個(gè) CNN-LSTM 架構(gòu)……那是糟糕的程序員,程序員里的戰(zhàn) 5 渣。
好程序員會(huì)怎么辦呢?
買(mǎi)幾個(gè) 5 美元的溫度傳感器,幾個(gè)小時(shí)收集完數(shù)據(jù),然后用 sklearn 訓(xùn)練一個(gè)簡(jiǎn)單的邏輯回歸模型。
一下午就能搞定,而且系統(tǒng)更可靠、更好維護(hù),甚至,還沒(méi)什么隱私之憂。
有人做飯,廚房自然會(huì)熱起來(lái)嘛!如果只知道拿攝像頭檢測(cè)人形物體,簡(jiǎn)直是不知變通,費(fèi)時(shí)費(fèi)力還費(fèi)錢(qián)。
不過(guò)這還不算慘,如果程序員搭了 CNN-LSTM 之后對(duì)效果不太滿意,再花幾周時(shí)間,用 GAN 來(lái)擴(kuò)增數(shù)據(jù)細(xì)心打磨……
“認(rèn)真”到這個(gè)程度,已經(jīng)超出了戰(zhàn)五渣的境界,可以叫那個(gè)啥隊(duì)友了。
方向走錯(cuò)了,花再多力氣都是白費(fèi)。
而這些“認(rèn)真”程序員花掉的力氣,大概也會(huì)讓 Chollet 一臉無(wú)奈:
就算你非搭 CNN 不可,為什么要用低端庫(kù)定制呢?我的 Keras 里都打包好了,拿來(lái)試試不行就換別的啊……
評(píng)論區(qū)就有網(wǎng)友一針見(jiàn)血地總結(jié):沒(méi)必要重復(fù)發(fā)明輪子。
不要重復(fù)造輪子
這句話在各行各業(yè)都深入人心,程序員界也不例外。
作為 Keras 這個(gè)高級(jí)框架的作者和布道者,Chollet 對(duì)重復(fù)造輪子這種行為,更是持之以恒地批判。
前不久,他還在吐槽某些“痛恨框架”的程序員,說(shuō)他們自己從頭構(gòu)建的東西只不過(guò)是重新實(shí)現(xiàn)了框架的部分功能,而且設(shè)計(jì)拙劣、無(wú)法復(fù)用。
為什么這么推崇用框架呢?是為了站在巨人的肩膀上。那些大型框架是眾多人想法和努力的結(jié)晶,想自己實(shí)現(xiàn)其中一部分功能?那相當(dāng)于想靠 0.01% 的努力&腦力出人頭地。
好程序員,要善用前人打下的基礎(chǔ)。
不過(guò),關(guān)于“重復(fù)造輪子”這個(gè)問(wèn)題,爭(zhēng)論很是激烈。Twitter 上、Reddit 論壇里,關(guān)于“什么時(shí)候用框架、什么時(shí)候手寫(xiě)”的討論總是熱火朝天。
想自己手動(dòng)搭模型的程序員各有各的理由。比如說(shuō),為了優(yōu)化程序的性能:
這種說(shuō)法太短視了,如果追求性能、低延遲,就要重寫(xiě)很多代碼,這也沒(méi)什么問(wèn)題。
更多重造輪子的人,是為了學(xué)習(xí)。
不少人都認(rèn)為,在剛開(kāi)始學(xué)習(xí)編程的時(shí)候,重造輪子不失為一個(gè)好辦法,能夠讓初學(xué)者能更好的理解技術(shù)或方法背后的邏輯。
比如,如果你想了解 PyTorch 的原理,以及怎么讓它運(yùn)行得更快,***的方法,就是自己實(shí)現(xiàn)一個(gè)簡(jiǎn)單版本的 autograd。
雖然不能夠得到一個(gè)比 PyTorch 更好的框架,但通過(guò)這個(gè)過(guò)程,你對(duì) PyTorch 的理解會(huì)變得更加深刻,在之后用到 PyTorch 的時(shí)候,也會(huì)更加順手。
同為 Google 研究員的 David Ha 就曾經(jīng)和 Chollet 激烈爭(zhēng)論過(guò),David 說(shuō):
從零開(kāi)始(用純 Python、numpy、甚至 JS)實(shí)現(xiàn)全連接網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、RNN、反向傳播、SGD,然后用小訓(xùn)練集來(lái)訓(xùn)練這些模型是一種學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)如何工作的好方法。在跳到框架上之前,應(yīng)該花時(shí)間從這里收獲寶貴的直覺(jué)力。
除此之外,還有一個(gè)充滿無(wú)奈的原因:現(xiàn)成的輪子還真不一定能用。
沒(méi)開(kāi)源、不適合這個(gè)特定任務(wù),都讓開(kāi)發(fā)者們面對(duì)輪子的時(shí)候很無(wú)奈。最近的“圣誕彩蛋”事件,更是讓程序員們對(duì)輪子充滿警惕:
誰(shuí)知道作者會(huì)在輪子里藏些什么東西!
但切記,不論你為什么要自己動(dòng)手從頭實(shí)現(xiàn)一個(gè)算法,千萬(wàn)不要造出來(lái)一個(gè)方輪子。
One More Thing
知乎上曾經(jīng)流傳著這樣一個(gè)問(wèn)題:程序員真的很少寫(xiě)代碼嗎?
有網(wǎng)友嘲諷&自黑,說(shuō)寫(xiě)代碼多、天天敲鍵盤(pán)的程序員是“苦力”、“段位不夠”。
也有不少人吐槽:還不是因?yàn)榇蟛糠謺r(shí)間都是在找 bug!
話說(shuō)回來(lái),無(wú)論調(diào)框架還是從頭搭、寫(xiě)文檔還是找 bug,都是為了實(shí)現(xiàn)功能。
你支持有碼還是無(wú)碼呢?
當(dāng)前文章:好程序員不寫(xiě)代碼?網(wǎng)友:沒(méi)必要重復(fù)發(fā)明輪子
文章地址:http://www.dlmjj.cn/article/codeccc.html


咨詢
建站咨詢
