2010-06-04 62 views
8

我是一名在.Net開發方面有四年經驗的軟件開發人員,我總是喜歡隨時掌握最新的技術(通常是.net相關的),並且很樂意學習它們。然而,我並沒有去上大學,通過有用的同事,.Net課程,互聯網和老書,學到了我所知道的一切。 我覺得我是一名優秀的開發人員,但是如果不像計算機相關的Uni課程的第一年那樣學習計算機的較低級別,在與人們討論更多技術性較低級別的計算時,我會迷失方向。 是否有任何人可以推薦的書,這將涵蓋當我在Visual Studio中單擊「運行」時發生的更低級別的書籍?當我的老闆對我說:「那是在CPU緩存中運行」或「你受到磁盤讀取的限制」時,我感覺不到我的深度,並且在談論硬件如何與對方進行對話時希望更有信心CPU到RAM等)。學習低等級的計算

道歉,如果這是一個模糊的問題,或之前已被問到(我沒有檢查,並且在這裏找不到任何回答我的問題的東西)。

回答

0

可能是你可以看看

  1. OS概念
  2. 依從者
  3. 數據結構
  4. 大會層次的語言和它的執行
  5. 微處理器
0

即使你將來從來沒有寫過你自己的代碼,我發現閱讀裝配和機器語言很有幫助。 Jeff Duntemann關於該主題的書籍(http://www.duntemann.com/assembly.html)對我來說是一個好的開始。

2

我學到了很多從這裏:http://www.asmcommunity.net/board/

彙編寫各種各樣的事情是一個偉大的方式來強迫自己明白是怎麼回事。您可以試試FASMMASM作爲您的語言(我開始使用MASM,但我認爲FASM現在更流行)。

1

如果您主要在.Net世界編程,理解資源管理將會有所幫助;一個好的方法是使用較低級別的語言,比如C或C++,並編寫一些處理用戶生成數據的非平凡語言。

它也可能是有益的算法和比較他們閱讀起來 - 能夠理解「大O」符號將是非常有用的。

根據我的經驗,這些還涵蓋了平均.Net程序員的兩個常見缺陷 - 認爲該框架處理內存管理的所有弊端(創建資源泄漏非常容易),並獲得正確的性能算法(等待更快的硬件只是有點太傲慢,我喜歡)

1

手機開發 - 走出你的舒適區(.net),並可能看看不同的東西,也許嵌入式編程在C中是一個有點遠,但是如何利用手機開發呢?

Android是一個很好的平臺,你需要的所有工具都是免費的,你甚至不需要手機,因爲SDK帶有一個模擬器。你將學到很多東西,因爲你必須考慮一些你不會在Windows機器上思考的東西,而.net的飛躍並不是那麼好。

您將瞭解受限環境,內存,CPU週期等,這將使您以不同的方式思考編程問題,更重要的是它非常酷!

你甚至可以在android/ARM平臺上嘗試本地開發嗎?

0

+1 with Ram - 在我的cs課程中,我們做了操作系統(研究流水線 - 有趣的概念)和編譯器。從基本模型開始,如果您的興趣更進一步,請看它如何很快變得非常複雜。有趣的話題

+0

尋找諸如「fetch&execute」之類短語背後的含義,其方式爲主題 – bergin 2010-06-04 19:58:17

2

從長期的專業開發人員和講師(Comp.Sci課程)的角度講,我看到你的情況。第一眼就想起了幾個想法。

  • 獲取一些愛好的東西,控制 設備(火車模型,視覺符號, 音樂的東西,機器人控制等) 任何行會感興趣的 你寫代碼來控制這些。
  • 參加夜校課程或剛開始學習 。
  • 從非平凡的來源 學習代碼,如開放源代碼操作系統的東西與 設備驅動程序,直到你真的 明白它在做什麼。
  • 所有其他的答案在這裏(C,C++代碼,彙編代碼,良好的舊標準書等)
1

我會通過閱讀Computer Systems: A Programmer's Perspective開始。這正是你正在尋找的。我喜歡這本書。我有第一版,剛剛買了第二版。它在卡耐基梅隆大學的Introduction to Computer Systems課程中使用。

這是一個墊腳石作爲一個整體介紹,涵蓋了廣泛的主題。材料呈現得非常好。閱讀本書後,您可以繼續閱讀更高級的主題,瞭解您最感興趣的內容。

這裏的章節列表:

  • 第1章:代表和處理信息
  • 第3章:程序的機器級表示
  • 章計算機系統
  • 第2章之旅4:處理器體系結構
  • 第5章:優化程序性能
  • 第6章:Memory Hie rarchy
  • 第7章:鏈接
  • 第8章:異常控制流
  • 第9章:虛擬內存
  • 第10章:系統級I/O
  • 第11章:網絡編程
  • 第12章:併發編程
3

您當然熟悉MIT的Open Courseware網站。除了在課程6(電氣工程和計算機科學)部分漫步外,還有更糟糕的事情可以做。如果你認真,並有時間,從6.001(還有什麼?),然後6.004,然後6.033開始。

我應該告誡你。該網站,並探索其中的內容,可能會非常容易上癮。

如果你有時間和金錢,你甚至可以考慮參加大學課程。憑藉四年的工作經驗,您將不會遇到每所大專院校發生的行政雞肉事件,並且您從中獲得的回憶將一直陪伴在您身邊。 (幾年前,我有機會回到學校學習幾個學期,這是我畢業後的二十多年,我不會將這種經歷換成任何東西,甚至連大廈鄰家女孩)

+0

+1(適用於SICP)(如果您有時間)。 – Skilldrick 2010-06-06 13:19:34

0

短的書:

「K & R」,又名 「C程序設計語言」 由Brian Kernighan和丹尼斯·裏奇,最好是最新版本(1988年),而不是1978年版。

龍書:

「克努特」,又名「計算機程序設計藝術」,由高德納。 所有示例都是用機器語言編寫的書的高級別令人驚訝。

「計算機體系結構:定量方法」。由Hennessy和Patterson提供。 可能有點過低 - 有關構建自己的CPU的信息。

「AoE」,又名「電子藝術」,Paul Horowitz和Winfield Hill。 可能遠低於你想要的水平 - 數字和模擬電子。