非計算機專業的前端開發做了很久了,怎麼提升計算機基礎?

在大公司做Web做了很久了,水很淺,基本上前段的東西好多都掌握了,但是由於自己之前學力學的,覺得跟前端大師門比差了很多計算機基礎,如果補充這些方面的話有哪些教程,教材推薦嘛,最好是網上有資源,有作業可以寫的,多謝大家!


相關專業的大二狗來答一下吧,望輕拍。

計算機基礎課程有:

大一:數據結構,數字邏輯,離散數學,C語言

大二:操作系統,彙編語言,計算機組成原理,面向對象程序設計

~~大三:計算機網路,計算機圖形學,資料庫,編譯原理~~

~~大四:暫時還布吉島~~

先說一下個人看法,不是所有的計算機基礎都得學,當然了解更多也沒有什麼不好。但是時間有限的話,總不能從最不相關的學起吧~

面向對象程序設計和C語言,這個估計已經...pass掉不說了。

再到數據結構(和離散數學一起學習效果更佳),如果不是專攻演算法,像什麼神經網路演算法blabla不需要學吧,只需要關注工程級別的,什麼二叉樹,堆棧,圖等等,推薦演算法 (豆瓣),還有對應的視頻教程Coursera - Free Online Courses From Top Universities 分為兩部分。至於說遇到難以理解的演算法,可以看看這個網站VisuAlgo - visualising data structures 還有一些個人博客。哦對,還有這個Algorithm Visualizer前者可視化是偽代碼,後者可視化的是JS實現。下面就是後者可視化的圖片了。

從個人經驗來說的話,在你學習的時候用上它。在理解它的演算法思想是怎麼回事之後,按自己的理解來敲出來,再去對比別人或者書籍的是怎麼樣,差別在哪,為什麼自己寫不出來。數據結構這一塊,如果不動手的話就算看太多書都是白搭。 LeetCode Online Judge 所以,附上刷題網站。

下一個比較相關的應該是計算機網路了,啊哦,我也還沒學,就拿我一個華工同學的學習經驗吧。計算機網路這是他推薦給我的書,他之前的相關基礎---Python,他在外接項目的時候需要抓包,在做的過程中需要修改引用庫的內容(修復Bug..),在多次之後發覺這本書淺顯易懂,遂推薦...牛人一個。個人觀點:書籍是用來補充和提升的,要深入理解還是得多動手。

接著下一個應該是操作系統了吧?哈哈,我不知道要不要學那麼深,反正我覺得學習操作系統還是很有必要的,比如線程進程,死鎖互斥,文件IO,虛擬內存,頁面置換等。書籍有好幾本經典的,個人的教材操作系統 (豆瓣) ,感覺還是不錯的。這就完了?沒有~!怎麼少得了視頻和實戰呢不是嗎GitHub - chyyuu/ucore_os_lab:清華大學的操作系統公開課,在Github上的一個項目。它是參照國外的課程做法。見此處,6.828 / Fall 2014 xv6操作系統也是許多人推薦的。xv6的中文講義 xv6 中文文檔 感謝翻譯。

計算機組成原理還有數字邏輯。實在難以想像前端哪裡需要用到他們。其他課程沒有學習,就不敢比比了。


因為是前端開發,所以不需要強制了解計算機原理。

至於學習資源,請無論如何要有翻牆的能力!請保證自己的英文能力!

=================================================================

JavaScript再厲害,也不可以像C,C++一樣對內存分配進行操作。私以為,你說的基礎,其實就是前端基礎。前端包括HTML, CSS和JavaScript。

【HTML基礎】:HTML5 標準,推薦書籍《HTML5 權威指南》

【CSS基礎+進階】:CSS3和Sass,Less,推薦書籍《CSS3 權威指南》,網路上看看有沒有Sass和Less教程。

【JavaScript】

基礎類:ECMAScript6 標準, 書籍《ECMAScript6入門標準》, 教程 ECMAScript 6 Tutorial

框架類:

  • Angular框架《ng-book》,文檔看這裡-&>AngularJS

  • Angular 2, Tutorial: Tour of Heroes
  • React框架,基礎就是 教程 | React

  • React-Native, 教程 http://wiki.jikexueyuan.com/project/react-native/
  • VueJS, https://vuejs.org.cn/guide/

【前端性能優化類】

雖然ES6提供了很多新的介面,但這裡已經要接觸編程基本功:演算法

這裡推薦這一本《演算法(第4版) (豆瓣)》

在前端優化時,要參考雅虎的前端優化準則--Best Practices for Speeding Up Your Web Site

【基本概念類】

  • 前端一定會用到的Ajax,請保證沒有庫的情況下自己能寫出XMLHttpRequest。

  • 雖然不常用,但前端開發也有可能接觸的詞語:base64,binary,bitemap等等等等。

  • 再一個,在前端開發也少不了的技能:Canvas(對D3.js的使用要求對畫布有所了解)。

  • 有可能需要的技能:3D建模(取決你的項目是否需要three.js)

===================================================================

興趣是最好的啟蒙,堅持是最好的動力,谷歌是最好的搜索引擎,Github是最大的同性交友社區,而Stackoverflow則是最好的老師。祝你成功!


建議編譯原理和離散數學,你就能夠get到瀏覽器是如何渲染界面,如何解釋dom樹的了,做到寫出代碼不光知道是啥效果,還知道為啥是這個效果,那時候你就是真正前端大神了。


找相關書 因為基礎很多方面...查缺補漏 系統學習試試。不過欠了體系債還起來很辛苦


比較實際的還是數據結構,演算法,設計模式了。更基礎的太枯燥,自學大概率五分鐘熱度。


做為同行並靠技術創業順利的碼農,建議你努力變成前端專家即可,精一門足可以打工衣食無憂。至於演算法,數據結構 資料庫之類的,我個人認為不是必須,除非你已經精通主流前段框架,能夠設計出來高復用靈活的前段。


不是每個人都適合造輪子!

能善用前人的工具就已經可以做很多事了~

感覺的答主學習的出發點有些模糊...像前段大牛一樣,那大牛是怎樣的呢?

他那樣又真的適合你嗎?

你的真實目標又是什麼?

學會所有東西不現實,必須有所取捨,讓效益最大化~畢竟不是專業搞學術的,沒人會為低效買單的哦...


像你這種情況的建議報個培訓班,補全基礎理論架構後技術水平會有質的飛躍


推薦閱讀:

微軟為何不把XBOX ONE 變成一台帶PC功能的遊戲主機?
計算機專業需要什麼素養或者說品質?
你比計算機強在哪裡?
代碼寫多了,感覺自己只是API搬運工,怎麼辦?
如何看待不同計算機語言使用對個人編程習慣的影響?

TAG:互聯網 | 前端開發 | 計算機 | 計算機技術 | 前端工程師 |