自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

好程序員不寫代碼?網(wǎng)友:沒必要重復(fù)發(fā)明輪子

新聞 前端
現(xiàn)實(shí)的西方程序員世界里,也有與之如出一轍的精神:The Best Code is No Code At All。最好的代碼就是根本沒代碼。

 無劍勝有劍,是金庸武俠世界的***境界。

  現(xiàn)實(shí)的西方程序員世界里,也有與之如出一轍的精神:The Best Code is No Code At All。***的代碼就是根本沒代碼。

  簡單說來,無碼勝有碼。

[[254427]]

  △Francois Chollet

  山景城坷垃斯劍派祖師 Francois Chollet 最近就連連發(fā) Twitter,傳揚(yáng)這種精神,贊同者云集。

  他說:

  程序員寫多少代碼不重要,重要的是解決問題的效率。

  不用你寫、不用你維護(hù)的才是好代碼——直接用的現(xiàn)成解決方案嘛。

  簡單幾句話,仿佛說到了眾多同行的心坎里。他們高喊“太對了”,還用“@”呼朋喚友前來觀摩。

  Chollet 有充分的資格發(fā)推布道:他是入門框架 Keras 的作者、Google 研究員、《Python 深度學(xué)習(xí)》一書作者,頂會論文沒少發(fā),打 Kaggle 競賽也很厲害,***排到過全球第 17 名。

  圣誕之后新年之前的垃圾時間里,他這條不總結(jié)不展望不拜年的 Twitter,已經(jīng)被轉(zhuǎn)發(fā)了 700 多次,收獲了 2100 多贊。

  多寫代碼就是好?

  引來這么贊同的核心觀點(diǎn)說來也簡單:

  代碼是幾十行還是幾千行不重要,解決問題才是正經(jīng)事。

  就拿 Chollet 舉的例子來說吧:如果老板讓你搞個系統(tǒng),監(jiān)控有沒有人在廚房做飯,該怎么辦?

  解決方案一擺,高下立判。

  如果買個攝像頭,花 10000 美元收集數(shù)據(jù),然后親自把控訓(xùn)練流程,奮戰(zhàn)幾周用低級庫定制一個 CNN-LSTM 架構(gòu)……那是糟糕的程序員,程序員里的戰(zhàn) 5 渣。

  好程序員會怎么辦呢?

  買幾個 5 美元的溫度傳感器,幾個小時收集完數(shù)據(jù),然后用 sklearn 訓(xùn)練一個簡單的邏輯回歸模型。

  一下午就能搞定,而且系統(tǒng)更可靠、更好維護(hù),甚至,還沒什么隱私之憂。

  有人做飯,廚房自然會熱起來嘛!如果只知道拿攝像頭檢測人形物體,簡直是不知變通,費(fèi)時費(fèi)力還費(fèi)錢。

  不過這還不算慘,如果程序員搭了 CNN-LSTM 之后對效果不太滿意,再花幾周時間,用 GAN 來擴(kuò)增數(shù)據(jù)細(xì)心打磨……

  “認(rèn)真”到這個程度,已經(jīng)超出了戰(zhàn)五渣的境界,可以叫那個啥隊(duì)友了。

  方向走錯了,花再多力氣都是白費(fèi)。

  而這些“認(rèn)真”程序員花掉的力氣,大概也會讓 Chollet 一臉無奈:

  就算你非搭 CNN 不可,為什么要用低端庫定制呢?我的 Keras 里都打包好了,拿來試試不行就換別的啊……

  評論區(qū)就有網(wǎng)友一針見血地總結(jié):沒必要重復(fù)發(fā)明輪子。

  不要重復(fù)造輪子

  這句話在各行各業(yè)都深入人心,程序員界也不例外。

  作為 Keras 這個高級框架的作者和布道者,Chollet 對重復(fù)造輪子這種行為,更是持之以恒地批判。

  前不久,他還在吐槽某些“痛恨框架”的程序員,說他們自己從頭構(gòu)建的東西只不過是重新實(shí)現(xiàn)了框架的部分功能,而且設(shè)計(jì)拙劣、無法復(fù)用。

  為什么這么推崇用框架呢?是為了站在巨人的肩膀上。那些大型框架是眾多人想法和努力的結(jié)晶,想自己實(shí)現(xiàn)其中一部分功能?那相當(dāng)于想靠 0.01% 的努力&腦力出人頭地。

  好程序員,要善用前人打下的基礎(chǔ)。

  不過,關(guān)于“重復(fù)造輪子”這個問題,爭論很是激烈。Twitter 上、Reddit 論壇里,關(guān)于“什么時候用框架、什么時候手寫”的討論總是熱火朝天。

  想自己手動搭模型的程序員各有各的理由。比如說,為了優(yōu)化程序的性能:

  這種說法太短視了,如果追求性能、低延遲,就要重寫很多代碼,這也沒什么問題。

  更多重造輪子的人,是為了學(xué)習(xí)。

  不少人都認(rèn)為,在剛開始學(xué)習(xí)編程的時候,重造輪子不失為一個好辦法,能夠讓初學(xué)者能更好的理解技術(shù)或方法背后的邏輯。

  比如,如果你想了解 PyTorch 的原理,以及怎么讓它運(yùn)行得更快,***的方法,就是自己實(shí)現(xiàn)一個簡單版本的 autograd。

  雖然不能夠得到一個比 PyTorch 更好的框架,但通過這個過程,你對 PyTorch 的理解會變得更加深刻,在之后用到 PyTorch 的時候,也會更加順手。

  同為 Google 研究員的 David Ha 就曾經(jīng)和 Chollet 激烈爭論過,David 說:

  從零開始(用純 Python、numpy、甚至 JS)實(shí)現(xiàn)全連接網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、RNN、反向傳播、SGD,然后用小訓(xùn)練集來訓(xùn)練這些模型是一種學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)如何工作的好方法。在跳到框架上之前,應(yīng)該花時間從這里收獲寶貴的直覺力。

  除此之外,還有一個充滿無奈的原因:現(xiàn)成的輪子還真不一定能用。

  沒開源、不適合這個特定任務(wù),都讓開發(fā)者們面對輪子的時候很無奈。最近的“圣誕彩蛋”事件,更是讓程序員們對輪子充滿警惕:

  誰知道作者會在輪子里藏些什么東西!

  但切記,不論你為什么要自己動手從頭實(shí)現(xiàn)一個算法,千萬不要造出來一個方輪子。

  One More Thing

  知乎上曾經(jīng)流傳著這樣一個問題:程序員真的很少寫代碼嗎?

  有網(wǎng)友嘲諷&自黑,說寫代碼多、天天敲鍵盤的程序員是“苦力”、“段位不夠”。

  也有不少人吐槽:還不是因?yàn)榇蟛糠謺r間都是在找 bug!

  話說回來,無論調(diào)框架還是從頭搭、寫文檔還是找 bug,都是為了實(shí)現(xiàn)功能。

  你支持有碼還是無碼呢?

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2022-01-26 08:02:40

開發(fā)者模式工具

2019-02-20 11:14:08

程序員技能溝通

2020-10-27 13:41:43

Java技術(shù)開發(fā)

2020-10-25 23:26:14

Java開發(fā)代碼

2019-05-15 09:59:24

程序員技能開發(fā)者

2021-12-31 08:56:13

程序員算法代碼

2020-10-15 14:33:18

Node.js中國程序員

2013-01-22 13:50:11

程序員前端Web

2012-01-04 09:50:07

程序員

2019-09-12 10:00:57

程序員技能開發(fā)者

2014-03-25 10:35:35

程序員代碼調(diào)試

2020-11-20 14:14:14

SQL數(shù)據(jù)庫語言

2017-10-17 12:47:19

2020-08-27 16:43:23

程序員加班工作

2018-08-09 10:45:13

程序員技能開發(fā)者

2013-04-18 09:55:05

程序員

2022-11-10 08:03:37

GitHubCopilot

2019-11-07 22:00:22

程序員代碼規(guī)范

2015-11-23 17:27:19

程序員寫代碼

2015-07-02 11:20:17

程序員代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號