本科程序猿應該著重於哪方面基礎的學習才能學到真才實學?

目前很迷茫 個人認為不能為考試或者為考研而學習


多寫代碼,不要光看書和搞活動


魔都某大學cs專業畢業兩年的小透明前來回答。

就以跟我同班級、畢業後直接工作的這批人為樣本。當年成績很好並且所有大作業都當組裡大腿、大作業做的很出彩並且深受老師喜愛的這麼幾個人,現在所在的公司最好,錢掙得最多。

他們面試的時候,哪怕由於經驗不足等種種原因被拒,面試官也都會給出基礎很紮實的評價,我認為這就是所謂的真才實學。

大家的差距只會越來越大。

題主迷茫的話何不就從聽好每節課(數學和專業課)、做好每個大作業開始。

但行好事,莫問前程。現在的積累必然會有有回報的那天。


本文接近5000字,娛樂性很低,但是推薦有些迷茫的大學生們閱讀。

---

本科階段(不僅針對計算機科學專業),我認為最重要的是掌握「邏輯思維(Logical Thinking)」,「批判性思維(換位思考Critical Thinking)」等提升個人思維能力的方式。因為從事計算機行業,是需要不斷學習更新所掌握的知識來增加競爭力,但其中邏輯思維能力可以幫助你梳理知識框架結構和所需應用的技術架構;而批判性思維則是能夠幫助你對知識/信息來源(網上資料、圖書、開發設計文檔)等擁有較快的閱讀和分析快速消化吸收。

而與這二者對比,我認為計算機科學專業的課堂知識的重要度要低一些。因為國內課堂知識的來源一般來源於課本,而教授這些課程的老師們多半也多沒有參與過或已經脫離軟體研發領域。因此導致了目前課堂中教授的很多知識,在實際的工作中可能是已經被淘汰的無用知識。而且軟體研發領域到今天,其實已經發展成非常多個領域組合成的巨型學科,目前常見的一些領域(如企業應用研發、遊戲研發、Web前端/伺服器研發、移動端研發),其實之間的差距已經非常之大,可能從知識儲備,研發工具/流程等各方面已經完全不同,需要解決的問題也不一樣。而其中有些領域,如Web前端領域的變化則是日新月異,每過一段時間就有革命性的技術出現。這些工具會優化開發的流程,將以前一些需要人工去處理的工作,逐漸轉換為自動的去完成;這同時也意味著一些知識的淘汰和新知識的學習。

當然,這也不是說課堂上學習的知識是完全無用的。大學畢竟還是在學校當中,你還有足夠的時間來投入到專業學習當中。如果好好的抓住大學學習的時間,可以讓你在邁入社會工作的時候能夠先人一步。同時,如果能夠在工作中也保證不斷的學習進步,你自然可以一步先步步先,保持長久的優勢(而且這個優勢會很快變得非常大,因為社會會偏愛成功/有能力的人,你會獲得更多的機會)。

1. 盡量學好大學的本科課程

學好大學本科課程,是作為大學生的本質職責。不要認為知識會過時就不去學,也不要期望能夠達到「所有學習的知識都是有用的」這種完美的狀態。等你工作幾年之後,你會發現社會的效率其實是不高的,很多人做事情的時候效率很低,而做的很多事情很多時候也是「無用功」。因為我們從歷史的角度來回顧的時候,會很容易從上帝的角度來評價一件事情,而身處當時其中的人們是沒有這個判斷能力的。很多事情失敗了,但其中有些成功了,我們可能就往前進了一步,也有了一些個人成就。

而且,不做這些「無用功」,可能你就會和機會擦肩而過。而機會對一個人一生而言,其實是不多的。舉個最現實的例子,如果參加校招,公司可能會把課程成績當成一個很重要的指標。因為大學畢業生沒有工作經驗,也沒有其他可以量化衡量的指標,這時候成績用來衡量你當前掌握的知識,已經是一個相當不錯的指標。而舉個比較特殊的例子,因為我從小到大的英語成績都比較好,因此當時在大學申請學校交換項目的時候,我是非英語專業中英語能力最好的一個,因此被學校交換到了美國學習,這也極大的改變了我的一生(雖然目前仍然是碼農)。

同時,計算機技術掌握到一定程度,你會發現很多行業領域雖然相差很大,但是從核心理念上都是相通的。甚至於很多新的開發技術和語言特性等,都會很快反哺到老的開發技術當中。如果你已經在某個領域深耕,轉換到其他領域雖然仍有一些成本,但絕對比從無到有學習快很多(月vs年的差距)。

2. 掌握辨別知識的能力

一門課程大多只會持續一個學期(或者兩個學期),而真正從事這門課程研究的人,可能需要窮極一生才能完全掌握並作出一些貢獻。而每個學期又有那麼多課程,因此實際你只是大概的把這門學科的概覽學習一遍。

國內的課本一般全是乾貨知識堆砌而成,薄而精悍,但是這些課本大多對知識的重要度表述不足。每門課程,其實定理與定理之間,知識點與知識點之間的重要度是不一樣的。而且對不同領域,不僅每門課程的重要度不一樣,每個定理/知識點的重要度可能還會不一樣。因此,懂得如何辨別這些知識點的重要度,也成為了一種很重要的能力。

掌握這種能力,我覺得靠個人還真不一定行。如果你身邊有認識的人從事了多年的計算機行業工作,你可以向他請教(行業人員、老師,在知乎上搜索詢問也可以)。主要目的,是告訴你他所在的行業所需掌握的知識的架構,同時,還有哪些知識非常重要,哪些知識可能有用,哪些知識完全用不到。知乎(社會)上很多回答會強調什麼都很重要,這其實是一種很不負責任的說法。因為每個人的時間和精力都是有限的,必須要現實的面對的問題就是,你學的有用的知識會為你帶來直接的幫助;而沒用的知識,可能會為你帶來一點側面的幫助(比如提高思維能力啥的,說不定哪天用上了一點啥的),但是,如果你能用學習沒用的知識的時間,拿來學習有用的知識,難道就沒有這些側面的幫助了嗎?

當然,如果你按照前輩的評估去執行,也會將你綁定在他所處的行業(或相關的行業)上,至少在你工作的前幾年當中,你在這些行業找到工作的幾率會遠大於其他行業。這裡也有一些風險,如果這個行業不行了咋辦?我的答案是,詢問意見、網上搜索、最終自己分析決定。如果覺得這個行業不錯,並且努力了,但是到頭來行業不行了,那就總結經驗,換個行業再來。沒有什麼事情是沒風險的,我們所有人也都是在不斷的失敗中總結經驗並努力向著成功進發著,不然人生有什麼意思。

還是說回來,掌握辨別知識重要度的能力,並不是給你一個不學習某些課程內容的借口。本來大學只是安排你學習了這門課程的概覽,相當於幫助你構建起計算機在這個領域的知識架構。我期望你能夠做的,是能夠知道這個框架中,哪些點是重要的,你需要額外花時間去深挖理解其中的技術原理和實現方式。

這裡,我列舉下美國水平比較高的課堂老師的做法(我在國內學習的大學並不是很好,因此沒有這方面的經驗)。這些課程雖然會有比較厚的一本課本,但是這本課本主要是用於課下閱讀的。而在課堂上學習的資料,大多是基於課本章節和最新的文章/論文,然後整理出來的新的資料(複印的資料PPT)。比如我在學習人力資源的課程時(不要考慮我到底學了哪個專業,我讀了很多年大學),老師每節課只講了很少一部分的課本內容的概念,而大多數內容,都是討論最新的HBR(哈佛商業評論)中的人力資源相關的文章,比如Netflix、德勤等的最新實踐。

這種學習的方法非常辛苦,每節課之前要閱讀幾十頁的課本內容,另外還有一份HBR的文章,同時還要寫好Paper課前交。每學期4門課就足以讓你每天大約十幾小時學習,基本沒有休息的時間。但是這種學習的效果也是立竿見影的,我不僅學習到了傳統的HR知識,同時也學到了最新的發展和實踐,同時也對比了傳統HR和最新實踐的差別以及了解了每個抉擇的前提條件和可能的結果。雖然我還缺乏實踐經驗(也沒有準備去做HR),但是至少我認為我掌握了這個行業的知識框架以及一些最新的發展。

如果你願意,我也十分推薦你能夠儘可能的拿出時間來這樣去學習,目前互聯網這麼發達,不管什麼資料都可以輕鬆的獲取。如果能夠努力的學習幾年,那麼最終的結果會是相當驚人的。

3. 邏輯思維能力的鍛煉

邏輯思維能力,單就計算機專業來說,我覺得就是用人腦模擬計算機工作的能力。因為對程序員來講,構思程序的架構邏輯的能力越強,意味著工作能力越強。如果你可以預先在大腦中構思好程序的架構和實現,那麼去實際編寫代碼時效率就會非常高。

如果奔著提升這個能力的目標去,那麼最好的方法應該就是大量的編碼。選擇一個開發框架,然後跟著教程學習,然後進行多次重構。等你有一定的代碼經驗之後,你就可以去找一些設計模式的書來看,以及到GitHub上找一些項目研讀代碼,學習他們的思路和實現方式。

我不推薦一開始就「站在巨人的肩膀上」,因為你會感覺「這TM是啥」,「這TM又是啥」。因為對一個技術框架沒有完全了解的時候,會很容易糾結於一些無關緊要的技術細節(比如非常強烈的期望搞清楚一個技術參數為什麼這樣設置),而且會越陷越深,最終讓自己心灰氣餒。

我因為天生喜歡電腦,因此這塊的能力一直還不錯。小學時候可以坐一天就對著電腦敲CD/DIR命令(也不知道其他的命令了,不知道現在的朋友們還知不知道DOS),然後後來每天重裝系統(每天一遍Win98,被打後停止了)以及高中時候一天到晚不務正業的文曲星GVBASIC等。還有就是大學的時候對自己高要求的編程(課程設計要求控制台界面的C++課程我用MFC完成的,網頁課程要求靜態實現頁面,我自己加上了ASP和資料庫)。

但是之後在美國學習的課程要求也幫助我極大的提升了我的邏輯思維能力,主要的方式就是,在閱讀完一篇文章後,能夠儘可能的完整複述出閱讀的文章的內容,並且能夠總結出文章的主要觀點和邏輯敘述結構。因為這樣你才能夠真正理解文章所表述的觀點以及作者的意圖。

而使用閱讀來提升邏輯思維能力的關鍵點,一方面是多讀結構性強的文章(一般課本和論文,以及高質量的網路文章,目前知乎很多),另一方面是要有意識的去總結文章的結構。其實大多數文章都是總分總格式,然後每段開頭都是當前段落的重點。另外,不要開始就糾結於把每篇文章分析清楚,而是「多讀」,閱讀量比刻意的鍛煉邏輯思維能力會更有持久的效果(也更有趣,不是嗎)。

4. 批判性思維(換位思考 Critical Thinking)能力的鍛煉

此項能力是被很多(未做統計,不敢說全部)美國大學作為本科教育核心進行培養的能力。也是我認為我在美國學習最大最有用的收穫。

具體描述這項能力的話,我認為是在邏輯思維能力的基礎上,判斷文章(或其他內容)所表述的觀點以及論述結構是否合理的能力

就拿一般總分總類型的論述性文章來說,作者會先提出一個觀點,然後通過幾個論點來支持和推理,並最終得出結論來證明這個觀點。而批判性思維,則是對其中的每個論點進行判斷,並自己推理文章的各個論點是否能夠邏輯性的推理下來,並能夠推理出文章所表達的觀點。

雖然翻譯為批判性思維,但是並非是要你對每個論點進行批判性的反駁,而是得出我是否能夠贊成這個論點(觀點)的結論,以及總結出我為何要贊成這個觀點

批判性思維的能力,通過閱讀的方式就可以鍛煉學習。但是這個能力的鍛煉非常的艱難,我也是通過大量的閱讀,以及無數的長短Paper寫作才初步的掌握了這種能力。以及在參加工作這幾年後,我還是會感覺在這塊思維能力上能夠逐漸的進步和提升。因為當你掌握這項能力後,通過批判性思維來思考會變成你的本能,讓你能夠直覺性的判斷出很多信息的真偽和有效性,做出更有效的判斷。

5. 英語

在之前的論述中我都沒有提到這一點,但是我認為英語作為一項基本能力,對於程序員而言還是非常重要的。

目前各種技術還是處于飛速發展的階段,而新技術的默認說明文檔,目前仍然還主要以英文為主(因為美國還是主要的技術產出國,另外,其他非英語國家的技術,很多也是以英文為主要語言,比如國產的Vue等)。

而英語不夠好的話,只能夠閱讀由國人發布的文章或翻譯過來的文檔。而這種信息,一方面有滯後性(大多技術只有得到大量關注後國內才會有相關內容出現);一方面,這些信息的準確性是存疑的(因為從事文檔翻譯的人員的英語和技術能力的問題)。而且,如果英語不夠好,那麼GitHub Issues和StackOverflow等問題解決中心的信息你就沒法接觸到了,而這對很多新技術的嘗試而言常常是致命的(新技術不穩定,必須通過某項設置才能正常使用等)。

英語能力的提升,也是一個潛移默化的過程,唯一的辦法就是多讀。用我之前描述的兩項能力(邏輯思維、批判性思維)可以幫助你更快的提升英語能力。英文文檔裡面也不是每一個單詞/段落的重要程度都一樣的,如果能夠掌握一些規律,自然可以提升閱讀的效率。如果你能夠像閱讀漢語一樣閱讀英語,它自然能成為你在國內工作的一種競爭優勢,因為你可以接觸到英文世界中的信息。

---

回復 @不辣的皮皮 :(貌似寫多了點,回復沒發上去,就貼在文後了)

我能理解你的想法,計算機科班出身與非科班在工作後的差異,可能體現在科班人學習了一些非常基礎且核心但日常工作卻只能潛移默化的表現,而無法直接看到的知識。對於你說的重點課程,我並沒有否定在這一塊的觀點。我在文中表述的觀點是,所有的課程都是需要根據課程安排,認真的學習,並儘可能拿到好的成績。

我認為以這個為基礎,你說的核心課程,應該都已經足以吸納裡面的精華。比如我現在仍在感激的是本科學習的數據結構和資料庫這兩門課程,因為它們讓我在設計內存數據結構和資料庫存儲的時候覺得有的放矢,胸有成竹。我所表述的觀點,是要在學好這些課程的基礎上,能夠花額外的時間,去研究其中的某些點,以及相關最新的動向。比如數據結構課程,我記憶最深刻的就是鏈表設計,因為我工作初期主要使用C++,而裡面的數據結構,我主要使用了鏈表結構;但是現在的工作中,數據結構的具體知識點還是那麼重要嗎?可能對C/C++這些底層語言仍然有使用到,但是現今各種語言都會有封裝好Array, Map等數據結構,讓我們不用再去操心管理具體的數據結構實現。對資料庫設計而言同樣是如此,課本中講到的各種範式,從學術角度以及早先的企業級應用而言可能是很有價值的,但是在工作實踐中,我主要是在Web領域設計資料庫結構,這裡我就發現了範式與實際的應用需求矛盾的地方,比如從第三範式起,就基本不符合現今的實踐,因為會極大的影響到應用變更的靈活性。因此,我們現在看到越來越多的NoSQL資料庫,以及這些範式的逐漸式微(因為Web應用的發展也反哺到傳統軟體的設計上來)。

我在文章中強調辨別知識的能力,就是期望告訴大學生們,讓他們至少要知道有這些能力。大學不再是課程內容固定且目標固定的初級教育,而是為了培養每個人在進入社會後的競爭力。僅僅一篇文章不可能就讓大家就都具備了這項能力;而是指明一個方向,以期大家在努力的過程中,多個考慮因素在裡面,這樣最後的結果可能會好一些。

但我覺得,真正決定人深度和高度的,是人的思維和見識。而鍛煉邏輯思考等能力,可以加速提高思維和見識的過程。這些都是人的軟實力。

另外,我也不同意你對邏輯思維能力的看法。我描述的這些能力,其實都不是天生的(可能確實人與人之間會有一些差異)。但是,在美國,培養邏輯思維能力與批判性思維的能力,都是已經系統化,明確了鍛煉路徑和方法的學科。我只是轉述了他們用來鍛煉這些能力的方法。

除了這些能力,創造力在美國也已經形成了系統的學科,使用的就是批判性思維的模式。大家可能會認為對這些能力的鍛煉都有些玄學,因為這些能力都有些可能天生的差異,而無法改變的部分。但這些課程是我都認真學習過,也確實覺得非常有用。改變可以改變的,接受不可能改變的,大抵如此。


1. 打好基礎。數據結構,演算法,操作系統之類的基礎課學紮實。

2. 增加實踐經驗。找點實習,或者學校幫老師打雜,或者寫點自己感興趣的程序,都行。

3. (大三以後)看看自己對哪個子領域更感興趣。投入更多到感興趣的方面。比如,機器學習,或者操作系統,等等。不一定固定一個子領域,但是我覺得本科生也不用鑽研太多小方向,不超過3個吧。


建議你認真、獨立完成所有科目的作業和考試。

能做到這樣基礎一般就不錯了。


數學的話前面有知友已經推薦了,我來說說計算機的核心課程怎麼學習。
操作系統學習~
理論學習:推薦《現代操作系統》書,其譯者陳老師在cousera操作系統原理(Operating Systems) | Coursera開設了這本書的視頻課程

實踐學習:推薦《操作系統真象還原》

此書是國內不可多得的精品書,從零實現一個帶shell可以在bochs上運行的簡易內核,比《一個操作系統的實現》內容更豐富更通俗易懂(自己學完這本書後,再看Linux內核就不那麼困難了,也可以跟面試官裝逼吹內核實現什麼的了)。
另外也可以看學堂在線的ucores操作系統課程,以上二者選一。另外如果對內核很感興趣,可以繼續深造學習linux內核,書籍方面知乎有很多推薦,這裡就不多說了

計算機組成原理
推薦《深入理解計算機系統》絕頂好書,如果英語跟我一樣渣,可以看南京大學的計算機基系統礎課程計算機系統基礎(一):程序的表示、轉換與鏈接_南京大學_中國大學MOOC(慕課)跟此書配套。

計算機網路

推薦 計算機網路自頂向下第6版計算機網路_哈爾濱工業大學_中國大學MOOC(慕課),mooc上的哈爾濱工業大學計算機網路課程與此書配套。效果更佳,看完上面的書,再看《tcp/ip詳解卷一》,別忘了自己下載類似wireshark跟omnipeek抓包工具實踐哦

數據結構

數據結構是自己的薄弱環節,數據結構比較差的推薦清華大學鄧俊輝教授在學堂在線開設的數據結構課程數據結構(上)(自主模式)-學堂在線-最大的中文慕課(mooc)平台,其電子版跟ppt都公布了。另外推薦演算法第4版,演算法講解的通俗易懂,另外不是專門搞acm的,那就邊學演算法邊刷leetcode還有劍指offer,編程之美(慚愧,自己只刷完了劍指offer,leetcode也沒刷多少)。提早準備這樣校招時演算法就沒問題了。


在一次跟老師做項目時,快結束時,軟體老師給我說:做這個東西(當時是這個簡單的APP)不難,其實就是搬磚的活。

大一來了什麼都不懂就給硬開了程序課,不知道幹啥的玩意,就只能硬著頭皮編。每天熬夜刷題的感覺還是不錯的。

真正讓我對計算機領域有了充分興趣的是大二我們系主任教的操作系統。一個不好的老師只會照著課本念,一個好的老師能把操作系統講成社會學。我本人對社會學和心理學都比較感興趣,其實計算機領域的問題,並不是那麼專業化。甚至於你可以想想,你學到是C語言,還是C語句?

上面說的自行體會,如果你想知道本科生怎麼在這行混,要做三好學生。哪三好?數學好,英語好,編程好,你才能在這剛一直混下去。

數學不好,你只能搬磚。

英語不好,你只能道聽途說。

編程不好,你只能說拜拜。

想走這條道,三者缺一不可。

數學教你思維,英語教你豐富,編程教你實現。

哦對,補充一點,計算機領域東西很多,不要慌,多學一點是一點。

以上。


操作系統

計算機網路

資料庫原理

演算法與數據結構

從畢業到工作了八年後的今天,我都認為是這四門課。


自己動手做好的項目,從產品,設計,編碼自己都跑一遍,最好能維護和運營,不斷總結,code review和重構


英語很重要,很重要,很重要

真長實學,在我眼中就是你能夠做出東西。你要以做來驅動學,自己做個個人網站,個人博客,

自己寫個番茄鍾,自己做些東西,不懂的再去補充知識,這樣用做驅動,你會成長很快

不清楚你學的是什麼種類的知識,JAVA,C,python,你看完基礎知識趕緊就去實踐,絕對不會錯的,在做東西中你能獲取大量經驗,你能夠快速的成長


2001年的清華夜話已經給出了答案:

你們說最有前途的開發工具是什麼?


基礎課程,英語


A篇:英語

對於CS專業,大概有以下幾種方法:

1.基礎英語四六級,其實你要是悶頭苦幹倆月過六級也不算啥大問題,我將此成為基礎的原因是,它也就是個敲門磚,而跟你專業內相關度倒真不高...

2.入門:能看懂英文API手冊,想搞嵌入式能看懂晶元的datasheet。百度來百度去,還是直接去官網看手冊是最效率的....

3.進階:能看懂原版專業書,名校的公開課這個可真是大招

我記得機械工業出版社出過一批掛著羊頭賣狗肉的原版書,離散數學和應用、計算機網路啥的,封面是中文,裡面是原版,價格跟真原版能差幾倍,良心貨,可以買本試試。

B篇:理論

1.基礎離散數學代數,線性代數(部分),請注意先後順序。

值得注意的是,計算機科學的基礎是離散而不是其他。

2.入門:自底向上,有:數字電路,組成原理,體系結構,操作系統,編譯原理(部分),數據結構(演算法導論),還得加上網路

這些科目教材都是大把大把的,英文的中文的,根據自己的能力和側重點選教材,合適就好。

估計這幾門是學電腦的必修吧,不過全拿下到不敢說,這個時候就應該根據自己的方向做做取捨

進階就不寫了吧,這個東西本來就是一棵發散的樹,寫也寫不完...另外也不是基礎了

C篇:實踐

1.基礎:學會一門編程語言,能用來解決基礎一些問題,實現一些小項目,保持一段時間內的代碼量

除了典型的幾個編程語言還有什麼VHDL,SQL,這個自己取捨

2.入門:演算法導論里大多數經典演算法都實打實碼過,會使用API(查手冊的方式),別人寫的庫之類

理論課程得搭配編程實踐才好玩,也更容易學下去,也不能陷入類似於ACM背模板的模式——那不光對於知識的深度而言,對於實際的編程也沒多大幫助:練打字了。

++++++++++++++++++++++++

看了下評論,再加一點,化解一下矛盾:

有關實戰,你們請看你們那些個教材,哪個後面練習沒有幾個programming project...

值得注意的是,理論知識旨在提高素養,眼界,決定的是你的發展空間,能上升的高度。拿GLUT為例,光會寫glFlush()和寫完了之後腦子裡面想:「嗯,這大概是把東西送到顯卡裡面去了」就大有不同,我相信後者是有造顯卡的野心的。

另外,本科嘛,能純粹地學點知識,多幸福的事啊....


數學課: 微積分 概率 線代

計算機系基礎課程:

數據結構 操作系統 計算機體系結構 計算機網路

本科能學好這幾門課就差不多了 其他課無所謂的,如果還想學可以學一門 機器學習入門課程。不過除非遇到例外,基本上靠課堂靠老師是學不好計算機系基礎那幾門課的,系統類課程是要造輪子看源碼才能學好的。


大公司校招的時候,主要看成績,你給所有的專業課都刷到高分,剩下的你自然就知道怎麼做了。


演算法演算法演算法。重要的事情說三遍。


不問就業,只談真才實學,本科生,訓練你的思維最重要。解決問題的能力,思考解決方案的方法論,這些是最最重要的。


數據結構+演算法,ACM歡迎你ヽ(??ω?? )ゝ。


樓上都別都瞎BB了!

1、練好 PS, PPT, Excel

2、溝通能力

3、提高搜商

4、知道什麼時候忍,什麼時候動

5、膽大心細

之後,平步青雲,

其他答案告訴你一個一本孩子,怎樣進階到去一個大廠做個好程序員,

而我告訴你這幾個做好了,可以短期從三本跨越式發展做項目經理,做CTO,甚至去創業!

.

.

.

.

.

最後安利 @HeartKing 的答案,看看這位答主。

你最討厭什麼樣的程序員? - 知乎

作為一名技術,看不出來他有啥技術,毫無責任心,一天天滋滋的跳槽,不僅工資翻倍,技術級別提升,還蔫壞蔫壞的。

對這種人,我就大寫的服!


Talk is cheap, show me the code.


推薦閱讀:

計算機中的浮點數在數軸上分布均勻嗎?
Rust目前有比較靠譜的IDE嗎?
集線器和交換機的區別?
勸退偽化生和傳統工科並推崇CS是不是知乎上的一種政治正確?為什麼會這樣呢?
如果出現一種實用的新型計算機(未來計算機,比如基於憶阻器的),那麼需要學習新的編程語言么?

TAG:學習 | 程序員 | 編程 | 學習方法 | 計算機科學 |