Hello,大家好,我是Alex,時光匆匆,暑假過的很快,轉眼又到了大學的開學季,我也是又混進了我們學院的新生群,發現大家對計算機充滿著迷之向往,啊哈哈哈,不過沒有人帶著入門還是很容易走彎路的哦,今天就把我大學三年學習計算機的經驗分享給大家,幫助各位想要提前學習編程的同學選擇好路線,快人一步走進計算機的世界,

其實這些東西呢,本來應該等開學之后學校會給大家安排相應的研討課來學習,不過既然大家學習的熱情那么高漲,那我就提前給大家介紹一下,
當然呢,我在這里只是根據我的學習經歷給出一些小小的入門建議,更加專業的內容呢,大家還是等開學之后再去了解吧,
開學要不要買/帶電腦?
有些同學:“開學要不要帶電腦啊?沒有電腦是不是得買一個?”
我的回答是:

啊哈哈,開個玩笑,不過我還是建議買的,畢竟大家學的是計算機,連電腦都沒有,那怎么學,
已經有筆記本電腦的同學呢,如果性能尚可,正常使用起來沒啥問題,那可以選擇直接帶過來,
如果你想買一個新的筆記本電腦的話,我就推薦幾個配置吧,
- CPU:如果只是敲代碼寫檔案的話,i5就OK,甚至i3都可以,推薦i7,滿足基本需求的同時,還能滿足時不時的高端需求
- 顯卡:顯卡就是決定你的影像處理能力,顯卡越好,運行畫質高的游戲或者軟體,就會比較流暢,敲代碼寫檔案對顯卡的要求不高,目前游戲本一般都是獨立顯卡,如果以后有平面設計、視頻后期的需求,建議獨顯,而且到以后如果做AI的話也需要用到GPU,賊燒顯卡,這個可以整一個好的,
我的GeForce GTX 1060,買的時候屬于中端顯卡,現在不行了,跑個深度學習模型,就把顯存沾滿了,不過平常用起來完全OK,玩個LOL還是很流暢的,
- 記憶體:16G就OK,滿足基本敲代碼、辦公和娛樂需求,對游戲或影像處理有要求的可以適當增加記憶體大小,不過以后敲代碼如果用Jetbrain公司的IDE都比較吃記憶體,
我8G記憶體,開一個PyCharm還好,再加一個WebStorm就有點卡了, 要是開三個就卡成PPT,開四個就別想動了
- 硬碟:硬碟有固態硬碟(SSD 新式硬碟)、機械硬碟(HDD 傳統硬碟),固態硬碟讀寫速度極快效率賊高,但價格也相對應比機械硬碟要貴上不少,建議固態硬碟(SSD),貴一點,但是讀寫速度快,根據個人需求可以增加機械硬碟,但也不需要很大,
我的是200G固態+800G機械,到現在還有一大半沒用,所以512G固態就OK,千萬不要把軟體安裝到C盤!!!
- 品牌:蘋果,聯想,戴爾這些比較前排的品牌都是可以的,最近小米,華為的筆記本功能也比較強大,這些我身邊都有人用,尤其是華為的多屏協同功能,手機、平板、電腦協同辦公,效率還是很高的,
最后,最重要的一點就是:最好買輕薄本,攜帶方便,因為有的時候上課想要帶著筆記本的話,游戲本那種又大又厚,絕對沒有輕薄本那么友好,
而且我覺得筆記本對于大家來說應該是一個學習辦公的工具,而不是用來打游戲,所以買一個輕薄本也從側面督促自己要多敲代碼,少打游戲,
至于說編程對計算機的配置要求比較高,這一點我覺得有點言過其實了,因為我自己是做過前后端開發的,也寫過Android和樹莓派,自我感覺這些方向對計算機的配置要求并沒有特別高,現在做人工智能這個方面的研究確實對機器的要求特別高,而且完全是高得離譜,普通的入門還好,在自己的筆記本上訓練個小模型沒啥問題,稍微進階一點,比如做計算機視覺方向,之前拿我自己的電腦訓練一個目標檢測的模型就覺得比較吃力了,又要清顯存又要設定虛擬記憶體,再往后現在在公司訓練模型光資料就可能幾個T,自己的筆記本基本只是個寫代碼的功能了,訓練都是在專門的服務器上,
至于服務器是啥,你們以后會接觸到的,可以簡單理解為一臺24小時不間斷運行的云端電腦,

總而言之,單純的編程對計算機的配置要求并不是特別高,如果后面也想做一些3D建模或者視頻后期的話那么確實需要一個比較好的配置,
編程方向那么多,我該怎么選啊?
學計算機肯定是有方向的呀,我這里就簡單說幾個方向,基本可以涵蓋大家大學四年會接觸到的所有領域,
前端
先來說說前端,為什么先說它呢,因為前端最直觀,我們現在通過瀏覽器打開的網頁,在B站看到的視頻,都是前端工程師們一點一點搭建出來的,
所以簡單的講,前端就是寫網頁的,怎么做出最漂亮最好看的網頁,就是前端工程師的作業,
前端工程師是互聯網時代軟體產品研發中不可缺少的一種專業研發角色,從狹義上講,前端工程師使用 HTML、CSS、JavaScript 等專業技能和工具將產品UI設計稿實作成網站產品,涵蓋用戶PC端、移動端網頁,處理視覺和互動問題,從廣義上來講,所有用戶終端產品與視覺和互動有關的部分,都是前端工程師的專業領域,
2009年的Bilibili網頁長這樣:

現在的Bilibili是這樣的:

是不是感徑訓然一新,所以前端是一個相對比較新的行業,互聯網發展早期(1995年~2005年)是沒有專業的前端工程師的,隨著互聯網的發展,大約從2005年開始,正式的前端工程師角色被行業認可,到了2010年,互聯網開始全面進入移動時代,前端工程師的地位越來越重要,前端領域的技術發展也越來越快,各種新的思想、設計模式、工具和平臺都快速發展,對前端工程師的技能要求也越來越高,
所以,我推薦喜歡設計、審美比較高、喜歡繪畫的同學可以嘗試一下前端,這是一個入門相對輕松的方向,
后端

說完了前端我們再來說一下后端,這是一個跟前端息息相關的方向,我們可以看一下這張圖,對于用戶來說,他看到的是非常漂亮非常好看的界面,但是在前端的背后是需要強有力的后端來支持的,
那么后端到底是干什么的呢,還是拿Bilibili來舉個例子,我們看的那么多視頻,假設一個10分鐘的視頻有100M,Bilibili有那么多視頻,就算只有100, 0000個,那差不多也要100T的空間,你有沒有想過這些視頻都在哪呢?
首先肯定不在我們自己的電腦上,對吧,哪有誰的個人電腦能有100T的空間,那也太奢侈了,前面我們提到了服務器,其實這些視頻都是存在Bilibili的服務器上,那這些服務器在哪呢?有可能在Bilibili的總部上海,也有可能在某一個不知名的島上,據說騰訊的資料中心在南極,

總而言之,這些資料離我們很遠很遠,但是我們又能通過瀏覽器,或者說是通過互聯網訪問到,這就是后端給提供的支持,
你在家里一點,想看的視頻資料就從百公里外的服務器傳輸到你的電腦上,你開學之后要報道,學校也會把你的身份資料錄入資料庫,這樣你才能查到你的學歷,你在京東上買了東西,由誰來發貨?通過什么物流?發給誰?這些都是后端需要設計的東西,
總而言之,后端就是對各種資料進行處理,增刪改查是家常便飯,后端工程師追求的是其實跟奧利匹克精神比較類似,更快:資料處理更快、更高:開發效率更高、更強:系統穩定性更強,
所以我推薦心思比較細膩嚴謹,有責任心,有毅力,邏輯思維能力強的同學可以嘗試一下后端,
移動端
移動端應該是現在大家接觸最多的終端產品了,它就是我們的手機,因為可以隨身帶著,移動起來比較方便,所以叫移動端,
它其實分為了兩個方向:Android開發和IOS開發,另外還有一個移動端開發方向:小程式,也就是大家微信里或者支付寶里的小程式,這些小程式功能一般都比較簡單,而且我們一般也把小程式開發歸為前端的范疇,

從2017年下半年開始,就聽到各種言論,例如“Android 開發涼涼”、“移動端開發沒出路了趕緊轉行”、“移動端要被小程式替代了” 等等,但是,我有預感,移動端開發肯定不會窮途末路,低谷之后必回觸底反彈,
坦白講我其實沒怎么涉及過移動端開發,只寫過一個仿網易云音樂的APP和一個游戲小程式,我之所以說以移動端開發以后不會消失是因為我是做AI的,這聽起來有點匪夷所思對吧,待聽我解釋,

2016年,谷歌提出了一種新興的人工智能基礎技術——聯邦學習,用于解決手機終端用戶在本地更新模型的問題,設計目標是在保障大資料交換時的資訊安全、保護終端資料和個人資料隱私、保證合法合規的前提下,在多參與方或多計算結點之間開展高效率的機器學習,
這些概念聽起來比較迷,沒關系,知道這個概念就可以了,
隨著手機用戶隱私保護意識的逐漸增強,聯邦學習以后會是一個發展趨勢,因為小程式可很難部署這些模型,本身追求的就是輕量級,不可能割舍出來一部分用于訓練模型,所以以后的APP肯定也會繼續發展的,
桌面應用
桌面應用其實就是我們電腦上安裝的各種軟體,比如:QQ、WPS、微信、瀏覽器、英雄聯盟,還有系統自帶的:日歷、記事本、計算器等等,這些都屬于桌面應用,

不過近幾年桌面應用開發已經不是特別火了,因為很多應用大家現在基本都通過瀏覽器就能解決了,所以有些已經轉Web后端或者其它崗位了,但是并不代表沒有需求,像Qt、C#.Net這些還是非常還是很火的,
不過最近我發現了另外一個趨勢,有些Web站點已經支持把網頁直接轉成桌面應用了,走的還是前后端開發的路線,

物聯網
物聯網(IoT)其實我們身邊也很常見,它的本意就是將我們日常生活中的物理物件連接到互聯網,舉個簡單的例子:燈泡,從一開始古人用的煤油燈,到后來愛迪生改進電燈泡,再后來樓道里的聲控燈,一直到現在可以通過手機或者智能音響控制的家庭燈,一個原本跟互聯網完全沒關系的生活用品逐漸可以接入網路,這就是物聯網要做的事情,

當然物聯網涉及到的領域非常廣闊,小到身上的智能穿戴設備,大到智能汽車也就是車聯網,其實都可以歸為物聯網的范疇,隨著我國新基建的推進,自動駕駛和智能駕駛行業的蓬勃發展,學習物聯網以后也肯定大有可為,
所以我推薦喜歡機器人、電子零件的同學可以嘗試一下物聯網這個方向,
網路安全
網路安全現在已經被列為國家安全戰略的一部分,對于互聯網行業來說,我們所熟悉的360其實就是做網路安全的,

網路安全其實可以分為三個方向:① 安全研發,② 安全研究:二進制方向,③ 安全研究:網路滲透方向,
安全研發方向呢,主要就是做各種安全業務相關的軟體,比如像防火墻、資料庫網關、殺毒軟體等等,
安全研究:二進制方向呢,這個方向的主要做的是軟體漏洞挖掘、逆向工程、病毒木馬分析等作業,因為經常都是與二進制的資料打交道,所以久而久之用二進制安全來統稱這個方向,
安全研究:網路滲透,這個方向更符合于大部分人對“黑客”的認知,他們能夠黑手機、黑電腦、黑網站、黑服務器、黑內網,萬物皆可黑,這個方向初期更容易入門一些,掌握一些基本技術,拿起各種現成的工具就可以開黑了,

所以我推薦對網路這個方向比較感興趣的同學可以嘗試一下網路安全這個方向,也是很好的,不過也要注意,人外有人天外有天,技術給你帶來方便的同時也要心懷敬畏,
演算法 & AI
終于到了我自己的方向了,演算法和AI,
這兩個為什么放在一起呢?因為做AI的崗位名稱就是演算法工程師,演算法呢又會分為基礎通用演算法和人工智能演算法,
基礎通用演算法類似于讓我們通過編程去解決奧數題,舉個例子,我們來看一下LeetCode的第一題:1. 兩數之和,給定一個整數陣列 nums 和一個整數目標值 target,請你在該陣列中找出 和為目標值 target 的那 兩個 整數,并回傳它們的陣列下標,下標也就表示是第幾個數,
假如我們的輸入是:nums = [2,7,11,15], target = 9,那么答案應該是:[0,1],為什么是0和1呢,因為數字的下標是從0開始計算的,

基礎演算法要解決的問題就是,如何把我們人類能夠解決的問題交給計算機解決,比如在上面這個例子中我們可以一眼看出答案,但是如果輸入的陣列有成百上千位呢,而且每個數字都是個三位數或者四位數,這時候我們就沒法一眼看出答案了,但是如果我們找到了解決問題的通用方法并且把它用編程語言抽象為一段程式,那么對于再長的陣列,再大的數,計算機都可以在自己的能力范圍之內快速計算出結果,這也就是計算器的功能,
那么人工智能演算法是什么呢?這個概念最近特別火對吧,而且還被納入了新基建的資訊基礎設施建設,那么人工智能到底是什么呢?

我的理解是:賦予計算機更多人類的能力,來幫助人們解放勞動力,從人臉識別門禁代替了保安的作業,到自動駕駛代替了司機的作業,語音輸入可以讓我們解放雙手說說話就能打字,甚至有的人工智能都會自己寫代碼強化自己了,這些其實原本都是我們人類的能力,人工智能就是要教會計算機去做,
舉個簡單的例子,做計算機視覺的話有個方向叫影像識別,這個領域的目標就是教會計算機認識各種貓、狗、獅子、老虎和大象等等,回想一下我們小時候是怎么認識這些動物的呢,是爸爸媽媽把各式各樣動物的圖片拿到我們面前,然后告訴我們哪個是貓,哪個是狗,

人工智能也是一樣,我們把成千上萬張圖片交給計算機去看,告訴它哪個是貓,哪個是狗,不停的訓練它,最后它就可以學會人類的本領,
所以我有的時候經常會感慨,做人工智能就像是帶孩子一樣,一開始要教它怎么識字、怎么說話,到現在要教它怎么開車、怎么做題,真的太神奇了,感覺它像一個孩子一樣逐漸長大,學習更多的技能,
不過真正做人工智能研究的需要一些數學的功底,相對來說入門門檻比較高,但是也更具有挑戰性,所以我推薦對數學、人工智能比較感興趣的同學可以嘗試一下演算法這個方向,
哇!方向那么多,我該怎么學呢?
說了那么多方向,其實都是以后才要劃分的,那么作為剛入門的小白應該學習些什么呢?
在這里我就假設你是已經對計算機稍微有一些了解的了,知道怎么開機、知道怎么復制粘貼、知道不要把軟體安裝到C盤(蘋果用戶請隨意),
我們知道學計算機一開始其實就是學習編程語言,雖然方向很多,但是各個方向使用的編程語言其實是有交集的,
前端:HTML、CSS、JS等
后端:Java、Go、Python等
移動端:Java、Kotlin、C/C++、Swift等
桌面應用:C++ QT、C#等
物聯網:Linux(作業系統)、Python、C/C++等
網路安全:Linux(作業系統)、JS、C/C++、Python等
演算法&AI:Python、C/C++
其實歸納起來,涉及到的編程語言并不是很多,我這里就給出選擇各個方向后建議的第一門語言:
前端:HTML、CSS、JS,這三個是要一起使用的,并不是三門語言
后端、移動端:Java,畢竟這是個萬金油
桌面應用、基礎演算法:C/C++
物聯網、網路安全、AI:Python
那么這些語言要怎么開始學呢?大學之后很少會再像高中那樣有老師線下教你,有作業,有考試的那種學習方式了,更多的是自己找視頻、找書、找教程來看,自學成才,
我在這就推薦幾個視頻教程的鏈接,大家想學習的可以看一看,
前端:https://www.bilibili.com/video/BV14J4114768
Java:https://www.bilibili.com/video/BV12J41137hu
C/C++:https://www.icourse163.org/course/ZJU-199001
Python:https://www.luffycity.com/free-course/124/detail
總結
最后總結一下吧,
其實,前面介紹的方向那么多,技術那么多,但是萬變不離其宗,編程學習的,不僅僅是編程語言和相應的技術工具,而是體會程式設計的精妙思想,
歸根到底,語言其實也是幫助我們實作想法的工具,所以你首先要有想法,編程語言像是Java、Python,你可以學,別人也可以學,尤其是現在互聯網那么開放,再加上計算機界一直崇尚開源精神,所以學習資源遍地都是,
那么怎么才能跟別人拉開差距呢,就要在學習的程序中感悟別人沒有理解的東西,學習的目標不是單純的為了記住各種關鍵詞和簡單的運用寫幾行代碼就行了,而是感悟這個地方為什么這么設計以及某個功能為什么這么運用,鍛煉這個能力這就需要大家多去研究原始碼,多去思考,這才是編程之美,不然你學完之后也不過是一個會搬磚的碼農罷了,
好了,方向介紹完了,資源也分享給大家了,大家快沖吧!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292583.html
標籤:其他
上一篇:C51 溫濕度顯示
