日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

計(jì)算機(jī)系的同學(xué)應(yīng)該有更高的雄心壯志

 mynotebook 2022-05-24 發(fā)布于湖南

把這篇文章送給計(jì)算機(jī)專(zhuān)業(yè)的同學(xué),大學(xué)四年看起來(lái)很長(zhǎng),其實(shí)很短, 希望大家努力向上,有更高的雄心壯志,預(yù)祝大學(xué)旅途順利。

前些天有個(gè)計(jì)算機(jī)系的同學(xué)和我聊天,想在暑假做個(gè)人網(wǎng)站,博客之類(lèi)的系統(tǒng),我勸他說(shuō)計(jì)算機(jī)系的學(xué)生(其實(shí)不止是計(jì)算機(jī)系,可以擴(kuò)展到所有熱愛(ài)編程的在校同學(xué))應(yīng)該有更高的雄心壯志,去挑戰(zhàn)更有難度的東西。

為什么這么說(shuō)呢?因?yàn)槲掖髮W(xué)時(shí)吃過(guò)虧啊!

我也是讀計(jì)算機(jī)系,上學(xué)的時(shí)候迷迷糊糊的,把計(jì)算機(jī)系的基礎(chǔ)課程學(xué)得一塌糊涂。

計(jì)算機(jī)基礎(chǔ)課被灌輸了一大堆的術(shù)語(yǔ)和概念:進(jìn)程、線程、信號(hào)量、分段、分頁(yè),關(guān)系代數(shù),關(guān)系演算,范式,E-R模型,事務(wù),分層模型,TCP/IP,CSMA/CD,路由協(xié)議。 考試完就忘了,就還給老師了,反正和實(shí)際也聯(lián)系不起來(lái)。

還有C語(yǔ)言,我老是抱怨它沒(méi)有辦法實(shí)現(xiàn)漂亮的界面,運(yùn)行結(jié)果在一個(gè)黑糊糊的窗口中,做不了有用的東西。

我那個(gè)時(shí)候在忙乎啥呢?主要學(xué)習(xí)怎么樣用VB做桌面系統(tǒng),怎么樣用HTML, JS去做網(wǎng)站,主要就這兩件事,小項(xiàng)目確實(shí)折騰了好幾個(gè),但是技術(shù)水平一直停留在應(yīng)用層的最表面。

工作多年以后回頭看,基礎(chǔ)太重要了,大學(xué)期間有大塊的學(xué)習(xí)時(shí)間,沒(méi)有把這些計(jì)算機(jī)基礎(chǔ)知識(shí)學(xué)好實(shí)在是太可惜了。

所以如果你是在校的同學(xué),不要去折騰博客系統(tǒng),在線商城這些簡(jiǎn)單的東西了,你應(yīng)該有更高的雄心壯志:要努力地去造輪子,造這些計(jì)算機(jī)基礎(chǔ)的輪子。

為什么要造輪子?因?yàn)榛A(chǔ)課有點(diǎn)枯燥,概念太多,和實(shí)踐聯(lián)系太少,教材也不怎么樣,如果老師再照本宣科,那基本上就完了。

通過(guò)造輪子的方式驅(qū)動(dòng)、可以引領(lǐng)對(duì)這些基礎(chǔ)知識(shí)的學(xué)習(xí)。

現(xiàn)在至少有這些輪子可以供你選擇:


數(shù)據(jù)庫(kù)

關(guān)系數(shù)據(jù)庫(kù)是軟件開(kāi)發(fā)中最常見(jiàn)的一個(gè)組件,它的工作原理是必然要掌握的,造一個(gè)輪子涉及到這么多知識(shí):

1. 實(shí)現(xiàn)對(duì)SQL的解析,你需要實(shí)現(xiàn)一個(gè)語(yǔ)法分析器, 《編譯原理》的基礎(chǔ)知識(shí)就用上了。 

2. 數(shù)據(jù)需要保存到硬盤(pán)上,你需要考慮存儲(chǔ)引擎,涉及到《操作系統(tǒng)知識(shí)》需要對(duì)外提供接口,設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),《數(shù)據(jù)結(jié)構(gòu)》的知識(shí)就會(huì)用上 

3. 需要實(shí)現(xiàn)索引,B+樹(shù)是必須的,又是數(shù)據(jù)結(jié)構(gòu) 

4. 需要做表的Join,事務(wù)的ACID,  又有各種算法 

5. 如果需要提供網(wǎng)絡(luò)訪問(wèn),還要涉及到socket等計(jì)算機(jī)網(wǎng)絡(luò)的知識(shí)。

可能會(huì)覺(jué)得有點(diǎn)難, 但是現(xiàn)在有一個(gè)開(kāi)源的例子:SQLite, 核心代碼只有幾萬(wàn)行左右,網(wǎng)上相關(guān)的小書(shū),文章多如牛毛,官方的文檔寫(xiě)得也很棒,例如這個(gè)講 SQLite Architecutre 的文章:

https://www./arch.html

圖片

GitHub上還有人在教你一步一步地實(shí)現(xiàn)SQLite, 比如這一個(gè):https://cstack./db_tutorial/, 你也可以參與進(jìn)去,成為一個(gè)貢獻(xiàn)者,這要比整一些面經(jīng)、盜版PDF來(lái)賺star不知道好多少倍。

關(guān)鍵是看你有沒(méi)有定力,愿意深入進(jìn)去學(xué)習(xí)了。你要是把它搞定了,會(huì)學(xué)到很多知識(shí),在大廠面試中也是極大的兩點(diǎn)。

操作系統(tǒng)

不是讓你寫(xiě)一個(gè)像Windows、Linux那樣完整的操作系統(tǒng),那是成千上萬(wàn)的人經(jīng)年累月的勞動(dòng)完成的。

我這里說(shuō)的操作系統(tǒng)是操作系統(tǒng)的內(nèi)核,或者更簡(jiǎn)單一點(diǎn),操作系統(tǒng)課程的大實(shí)驗(yàn),就是能把一個(gè)小系統(tǒng)跑起來(lái),能夠把進(jìn)程、線程、分頁(yè)、調(diào)度這些概念能夠真真切切地體現(xiàn)到代碼中,有個(gè)直觀的認(rèn)識(shí)。

中國(guó)的知名大學(xué),世界知名大學(xué)的操作系統(tǒng)課都有大實(shí)驗(yàn),有一個(gè)現(xiàn)成的小系統(tǒng)讓你去學(xué)習(xí),分析。比如MIT有xv6,哈佛有OS/161,伯克利有Nachos,斯坦福有PrintOS, 清華有ucore等等。這些代碼全是開(kāi)源的,也都在1兩萬(wàn)行上下,完全可以在大學(xué)期間啃下來(lái)。

有些還有配套的視頻,比如清華在線的慕課:https://next./course/THU08091000267/1516699

編程語(yǔ)言

現(xiàn)在市面上的編程語(yǔ)言太多了,你可能會(huì)選擇一個(gè)作為自己吃飯的語(yǔ)言,比如Java, 但是在工作以后,你會(huì)受到各種新語(yǔ)言,尤其是熱門(mén)語(yǔ)言的誘惑,忍不住就想去碰一下。

實(shí)際上語(yǔ)言雖多,但是語(yǔ)言特性卻沒(méi)多大的發(fā)展,無(wú)非是面向過(guò)程,面向?qū)ο?,函?shù)式,元編程,錯(cuò)誤處理,泛型,靜態(tài)類(lèi)型,動(dòng)態(tài)類(lèi)型,字節(jié)碼等等。

(參見(jiàn)文章《兩年,我學(xué)會(huì)了所有的編程語(yǔ)言》)

如果自己能實(shí)現(xiàn)一個(gè)語(yǔ)言,把這些特性包含進(jìn)去,豈不是很爽?這樣你以后無(wú)論看到任何語(yǔ)言,你都能理解它為什么那么設(shè)計(jì),有什么優(yōu)缺點(diǎn),對(duì)語(yǔ)言的認(rèn)識(shí)會(huì)非常深刻。

不用擔(dān)心從哪里下手,市面上有很多的資料,叫《自制編程語(yǔ)言》的書(shū)都有兩本, 還有《兩周自制腳本語(yǔ)言》,編譯器相關(guān)的書(shū)也非常多。

很多現(xiàn)代的語(yǔ)言都是基于虛擬機(jī)和字節(jié)碼的,例如Java, Python, Ruby , 連JavaScript都要編譯成字節(jié)碼被瀏覽器執(zhí)行了。

(參見(jiàn)文章《字節(jié)碼萬(wàn)歲》)

所以寫(xiě)一個(gè)高級(jí)語(yǔ)言虛擬機(jī)也是一個(gè)非常有用的實(shí)踐,你需要理解字節(jié)碼指令,實(shí)現(xiàn)順序、分支、循環(huán),函數(shù)調(diào)用,多態(tài)等功能,非常有趣。

網(wǎng)絡(luò)程序

這個(gè)范圍很廣,可以是:

像Ngnix 那樣的HTTP服務(wù)器:實(shí)現(xiàn)HTTP協(xié)議,學(xué)習(xí)epoll,反向代理,模塊化設(shè)計(jì)等等

或者像Tomcat這樣Web應(yīng)用服務(wù)器,既支持HTTP協(xié)議,又可以運(yùn)行Servlet和JSP。 

或者是Redis這樣的高性能的緩存服務(wù),學(xué)習(xí)它和客戶(hù)端的協(xié)議設(shè)計(jì),如何快速地存取數(shù)據(jù),對(duì)外提供的API,持久化等。

有人說(shuō)它們屬于中間件,也有道理,因?yàn)椴皇荗S和數(shù)據(jù)庫(kù)這樣的基礎(chǔ)軟件,又不是單純的應(yīng)用軟件,將來(lái)工作以后,日常打交道非常多,造一個(gè)輪子,發(fā)到GitHub上, 寫(xiě)到簡(jiǎn)歷中,非常吸睛。 

總結(jié)

在大學(xué)期間能搞定其中的一個(gè)就行, 我個(gè)人更推薦數(shù)據(jù)庫(kù)和操作系統(tǒng)。

這些輪子非??简?yàn)人的專(zhuān)注力和耐性,你的同學(xué)都在寫(xiě)漂亮的網(wǎng)頁(yè),而你呢,孤獨(dú)地面對(duì)著C語(yǔ)言和指針, 有點(diǎn)結(jié)果也只會(huì)輸出到黑乎乎的命令行窗口中,很容易放棄。

但是你知道,這才是技術(shù)這顆大樹(shù)的根,把根栽好了,剩下的枝和葉都是非常容易得到的東西。

越是厲害的公司,越是厲害的崗位,對(duì)根基的要求就越高,因?yàn)檎惺饺菀拙毩?xí),但是基礎(chǔ)卻需要長(zhǎng)時(shí)間的艱苦積累。

和大家一起共勉。

圖片
·················END·················

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多