学习较低的计算水平

时间:2010-06-04 10:12:36

标签: c# hardware

我是一名软件开发人员,拥有四年的.Net开发经验,我总是希望了解最新技术(通常与.net相关),并热爱学习它们。然而,我没有去大学,通过乐于助人的同事,.Net课程,互联网和好老书学到我所知道的一切。 我觉得我是一个优秀的开发人员,但是如果不像计算机相关的Uni课程的第一年那样学习计算机的较低级别,那么在与人们谈论更多技术性的低级计算时,我会迷失方向。 有没有人可以推荐的书,这将覆盖我在Visual Studio中单击“运行”时发生的事情的较低级别?当我的老板对我说“那是在CPU缓存中运行”或“你受到磁盘读取限制”时,我觉得自己不够深入,并且在谈论硬件如何相互通信时会更有信心( CPU到RAM等)。

道歉,如果这是一个模糊的问题,或者之前已被问过(我确实检查过,在这里找不到任何可以回答我问题的内容)。

11 个答案:

答案 0 :(得分:3)

您当然熟悉麻省理工学院的Open Courseware网站。你可以做的远比在课程6(电气工程和计算机科学)部分漫步更糟糕。如果您是认真的,并且有时间,请从6.001开始(还有什么?),然后是6.004,然后是6.033

我应该提醒你。那个网站,并探索其中的内容,可以很容易上瘾。

如果你有时间和金钱,你甚至可以考虑上大学课程。凭借四年的工作经验,您可以毫不费力地在每所大学和大学中获得行政鸡尾酒,而您将从中获得的回忆将与您共度一生。 (几年前,我有机会回到学校学习了几个学期,在我刚毕业的时候已经有二十多年了。我不会把这种经历换成任何东西,甚至不是大厦邻家女孩。)

答案 1 :(得分:2)

我从这里学到了很多东西:http://www.asmcommunity.net/board/

在汇编中编写各种东西是强迫自己理解正在发生的事情的好方法。您可以尝试FASMMASM作为您的语言(我从MASM开始,但我认为FASM现在更流行)。

答案 2 :(得分:2)

从长期专业开发人员和讲师(Comp.Sci课程)的角度讲,我看到了你的情况。乍一看,脑海中浮现出几种想法。

  • 获得一些控制的爱好 设备(模型火车,视觉标志, 音乐用品,机器人控制等) 无论什么线路都会感兴趣 你可以编写代码来控制它们。
  • 上夜校或刚上课 从那里开始。
  • 从非平凡来源学习代码 比如开源OS的东西 设备驱动程序,直到你真的 了解它在做什么。
  • 这里的所有其他答案(C,C ++代码,汇编代码,旧标准书等)

答案 3 :(得分:1)

如果您主要在.Net世界中编程,那么了解资源管理会有所帮助;执行此操作的一种好方法是使用较低级别的语言,如C或C ++,并编写处理用户生成数据的非常重要的内容。

阅读算法并进行比较可能也是有益的 - 能够理解“大O”符号将非常有用。

根据我的经验,这些也涵盖了普通.Net程序员的两个常见陷阱 - 相信框架处理内存管理的所有弊端(创建资源泄漏非常容易)并且还能在算法上获得正确的性能(等待更快的硬件对我的喜好来说有点过于傲慢了)

答案 4 :(得分:1)

移动电话开发 - 走出你的舒适区(.net)并可能看一些不同的东西,也许C语言中的嵌入式编程有点远,但是手机开发的问题呢?

Android是一个很好的平台,您需要的所有工具都是免费的,您甚至不需要手机,因为SDK附带了一个模拟器。你可以从在Windows机器上考虑你不会想到的事情中学到很多东西,而.net的飞跃并不是那么好。

你将了解受限制的环境,内存,cpu周期等等,它们会让你以不同的方式思考编程,更重要的是它非常酷!

你甚至可以在android / ARM平台上试验本机开发?

答案 5 :(得分:1)

我首先阅读Computer Systems: A Programmer's Perspective。这正是你要找的。我喜欢这本书。我有第一版,刚刚买了第二版。它在卡内基梅隆大学用于Introduction to Computer Systems课程。

它旨在成为整体介绍的垫脚石,涵盖广泛的主题。材料很好。阅读本书后,您可以继续学习更高级的主题,了解您的兴趣。

以下是章节列表:

  • 第1章:计算机系统之旅
  • 第2章:代表和操纵信息
  • 第3章:程序的机器级表示
  • 第4章:处理器架构
  • 第5章:优化程序性能
  • 第6章:内存层次结构
  • 第7章:链接
  • 第8章:例外控制流程
  • 第9章:虚拟内存
  • 第10章:系统级I / O
  • 第11章:网络编程
  • 第12章:并发编程

答案 6 :(得分:0)

可能你可以看看

  1. OS Concepts
  2. 依从者
  3. 数据结构
  4. 汇编级语言及其执行
  5. 微处理器

答案 7 :(得分:0)

即使您永远不会在该级别编写自己的代码,我发现阅读有关汇编和机器语言的内容也很有帮助。 Jeff Duntemann关于这个主题的书(http://www.duntemann.com/assembly.html)对我来说是个好开始。

答案 8 :(得分:0)

获取William Stallings - Computer Organization and Architecture的副本。这是一本标准的教科书,涵盖了你提出的大部分要点(并为我工作!)。

答案 9 :(得分:0)

+1与Ram - 在我的cs课程中我们做了操作系统(看看流水线 - 有趣的概念)和编译器。从基本模型开始,如果您的兴趣进一步了解它将如何变得非常复杂。有趣的话题

答案 10 :(得分:0)

短书:

“K& R”,又名“C编程语言”,由Brian Kernighan和Dennis Ritchie编写,最好是最新版本(1988年),而不是1978年版本。

长书:

“Knuth”,又名“计算机编程艺术”,由Donald Knuth撰写。 令人惊讶的高水平的书籍所有的例子都是用机器语言编写的。

“计算机体系结构:定量方法”。轩尼诗和帕特森。 可能有点太低级 - 有关构建自己的CPU的信息。

“AoE”,又名“电子艺术”,由Paul Horowitz和Winfield Hill撰写。 可能比您想要的低得多 - 数字和模拟电子设备。