看板 Soft_Job 關於我們 聯絡資訊
※ 引述《iman00b (I'm a n00b)》之銘言: : 其實我很認同你原來那篇文章的大部份看法, : 如您所說程式語言只是工具,不應該過度學習程式語言。 : 但不才我認為,就算我們對任何技術都能靈活運用以一貫之, : 那也不代表我們有任何輕視技術跟基礎能力養成的本錢。 : 而且你這樣會誤導一些根基不穩的初學者, : 讓他們以為原來程式語言的能力養成是如此簡單。 : 而你卻沒告訴他們這是所謂台上十分鐘,台下十年功的道理。 : 畢卡索任意揮毫能收天價,難道隨便一個阿貓阿狗也能嗎? 第一個語言就是機械語言或組合語言的人, 我以為看語言的角度與從高階語言學起的人是剛好反過來的, 一個從機器的角度看待語言,一個從人類的角度看待語言。 一堆高階語言寫的程式在編譯後,還不都是生出機械碼或中間碼的東西? 從不同的角度看待事情,有的事情會變很簡單,有的看起來就很難。 前幾年有看一些機器學習人類語言的paper, 說不同人類語言之間,有些語意表達的方式出現頻率有跨語言的共通pattern, 機器可以先挖出那些共通pattern,再來推導整句話其他字詞的意義; 當然少不了要有許多的前後文可以參考推敲的。 這樣做的程式不需要依賴預先輸入的人類語言知識,靠的只是頻率統計。 現在也許那個方法離實用還有很長一段路要走, 但是人腦差不多也用一樣的方式在處理與學習語言。 在我(以及其他許多習慣快速自學的人)來說,我們已經有前面的自學經驗, 也多半有前面的知識(少則數年,多則數十年),只要還沒老到會忘東忘西, 那請參考前面機器學習的例子,很多時候是整個程式語言的文件都還沒看到, 光是看程式原始碼,就已經知道那在賣啥膏藥。 你問我有沒學過,我會說我沒學過。你問我有沒看過那程式,我會說我沒看過。 可是你要我照著改出一個可以動的東西來,我會說我會。 你要我抓它的bug,我會說沒問題。 當然我會很希望有些工具書、工具文件類的東西,在我對一些地方有疑義的時候, 可以幫我解除疑義,順便告訴我哪些地方是該注意的。 從機器的角度來看,沒有什麼程式是真的難的,有差別的只是規模與層次的深度。 我也只是照著機器可能怎麼執行一段code的方式去思考而已。 有的人很質疑三分鐘可以摸會什麼東西,這要看那三分鐘是拿來幹什麼... 直接看source code,瞄一眼,沿著脈絡走一下,有時候收穫比翻一堆文件要多。 我覺得這就像是要機器從一整篇文章裡,不依賴預先輸入的語法知識看懂它一樣。 我覺得這樣做很好玩,但是很多人會直接說那是做不到的事情。 拿我沒看過的東西來問我會不會,我會說我不知道,看了再說。 可是等我看過了,我又不好意思跟那些在上面下了很多苦工還參不透的人說, 我已經會了,這邊該怎樣做,那邊該怎樣做,哪邊哪邊有怎樣的bug... 會跟不會中間的境界線愈來愈模糊, 你們也知道機器永遠不會跟你說它不懂一段專門餵給它跑的code的。 一個framework如果從最上層到最下層只有不到15層, 對於可以毫無障礙的從最上層trace到最下層的人來說, 也沒有什麼要看了一大堆文件才知道它哪邊在幹嘛的問題。 看到哪邊就學到哪邊,誰規定一定要看過文件才會用? 何況現代的程式很多都有良好的命名規則, 看到物件類別名稱與物件方法名稱,寫寫code後trace進去試試看, 不也就是那樣子而已? 沒有人規定沒學過的東西就不能抄來用啊, 也沒有人規定不能把它反組譯、反編譯剝開來看。 (也許法律上有限制,但是反正沒抓到就不被罰,你看到了就是你的知識了...) 如果把一個framework當成黑箱子看, 用很久的人會比初看就已經把它從裡到外都已經剝開來看過的人強? 我是不覺得啦......程式也只是程式。 看code快的人也不會在乎爬那幾萬行、幾十萬行code,看它到底是怎麼做的。 沒看過別人爬code爬那麼快的人會以為那是做不到的,但是這就是境界上的差異了。 當然這樣做還是有盲點,常常會只知其然,不知其所以然。 知道程式是那樣運作,不知道它為什麼要那樣運作。 我想這才是把那個東西摸很熟的人的強項, 除非他所謂的熟也只是不知其所以然的照著用。 : 水桶如果滿了,就再也裝不下水了,共勉之。 講到水桶,不如說是容器。 把知識比擬成水,把人比做容器的話, 有的容器入口窄,一次只能倒一點水進去; 有的容器入口寬,可以一次倒很多水進去。 窄口的容器不見得就淺薄,寬口的容器裡頭也不見得就寬廣深厚。 人比人會氣死人,大家走的路都不一樣,但是說起來都是同修啊。 心態當然是有要緊,有沒資質也差很多,不過個人認為興趣是最要緊的。 覺得不好玩的話,就不會去學了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 216.143.48.99