系統程式設計師 的技能棧有哪些?

時間 2021-05-05 17:13:53

1樓:

我的理解

1. 懂編譯系統

2.熟悉CPU體系結構

3.熟悉作業系統:作業系統的各個元件(各種驅動, 檔案系統,記憶體管理,排程,網路棧等)

4.熟悉各種系統呼叫或庫的介面等

2樓:tracy要開心

無論是開始設計還是後期遇到問題,能從系統角度分析思考,(晶元→)硬體→多層軟體…識別痛點,得到最終的方案…

合格的系統工程師不是一朝一夕能達成的,除了有各層的知識,還得有多年實戰的磨練

3樓:布丁

謝腰,System Programming 沒有乙個公認的定義。我覺得 Bjarne Stroustrup 在 Lang.NEXT 2014 上的乙個定義(Panel:

Systems Programming in 2014 and Beyond)雖不見得精確,但是最有可操作性:

如果你的專案碰到了計算機硬體的限制,或者專案的其中一部分碰到了這些限制,你就進入系統程式設計的問題領域了。

Wikipedia 上把系統程式設計定義為系統最底層直接操作硬體的部分,或者說,寫硬體 driver, which is useless.

舉個容易理解的例子:你自己用紅黑樹實現了個 std::map, 這不是系統程式設計範疇。

但是你如果要開始考慮你的實現可能有很糟糕的 cache 命中率,你開始根據真實應用場景設計 benchmark, 然後發現原來做個準確的 benchmark 是這麼難,那你就要開始進入系統程式設計的問題範疇了。

要了解系統程式設計師的技能棧,有個簡單的方法,去看 OSDI 和 SOSP 兩個系統頂會,看這些人都在研究什麼問題,可以把 abstract 掃一遍, 嘗試去理解他們關心的問題到底是個毛線,為什麼這個問題重要,如果裡面有你特別感興趣的問題,看文章,至少把 introduction 和 related work 看了,把裡面指出的重要文獻加入 read later 並且真的 read later.

MIT 的 Computer System Engineering 課程作為 index 挺好。計算機架構,作業系統,網路這些基礎課程當然重要,但可能更重要的是真的去做點東西,這樣你會碰到真正的系統問題。培養對資料的敏感性,系統問題基本都是各種 trade-off, 「知道」只是很粗淺的一步,分析能力才是關鍵。

作業系統是一門可以展現很多取捨智慧型的課,有很多的 open questions (然後你就可以看 SOSP 和 OSDI 上的人的腦洞了),但是很多地方都快被教成 Linux(某版本)原始碼解析了,MIT 這個課還好。

如何鑄就全棧程式設計師?

宸風 1.不要限制自己,什麼都去學什麼都嘗試。2.多接觸不同領域。3.不要把自己當成乙個程式設計師,不要被需要框架限死,它們都只是你的工具。 Ying Zhong 我覺得全棧是乙個高大上的謊言,我不明白為什要成為全棧。而且更可怕的是很多人把 全棧 等同於 Web全棧 我覺得這個概念只有在網際網路早期...

有程式設計師的技能可以自己創業嗎?

ayeah 我以乙個失敗者的身份告訴你 不行 創業,是你要做成企業,有產品,有專案,有人,有錢,能做大。只有技術的話,你只能做個自由職業者,養活自己還行,搞企業成功率只有5 當然,技術創業也有成功案例,你更需要的是擅長企業管理 營銷 實施運維等各方面的合作夥伴。 網K是我 完全可以呀!技能是有價值的...

程式設計師的壓力有哪些?

劉鑫 每次專案上線都要加班到第二天其他同事上班的時候才能搞定,真的是無語的很。老闆不懂程式,只知道我什麼時候要,你就什麼時候給我做出來,做不好那就是你的問題。 八兩 沒有有產品的時候 沒要求,照著QQ那樣寫就行。woqu.有產品的時候 來,我們加個小功能,來,再加個小功能,我們再來下。 日行一善 工...