關於自己的知識庫的困惑?
本人目前研一,做llvm/clang已經有一段時間了,時間基本都用在了調程序,看文檔上,而身邊大多數的同學都在看機器學習和深度學習的東西,覺得這是個趨勢,而自己對這些問題只有很淺薄的認識。也許是因為趨勢吧,自己對於不了解機器學習等其它領域的東西感覺到壓力山大,總想做好手頭上的事情也想進一步深入了解其他領域的知識,但是自己的時間是有限的,無法很好兼顧,十分困惑。不知道大家有沒有類似經歷呢?一心鑽研程序語言或者編譯器這樣有利於以後發展嗎?
有一些本質的知識, 不同的領域是共通的。比如debug的能力啊,看code的能力啊,抽象的能力啊,清晰的表達能力啊。以後發展有多好,這些才是最關鍵的吧。所以你看,把deep learning炒的那麼火的Jeff Dean, 以前是搞compiler的喲。這個思路,在machine learning里叫transfer learning, 從一個model里學到的feature,可以直接用在另一個model里當作一部分feature。 所謂學習,應該就是發現這些本質的東西,然後拚命練習吧。我碩士專業是machine learning, 碩士的machine learning課比較無聊(我會告訴你,就是調程序,看文檔么), 後來選了一些compiler的課,現在做的搜索引擎。 其實machine learning中一些深刻的思想,會讓你成為一個更好的程序員。 編譯器里的好主意,也有時候能讓你的machine learning更棒(比如很多deep learning的框架用了JIT)。扯來扯去,方向無關好壞, Keep an open mind
長話短說,上兩張圖你感受下。
第一張圖原文意思是其實大家都在做ML,只是不知道罷了。我想說,你以為你同學在學machine learning?放心,其實他們絕大部分人也不懂,說不定你比他們更懂。
第二張圖想說,PL其實是個集大成的領域,你要怕自己落伍,那就去做AI和PL相結合的事。看圖中Reps大神把logic reasoning和abstract interpretation結合起來做了大量的工作。最後再給你打個氣。所謂前景,任何領域,再熱門,泡沫再大,濫竽充數者也是遲早會被淘汰的,唯有水平過硬才能說前景。你現在去跟風學個ML學的不明不白然並卵。再者,物以稀為貴,會玩PL的人少自然給的價錢高。前年一朋友google 17萬刀起我會亂說?我把回復給 David 郵件摘抄一部分 At the very beginning, the target audience might be "users" more than core developers. To me, as a KDE developer, I started to use gcc when I was a university student in 2002 https://dot.kde.org/2016/10/20/leslie-zhai-talks-20-years-kde-china and used Assembly to develop a toy-compiler as my "Compile Principle" course assignment, but not deep into the internals of gcc. During 2014, at iSOFTLinux, we tried to work on a (non) GNU-free base system, so I switched to llvm just for fun and learn, then tried to fix libclang segfault issue when parsing https://bugs.llvm.org//show_bug.cgi?id=13619 and Sema"s destructor relative issue https://bugs.llvm.org//show_bug.cgi?id=21905 recently I am teaching the MallocChecker about Glib API https://reviews.llvm.org/D30771 just simply use AST, PathSensitive and ADT, so basically I am a llvm "user"
我和樓主一樣大四開始搞LLVM/Clang,水了些相關的項目,開始也是看一些文檔,調用一些API,做一些還算成型的產品出來。而相比之下,實驗室其他人都在神經網路和Deep Learning相關的東東,剛開始我也是有些艷羨和擔心,自己相關的編譯方向沒有人帶,也不是熱門,也就LLVM/Clang最近流行些,會不會落後於人。
如今研二的我看來,這些擔心都是多餘,我喜歡底層,喜歡體系結構,喜歡去挖C++相關實現機制,喜歡編譯相關的東東。研究自己喜歡的東西,你就會自行去研讀相關的paper,分析相關的代碼。我現在就是按照自己的興趣信馬由韁的去看一些VM,鏈接器,數據流分析和靜態分析等知識,感覺自己也挺充實的。但時不時聽搞Deep Learning的人扯一扯相關的思想還是挺有趣的。對LLVM有興趣就好好搞,別管別人,興趣最重要。你要是擔心就業,其實編譯器這塊很缺人的,只要搞的好,沒問題的。SHINING的博客 http://blog.csdn.net/snsn1984
我的博客有一系列關於LLVM,CLANG的博客。
You can do machine learning on compiler optimization, that"s how you combine them together.
不溫不火的領域才是最好的。PLSE目前確實不太火,但是正因為它不火,每年這方向的科研型人才的供需穩定,不用擔心會出現一個崗位一大堆人蜂擁來搶。
現在AI和ML被資本家和媒體炒得火熱,看上去無限美,但是5年之後什麼樣誰說的好呢?沒有哪個企業會傻到一直堅持著往一個看不到什麼短期盈利空間的無底洞里砸錢吧。如果僅僅是看到人們都拚命往AIML的坑裡跳,自己也跟著跳進去,等到幾年後突然發現這方面人才需求飽和了,那豈不是會覺得時間都浪費了嗎。
所以,還是先專心做好自己方向的事吧。
推薦閱讀:
※對於一個新手來說,在使用Visual Studio新建項目時,win32控制台應用程序和win32項目、空項目、MFC應用程序有哪些區別?
※編寫大中型 ERP 系統軟體通常會用到哪些編程工具?
※編程零基礎如何學習 Swift?